diff --git a/recipes/incoming-gnome-onda1/gnome-desktop.toml b/recipes/incoming-gnome-onda1/gnome-desktop.toml new file mode 100644 index 00000000..bde74a4e --- /dev/null +++ b/recipes/incoming-gnome-onda1/gnome-desktop.toml @@ -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 | 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"] diff --git a/recipes/incoming-gnome-onda1/gobject-introspection.toml b/recipes/incoming-gnome-onda1/gobject-introspection.toml new file mode 100644 index 00000000..17314f23 --- /dev/null +++ b/recipes/incoming-gnome-onda1/gobject-introspection.toml @@ -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. diff --git a/recipes/incoming-gnome-onda1/gsettings-desktop-schemas.toml b/recipes/incoming-gnome-onda1/gsettings-desktop-schemas.toml new file mode 100644 index 00000000..14c856f8 --- /dev/null +++ b/recipes/incoming-gnome-onda1/gsettings-desktop-schemas.toml @@ -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"] diff --git a/scripts/farm/farm-worker-loop.sh b/scripts/farm/farm-worker-loop.sh index 04c4b957..940a7ef2 100755 --- a/scripts/farm/farm-worker-loop.sh +++ b/scripts/farm/farm-worker-loop.sh @@ -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