gnome onda-1: cola aislada incoming-gnome-onda1 para el worker
Las 3 raíces de la onda 1 (gsettings-desktop-schemas, gobject-introspection, gnome-desktop) copiadas a una cola propia + añadida al QUEUES del worker-loop. Aislar evita que el worker dispare rebuilds de spidermonkey/mutter (onda 2/3). El cierre real de RECETAS de las 3 es 39 nodos, 0 en incoming-kde: el "gap del resolver" que temía era de seed-edges (.pc cairo→libX11), NO de deps declaradas. El espinazo corpus (38 nodos: gtk4/cairo/pango/gdk-pixbuf en recipes/) está 100% sellado ⇒ el worker cachea todo e sólo construye las 3. Hashes byte-idénticos a los sellos de incoming-gnome (base_dir no entra al hash). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
# gnome-desktop (libgnome-desktop) 44.5 — utilidades compartidas del escritorio GNOME:
|
||||
# info de monitores (GnomeRR/BG), thumbnails (thumbnailer sandboxeado con bwrap+seccomp),
|
||||
# idioma/locale (GnomeLanguage vía iso-codes). meson static.
|
||||
#
|
||||
# OJO VERSION: no existe "gnome-desktop 48". Upstream dejó de cortar releases estables tras 44.5
|
||||
# y saltó directo a 51.alpha (verificado en download.gnome.org y en los tags de gitlab.gnome.org:
|
||||
# ...44.3, 44.4, 44.5, 51.alpha — sin 45..50). Las distros que envían GNOME 45/46/47/48 shippean
|
||||
# esta misma 44.5 porque es la ÚLTIMA estable de la librería compartida. Por eso 44.5 es la versión
|
||||
# correcta para un escritorio GNOME 48. sha256 REAL de `curl -sL <url> | sha256sum`.
|
||||
#
|
||||
# Feature-minimal: build_gtk4=true, legacy_library=false (SIN libgnome-desktop-3/gtk3 — no está en
|
||||
# el corpus), introspection/docs/debug_tools/installed_tests OFF, udev/systemd disabled (Wayland-only,
|
||||
# el logind/udev lo cubre arje). backend GL vía gtk4 (ya wayland-only, sin X11).
|
||||
name = "gnome-desktop"
|
||||
version = "44.5"
|
||||
|
||||
[source]
|
||||
tarball = "https://download.gnome.org/sources/gnome-desktop/44/gnome-desktop-44.5.tar.xz"
|
||||
sha256 = "20e0995a6e3a03e8c1026c5a27bc3f45e69ffcc392ad743dcab6107a541d232f"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
|
||||
[build.phases]
|
||||
configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload --prefer-static -Ddefault_library=static -Dbuild_gtk4=true -Dlegacy_library=false -Dintrospection=false -Ddesktop_docs=false -Ddebug_tools=false -Dgtk_doc=false -Dinstalled_tests=false -Dudev=disabled -Dsystemd=disabled -Dc_args=-Wno-error=date-time"
|
||||
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"
|
||||
|
||||
# deps = tools meson + gtk4 y su cierre .pc transitivo completo (static ⇒ pkg-config resuelve
|
||||
# Requires.private). libxkbcommon aporta xkbregistry (dep opcional, required:false en meson.build).
|
||||
#
|
||||
# FRONTERA: gsettings-desktop-schemas sin receta — REQUERIDA (schemas_dep, sin opción que la apague).
|
||||
# La autoran otros agentes hacia recipes/incoming-gnome/; añadir a [deps].build cuando aterrice.
|
||||
# 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).
|
||||
[deps]
|
||||
build = ["meson", "samurai", "python3", "pkgconf", "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"]
|
||||
@@ -0,0 +1,36 @@
|
||||
# gobject-introspection 1.84.0 — el escáner de metadata de GNOME (g-ir-scanner + typelibs).
|
||||
# Es dep de casi toda lib GNOME (gtk4/libadwaita/etc. lo declaran cuando -Dintrospection=enabled).
|
||||
# meson static, backend feature-minimal: doctool/gtk_doc/tests off, PERO build_introspection_data=true
|
||||
# (los .gir/.typelib SON su razón de ser).
|
||||
#
|
||||
# BORRADOR PARA EL MAPA — dificultad conocida: g-ir-scanner NO es puro metadata. Para cada lib
|
||||
# COMPILA y EJECUTA un pequeño binario "dumper" enlazado contra el target para volcar los GTypes en
|
||||
# runtime. En un lab cross/hermetico static-musl esto es el palo largo del stack GNOME:
|
||||
# 1) ejecutar un binario del target dentro del sandbox (aquí target==host x86_64-linux-musl, así que
|
||||
# NO hay emulación — a favor nuestro; el escenario cross real necesitaría qemu/exe_wrapper).
|
||||
# 2) el dumper enlaza estático contra glib+libffi; el scanner invoca al compilador (CC/zig-cc) y al
|
||||
# linker en runtime ⇒ necesita el toolchain + el cierre .pc COMPLETO visible en PKG_CONFIG_PATH.
|
||||
# 3) suele pelear con -static / musl (símbolos de introspección, gi-dump). PROBABLEMENTE NO selle a
|
||||
# la primera — dejar como frontera medida, no como sellado asumido.
|
||||
name = "gobject-introspection"
|
||||
version = "1.84.0"
|
||||
|
||||
[source]
|
||||
tarball = "https://download.gnome.org/sources/gobject-introspection/1.84/gobject-introspection-1.84.0.tar.xz"
|
||||
sha256 = "945b57da7ec262e5c266b89e091d14be800cc424277d82a02872b7d794a84779"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
|
||||
[build.phases]
|
||||
configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload --prefer-static -Ddefault_library=static -Ddoctool=disabled -Dgtk_doc=false -Dtests=false -Dbuild_introspection_data=true -Dcairo=disabled -Dc_args=-Wno-error=date-time"
|
||||
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"
|
||||
|
||||
[deps]
|
||||
# glib + su cierre .pc estático (pkgconf resuelve Requires.private: pcre2, zlib, libffi).
|
||||
# flex/bison: el parser de anotaciones del scanner. libffi: además lo enlaza el dumper.
|
||||
build = ["meson", "samurai", "python3", "pkgconf", "flex", "bison", "glib", "libffi", "pcre2", "zlib"]
|
||||
# FRONTERA: cairo omitida a propósito (-Dcairo=disabled) — feature-minimal, evita el typelib Cairo-1.0.
|
||||
@@ -0,0 +1,26 @@
|
||||
# gsettings-desktop-schemas 48.0 — los schemas GSettings compartidos de GNOME (org.gnome.desktop.*):
|
||||
# fondo, interface, wm, a11y, sound… Casi todo el escritorio los lee en runtime. Receta LIVIANA:
|
||||
# compila XML de schemas + una libcita de enums; meson static. sha256 REAL de curl|sha256sum.
|
||||
#
|
||||
# Feature-minimal: introspection=false (el typelib no lo exige el runtime de schemas; si mutter/gjs
|
||||
# lo pidieran vía typelib, se re-activa). Sin docs/tests.
|
||||
name = "gsettings-desktop-schemas"
|
||||
version = "48.0"
|
||||
|
||||
[source]
|
||||
tarball = "https://download.gnome.org/sources/gsettings-desktop-schemas/48/gsettings-desktop-schemas-48.0.tar.xz"
|
||||
sha256 = "e68f155813bf18f865a8b2c8e9d473588b6ccadcafbb666ab788857c6c2d1bd3"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
|
||||
[build.phases]
|
||||
configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload --prefer-static -Ddefault_library=static -Dintrospection=false -Dc_args=-Wno-error=date-time"
|
||||
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"
|
||||
|
||||
# glib aporta gio (compila los schemas) + su cierre .pc. gobject-introspection sólo si introspection=true.
|
||||
[deps]
|
||||
build = ["meson", "samurai", "python3", "pkgconf", "glib", "libffi", "pcre2", "zlib"]
|
||||
@@ -86,7 +86,7 @@ DISK_HIGH="${DISK_HIGH:-82}"
|
||||
# aparcadas con diagnóstico, p.ej. git con muro en libgit.a) NO se muele — es un subdir a propósito.
|
||||
# incoming-clib: libs C (toolkit/foundational) que el worker SELLA pero el cron de cosecha-go IGNORA
|
||||
# (son build-deps, se usan vía catálogo; no tienen binario que el gate Go pueda smoke-testear).
|
||||
QUEUES="${QUEUES:-recipes/incoming recipes/incoming-go recipes/incoming-clib recipes/incoming-kde}"
|
||||
QUEUES="${QUEUES:-recipes/incoming recipes/incoming-go recipes/incoming-clib recipes/incoming-kde recipes/incoming-gnome-onda1}"
|
||||
|
||||
# REBUILD DEL BINARIO AL ARRANCAR (2026-07-18): el hammer horneado en la imagen golden ENVEJECE.
|
||||
# Caso real que costó una noche de KDE: la golden del 29-jun traía un hammer sin el fix del overlay
|
||||
|
||||
Reference in New Issue
Block a user