diff --git a/docs/state/build-state-gnome.json b/docs/state/build-state-gnome.json index c65d4889..ec341635 100644 --- a/docs/state/build-state-gnome.json +++ b/docs/state/build-state-gnome.json @@ -1,16 +1,16 @@ { "schema": "hammer-build-state/1", "totals": { - "recipes": 796, - "nodes": 796, - "sealed": 786, + "recipes": 800, + "nodes": 800, + "sealed": 790, "never": 8, "debt": 2 }, "by_class": { - "c": 163, + "c": 166, "go": 362, - "gui": 39, + "gui": 40, "kernel": 6, "rust": 226 }, @@ -26,7 +26,7 @@ "debt": 2 }, "incoming-gnome": { - "sealed": 27, + "sealed": 31, "never": 6 } }, @@ -54,7 +54,7 @@ "debt": 2 } }, - "sin_perfil": 649, + "sin_perfil": 653, "orphan_deps": [], "topo_ok": true, "nodes": { @@ -4656,7 +4656,7 @@ "perfiles": [ "escritorio-gnome" ], - "dependientes_total": 17 + "dependientes_total": 18 }, "glib-introspected": { "iname": "glib-introspected", @@ -6545,6 +6545,23 @@ "perfiles": [], "dependientes_total": 0 }, + "hwdata": { + "iname": "hwdata", + "version": "0.393", + "link": "dynamic", + "compiler": "gcc", + "deps": [ + "pkgconf" + ], + "cls": "c", + "queue": "incoming-gnome", + "hash": "b3:bdc36cf9a118a0eb505966cd5132552e51e420c12186694907898fb44873684a", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [], + "dependientes_total": 1 + }, "hyperfine": { "iname": "hyperfine", "version": "1.20.0", @@ -6878,6 +6895,30 @@ "perfiles": [], "dependientes_total": 0 }, + "json-glib": { + "iname": "json-glib", + "version": "1.10.8", + "link": "static", + "compiler": "zig-cc", + "deps": [ + "meson", + "samurai", + "python3", + "pkgconf", + "glib", + "libffi", + "pcre2", + "zlib" + ], + "cls": "gui", + "queue": "incoming-gnome", + "hash": "b3:1b90c87650b775ad60049f7c3c20c9bf4d56f230ca43eec411ce69762d661c9d", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [], + "dependientes_total": 0 + }, "jsonnet-bundler": { "iname": "jsonnet-bundler", "version": "0.6.0", @@ -7754,6 +7795,24 @@ "perfiles": [], "dependientes_total": 0 }, + "lcms2": { + "iname": "lcms2", + "version": "2.16", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "pkgconf", + "python3" + ], + "cls": "c", + "queue": "incoming-gnome", + "hash": "b3:07fbf8a1da5b346fe394bebe512cbc0e8acc9b509c3614b462329fe70b1a73b8", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [], + "dependientes_total": 0 + }, "lefthook": { "iname": "lefthook", "version": "2.1.5", @@ -7956,6 +8015,27 @@ ], "dependientes_total": 3 }, + "libdisplay-info": { + "iname": "libdisplay-info", + "version": "0.2.0", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "meson", + "samurai", + "python3", + "pkgconf", + "hwdata" + ], + "cls": "c", + "queue": "incoming-gnome", + "hash": "b3:260f0519727bcf33ce69d05644929558eafb7fae78730e5201345629a3dff42c", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [], + "dependientes_total": 0 + }, "libdrm": { "iname": "libdrm", "version": "2.4.134", @@ -8062,7 +8142,7 @@ "escritorio-kde", "escritorio-mirada" ], - "dependientes_total": 66 + "dependientes_total": 67 }, "libgcrypt": { "iname": "libgcrypt", @@ -9202,7 +9282,7 @@ "escritorio-kde", "escritorio-mirada" ], - "dependientes_total": 78 + "dependientes_total": 80 }, "micro": { "iname": "micro", @@ -10482,7 +10562,7 @@ "escritorio-gnome", "escritorio-kde" ], - "dependientes_total": 52 + "dependientes_total": 53 }, "peco": { "iname": "peco", @@ -10665,7 +10745,7 @@ "escritorio-kde", "escritorio-mirada" ], - "dependientes_total": 291 + "dependientes_total": 295 }, "plow": { "iname": "plow", @@ -10976,7 +11056,7 @@ "escritorio-kde", "escritorio-mirada" ], - "dependientes_total": 235 + "dependientes_total": 238 }, "qrcp": { "iname": "qrcp", @@ -11522,7 +11602,7 @@ "escritorio-kde", "escritorio-mirada" ], - "dependientes_total": 210 + "dependientes_total": 212 }, "sassc": { "iname": "sassc", @@ -14277,7 +14357,7 @@ "escritorio-kde", "escritorio-mirada" ], - "dependientes_total": 90 + "dependientes_total": 91 }, "zlib-ng": { "iname": "zlib-ng", diff --git a/recipes/incoming-gnome/gnome-session.toml b/recipes/incoming-gnome/gnome-session.toml index 2fc4edb5..5f57e246 100644 --- a/recipes/incoming-gnome/gnome-session.toml +++ b/recipes/incoming-gnome/gnome-session.toml @@ -22,9 +22,30 @@ configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/s 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" -# gtk4 (+ su cierre .pc) para el diálogo de fallo; glib para gio. login1 = arje-logind-compat (NO frontera). -# FRONTERA: json-glib sin receta — REQUERIDA (perfil de sesión). -# FRONTERA: gnome-desktop → recipes/incoming-gnome/gnome-desktop.toml YA existe; añadir cuando el grafo lo tome. -# FRONTERA: gsettings-desktop-schemas → ya en incoming-gnome/ (runtime). +# ⛔ MURO ESTRUCTURAL, medido el 2026-07-27 — esta receta NO puede sellar tal cual, y no por un +# parche que falte. El primer intento murió en «Unknown option: systemd»: el comentario de arriba +# suponía perillas que gnome-session 48.0 no tiene. Leyendo su meson.build, lo que pide es peor que +# un nombre de opción (líneas del tarball 48.0): +# +# :86 gtk_dep = dependency('gtk+-3.0', '>= 3.22') INCONDICIONAL — es GTK **3**. +# :97 dependency('gnome-desktop-3.0', '>= 3.34.2') la librería LEGACY, la que gnome-desktop +# apaga a propósito con legacy_library=false +# («SIN libgnome-desktop-3/gtk3»). +# :124 dependency('libsystemd', required: true) INCONDICIONAL, sin opción que lo apague. +# (el -Dsystemduserunitdir= sólo esquiva el +# dependency('systemd') de :119, no éste.) +# +# O sea: gnome-session 48 asume systemd Y GTK3. Esta distro no tiene ninguno de los dos por decisión +# —arje-zero es PID1, arje-logind-compat da login1, y el frente es Wayland-only con X11 al tacho— +# así que sellarla exigiría meter GTK3 entero + un shim de libsystemd. Eso no es feature-minimal: +# es traer un toolkit muerto para un gestor de sesión que el escritorio no necesita. +# +# POR QUÉ NO BLOQUEA EL ESCRITORIO: gnome-shell NO depende de gnome-session (su cierre es +# mutter+gjs+gobject-introspection+gnome-desktop). El único que la pide es gdm. El camino vivo es +# mutter → gnome-shell, arrancado por arje como ya arranca mirada. gnome-session/gdm quedan +# APARCADAS con este diagnóstico, no en cola: es la decisión de alcance, escrita donde se busca. +# +# json-glib: frontera CERRADA (b3:1b90c876, en esta cola). No era el problema. +# gsettings-desktop-schemas / gnome-desktop: ya en incoming-gnome/ y selladas. [deps] build = ["meson", "samurai", "python3", "pkgconf", "gsettings-desktop-schemas", "gnome-desktop", "gtk4", "glib", "cairo", "pango", "graphene", "libepoxy", "wayland", "wayland-protocols", "libdrm", "harfbuzz", "fribidi", "libpng", "pixman", "freetype", "expat", "libffi", "pcre2", "zlib", "gdk-pixbuf", "libjpeg-turbo", "libtiff", "mesa", "fontconfig"] diff --git a/recipes/incoming-gnome/hwdata.toml b/recipes/incoming-gnome/hwdata.toml new file mode 100644 index 00000000..e8cc8ced --- /dev/null +++ b/recipes/incoming-gnome/hwdata.toml @@ -0,0 +1,24 @@ +# hwdata 0.393 — bases de datos de IDs de hardware (pnp.ids, pci.ids, usb.ids) + hwdata.pc. Sin código: +# sólo datos. Campaña KDE (ADR 0011): lo exige libdisplay-info en tiempo de build (dependency('hwdata') +# native → pkgdatadir/pnp.ids) y kwin como RUNTIME (find_package(hwdata) TYPE RUNTIME, tabla PNP de EDID). +# `configure` es un script shell propio (no autoconf); no compila nada. +name = "hwdata" +version = "0.393" + +[source] +tarball = "https://github.com/vcrhonek/hwdata/archive/refs/tags/v0.393.tar.gz" +sha256 = "322add86944680e99d04468d49de180a7ce0c77fb406f7abde8ab14f2d161051" + +[build] +compiler = "gcc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +configure = './configure --prefix=/usr --libdir=/usr/lib --datadir=/usr/share' +compile = 'true' +install = 'make install DESTDIR=/out' + +[deps] +build = ["pkgconf"] diff --git a/recipes/incoming-gnome/json-glib.toml b/recipes/incoming-gnome/json-glib.toml new file mode 100644 index 00000000..44812cf1 --- /dev/null +++ b/recipes/incoming-gnome/json-glib.toml @@ -0,0 +1,31 @@ +# json-glib 1.10.8 — parser/serializador JSON con el modelo de objetos de GLib (JsonNode/JsonObject). +# La dep MÁS COMPARTIDA de la frontera GNOME: la exigen mutter (config de monitores), gnome-shell y +# gnome-session. Por eso es el primer ladrillo de la onda 3 después de gnome-desktop. meson static. +# sha256 REAL de `curl -sL | sha256sum`. +# +# Feature-minimal: introspection=false, docs/man/tests off, nls=false (las traducciones piden msgfmt +# completo y el corpus sólo tiene gettext-tiny — mismo motivo que iso-codes). +# +# CUÁNDO SE DA VUELTA introspection: si gnome-shell resulta pedir Json-1.0.typelib desde JS +# (`imports.gi.Json`), esta receta tiene que pasar a la ISLA DINÁMICA como glib/gtk4 — el typelib +# exige un .so real que gjs pueda dlopen(). Mientras sólo la enlace mutter en C, static alcanza. +name = "json-glib" +version = "1.10.8" + +[source] +tarball = "https://download.gnome.org/sources/json-glib/1.10/json-glib-1.10.8.tar.xz" +sha256 = "55c5c141a564245b8f8fbe7698663c87a45a7333c2a2c56f06f811ab73b212dd" + +[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=disabled -Ddocumentation=disabled -Dman=false -Dtests=false -Dconformance=false -Dnls=disabled -Dinstalled_tests=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 gobject/gio + su cierre .pc (static ⇒ pkg-config resuelve Requires.private). +[deps] +build = ["meson", "samurai", "python3", "pkgconf", "glib", "libffi", "pcre2", "zlib"] diff --git a/recipes/incoming-gnome/lcms2.toml b/recipes/incoming-gnome/lcms2.toml new file mode 100644 index 00000000..ccec5fb8 --- /dev/null +++ b/recipes/incoming-gnome/lcms2.toml @@ -0,0 +1,26 @@ +# lcms2 2.16 — Little-CMS, motor de gestión de color (liblcms2.so). Campaña KDE (ADR 0011): sustrato de +# kwin (find_package(lcms2) TYPE REQUIRED, color management del compositor). Autotools sobre zig-cc. +# Sólo el core: --without-jpeg/--without-tiff (esas deps sólo las usan los ejemplos, no la lib). +name = "lcms2" +version = "2.16" + +[source] +tarball = "https://github.com/mm2/Little-CMS/releases/download/lcms2.16/lcms2-2.16.tar.gz" +sha256 = "d873d34ad8b9b4cea010631f1a6228d2087475e4dc5e763eb81acc23d9d45a51" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +zig_version = "0.13.0" + +[build.phases] +configure = ''' +PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig \ +./configure --build=$CBUILD --host=$CHOST --prefix=/usr --disable-static --without-jpeg --without-tiff +''' +compile = "make -j\"$(nproc)\"" +install = "make install DESTDIR=/out && find /out -name '*.la' -delete" + +[deps] +build = ["pkgconf", "python3"] diff --git a/recipes/incoming-gnome/libdisplay-info.toml b/recipes/incoming-gnome/libdisplay-info.toml new file mode 100644 index 00000000..4b39558a --- /dev/null +++ b/recipes/incoming-gnome/libdisplay-info.toml @@ -0,0 +1,24 @@ +# libdisplay-info 0.2.0 — parseo de EDID/DisplayID (libdisplay-info.so). Campaña KDE (ADR 0011): sustrato +# de kwin (pkg_check_modules(libdisplay-info>=0.2.0) REQUIRED, lectura de EDID de los monitores). Meson. +# En build necesita pnp.ids: usa dependency('hwdata') native → si no está, cae a /usr/share/hwdata/pnp.ids +# y meson `files()` EXIGE que exista ⇒ hwdata es dep de build. Sin di-edid-decode (tool) para evitar más deps. +name = "libdisplay-info" +version = "0.2.0" + +[source] +tarball = "https://gitlab.freedesktop.org/emersion/libdisplay-info/-/archive/0.2.0/libdisplay-info-0.2.0.tar.gz" +sha256 = "f7331fcaf5527251b84c8fb84238d06cd2f458422ce950c80e86c72927aa8c2b" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +zig_version = "0.13.0" + +[build.phases] +configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig meson setup output --prefix=/usr --buildtype=release" +compile = "ninja -C output" +install = "DESTDIR=/out ninja -C output install" + +[deps] +build = ["meson", "samurai", "python3", "pkgconf", "hwdata"]