gnome onda 3: cierra las 3 fronteras de gnome-desktop + el latido regenera el grafo GNOME
Las 3 fronteras que el propio comentario de gnome-desktop declaraba:
iso-codes receta nueva (datos + .pc). Ya no está en download.gnome.org (404);
Salsa es GitLab y su archive no es determinista (lección de cairo-shared),
así que la fuente es el .orig.tar.xz inmutable del pool de Debian.
Sin traducciones: i18n.gettext exige msgfmt completo y sólo hay
gettext-tiny — se vacían los 8 meson.build de dominio.
libseccomp receta nueva (autotools estático, gperf de build-dep real).
xkeyboard-config duplicada desde incoming-kde: fichero idéntico ⇒ MISMO ArtifactHash
(b3:bcf9b766) ⇒ ya está SELLADO. Frontera cerrada con cero rebuild.
Y un punto ciego del latido: cosecha-cron regeneraba build-state.json y el de KDE, pero
NUNCA el de GNOME. El grafo llevaba días mintiendo `never` sobre gobject-introspection y
toda la onda 2, que están selladas. Un grafo viejo miente con la misma cara que uno fresco.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+442
-137
File diff suppressed because it is too large
Load Diff
@@ -32,11 +32,12 @@ install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson ins
|
||||
# Requires.private). libxkbcommon aporta xkbregistry (dep opcional, required:false en meson.build).
|
||||
#
|
||||
# gsettings-desktop-schemas: REQUERIDA (schemas_dep) — YA sellada (b3:4777231b), en [deps].build.
|
||||
# FRONTERA: iso-codes sin receta — REQUERIDA (GnomeLanguage lee su prefix vía pkg-config).
|
||||
# FRONTERA: xkeyboard-config sin receta alcanzable — REQUERIDA (xkb_config_dep, lee xkb_base). Existe en
|
||||
# recipes/incoming-kde/ pero el resolver sólo mira incoming-gnome/ + recipes/ (no incoming-kde/):
|
||||
# promover a recipes/ o duplicar a incoming-gnome/ para que resuelva.
|
||||
# FRONTERA: libseccomp sin receta — REQUERIDA INCONDICIONAL en linux (sandbox bwrap+seccomp del
|
||||
# thumbnailer; no hay opción meson para desactivarla).
|
||||
#
|
||||
# Las 3 FRONTERAS de este comentario quedaron CERRADAS el 2026-07-27 (onda 3):
|
||||
# iso-codes → receta nueva en esta misma cola (data + .pc; fuente = pool de Debian).
|
||||
# xkeyboard-config → duplicada desde recipes/incoming-kde/ a esta cola. El resolver sólo mira la
|
||||
# cola propia + recipes/, y el fichero es IDÉNTICO ⇒ mismo ArtifactHash
|
||||
# (b3:bcf9b766) ⇒ cache-hit del artefacto que KDE ya selló, cero rebuild.
|
||||
# libseccomp → receta nueva en esta misma cola (autotools estático, gperf de build-dep).
|
||||
[deps]
|
||||
build = ["meson", "samurai", "python3", "pkgconf", "gsettings-desktop-schemas", "gtk4", "glib", "gdk-pixbuf", "fontconfig", "libxkbcommon", "cairo", "pango", "graphene", "libepoxy", "wayland", "wayland-protocols", "libdrm", "harfbuzz", "fribidi", "libpng", "pixman", "freetype", "expat", "libffi", "pcre2", "zlib", "libjpeg-turbo", "libtiff", "mesa"]
|
||||
build = ["meson", "samurai", "python3", "pkgconf", "gsettings-desktop-schemas", "gtk4", "glib", "gdk-pixbuf", "fontconfig", "libxkbcommon", "cairo", "pango", "graphene", "libepoxy", "wayland", "wayland-protocols", "libdrm", "harfbuzz", "fribidi", "libpng", "pixman", "freetype", "expat", "libffi", "pcre2", "zlib", "libjpeg-turbo", "libtiff", "mesa", "iso-codes", "xkeyboard-config", "libseccomp"]
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
# iso-codes 4.20.1 — las listas ISO (639 idiomas, 3166 países, 4217 monedas, 15924 escrituras) como
|
||||
# datos + `iso-codes.pc`. Frontera declarada en el comentario de gnome-desktop: GnomeLanguage lee el
|
||||
# prefix de este .pc por pkg-config para encontrar los JSON. Paquete de DATOS: no compila nada.
|
||||
#
|
||||
# OJO FUENTE: iso-codes YA NO está en download.gnome.org (404 — el proyecto se mudó a Salsa/Debian).
|
||||
# Salsa es GitLab y sus `-/archive/<tag>.tar.gz` NO son deterministas (mismo tag, bytes distintos: la
|
||||
# lección que ya costó un sha256 en cairo-shared, commit 259f9ef). El `.orig.tar.xz` del pool de
|
||||
# Debian sí es un tarball inmutable subido una vez ⇒ es la fuente correcta para un build sellado.
|
||||
# sha256 REAL de `curl -sL <url> | sha256sum`.
|
||||
#
|
||||
# Feature-minimal SIN TRADUCCIONES: cada subdirectorio de dominio hace `i18n.gettext(domain)`, que
|
||||
# exige msgfmt sobre ~200 .po por dominio; el corpus sólo tiene gettext-tiny (msgfmt limitado) y
|
||||
# meson no ofrece opción para saltarlo. Vaciamos los 8 meson.build de dominio en configure —
|
||||
# `subdir()` sólo necesita que el fichero EXISTA. Queda lo que el escritorio necesita para construir:
|
||||
# los JSON, los .xml derivados y el .pc. Coste real: los nombres de idioma/país salen en inglés en
|
||||
# vez de traducidos (GnomeLanguage degrada, no falla). Si algún día hay gettext completo en el
|
||||
# corpus, se borra el `for` del configure y vuelven los .mo.
|
||||
name = "iso-codes"
|
||||
version = "4.20.1"
|
||||
|
||||
[source]
|
||||
tarball = "http://deb.debian.org/debian/pool/main/i/iso-codes/iso-codes_4.20.1.orig.tar.xz"
|
||||
sha256 = "5d551f3ddb32548c4321e9011720fd97751af0107592f79ebffc939bd32f2268"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
|
||||
[build.phases]
|
||||
configure = 'for d in iso_15924 iso_3166-1 iso_3166-2 iso_3166-3 iso_4217 iso_639-2 iso_639-3 iso_639-5; do : > "$d/meson.build"; done && PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload'
|
||||
compile = 'PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output'
|
||||
install = 'PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild'
|
||||
|
||||
# python3: los custom_target del .xml corren scripts/xml_from_json.py. No hay dep de C: es data.
|
||||
[deps]
|
||||
build = ["meson", "samurai", "python3", "pkgconf"]
|
||||
@@ -0,0 +1,26 @@
|
||||
# libseccomp 2.6.1 — API de alto nivel sobre el filtrado de syscalls del kernel (BPF seccomp).
|
||||
# Frontera declarada en gnome-desktop: su thumbnailer sandboxea con bwrap+seccomp y la dep es
|
||||
# INCONDICIONAL en linux (no hay opción meson para apagarla). Autotools, estático.
|
||||
#
|
||||
# gperf es build-dep REAL, no opcional: configure.ac hace AC_CHECK_TOOL(GPERF) y aborta con
|
||||
# «please install gperf» si falta (genera la tabla hash de nombres de syscall). Ya está en el corpus.
|
||||
# --disable-python: los bindings piden cython3; el escritorio consume la lib C, no el módulo.
|
||||
name = "libseccomp"
|
||||
version = "2.6.1"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/seccomp/libseccomp/releases/download/v2.6.1/libseccomp-2.6.1.tar.gz"
|
||||
sha256 = "501f66c667225d53791b97e1d7cf85ab764c297d04881f60f38f451c4b0ee1be"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
|
||||
[build.phases]
|
||||
configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --disable-shared --enable-static --disable-python'
|
||||
compile = 'make'
|
||||
install = 'make DESTDIR=/out install'
|
||||
|
||||
[deps]
|
||||
build = ["make", "gperf"]
|
||||
@@ -0,0 +1,23 @@
|
||||
# xkeyboard-config 2.44 — datos de layouts de teclado XKB + `xkeyboard-config.pc` (variable xkb_base).
|
||||
# plasma-desktop lo EXIGE en ConfigureChecks (pkg_get_variable xkb_base) y kwin/Qt-wayland lo usan en
|
||||
# runtime (/usr/share/X11/xkb; sin él: "xkbcommon: failed to add default include path /usr/share/X11/xkb").
|
||||
# Meson, sin compilación real (instala datos + .pc). nls off (evita gettext); sin libxml2 (validación).
|
||||
name = "xkeyboard-config"
|
||||
version = "2.44"
|
||||
|
||||
[source]
|
||||
tarball = "https://www.x.org/releases/individual/data/xkeyboard-config/xkeyboard-config-2.44.tar.xz"
|
||||
sha256 = "54d2c33eeebb031d48fa590c543e54c9bcbd0f00386ebc6489b2f47a0da4342a"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "dynamic"
|
||||
|
||||
[build.phases]
|
||||
configure = "meson setup output --prefix=/usr -Dnls=false -Dcompat-rules=false"
|
||||
compile = "ninja -C output"
|
||||
install = "DESTDIR=/out ninja -C output install"
|
||||
|
||||
[deps]
|
||||
build = ["meson", "samurai", "python3", "pkgconf"]
|
||||
@@ -129,6 +129,11 @@ echo "==> regenerando grafo de estado"
|
||||
if [ -x "$HAMMER" ]; then
|
||||
scripts/build-state.py >/dev/null 2>&1 && echo " build-state.json ✓" || echo " ⚠ build-state.py falló"
|
||||
scripts/build-state.py --kde >/dev/null 2>&1 && echo " build-state-kde.json ✓" || echo " ⚠ build-state.py --kde falló"
|
||||
# GNOME faltaba acá (2026-07-27): el latido regeneraba base+KDE y NUNCA el grafo GNOME, así que
|
||||
# build-state-gnome.json envejecía en silencio y reportaba `never` sobre recetas selladas hacía
|
||||
# días (gobject-introspection, toda la onda 2). Un grafo viejo miente con la misma cara que uno
|
||||
# fresco — por eso lo regenera el latido y no la mano.
|
||||
scripts/build-state.py --gnome >/dev/null 2>&1 && echo " build-state-gnome.json ✓" || echo " ⚠ build-state.py --gnome falló"
|
||||
# Cola DERIVADA del grafo (P4): el orden de masticado por imagen, en ondas topológicas. No lanza
|
||||
# ningún build — sólo deja escrito qué conviene moler primero, para que la cola deje de ser una
|
||||
# lista escrita a mano. Barato (lee JSON, no hashea).
|
||||
@@ -140,7 +145,7 @@ fi
|
||||
# 4. Commitear SÓLO el estado firme (el avance que el humano sigue). Recetas nuevas que YO autoré se
|
||||
# commitean aparte, a mano, para no meter autoría a medias en un commit de cron.
|
||||
if [ "${NO_COMMIT:-}" != "1" ]; then
|
||||
git add docs/state/build-state.json docs/state/build-state-kde.json docs/state/drenaje.json 2>/dev/null || true
|
||||
git add docs/state/build-state.json docs/state/build-state-kde.json docs/state/build-state-gnome.json docs/state/drenaje.json 2>/dev/null || true
|
||||
if ! git diff --cached --quiet 2>/dev/null; then
|
||||
git commit -q -m "estado: cosecha granja $(ts) — avance del árbol KDE" 2>/dev/null \
|
||||
&& { git push -q origin main 2>/dev/null && echo "==> estado commiteado+pusheado" \
|
||||
|
||||
Reference in New Issue
Block a user