mirada: las tres `-shared` que faltaban — el USB resolvía expat/zlib/libffi contra el lab
`scripts/vigia-sonames.py` sobre los cinco perfiles: `escritorio-mirada` era el único que aún tenía la fuga al sysroot del lab en componentes de RUNTIME. `mesa-swrast` y `wayland` salen con `NEEDED libexpat.so.1`, `libz.so.1` y `libffi.so.8`; las recetas canónicas de expat, zlib y libffi son `--disable-shared`; ningún artefacto del cierre publicaba esos SONAME. O sea que el rootfs los resolvía contra el Alpine DEL LAB y el USB sólo arrancaba donde hubiera Alpine debajo — que es peor que una dep faltante, porque el lab no entra en `hash_inputs` y el store no puede ni notarlo. Es la misma fuga que los otros cuatro perfiles cerraron el 2026-09-03. mirada quedó fuera porque su lista nació como copia literal del PKGS de `mirada-usb.sh` y nadie la revisó desde entonces. La dirección hoy está invertida —el script deriva su PKGS de `targets.py escritorio-mirada`— así que arreglarlo acá arregla el USB, y no hay dos listas que puedan divergir. Actualicé el comentario, que seguía diciendo «lift verbatim». Las tres viven en `corpus`, la misma cola del perfil, y ya están selladas ⇒ CERO rebuilds: sólo entran a la clausura. NO sumo `bzip2-shared` ni `ncurses-shared`, que sí llevan los otros perfiles: acá esos sonames los pide únicamente `python3`, que es herramienta de build y no viaja en la imagen. El vigía imprime siempre QUIÉN pide cada soname justamente para poder separar eso; sin esa columna su informe no se puede triar y uno acaba tapando ruido. Verificado: mirada pasa de 10 sonames sin proveedor a 7, y los 7 que quedan son todos de `python3` y `perl`.
Semantic delta
No definition changed: this change is text, documentation or data.
1 files · +19 −2
- docs/state/targets.toml +19 −2
diff --git a/docs/state/targets.toml b/docs/state/targets.toml
index 82e1f7d3..6d7491b3 100644
--- a/docs/state/targets.toml
+++ b/docs/state/targets.toml
@@ -42,9 +42,26 @@ paquetes = [
[perfil.escritorio-mirada]
descripcion = "rootfs slim del USB mirada: compositor Wayland propio sobre mesa software"
-# Lift verbatim de PKGS (scripts/mirada-usb.sh). NO hereda base: es una imagen slim a propósito.
-# El ORDEN importa (libs primero, binarios mirada al final) y se preserva.
+# NO hereda base: es una imagen slim a propósito. El ORDEN importa (libs primero, binarios mirada
+# al final) y se preserva. `scripts/mirada-usb.sh` deriva su PKGS de acá (`targets.py
+# escritorio-mirada`), así que esta lista ES la del USB — no una copia que pueda divergir.
+#
+# ── Las tres `-shared` (2026-09-05) ──────────────────────────────────────────────────────────────
+# Cazadas por `scripts/vigia-sonames.py`: `mesa-swrast` y `wayland` salen con `NEEDED libexpat.so.1`,
+# `libz.so.1` y `libffi.so.8`, y las recetas canónicas de expat/zlib/libffi son `--disable-shared`.
+# Ningún artefacto del cierre publicaba esos SONAME ⇒ el rootfs los resolvía contra el sysroot Alpine
+# DEL LAB y la imagen sólo arrancaba donde hubiera Alpine debajo.
+#
+# Es la MISMA fuga que los otros cuatro perfiles ya cerraron el 2026-09-03; mirada quedó fuera porque
+# su lista nació como copia literal del script y nadie la revisó. Van de raíces —y no de `[deps]`—
+# porque son data de RUNTIME: nadie las declara como dep de BUILD, así que la clausura no las alcanza
+# por ninguna arista. Las tres viven en `corpus`, la misma cola, y ya están selladas ⇒ CERO rebuilds.
+#
+# NO se suman `bzip2-shared` ni `ncurses-shared`, que sí llevan los otros perfiles: acá esos sonames
+# los pide sólo `python3`, que es HERRAMIENTA DE BUILD y no viaja en la imagen. Lo accionable del
+# vigía es lo que pide un componente de runtime, y por eso imprime siempre quién pide cada cosa.
paquetes = [
+ "expat-shared", "zlib-shared", "libffi-shared",
"mesa-swrast", "wayland", "libdrm", "seatd", "libinput", "libudev-zero",
"libxkbcommon", "pixman", "linux-pam", "mtdev", "libevdev",
"mirada-compositor", "mirada-greeter", "mirada-ctl",