diff --git a/docs/state/build-state-gnome.json b/docs/state/build-state-gnome.json index 73246257..fa4ad40c 100644 --- a/docs/state/build-state-gnome.json +++ b/docs/state/build-state-gnome.json @@ -36,9 +36,9 @@ "sealed": 80 }, "escritorio-gnome": { - "raices": 28, - "clausura": 190, - "sealed": 190 + "raices": 39, + "clausura": 204, + "sealed": 204 }, "escritorio-mirada": { "raices": 17, @@ -46,7 +46,7 @@ "sealed": 41 } }, - "sin_perfil": 660, + "sin_perfil": 647, "orphan_deps": [], "topo_ok": true, "nodes": { @@ -81,7 +81,9 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-gnome" + ], "dependientes_total": 1 }, "act": { @@ -5301,7 +5303,9 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-gnome" + ], "dependientes_total": 0 }, "geocode-glib": { @@ -5337,7 +5341,9 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-gnome" + ], "dependientes_total": 1 }, "gettext-tiny": { @@ -5474,7 +5480,9 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-gnome" + ], "dependientes_total": 0 }, "gi-girepository-typelib": { @@ -5501,7 +5509,9 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-gnome" + ], "dependientes_total": 0 }, "giflib": { @@ -7419,7 +7429,9 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-gnome" + ], "dependientes_total": 0 }, "gsettings-desktop-schemas": { @@ -8360,7 +8372,9 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-gnome" + ], "dependientes_total": 0 }, "icu4c": { @@ -10317,7 +10331,9 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-gnome" + ], "dependientes_total": 0 }, "libglvnd": { @@ -10479,7 +10495,9 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-gnome" + ], "dependientes_total": 0 }, "libical": { @@ -10827,7 +10845,9 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-gnome" + ], "dependientes_total": 0 }, "libsass": { @@ -11620,7 +11640,8 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-cosmic" + "escritorio-cosmic", + "escritorio-gnome" ], "dependientes_total": 2 }, @@ -17522,7 +17543,9 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-gnome" + ], "dependientes_total": 0 }, "usbutils": { @@ -18354,7 +18377,9 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-gnome" + ], "dependientes_total": 0 }, "wishlist": { @@ -18503,7 +18528,9 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-gnome" + ], "dependientes_total": 1 }, "x264": { diff --git a/docs/state/drenaje.json b/docs/state/drenaje.json index 6ba8f2ce..6e483641 100644 --- a/docs/state/drenaje.json +++ b/docs/state/drenaje.json @@ -31,7 +31,7 @@ }, "escritorio-gnome": { "grafo": "docs/state/build-state-gnome.json", - "nodos": 190, + "nodos": 204, "en_deuda": 0, "ondas": 0, "profundidad": 0, diff --git a/docs/state/targets.toml b/docs/state/targets.toml index bf141439..89585898 100644 --- a/docs/state/targets.toml +++ b/docs/state/targets.toml @@ -458,6 +458,32 @@ paquetes = [ # `python3` y `py3-gobject` como deps de RUNTIME: sin ellas en la imagen se instala y no arranca, # y ningún build puede delatarlo. "gnome-tweaks", + # ── RAÍCES DE RUNTIME QUE EL GRAFO NO PUEDE VER (traídas acá el 2026-09-09) ─────────────────── + # ⚠ Estas once vivían SÓLO dentro de `scripts/gnome/hydrate-gnome.sh`, en una lista escrita a + # mano. O sea DOS fuentes de verdad para «qué lleva la imagen de GNOME», y habían divergido en + # los DOS sentidos: el script no conocía 21 paquetes que este perfil declara —entre ellos el + # navegador, la terminal, el editor, el visor de PDF, las fuentes y las tres extensiones— y este + # perfil no conocía estas once, sin las cuales el shell no arranca. Es exactamente el modo de + # fallo que la cabecera de `scripts/hydrate-profile.py` describe y que `vigia-imagen.py` existe + # para cazar. + # Ninguna es dep de BUILD de nadie: el shell las carga por `imports.gi.*` al arrancar, y eso es + # invisible para la clausura de deps. La justificación de cada una la traía el script: + "accountsservice", # imports.gi.AccountsService + "gi-foreign-typelibs", # DBus-1.0 / cairo-1.0, que Gdk y Atspi incluyen + "gi-girepository-typelib", # lo pide el propio gjs desde su JS embebido + "libgdm", # imports.gi.Gdm — el shell lo importa SIN condición al arrancar + "geoclue", # imports.gi.Geoclue + "libgweather", # imports.gi.GWeather + "upower", # imports.gi.UPowerGlib + "librsvg", # imports.gi.Rsvg + "ibus", # imports.gi.IBus + # Ni typelib ni librería: los GSCHEMAS de gnome-settings-daemon. El demonio está aparcado + # (GTK3/X11) pero el shell lee sus esquemas al armar los quick settings, y si faltan la excepción + # ocurre DENTRO de Main.start() ⇒ el panel no se arma y la pantalla queda NEGRA. + "gsd-schemas", + # `wireplumber` es lo que le da DISPOSITIVOS a PipeWire (que ya entra por la clausura): sin él hay + # socket de audio y nada que suene. + "wireplumber", ] [perfil.escritorio-cosmic] diff --git a/scripts/gnome/hydrate-gnome.sh b/scripts/gnome/hydrate-gnome.sh index ca66734b..089d7b71 100755 --- a/scripts/gnome/hydrate-gnome.sh +++ b/scripts/gnome/hydrate-gnome.sh @@ -10,6 +10,16 @@ # calcula el ArtifactHash de la receta de HOY sin construir. O sea: cero ambigüedad, y si falta algo # el reporte dice exactamente qué receta y con qué hash lo buscaba. # +# ⚠ SUPERADO POR `scripts/hydrate-profile.py` (2026-09-09). Sus raíces eran una lista ESCRITA A +# MANO acá adentro, o sea una segunda fuente de verdad frente a `docs/state/targets.toml`, y habían +# divergido en los DOS sentidos: este script no conocía 21 paquetes que el perfil declara —el +# navegador, la terminal, el editor, el visor de PDF, las fuentes, las tres extensiones y +# gnome-tweaks— y el perfil no conocía las 11 raíces de RUNTIME que sólo estaban acá. Las 11 se +# movieron a `targets.toml` con su justificación, así que hoy +# scripts/hydrate-profile.py escritorio-gnome --into +# arma el rootfs COMPLETO desde la única declaración que existe. Este script se deja porque su +# cabecera documenta por qué cada raíz de runtime hace falta, pero su lista ya no es la verdad. +# # Uso: scripts/gnome/hydrate-gnome.sh [receta.toml ...] # Env: RFS (def work/gnome-rootfs) destino # STORE (def ./store)