diff --git a/docs/plan-apps-usuario-final.md b/docs/plan-apps-usuario-final.md index 06674515..64cd4404 100644 --- a/docs/plan-apps-usuario-final.md +++ b/docs/plan-apps-usuario-final.md @@ -37,7 +37,7 @@ Dos columnas, y **la que importa es la segunda**: | ~~imv~~ | 7 | **GL de escritorio** | ❌ **BLOQUEADA 2026-09-03** — el muro no lo veía este método; ver abajo. Reemplazada por `swayimg`, sellada el mismo día. | | ~~swayimg~~ | — | — | ✅ **SELLADA 2026-09-03** (b3:9bcd39c1, **5.5**), en las CUATRO imágenes. Visor sin GL: rasteriza a `wl_shm`. Trae backend DRM de yapa. | | ~~luajit~~ | — | — | ✅ **SELLADA 2026-09-03** (b3:115d4c1c). Escrita para destrabar swayimg 5.x; mpv también la prefiere. | -| **zathura** | 8 | — | lector de PDF; `girara` es su propia lib y ya usa GTK4 en Alpine. | +| ~~zathura~~ | — | — | ✅ **SELLADA 2026-09-03** (b3:9c5eac92) + `zathura-pdf-poppler`. **Es GTK4, no GTK3**: upstream vació girara. En gnome/cosmic/sway; **NO en KDE**, por colisión de poppler. | | **mupdf** | 9 | X11 | el X11 es del visor `mupdf-x11`; el motor y `mupdf-gl` no. Requiere mirar. | | **inkscape** | 14 | — | sin muros, pero `gtkmm3` en la lista hay que verificarlo (¿GTK3 encubierto?). | | *mpv* | *16* | *X11* | *YA SELLADA — es el control del método, no una candidata.* | @@ -221,7 +221,13 @@ cierre (wayland, ffmpeg, libdrm) quedó completo cuando entró mpv. 4. ✅ **visor de imágenes** — hecho (2026-09-03), pero con **`swayimg` 4.7 y no `imv`**: imv está bloqueada por el muro de GL de escritorio (sección de arriba). En las cuatro imágenes. 4b. ✅ **`luajit`** — hecha (2026-09-03). Destrabó swayimg 5.5 y queda disponible para mpv. -5. **zathura** (+ backend PDF) — verificar antes que su cadena sea GTK4 y no GTK3. +5. ✅ **zathura + backend PDF** — hecho (2026-09-03). **La sospecha de GTK3 era falsa**: upstream + VACIÓ `girara` (en 2026.07.18 son siete `.c` de utilidades, cero GTK) y toda la UI se mudó a + zathura, que pide GTK4 >= 4.12 — que está en el corpus. Costó 5 recetas nuevas + (`girara`, `xxhash`, `poppler-glib`, `zathura`, `zathura-pdf-poppler`) + 4 promociones gratis al + corpus (`json-glib`, `lcms2`, `glib-shared`, `pcre2-shared`, `bzip2-shared`). + **No va en `escritorio-kde`**: su backend necesita una poppler con `ENABLE_GLIB=ON` y esa imagen + ya trae la de Qt6 vía okular; las dos instalan `/usr/lib/libpoppler.so.146`. 6. **Decisión de navegador** — no es trabajo de recetas, es la elección de arriba. No debería entrar a una cola de build hasta que esté tomada. diff --git a/docs/state/build-state-cosmic.json b/docs/state/build-state-cosmic.json index 806bbb3a..f20808c9 100644 --- a/docs/state/build-state-cosmic.json +++ b/docs/state/build-state-cosmic.json @@ -1,14 +1,14 @@ { "schema": "hammer-build-state/1", "totals": { - "recipes": 851, - "nodes": 852, - "sealed": 851, + "recipes": 854, + "nodes": 855, + "sealed": 854, "ajeno": 1 }, "by_class": { "ajeno": 1, - "c": 198, + "c": 201, "go": 362, "gui": 35, "kernel": 6, @@ -17,7 +17,7 @@ "debt_by_class": {}, "by_queue": { "corpus": { - "sealed": 812, + "sealed": 815, "ajeno": 1 }, "incoming-cosmic": { @@ -36,9 +36,9 @@ "sealed": 75 }, "escritorio-cosmic": { - "raices": 34, - "clausura": 113, - "sealed": 113 + "raices": 37, + "clausura": 131, + "sealed": 131 }, "escritorio-mirada": { "raices": 14, @@ -46,7 +46,7 @@ "sealed": 33 } }, - "sin_perfil": 652, + "sin_perfil": 645, "orphan_deps": [], "topo_ok": true, "nodes": { @@ -1147,6 +1147,27 @@ "perfiles": [], "dependientes_total": 10 }, + "bzip2-shared": { + "iname": "bzip2-shared", + "version": "1.0.8", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "pkgconf" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:1e404254499a9fdb26185c95a4d3cd112c89cc7e065540fb465fbe104805f8c4", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 2 + }, "ca-certificates": { "iname": "ca-certificates", "version": "20260611", @@ -1214,9 +1235,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", "escritorio-sway" ], - "dependientes_total": 16 + "dependientes_total": 17 }, "caligula": { "iname": "caligula", @@ -4042,7 +4065,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 64 + "dependientes_total": 65 }, "expat-shared": { "iname": "expat-shared", @@ -4282,7 +4305,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 1 }, "filebrowser": { @@ -4440,9 +4467,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 14 + "dependientes_total": 15 }, "foot": { "iname": "foot", @@ -4557,9 +4586,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 16 + "dependientes_total": 17 }, "freeze": { "iname": "freeze", @@ -4752,7 +4783,9 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-cosmic" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], "dependientes_total": 9 }, @@ -4922,7 +4955,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 2 }, "git": { @@ -5303,7 +5340,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 31 + "dependientes_total": 28 }, "glib-shared": { "iname": "glib-shared", @@ -6170,7 +6207,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 8 }, "grcov": { @@ -6328,7 +6369,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 7 }, "gtk4-hello": { @@ -7382,7 +7427,9 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-cosmic" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], "dependientes_total": 2 }, @@ -8279,8 +8326,12 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], - "dependientes_total": 2 + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 3 }, "lefthook": { "iname": "lefthook", @@ -8607,8 +8658,10 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ + "escritorio-cosmic", "escritorio-gnome", - "escritorio-kde" + "escritorio-kde", + "escritorio-sway" ], "dependientes_total": 17 }, @@ -8674,7 +8727,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 105 + "dependientes_total": 107 }, "libffi-shared": { "iname": "libffi-shared", @@ -8807,9 +8860,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 15 + "dependientes_total": 16 }, "libksba": { "iname": "libksba", @@ -8943,9 +8998,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 22 + "dependientes_total": 23 }, "libqalculate": { "iname": "libqalculate", @@ -10094,7 +10151,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 121 + "dependientes_total": 122 }, "micro": { "iname": "micro", @@ -11332,6 +11389,8 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", "escritorio-sway" ], "dependientes_total": 9 @@ -11450,7 +11509,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 79 + "dependientes_total": 76 }, "pcre2-shared": { "iname": "pcre2-shared", @@ -11674,7 +11733,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 37 + "dependientes_total": 38 }, "pkgconf": { "iname": "pkgconf", @@ -11697,7 +11756,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 380 + "dependientes_total": 383 }, "plow": { "iname": "plow", @@ -11833,10 +11892,10 @@ "pkgconf", "gettext-tiny", "gperf", - "glib", + "glib-shared", + "pcre2-shared", "cairo", "pixman", - "pcre2", "libffi", "freetype-shared", "fontconfig-shared", @@ -11848,12 +11907,49 @@ ], "cls": "gui", "queue": "corpus", - "hash": "b3:ef5256e7be3b77cf9ca746e3d3cda38a555630f87974ae66b1b2cd4d455d043e", + "hash": "b3:fb5186f90d755cfe8bfe863f5440d0494483968706ef0de84c7c05426ce5cc76", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 2 + }, + "poppler-render-check": { + "iname": "poppler-render-check", + "version": "25.02.0", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "pkgconf", + "python3", + "poppler-glib", + "glib-shared", + "pcre2-shared", + "cairo", + "pixman", + "libffi", + "zlib", + "zlib-shared", + "bzip2-shared", + "freetype-shared", + "fontconfig-shared", + "expat", + "lcms2", + "libjpeg-turbo-shared", + "libpng-shared" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:0d29dc69792df003726252fbc381a0133df7654daafccf547f8d5a82e526c1fe", "state": "sealed", "blocked_by": [], "unblocks": 0, "perfiles": [], - "dependientes_total": 1 + "dependientes_total": 0 }, "portal-probe": { "iname": "portal-probe", @@ -12103,7 +12199,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 292 + "dependientes_total": 294 }, "qrcp": { "iname": "qrcp", @@ -12658,7 +12754,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 255 + "dependientes_total": 256 }, "sassc": { "iname": "sassc", @@ -13247,9 +13343,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 3 + "dependientes_total": 4 }, "ssh-vault": { "iname": "ssh-vault", @@ -15482,7 +15580,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 1 }, "xz": { @@ -15606,8 +15708,10 @@ "xxhash", "json-glib", "file", + "sqlite", "gtk4", - "glib", + "glib-shared", + "pcre2-shared", "cairo", "pango", "gdk-pixbuf", @@ -15628,18 +15732,64 @@ "libjpeg-turbo", "libtiff", "libffi", - "pcre2", - "zlib" + "zlib", + "zlib-shared", + "bzip2-shared" ], "cls": "c", "queue": "corpus", - "hash": "b3:94a7c57b0b5b75129f5481361c9a395acd1e253293c75ce041c69b4f9f4e4dc1", + "hash": "b3:9c5eac9263563cbf359ba7c0e6bb6346747a46a6172baa3de8842df6f6ada829", "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 1 }, + "zathura-pdf-poppler": { + "iname": "zathura-pdf-poppler", + "version": "2026.07.18", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "meson", + "samurai", + "python3", + "pkgconf", + "linux-headers", + "zathura", + "girara", + "poppler-glib", + "glib-shared", + "pcre2-shared", + "cairo", + "pixman", + "libffi", + "zlib", + "freetype-shared", + "fontconfig-shared", + "expat", + "lcms2", + "libjpeg-turbo-shared", + "libpng-shared", + "zlib-shared" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:ef4062c5a1a5f9b2c8190b4d7d5576afa2a7485f3c7329366dd73d3360d88231", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 0 + }, "zellij": { "iname": "zellij", "version": "0.44.3", @@ -15711,7 +15861,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 103 + "dependientes_total": 104 }, "zlib-ng": { "iname": "zlib-ng", @@ -15750,7 +15900,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 76 + "dependientes_total": 80 }, "zola": { "iname": "zola", diff --git a/docs/state/build-state-gnome.json b/docs/state/build-state-gnome.json index aee804ae..be070a81 100644 --- a/docs/state/build-state-gnome.json +++ b/docs/state/build-state-gnome.json @@ -1,27 +1,30 @@ { "schema": "hammer-build-state/1", "totals": { - "recipes": 875, - "nodes": 876, - "sealed": 875, - "ajeno": 1 + "recipes": 880, + "nodes": 882, + "sealed": 880, + "ajeno": 1, + "wanted": 1 }, "by_class": { "ajeno": 1, - "c": 236, + "c": 240, "go": 362, - "gui": 41, + "gui": 42, "kernel": 6, - "rust": 230 + "rust": 230, + "wanted": 1 }, "debt_by_class": {}, "by_queue": { "corpus": { - "sealed": 801, + "sealed": 806, "ajeno": 1 }, "incoming-gnome": { - "sealed": 74 + "sealed": 74, + "wanted": 1 } }, "by_profile": { @@ -36,9 +39,9 @@ "sealed": 74 }, "escritorio-gnome": { - "raices": 10, - "clausura": 138, - "sealed": 138 + "raices": 14, + "clausura": 148, + "sealed": 148 }, "escritorio-mirada": { "raices": 14, @@ -46,7 +49,7 @@ "sealed": 33 } }, - "sin_perfil": 665, + "sin_perfil": 662, "orphan_deps": [], "topo_ok": true, "nodes": { @@ -1234,6 +1237,27 @@ "perfiles": [], "dependientes_total": 10 }, + "bzip2-shared": { + "iname": "bzip2-shared", + "version": "1.0.8", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "pkgconf" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:1e404254499a9fdb26185c95a4d3cd112c89cc7e065540fb465fbe104805f8c4", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 2 + }, "ca-certificates": { "iname": "ca-certificates", "version": "20260611", @@ -1301,9 +1325,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", "escritorio-sway" ], - "dependientes_total": 15 + "dependientes_total": 17 }, "cairo-shared": { "iname": "cairo-shared", @@ -2940,6 +2966,21 @@ "perfiles": [], "dependientes_total": 0 }, + "dejavu-fonts": { + "iname": "dejavu-fonts", + "version": null, + "link": null, + "compiler": null, + "deps": [], + "cls": "wanted", + "queue": "incoming-gnome", + "hash": null, + "state": "wanted", + "blocked_by": [], + "unblocks": 0, + "perfiles": [], + "dependientes_total": 0 + }, "delta": { "iname": "delta", "version": "0.19.2", @@ -3776,7 +3817,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 63 + "dependientes_total": 65 }, "expat-shared": { "iname": "expat-shared", @@ -4016,7 +4057,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 1 }, "filebrowser": { @@ -4174,9 +4219,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 13 + "dependientes_total": 15 }, "foot": { "iname": "foot", @@ -4291,9 +4338,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 15 + "dependientes_total": 17 }, "freeze": { "iname": "freeze", @@ -4823,8 +4872,12 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], - "dependientes_total": 1 + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 2 }, "git": { "iname": "git", @@ -5270,6 +5323,33 @@ ], "dependientes_total": 29 }, + "glib-shared": { + "iname": "glib-shared", + "version": "2.88.1", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "meson", + "samurai", + "python3", + "pkgconf", + "libffi", + "pcre2-shared", + "zlib-shared" + ], + "cls": "gui", + "queue": "corpus", + "hash": "b3:c3810d3b23e6fb1d8dc6874ddf229f648e3039c5725d5d70035f250394d5dd96", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 4 + }, "glow": { "iname": "glow", "version": "2.1.2", @@ -8881,8 +8961,10 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ + "escritorio-cosmic", "escritorio-gnome", - "escritorio-kde" + "escritorio-kde", + "escritorio-sway" ], "dependientes_total": 17 }, @@ -8948,7 +9030,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 104 + "dependientes_total": 107 }, "libffi-shared": { "iname": "libffi-shared", @@ -9284,9 +9366,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 14 + "dependientes_total": 16 }, "libksba": { "iname": "libksba", @@ -9420,9 +9504,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 21 + "dependientes_total": 23 }, "libpsl": { "iname": "libpsl", @@ -10048,7 +10134,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 34 + "dependientes_total": 35 }, "linux-metal": { "iname": "linux-metal", @@ -10730,7 +10816,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 120 + "dependientes_total": 122 }, "micro": { "iname": "micro", @@ -12229,7 +12315,28 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 78 + "dependientes_total": 76 + }, + "pcre2-shared": { + "iname": "pcre2-shared", + "version": "10.47", + "link": "dynamic", + "compiler": "gcc", + "deps": [ + "zlib-shared" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:a92e924a4d25b7dd42a02411518367a1905463c5cc3165f5fbdfb5925aa877ec", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 5 }, "peco": { "iname": "peco", @@ -12434,7 +12541,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 36 + "dependientes_total": 38 }, "pkgconf": { "iname": "pkgconf", @@ -12457,7 +12564,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 379 + "dependientes_total": 383 }, "plow": { "iname": "plow", @@ -12602,10 +12709,10 @@ "pkgconf", "gettext-tiny", "gperf", - "glib", + "glib-shared", + "pcre2-shared", "cairo", "pixman", - "pcre2", "libffi", "freetype-shared", "fontconfig-shared", @@ -12617,7 +12724,44 @@ ], "cls": "gui", "queue": "corpus", - "hash": "b3:ef5256e7be3b77cf9ca746e3d3cda38a555630f87974ae66b1b2cd4d455d043e", + "hash": "b3:fb5186f90d755cfe8bfe863f5440d0494483968706ef0de84c7c05426ce5cc76", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 2 + }, + "poppler-render-check": { + "iname": "poppler-render-check", + "version": "25.02.0", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "pkgconf", + "python3", + "poppler-glib", + "glib-shared", + "pcre2-shared", + "cairo", + "pixman", + "libffi", + "zlib", + "zlib-shared", + "bzip2-shared", + "freetype-shared", + "fontconfig-shared", + "expat", + "lcms2", + "libjpeg-turbo-shared", + "libpng-shared" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:0d29dc69792df003726252fbc381a0133df7654daafccf547f8d5a82e526c1fe", "state": "sealed", "blocked_by": [], "unblocks": 0, @@ -12930,7 +13074,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 291 + "dependientes_total": 294 }, "qrcp": { "iname": "qrcp", @@ -13485,7 +13629,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 254 + "dependientes_total": 256 }, "sassc": { "iname": "sassc", @@ -14099,9 +14243,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 3 + "dependientes_total": 4 }, "sqlite-shared": { "iname": "sqlite-shared", @@ -16458,7 +16604,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 1 }, "xz": { @@ -16582,8 +16732,10 @@ "xxhash", "json-glib", "file", + "sqlite", "gtk4", - "glib", + "glib-shared", + "pcre2-shared", "cairo", "pango", "gdk-pixbuf", @@ -16604,16 +16756,62 @@ "libjpeg-turbo", "libtiff", "libffi", - "pcre2", - "zlib" + "zlib", + "zlib-shared", + "bzip2-shared" ], "cls": "c", "queue": "corpus", - "hash": "b3:94a7c57b0b5b75129f5481361c9a395acd1e253293c75ce041c69b4f9f4e4dc1", + "hash": "b3:9c5eac9263563cbf359ba7c0e6bb6346747a46a6172baa3de8842df6f6ada829", "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 1 + }, + "zathura-pdf-poppler": { + "iname": "zathura-pdf-poppler", + "version": "2026.07.18", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "meson", + "samurai", + "python3", + "pkgconf", + "linux-headers", + "zathura", + "girara", + "poppler-glib", + "glib-shared", + "pcre2-shared", + "cairo", + "pixman", + "libffi", + "zlib", + "freetype-shared", + "fontconfig-shared", + "expat", + "lcms2", + "libjpeg-turbo-shared", + "libpng-shared", + "zlib-shared" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:ef4062c5a1a5f9b2c8190b4d7d5576afa2a7485f3c7329366dd73d3360d88231", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 0 }, "zellij": { @@ -16687,7 +16885,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 102 + "dependientes_total": 104 }, "zlib-ng": { "iname": "zlib-ng", @@ -16726,7 +16924,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 75 + "dependientes_total": 80 }, "zola": { "iname": "zola", diff --git a/docs/state/build-state-kde.json b/docs/state/build-state-kde.json index 36303376..a4f471a1 100644 --- a/docs/state/build-state-kde.json +++ b/docs/state/build-state-kde.json @@ -1,14 +1,14 @@ { "schema": "hammer-build-state/1", "totals": { - "recipes": 995, - "nodes": 996, - "sealed": 995, + "recipes": 997, + "nodes": 998, + "sealed": 997, "ajeno": 1 }, "by_class": { "ajeno": 1, - "c": 360, + "c": 362, "go": 362, "gui": 38, "kernel": 6, @@ -17,7 +17,7 @@ "debt_by_class": {}, "by_queue": { "corpus": { - "sealed": 797 + "sealed": 799 }, "incoming-kde": { "sealed": 198, @@ -36,9 +36,9 @@ "sealed": 70 }, "escritorio-kde": { - "raices": 15, - "clausura": 196, - "sealed": 195, + "raices": 16, + "clausura": 197, + "sealed": 196, "ajeno": 1 }, "escritorio-mirada": { @@ -47,7 +47,7 @@ "sealed": 29 } }, - "sin_perfil": 713, + "sin_perfil": 706, "orphan_deps": [], "topo_ok": true, "nodes": { @@ -1400,7 +1400,9 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-kde" + ], "dependientes_total": 3 }, "ca-certificates": { @@ -1470,9 +1472,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", "escritorio-sway" ], - "dependientes_total": 15 + "dependientes_total": 17 }, "caligula": { "iname": "caligula", @@ -3930,7 +3934,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 63 + "dependientes_total": 65 }, "expat-shared": { "iname": "expat-shared", @@ -4191,7 +4195,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 1 }, "filebrowser": { @@ -4412,9 +4420,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 13 + "dependientes_total": 15 }, "foot": { "iname": "foot", @@ -4603,9 +4613,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 15 + "dependientes_total": 17 }, "freeze": { "iname": "freeze", @@ -4776,7 +4788,9 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-cosmic" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], "dependientes_total": 9 }, @@ -4946,8 +4960,12 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], - "dependientes_total": 1 + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 2 }, "git": { "iname": "git", @@ -5327,7 +5345,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 30 + "dependientes_total": 28 }, "glib-shared": { "iname": "glib-shared", @@ -6194,7 +6212,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 8 }, "grcov": { @@ -6352,7 +6374,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 7 }, "gtk4-hello": { @@ -7509,7 +7535,9 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-cosmic" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], "dependientes_total": 2 }, @@ -12342,8 +12370,10 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ + "escritorio-cosmic", "escritorio-gnome", - "escritorio-kde" + "escritorio-kde", + "escritorio-sway" ], "dependientes_total": 17 }, @@ -12405,7 +12435,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 104 + "dependientes_total": 107 }, "libffi-shared": { "iname": "libffi-shared", @@ -12528,9 +12558,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 14 + "dependientes_total": 16 }, "libksba": { "iname": "libksba", @@ -12920,9 +12952,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 21 + "dependientes_total": 23 }, "libpthread-stubs": { "iname": "libpthread-stubs", @@ -13559,7 +13593,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 34 + "dependientes_total": 35 }, "linux-metal": { "iname": "linux-metal", @@ -14244,7 +14278,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 120 + "dependientes_total": 122 }, "micro": { "iname": "micro", @@ -15736,6 +15770,8 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", "escritorio-sway" ], "dependientes_total": 9 @@ -15854,7 +15890,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 78 + "dependientes_total": 76 }, "pcre2-shared": { "iname": "pcre2-shared", @@ -16142,7 +16178,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 36 + "dependientes_total": 38 }, "pkgconf": { "iname": "pkgconf", @@ -16165,7 +16201,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 379 + "dependientes_total": 383 }, "plasma-activities": { "iname": "plasma-activities", @@ -17105,10 +17141,10 @@ "pkgconf", "gettext-tiny", "gperf", - "glib", + "glib-shared", + "pcre2-shared", "cairo", "pixman", - "pcre2", "libffi", "freetype-shared", "fontconfig-shared", @@ -17120,7 +17156,44 @@ ], "cls": "gui", "queue": "corpus", - "hash": "b3:ef5256e7be3b77cf9ca746e3d3cda38a555630f87974ae66b1b2cd4d455d043e", + "hash": "b3:fb5186f90d755cfe8bfe863f5440d0494483968706ef0de84c7c05426ce5cc76", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 2 + }, + "poppler-render-check": { + "iname": "poppler-render-check", + "version": "25.02.0", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "pkgconf", + "python3", + "poppler-glib", + "glib-shared", + "pcre2-shared", + "cairo", + "pixman", + "libffi", + "zlib", + "zlib-shared", + "bzip2-shared", + "freetype-shared", + "fontconfig-shared", + "expat", + "lcms2", + "libjpeg-turbo-shared", + "libpng-shared" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:0d29dc69792df003726252fbc381a0133df7654daafccf547f8d5a82e526c1fe", "state": "sealed", "blocked_by": [], "unblocks": 0, @@ -17551,7 +17624,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 291 + "dependientes_total": 294 }, "qcoro": { "iname": "qcoro", @@ -18695,7 +18768,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 254 + "dependientes_total": 256 }, "sassc": { "iname": "sassc", @@ -19466,9 +19539,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 3 + "dependientes_total": 4 }, "ssh-vault": { "iname": "ssh-vault", @@ -22048,7 +22123,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 1 }, "xz": { @@ -22189,8 +22268,10 @@ "xxhash", "json-glib", "file", + "sqlite", "gtk4", - "glib", + "glib-shared", + "pcre2-shared", "cairo", "pango", "gdk-pixbuf", @@ -22211,16 +22292,62 @@ "libjpeg-turbo", "libtiff", "libffi", - "pcre2", - "zlib" + "zlib", + "zlib-shared", + "bzip2-shared" ], "cls": "c", "queue": "corpus", - "hash": "b3:94a7c57b0b5b75129f5481361c9a395acd1e253293c75ce041c69b4f9f4e4dc1", + "hash": "b3:9c5eac9263563cbf359ba7c0e6bb6346747a46a6172baa3de8842df6f6ada829", "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 1 + }, + "zathura-pdf-poppler": { + "iname": "zathura-pdf-poppler", + "version": "2026.07.18", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "meson", + "samurai", + "python3", + "pkgconf", + "linux-headers", + "zathura", + "girara", + "poppler-glib", + "glib-shared", + "pcre2-shared", + "cairo", + "pixman", + "libffi", + "zlib", + "freetype-shared", + "fontconfig-shared", + "expat", + "lcms2", + "libjpeg-turbo-shared", + "libpng-shared", + "zlib-shared" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:ef4062c5a1a5f9b2c8190b4d7d5576afa2a7485f3c7329366dd73d3360d88231", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 0 }, "zellij": { @@ -22294,7 +22421,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 102 + "dependientes_total": 104 }, "zlib-ng": { "iname": "zlib-ng", @@ -22333,7 +22460,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 75 + "dependientes_total": 80 }, "zola": { "iname": "zola", diff --git a/docs/state/build-state-wlr.json b/docs/state/build-state-wlr.json index 13efcd9d..4505b452 100644 --- a/docs/state/build-state-wlr.json +++ b/docs/state/build-state-wlr.json @@ -1,27 +1,23 @@ { "schema": "hammer-build-state/1", "totals": { - "recipes": 827, - "nodes": 828, - "sealed": 826, - "never": 1, + "recipes": 831, + "nodes": 832, + "sealed": 831, "ajeno": 1 }, "by_class": { "ajeno": 1, - "c": 196, + "c": 199, "go": 362, - "gui": 34, + "gui": 35, "kernel": 6, "rust": 229 }, - "debt_by_class": { - "c": 1 - }, + "debt_by_class": {}, "by_queue": { "corpus": { - "sealed": 811, - "never": 1, + "sealed": 816, "ajeno": 1 }, "incoming-wlr": { @@ -45,12 +41,12 @@ "sealed": 33 }, "escritorio-sway": { - "raices": 64, - "clausura": 151, - "sealed": 151 + "raices": 67, + "clausura": 170, + "sealed": 170 } }, - "sin_perfil": 653, + "sin_perfil": 645, "orphan_deps": [], "topo_ok": true, "nodes": { @@ -1151,6 +1147,27 @@ "perfiles": [], "dependientes_total": 10 }, + "bzip2-shared": { + "iname": "bzip2-shared", + "version": "1.0.8", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "pkgconf" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:1e404254499a9fdb26185c95a4d3cd112c89cc7e065540fb465fbe104805f8c4", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 2 + }, "ca-certificates": { "iname": "ca-certificates", "version": "20260611", @@ -1216,11 +1233,13 @@ "hash": "b3:1b222392a90a7c416cc9ea8a5a30dc9aa49ba44031651954566e26ae0e0c8774", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", "escritorio-sway" ], - "dependientes_total": 16 + "dependientes_total": 17 }, "caligula": { "iname": "caligula", @@ -3570,7 +3589,7 @@ "hash": "b3:117ee7e8fd5a41bd936d723c72c95cd3f8290292b52ba8088cc0701be170597b", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "base", "cli", @@ -3580,7 +3599,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 64 + "dependientes_total": 65 }, "expat-shared": { "iname": "expat-shared", @@ -3820,7 +3839,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 1 }, "filebrowser": { @@ -3976,11 +3999,13 @@ "hash": "b3:3031ef0098201d2d302f431a283cfe397e74da20c21b026591a59e2200e5f955", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 14 + "dependientes_total": 15 }, "foot": { "iname": "foot", @@ -4093,11 +4118,13 @@ "hash": "b3:80b5c5f06b0756b876178e54b47e280bdc32e7dc926605a8d8b059697dc48d1a", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 16 + "dependientes_total": 17 }, "freeze": { "iname": "freeze", @@ -4478,8 +4505,12 @@ "hash": "b3:f2c0db0a09e4d5dbfa623bbdc39bb91a1f315aa1e062874d66b24e655bbe8e12", "state": "sealed", "blocked_by": [], - "unblocks": 1, - "perfiles": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 2 }, "git": { @@ -4853,14 +4884,41 @@ "hash": "b3:74ade6a67d6a0938d6cba154d2a3d06e647efd872bdc02ada0860214c7b321c4", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 31 + "dependientes_total": 28 + }, + "glib-shared": { + "iname": "glib-shared", + "version": "2.88.1", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "meson", + "samurai", + "python3", + "pkgconf", + "libffi", + "pcre2-shared", + "zlib-shared" + ], + "cls": "gui", + "queue": "corpus", + "hash": "b3:c3810d3b23e6fb1d8dc6874ddf229f648e3039c5725d5d70035f250394d5dd96", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 4 }, "glow": { "iname": "glow", @@ -5682,7 +5740,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 8 }, "grcov": { @@ -5870,7 +5932,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 7 }, "gtk4-hello": { @@ -6902,7 +6968,9 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-cosmic" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], "dependientes_total": 2 }, @@ -7798,9 +7866,13 @@ "hash": "b3:955a60f3fb0eb87c51d39a8d97c1133a85bd2600ded5b1a46f94953dfc74e01c", "state": "sealed", "blocked_by": [], - "unblocks": 1, - "perfiles": [], - "dependientes_total": 2 + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 3 }, "lefthook": { "iname": "lefthook", @@ -8110,8 +8182,10 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ + "escritorio-cosmic", "escritorio-gnome", - "escritorio-kde" + "escritorio-kde", + "escritorio-sway" ], "dependientes_total": 17 }, @@ -8169,7 +8243,7 @@ "hash": "b3:1df7e7a3eac63694f8d094646cfc231f3843995f6f9f945cda138760f6bc9838", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "escritorio-cosmic", "escritorio-gnome", @@ -8177,7 +8251,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 105 + "dependientes_total": 107 }, "libffi-shared": { "iname": "libffi-shared", @@ -8308,11 +8382,13 @@ "hash": "b3:afc8000655fb31cc2204fb24be2bded107dea7810ddc18159fc9a6b22bf6939e", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 15 + "dependientes_total": 16 }, "libksba": { "iname": "libksba", @@ -8444,11 +8520,13 @@ "hash": "b3:761a6a9f25f59fa351663d574ae527d6a100aed86eef6ea2ef77a8e8ce628f6f", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 22 + "dependientes_total": 23 }, "libsass": { "iname": "libsass", @@ -8879,7 +8957,7 @@ "hash": "b3:fd14c9c4d0081fd44503cbc762e8865413c240097448c5b1be236a285ea811b5", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "base", "cli", @@ -9542,7 +9620,7 @@ "hash": "b3:6564ae63c23ca73b0738e0708dfde01cf965ff9bd1c5950d7376fa1659fd5058", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "base", "cli", @@ -9552,7 +9630,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 121 + "dependientes_total": 122 }, "micro": { "iname": "micro", @@ -10770,6 +10848,8 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", "escritorio-sway" ], "dependientes_total": 9 @@ -10879,7 +10959,7 @@ "hash": "b3:c4930964fbaf4f33365e6eb8d7e6069ae3056b5796fca83d254bee2a88a341bc", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "base", "cli", @@ -10888,7 +10968,28 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 79 + "dependientes_total": 76 + }, + "pcre2-shared": { + "iname": "pcre2-shared", + "version": "10.47", + "link": "dynamic", + "compiler": "gcc", + "deps": [ + "zlib-shared" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:a92e924a4d25b7dd42a02411518367a1905463c5cc3165f5fbdfb5925aa877ec", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 5 }, "peco": { "iname": "peco", @@ -11085,7 +11186,7 @@ "hash": "b3:22f640e209a9559d193a99563fff6378dc92c8f7f6a44be935172c8f4f7ecb0a", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "escritorio-cosmic", "escritorio-gnome", @@ -11093,7 +11194,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 37 + "dependientes_total": 38 }, "pkgconf": { "iname": "pkgconf", @@ -11106,7 +11207,7 @@ "hash": "b3:cfb6a37eb990fb001dd66d5c2103e80cfa858b49aaa60a397ba0356830cc09b4", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "base", "cli", @@ -11116,7 +11217,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 380 + "dependientes_total": 383 }, "plow": { "iname": "plow", @@ -11230,10 +11331,10 @@ "pkgconf", "gettext-tiny", "gperf", - "glib", + "glib-shared", + "pcre2-shared", "cairo", "pixman", - "pcre2", "libffi", "freetype-shared", "fontconfig-shared", @@ -11245,12 +11346,49 @@ ], "cls": "gui", "queue": "corpus", - "hash": "b3:ef5256e7be3b77cf9ca746e3d3cda38a555630f87974ae66b1b2cd4d455d043e", + "hash": "b3:fb5186f90d755cfe8bfe863f5440d0494483968706ef0de84c7c05426ce5cc76", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 2 + }, + "poppler-render-check": { + "iname": "poppler-render-check", + "version": "25.02.0", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "pkgconf", + "python3", + "poppler-glib", + "glib-shared", + "pcre2-shared", + "cairo", + "pixman", + "libffi", + "zlib", + "zlib-shared", + "bzip2-shared", + "freetype-shared", + "fontconfig-shared", + "expat", + "lcms2", + "libjpeg-turbo-shared", + "libpng-shared" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:0d29dc69792df003726252fbc381a0133df7654daafccf547f8d5a82e526c1fe", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, "perfiles": [], - "dependientes_total": 1 + "dependientes_total": 0 }, "prek": { "iname": "prek", @@ -11470,7 +11608,7 @@ "hash": "b3:ff5cf5e5080f20587b26946d0dfff36a58c9096d30eace4ae9cece24594d171e", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "base", "cli", @@ -11480,7 +11618,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 292 + "dependientes_total": 294 }, "qrcp": { "iname": "qrcp", @@ -12025,7 +12163,7 @@ "hash": "b3:2f75c0e225a60fd56f7e415b7a739a461c97695c2e3f015c9af576d8a4a2492c", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "base", "cli", @@ -12035,7 +12173,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 255 + "dependientes_total": 256 }, "sassc": { "iname": "sassc", @@ -12663,9 +12801,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 3 + "dependientes_total": 4 }, "ssh-vault": { "iname": "ssh-vault", @@ -15028,7 +15168,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 1 }, "xz": { @@ -15195,8 +15339,10 @@ "xxhash", "json-glib", "file", + "sqlite", "gtk4", - "glib", + "glib-shared", + "pcre2-shared", "cairo", "pango", "gdk-pixbuf", @@ -15217,16 +15363,21 @@ "libjpeg-turbo", "libtiff", "libffi", - "pcre2", - "zlib" + "zlib", + "zlib-shared", + "bzip2-shared" ], "cls": "c", "queue": "corpus", - "hash": "b3:94a7c57b0b5b75129f5481361c9a395acd1e253293c75ce041c69b4f9f4e4dc1", + "hash": "b3:9c5eac9263563cbf359ba7c0e6bb6346747a46a6172baa3de8842df6f6ada829", "state": "sealed", "blocked_by": [], - "unblocks": 1, - "perfiles": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 1 }, "zathura-pdf-poppler": { @@ -15243,10 +15394,10 @@ "zathura", "girara", "poppler-glib", - "glib", + "glib-shared", + "pcre2-shared", "cairo", "pixman", - "pcre2", "libffi", "zlib", "freetype-shared", @@ -15259,11 +15410,15 @@ ], "cls": "c", "queue": "corpus", - "hash": "b3:c237623b144e8f373d414f5ba8e20340d7b875387b555c11b2f263584d132013", - "state": "never", + "hash": "b3:ef4062c5a1a5f9b2c8190b4d7d5576afa2a7485f3c7329366dd73d3360d88231", + "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 0 }, "zellij": { @@ -15327,7 +15482,7 @@ "hash": "b3:dc363f261a71239412f6090e50e8abc0c7f6e544ccefa48c5ee5f47d26e84ef3", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "base", "cli", @@ -15337,7 +15492,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 103 + "dependientes_total": 104 }, "zlib-ng": { "iname": "zlib-ng", @@ -15369,14 +15524,14 @@ "hash": "b3:b7d5397b96fc080a6e4ee9a19f5ea5ee32a63148ef87c63c795955676c5f344f", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 76 + "dependientes_total": 80 }, "zola": { "iname": "zola", diff --git a/docs/state/build-state.json b/docs/state/build-state.json index afd22b6d..2f717eb5 100644 --- a/docs/state/build-state.json +++ b/docs/state/build-state.json @@ -1,23 +1,23 @@ { "schema": "hammer-build-state/1", "totals": { - "recipes": 812, - "nodes": 813, - "sealed": 812, + "recipes": 817, + "nodes": 818, + "sealed": 817, "ajeno": 1 }, "by_class": { "ajeno": 1, - "c": 181, + "c": 185, "go": 362, - "gui": 34, + "gui": 35, "kernel": 6, "rust": 229 }, "debt_by_class": {}, "by_queue": { "corpus": { - "sealed": 812, + "sealed": 817, "ajeno": 1 } }, @@ -38,7 +38,7 @@ "sealed": 33 } }, - "sin_perfil": 652, + "sin_perfil": 645, "orphan_deps": [], "topo_ok": true, "nodes": { @@ -1139,6 +1139,27 @@ "perfiles": [], "dependientes_total": 10 }, + "bzip2-shared": { + "iname": "bzip2-shared", + "version": "1.0.8", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "pkgconf" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:1e404254499a9fdb26185c95a4d3cd112c89cc7e065540fb465fbe104805f8c4", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 2 + }, "ca-certificates": { "iname": "ca-certificates", "version": "20260611", @@ -1206,9 +1227,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", "escritorio-sway" ], - "dependientes_total": 15 + "dependientes_total": 17 }, "caligula": { "iname": "caligula", @@ -3551,7 +3574,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 63 + "dependientes_total": 65 }, "expat-shared": { "iname": "expat-shared", @@ -3791,7 +3814,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 1 }, "filebrowser": { @@ -3949,9 +3976,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 13 + "dependientes_total": 15 }, "foot": { "iname": "foot", @@ -4066,9 +4095,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 15 + "dependientes_total": 17 }, "freeze": { "iname": "freeze", @@ -4239,7 +4270,9 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-cosmic" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], "dependientes_total": 9 }, @@ -4409,8 +4442,12 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], - "dependientes_total": 1 + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 2 }, "git": { "iname": "git", @@ -4790,7 +4827,34 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 30 + "dependientes_total": 28 + }, + "glib-shared": { + "iname": "glib-shared", + "version": "2.88.1", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "meson", + "samurai", + "python3", + "pkgconf", + "libffi", + "pcre2-shared", + "zlib-shared" + ], + "cls": "gui", + "queue": "corpus", + "hash": "b3:c3810d3b23e6fb1d8dc6874ddf229f648e3039c5725d5d70035f250394d5dd96", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 4 }, "glow": { "iname": "glow", @@ -5612,7 +5676,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 8 }, "grcov": { @@ -5770,7 +5838,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 7 }, "gtk4-hello": { @@ -6783,7 +6855,9 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-cosmic" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], "dependientes_total": 2 }, @@ -7680,8 +7754,12 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], - "dependientes_total": 1 + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 3 }, "lefthook": { "iname": "lefthook", @@ -7968,8 +8046,10 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ + "escritorio-cosmic", "escritorio-gnome", - "escritorio-kde" + "escritorio-kde", + "escritorio-sway" ], "dependientes_total": 17 }, @@ -8035,7 +8115,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 104 + "dependientes_total": 107 }, "libffi-shared": { "iname": "libffi-shared", @@ -8168,9 +8248,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 14 + "dependientes_total": 16 }, "libksba": { "iname": "libksba", @@ -8304,9 +8386,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 21 + "dependientes_total": 23 }, "libsass": { "iname": "libsass", @@ -8746,7 +8830,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 34 + "dependientes_total": 35 }, "linux-metal": { "iname": "linux-metal", @@ -9410,7 +9494,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 120 + "dependientes_total": 122 }, "micro": { "iname": "micro", @@ -10628,6 +10712,8 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", "escritorio-sway" ], "dependientes_total": 9 @@ -10746,7 +10832,28 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 78 + "dependientes_total": 76 + }, + "pcre2-shared": { + "iname": "pcre2-shared", + "version": "10.47", + "link": "dynamic", + "compiler": "gcc", + "deps": [ + "zlib-shared" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:a92e924a4d25b7dd42a02411518367a1905463c5cc3165f5fbdfb5925aa877ec", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 5 }, "peco": { "iname": "peco", @@ -10951,7 +11058,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 36 + "dependientes_total": 38 }, "pkgconf": { "iname": "pkgconf", @@ -10974,7 +11081,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 379 + "dependientes_total": 383 }, "plow": { "iname": "plow", @@ -11088,10 +11195,10 @@ "pkgconf", "gettext-tiny", "gperf", - "glib", + "glib-shared", + "pcre2-shared", "cairo", "pixman", - "pcre2", "libffi", "freetype-shared", "fontconfig-shared", @@ -11103,7 +11210,44 @@ ], "cls": "gui", "queue": "corpus", - "hash": "b3:ef5256e7be3b77cf9ca746e3d3cda38a555630f87974ae66b1b2cd4d455d043e", + "hash": "b3:fb5186f90d755cfe8bfe863f5440d0494483968706ef0de84c7c05426ce5cc76", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 2 + }, + "poppler-render-check": { + "iname": "poppler-render-check", + "version": "25.02.0", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "pkgconf", + "python3", + "poppler-glib", + "glib-shared", + "pcre2-shared", + "cairo", + "pixman", + "libffi", + "zlib", + "zlib-shared", + "bzip2-shared", + "freetype-shared", + "fontconfig-shared", + "expat", + "lcms2", + "libjpeg-turbo-shared", + "libpng-shared" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:0d29dc69792df003726252fbc381a0133df7654daafccf547f8d5a82e526c1fe", "state": "sealed", "blocked_by": [], "unblocks": 0, @@ -11338,7 +11482,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 291 + "dependientes_total": 294 }, "qrcp": { "iname": "qrcp", @@ -11893,7 +12037,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 254 + "dependientes_total": 256 }, "sassc": { "iname": "sassc", @@ -12482,9 +12626,11 @@ "blocked_by": [], "unblocks": 0, "perfiles": [ - "escritorio-gnome" + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" ], - "dependientes_total": 3 + "dependientes_total": 4 }, "ssh-vault": { "iname": "ssh-vault", @@ -14601,7 +14747,11 @@ "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 1 }, "xz": { @@ -14725,8 +14875,10 @@ "xxhash", "json-glib", "file", + "sqlite", "gtk4", - "glib", + "glib-shared", + "pcre2-shared", "cairo", "pango", "gdk-pixbuf", @@ -14747,16 +14899,62 @@ "libjpeg-turbo", "libtiff", "libffi", - "pcre2", - "zlib" + "zlib", + "zlib-shared", + "bzip2-shared" ], "cls": "c", "queue": "corpus", - "hash": "b3:94a7c57b0b5b75129f5481361c9a395acd1e253293c75ce041c69b4f9f4e4dc1", + "hash": "b3:9c5eac9263563cbf359ba7c0e6bb6346747a46a6172baa3de8842df6f6ada829", "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], + "dependientes_total": 1 + }, + "zathura-pdf-poppler": { + "iname": "zathura-pdf-poppler", + "version": "2026.07.18", + "link": "dynamic", + "compiler": "zig-cc", + "deps": [ + "meson", + "samurai", + "python3", + "pkgconf", + "linux-headers", + "zathura", + "girara", + "poppler-glib", + "glib-shared", + "pcre2-shared", + "cairo", + "pixman", + "libffi", + "zlib", + "freetype-shared", + "fontconfig-shared", + "expat", + "lcms2", + "libjpeg-turbo-shared", + "libpng-shared", + "zlib-shared" + ], + "cls": "c", + "queue": "corpus", + "hash": "b3:ef4062c5a1a5f9b2c8190b4d7d5576afa2a7485f3c7329366dd73d3360d88231", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-sway" + ], "dependientes_total": 0 }, "zellij": { @@ -14830,7 +15028,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 102 + "dependientes_total": 104 }, "zlib-ng": { "iname": "zlib-ng", @@ -14869,7 +15067,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 75 + "dependientes_total": 80 }, "zola": { "iname": "zola", diff --git a/docs/state/targets.toml b/docs/state/targets.toml index ad872d29..80f4c427 100644 --- a/docs/state/targets.toml +++ b/docs/state/targets.toml @@ -98,7 +98,14 @@ paquetes = [ # para `sway`, sólo que ahí se encontró a mano al armar la imagen y estas tres nunca se revisaron. # Van de raíces (y no de `[deps]`) por lo mismo que las fuentes y el XKB: son data de RUNTIME y # nadie las declara como dep de BUILD, así que la clausura no puede alcanzarlas por ninguna arista. - "expat-shared", "libffi-shared", + # `bzip2-shared` se suma el 2026-09-03, cazada por `scripts/vigia-sonames.py` en los TRES perfiles + # a la vez: `freetype-shared` sale con `NEEDED libbz2.so.1` y el `bzip2` canónico del corpus es + # `.a`. Es la misma fuga al sysroot del lab que expat y libffi, y venía de antes que zathura — + # sólo que hasta ahora nadie cargaba freetype-shared en RUNTIME. Se vio de verdad al probar el + # visor: el plugin de PDF no hacía dlopen («Error relocating /usr/lib/libbz2.so.1»). La receta + # existía sólo en `incoming-kde`; promovida al corpus con el mismo hash (b3:1e404254 desde las dos + # partes ⇒ un solo artefacto, cero rebuilds). + "expat-shared", "libffi-shared", "bzip2-shared", ] [perfil.escritorio-gnome] @@ -146,6 +153,18 @@ paquetes = [ # ninguna cola. swayimg rasteriza a `wl_shm` y no toca GL; el porqué largo está en su receta. # Trae de yapa backend DRM: muestra imágenes en una TTY pelada, sin compositor. "swayimg", + # ── LECTOR DE DOCUMENTOS ───────────────────────────────────────────────────────────────────── + # ⚠ NO ESTÁ EN `escritorio-kde`, y no es un olvido. `zathura-pdf-poppler` necesita `poppler-glib`, + # que es una receta NUEVA del corpus (la que ya existía va `-DENABLE_GLIB=OFF` y vive en la cola + # de KDE). Las dos instalan `/usr/lib/libpoppler.so.146` y son artefactos DISTINTOS ⇒ una imagen + # que hidrate las dos pone dos ficheros en la misma ruta y gana el que se proyecte último, que es + # el cuadro de las dos glib. KDE ya trae `okular`, que arrastra la poppler de Qt6. + # Si alguna vez se quiere zathura en KDE, la salida NO es listarla acá: es jubilar una de las dos + # popplers. Escrito también en `recipes/poppler-glib.toml` y `recipes/zathura.toml`. + # El plugin va de raíz APARTE del visor a propósito: `zathura` no lo declara en `[deps]` de + # runtime —lo carga con dlopen— así que sin esta línea la imagen traería un visor que abre la + # ventana y dice «unknown file type». Sellado ≠ instalado, otra vez. + "zathura", "zathura-pdf-poppler", # ── LAS `.so` QUE mesa Y wayland PIDEN EN RUNTIME Y NINGÚN ARTEFACTO DEL CIERRE PROVEE ──────── # Medido el 2026-09-03 recorriendo los NEEDED de todo el cierre de esta imagen contra los SONAME # que ese mismo cierre publica: `libEGL.so.1` pide `libexpat.so.1` y `libwayland-client.so.0` pide @@ -157,7 +176,27 @@ paquetes = [ # para `sway`, sólo que ahí se encontró a mano al armar la imagen y estas tres nunca se revisaron. # Van de raíces (y no de `[deps]`) por lo mismo que las fuentes y el XKB: son data de RUNTIME y # nadie las declara como dep de BUILD, así que la clausura no puede alcanzarlas por ninguna arista. - "expat-shared", "libffi-shared", + # `bzip2-shared` se suma el 2026-09-03, cazada por `scripts/vigia-sonames.py` en los TRES perfiles + # a la vez: `freetype-shared` sale con `NEEDED libbz2.so.1` y el `bzip2` canónico del corpus es + # `.a`. Es la misma fuga al sysroot del lab que expat y libffi, y venía de antes que zathura — + # sólo que hasta ahora nadie cargaba freetype-shared en RUNTIME. Se vio de verdad al probar el + # visor: el plugin de PDF no hacía dlopen («Error relocating /usr/lib/libbz2.so.1»). La receta + # existía sólo en `incoming-kde`; promovida al corpus con el mismo hash (b3:1e404254 desde las dos + # partes ⇒ un solo artefacto, cero rebuilds). + # ── FUENTES ────────────────────────────────────────────────────────────────────────────────── + # ⚠ Añadida el 2026-09-03 porque este perfil no traía NI UN FICHERO DE FUENTE. Medido recorriendo + # los artefactos del cierre y contando `.ttf/.otf/.ttc/.pfb`: **gnome=0**, sway=22 (dejavu), + # kde=1 (una que viene dentro de qtbase). `fontconfig` estaba, pero fontconfig es el MOTOR que + # busca fuentes, no una fuente — tenerlo y creer que hay tipografía es el mismo error que + # confundir un directorio vacío con un artefacto. + # Se descubrió con `poppler-render-check`: un PDF con fuentes base-14 (Helvetica, Times…) NO + # trae la tipografía adentro, la sustituye el visor por fontconfig, así que sin fuentes el + # documento se ve VACÍO — y el visor no da error, que es lo peor. + # `dejavu-fonts` es la única receta de fuentes del catálogo entero. Que KDE esté igual (1 fuente + # de rebote, dentro de qtbase) es un hallazgo aparte y NO se toca acá: ese perfil no lleva zathura + # y su árbol lo está trabajando otro frente. + "dejavu-fonts", + "expat-shared", "libffi-shared", "bzip2-shared", ] [perfil.escritorio-cosmic] @@ -246,6 +285,18 @@ paquetes = [ # ninguna cola. swayimg rasteriza a `wl_shm` y no toca GL; el porqué largo está en su receta. # Trae de yapa backend DRM: muestra imágenes en una TTY pelada, sin compositor. "swayimg", + # ── LECTOR DE DOCUMENTOS ───────────────────────────────────────────────────────────────────── + # ⚠ NO ESTÁ EN `escritorio-kde`, y no es un olvido. `zathura-pdf-poppler` necesita `poppler-glib`, + # que es una receta NUEVA del corpus (la que ya existía va `-DENABLE_GLIB=OFF` y vive en la cola + # de KDE). Las dos instalan `/usr/lib/libpoppler.so.146` y son artefactos DISTINTOS ⇒ una imagen + # que hidrate las dos pone dos ficheros en la misma ruta y gana el que se proyecte último, que es + # el cuadro de las dos glib. KDE ya trae `okular`, que arrastra la poppler de Qt6. + # Si alguna vez se quiere zathura en KDE, la salida NO es listarla acá: es jubilar una de las dos + # popplers. Escrito también en `recipes/poppler-glib.toml` y `recipes/zathura.toml`. + # El plugin va de raíz APARTE del visor a propósito: `zathura` no lo declara en `[deps]` de + # runtime —lo carga con dlopen— así que sin esta línea la imagen traería un visor que abre la + # ventana y dice «unknown file type». Sellado ≠ instalado, otra vez. + "zathura", "zathura-pdf-poppler", # ── LAS `.so` QUE mesa Y wayland PIDEN EN RUNTIME Y NINGÚN ARTEFACTO DEL CIERRE PROVEE ──────── # Medido el 2026-09-03 recorriendo los NEEDED de todo el cierre de esta imagen contra los SONAME # que ese mismo cierre publica: `libEGL.so.1` pide `libexpat.so.1` y `libwayland-client.so.0` pide @@ -257,7 +308,14 @@ paquetes = [ # para `sway`, sólo que ahí se encontró a mano al armar la imagen y estas tres nunca se revisaron. # Van de raíces (y no de `[deps]`) por lo mismo que las fuentes y el XKB: son data de RUNTIME y # nadie las declara como dep de BUILD, así que la clausura no puede alcanzarlas por ninguna arista. - "expat-shared", "libffi-shared", + # `bzip2-shared` se suma el 2026-09-03, cazada por `scripts/vigia-sonames.py` en los TRES perfiles + # a la vez: `freetype-shared` sale con `NEEDED libbz2.so.1` y el `bzip2` canónico del corpus es + # `.a`. Es la misma fuga al sysroot del lab que expat y libffi, y venía de antes que zathura — + # sólo que hasta ahora nadie cargaba freetype-shared en RUNTIME. Se vio de verdad al probar el + # visor: el plugin de PDF no hacía dlopen («Error relocating /usr/lib/libbz2.so.1»). La receta + # existía sólo en `incoming-kde`; promovida al corpus con el mismo hash (b3:1e404254 desde las dos + # partes ⇒ un solo artefacto, cero rebuilds). + "expat-shared", "libffi-shared", "bzip2-shared", ] [perfil.escritorio-sway] @@ -305,7 +363,14 @@ paquetes = [ # wayland-server, wlroots, xkbcommon, libc) sí los cubre la clausura, porque esas recetas ya son # `link = dynamic`. Como las tres son data de runtime y nadie las declara como dep de BUILD, van # de raíces por la misma razón que las fuentes y el XKB de arriba. - "zlib-shared", "expat-shared", "libffi-shared", + # `bzip2-shared` se suma el 2026-09-03, cazada por `scripts/vigia-sonames.py` en los TRES perfiles + # a la vez: `freetype-shared` sale con `NEEDED libbz2.so.1` y el `bzip2` canónico del corpus es + # `.a`. Es la misma fuga al sysroot del lab que expat y libffi, y venía de antes que zathura — + # sólo que hasta ahora nadie cargaba freetype-shared en RUNTIME. Se vio de verdad al probar el + # visor: el plugin de PDF no hacía dlopen («Error relocating /usr/lib/libbz2.so.1»). La receta + # existía sólo en `incoming-kde`; promovida al corpus con el mismo hash (b3:1e404254 desde las dos + # partes ⇒ un solo artefacto, cero rebuilds). + "zlib-shared", "expat-shared", "libffi-shared", "bzip2-shared", "swaybg", # fondo de escritorio "swaylock", # bloqueo de pantalla (con PAM: linux-pam SÍ está en el corpus) "swayidle", # apagado por inactividad @@ -328,6 +393,18 @@ paquetes = [ # ninguna cola. swayimg rasteriza a `wl_shm` y no toca GL; el porqué largo está en su receta. # Trae de yapa backend DRM: muestra imágenes en una TTY pelada, sin compositor. "swayimg", + # ── LECTOR DE DOCUMENTOS ───────────────────────────────────────────────────────────────────── + # ⚠ NO ESTÁ EN `escritorio-kde`, y no es un olvido. `zathura-pdf-poppler` necesita `poppler-glib`, + # que es una receta NUEVA del corpus (la que ya existía va `-DENABLE_GLIB=OFF` y vive en la cola + # de KDE). Las dos instalan `/usr/lib/libpoppler.so.146` y son artefactos DISTINTOS ⇒ una imagen + # que hidrate las dos pone dos ficheros en la misma ruta y gana el que se proyecte último, que es + # el cuadro de las dos glib. KDE ya trae `okular`, que arrastra la poppler de Qt6. + # Si alguna vez se quiere zathura en KDE, la salida NO es listarla acá: es jubilar una de las dos + # popplers. Escrito también en `recipes/poppler-glib.toml` y `recipes/zathura.toml`. + # El plugin va de raíz APARTE del visor a propósito: `zathura` no lo declara en `[deps]` de + # runtime —lo carga con dlopen— así que sin esta línea la imagen traería un visor que abre la + # ventana y dice «unknown file type». Sellado ≠ instalado, otra vez. + "zathura", "zathura-pdf-poppler", # ── GRABADOR DE PANTALLA — sólo acá, y la razón es de PROTOCOLO, no de gusto ────────────────── # `wf-recorder` captura por `wlr-screencopy`, que implementan los compositores wlroots. KWin y # mutter NO lo implementan (usan el portal/ScreenCast), así que ponerlo en esas dos imágenes diff --git a/recipes/bzip2-shared.toml b/recipes/bzip2-shared.toml new file mode 100644 index 00000000..0b2bff3f --- /dev/null +++ b/recipes/bzip2-shared.toml @@ -0,0 +1,32 @@ +# bzip2-shared 1.0.8 — variante DINÁMICA (libbz2.so, PIC) para el escritorio KDE. +# +# El bzip2 canónico (recipes/bzip2.toml) sólo sella libbz2.a SIN -fPIC (cola static-musl del toolchain). +# Linkear ese .a dentro de un .so (libarchive.so/libzip.so) falla: "relocation R_X86_64_PC32 ... recompile +# with -fPIC". Como zlib-shared, esta variante sella el libbz2.so soberano vía el Makefile-libbz2_so del +# tarball (ya trae -fpic -fPIC, soname libbz2.so.1.0). Nombre distinto para no colisionar con el canónico. +name = "bzip2-shared" +version = "1.0.8" +license = "bzip2-1.0.6" + +[source] +tarball = "https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz" +sha256 = "ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +compile = 'make -f Makefile-libbz2_so CC="zig cc"' +install = ''' +install -Dm644 bzlib.h /out/usr/include/bzlib.h +install -Dm755 libbz2.so.1.0.8 /out/usr/lib/libbz2.so.1.0.8 +ln -sf libbz2.so.1.0.8 /out/usr/lib/libbz2.so.1.0 +ln -sf libbz2.so.1.0.8 /out/usr/lib/libbz2.so.1 +ln -sf libbz2.so.1.0 /out/usr/lib/libbz2.so +''' + +[deps] +build = ["pkgconf"] diff --git a/recipes/glib-shared.toml b/recipes/glib-shared.toml new file mode 100644 index 00000000..cd0fc32d --- /dev/null +++ b/recipes/glib-shared.toml @@ -0,0 +1,33 @@ +# glib-shared 2.88.1 — variante DINÁMICA (libglib-2.0.so.0 + libgobject/libgio/libgmodule/libgthread) +# para el escritorio KDE. El canónico (recipes/glib.toml) es `-Ddefault_library=static --prefer-static` +# (sólo .a) ⇒ no enlaza dentro de un .so. Es la **deuda Capa 0 "glib shared-PIC"** que el ADR 0011 arrastra +# desde plasma-workspace (se esquivó parcheando NetworkManagerQt a opcional). +# +# glib es foundational para el resto del escritorio: libnm (NetworkManager→plasma-nm), polkit (auth), +# xdg-desktop-portal, gstreamer. Esta variante lo destraba. +# +# Deps: libffi ya es PIC (--with-pic en el canónico, enlazable en .so) ⇒ no necesita variante. +# pcre2-shared SÍ (el pcre2 canónico no tiene --with-pic). zlib-shared por el libz.so versionado. +# Se conservan los switches del canónico (tests/nls/libmount/selinux/introspection off) para no arrastrar +# deps nuevas; sólo cambia el modo de librería. +name = "glib-shared" +version = "2.88.1" +license = "LGPL-2.1-or-later" + +[source] +tarball = "https://download.gnome.org/sources/glib/2.88/glib-2.88.1.tar.xz" +sha256 = "51ab804c56f6eab3e5045c774d1290ac5e4c923d4f9a3d8e33123bee45c1840e" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +configure = "PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Ddefault_library=shared -Dtests=false -Dnls=disabled -Dlibmount=disabled -Dselinux=disabled -Dman-pages=disabled -Dintrospection=disabled -Dglib_debug=disabled -Dglib_assert=false -Dglib_checks=false" +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] +build = ["meson", "samurai", "python3", "pkgconf", "libffi", "pcre2-shared", "zlib-shared"] diff --git a/recipes/lcms2.toml b/recipes/lcms2.toml new file mode 100644 index 00000000..c8723803 --- /dev/null +++ b/recipes/lcms2.toml @@ -0,0 +1,27 @@ +# 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" +license = "MIT" + +[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/pcre2-shared.toml b/recipes/pcre2-shared.toml new file mode 100644 index 00000000..7ebc72d7 --- /dev/null +++ b/recipes/pcre2-shared.toml @@ -0,0 +1,36 @@ +# pcre2-shared 10.47 — variante DINÁMICA (libpcre2-8.so.0, PIC) para el escritorio KDE. +# El canónico (recipes/pcre2.toml) es --disable-shared SIN --with-pic ⇒ su .a no enlaza dentro de un .so. +# Lo exige glib-shared (libglib-2.0.so linkea pcre2 para GRegex). Deuda Capa 0 (static↔dinámico). +# +# compiler=gcc igual que el canónico: su comentario advierte que zig-cc MISCOMPILA libs C (patrón file/jq); +# el gcc del rootfs es musl, y el .so resultante es ABI-compatible con los consumidores zig. +# --disable-symvers como el canónico (musl no maneja symbol versioning de la forma que asume pcre2). +name = "pcre2-shared" +version = "10.47" + +[source] +tarball = "https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.47/pcre2-10.47.tar.bz2" +sha256 = "47fe8c99461250d42f89e6e8fdaeba9da057855d06eb7fc08d9ca03fd08d7bc7" + +[build] +compiler = "gcc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +compile = ''' +./configure \ + --build=$CBUILD --host=$CHOST \ + --prefix=/usr \ + --enable-shared --disable-static \ + --enable-pcre2-16 --enable-pcre2-32 \ + --enable-jit \ + --enable-pcre2grep-libz \ + --disable-symvers +make -j"$(nproc)" +''' +install = "make DESTDIR=/out install && find /out -name '*.la' -delete" + +[deps] +build = ["zlib-shared"] diff --git a/recipes/poppler-glib.toml b/recipes/poppler-glib.toml new file mode 100644 index 00000000..a1b617fd --- /dev/null +++ b/recipes/poppler-glib.toml @@ -0,0 +1,130 @@ +# poppler 25.02.0, frontend GLIB — el motor de PDF del corpus. Es el backend de `zathura`. +# +# ══ POR QUÉ UNA SEGUNDA POPPLER, Y CUÁL ES EL PELIGRO ══════════════════════════════════════════ +# Ya existe `incoming-kde/poppler`, pero no sirve acá por DOS razones independientes, y las dos +# hacen falta para justificar la variante: +# 1. **Va `-DENABLE_GLIB=OFF`** ⇒ publica `libpoppler.so` y `poppler.pc` pero NO `poppler-glib`, +# que es contra lo que se escribe un backend de zathura. Medido con `scripts/provee.py`, no +# supuesto: `poppler-glib` no lo publica NADIE en ninguna cola. +# 2. **Vive en una cola** ⇒ una receta del corpus no la alcanza (sibling-first, después el padre, +# nunca una cola hermana). +# Y no se puede arreglar encendiendo GLIB allá: esa receta trae Qt6 y todo X11 en sus `[deps]`, que +# es exactamente lo que el corpus no puede ni quiere. +# +# ⚠ **PELIGRO REAL, escrito para que no se descubra en una imagen: las dos instalan +# `/usr/lib/libpoppler.so.146`.** Mientras cada una la resuelva su propia cola no pasa nada —el +# hash decide, y son artefactos DISTINTOS—, pero una imagen que hidrate las dos pone dos ficheros +# distintos en la misma ruta y gana el que se proyecte último. Es el cuadro de las dos glib. +# Por eso `zathura` NO se declara en el perfil `escritorio-kde`: esa imagen ya trae `okular`, que +# arrastra la poppler de Qt6. Si alguna vez se quiere zathura en KDE, la salida NO es listarla: es +# jubilar una de las dos popplers. Ver el comentario de `zathura` en `targets.toml`. +# +# ══ QUÉ QUEDA APAGADO Y QUÉ SE PIERDE ══════════════════════════════════════════════════════════ +# Mismo recorte que la de KDE, con los frontends dados vuelta: GLIB ON, QT5/QT6/CPP/UTILS OFF. +# `ENABLE_LIBOPENJPEG=none` ⇒ las imágenes JPEG2000 DENTRO de un PDF no renderizan (el resto sí); +# no hay receta `openjpeg` y no vale abrir una campaña por eso. NSS3/GPGME OFF ⇒ no se verifican +# firmas de PDF. LIBCURL OFF ⇒ no se abren PDF por URL. LIBTIFF OFF, BOOST OFF (sólo perf de Splash). +# `ENABLE_GOBJECT_INTROSPECTION=OFF`: acá nadie introspecta: zathura es C que enlaza y ya, y traerla +# metería la maquinaria de GNOME en la clausura de las cuatro imágenes. Mismo criterio que json-glib. +# +# El sustrato son las variantes `-shared` porque esto produce `.so`: el `.a` canónico de freetype y +# fontconfig no enlaza dentro de una biblioteca compartida. `cairo` sí entra desde el `.a` del +# corpus, y no es por suerte — se midió: `readelf -r libcairo.a` da CERO `R_X86_64_32` fuera de las +# secciones `.debug_*`, o sea que es reubicable. (Contar sin excluir `.debug` MIENTE; es la +# corrección que dejó escrita el frente de GNOME.) +# +# El wrapper `.zwrap` que filtra `-Wl,--fatal-warnings` es el mismo de la receta de KDE y por lo +# mismo: cmake se lo pasa al linker y zig cc convierte avisos benignos en errores. +# +# ══ ⚠ `glib-shared` Y NO `glib`, Y ES LA DECISIÓN QUE HACE FUNCIONAR TODO EL VISOR ═════════════ +# Con la `glib` ESTÁTICA del corpus esto sella igual y zathura arranca — y al cargar el plugin de +# PDF escupe `GLib-GObject-CRITICAL: cannot register existing type 'gchar'` y no abre nada. +# Es el cuadro de las dos glib, en vivo y en su forma menos obvia: **no son dos ficheros en la misma +# ruta, son dos COPIAS ESTÁTICAS del sistema de tipos de GObject dentro del MISMO proceso.** +# El ejecutable trae la suya, `libpoppler-glib.so` trae la suya, y el `g_type_register_*` del +# segundo encuentra los tipos fundamentales ya registrados por el primero. +# Un `.a` no arrastra a sus deps —`libgtk-4.a`, `libcairo.a` y `libgirara.a` sólo tienen símbolos +# sin definir y se resuelven al ligar el ejecutable, así que ésos NO duplican nada—; el problema +# aparece únicamente cuando **dos objetos ENLAZADOS por separado** (un `.so` y el ejecutable que lo +# hace dlopen) meten cada uno su copia. Por eso la regla del repo se aplica al revés que de +# costumbre: acá lo correcto es compartir el SONAME `libglib-2.0.so.0`, y por eso esta receta y +# `zathura` y `zathura-pdf-poppler` declaran las TRES `glib-shared`. Si alguna vuelve a `glib`, +# el visor deja de abrir PDFs y el build no se entera. +# +# ══ ⚠ `-DENABLE_GLIB=ON` SE APAGA SOLO Y EL BUILD SALE OK — LA TRAMPA QUE COSTÓ UN CICLO ════════ +# `CMakeLists.txt:260-261` hace `if(NOT CAIRO_FOUND) set(ENABLE_GLIB OFF)`. **No falla: obedece +# distinto.** El primer intento selló un artefacto con `libpoppler.so` y `poppler.pc` y NADA de +# glib, con exit 0 y sin un aviso a la vista. Es la figura de siempre: un ausente falla ruidosamente, +# un desviado llega hasta el final diciendo que todo fue bien. +# +# La causa era una línea que este repo ya tiene escrita como patrón y que igual se pasa por alto: +# **`.pc Requires` → `[deps].build`**. `cairo.pc` declara +# `Requires: zlib, libpng, fontconfig, freetype2, pixman-1`, y `pixman` NO estaba en `[deps]`. +# pkg-config resuelve `Requires` transitivamente, así que sin `pixman-1.pc` en el sandbox +# `pkg-config --exists cairo` da FALSO — y cairo estaba ahí, entera y PIC. Un `.pc` que falta a tres +# saltos de distancia apaga una FUNCIÓN, no una librería. +# +# Por eso el `install` termina comprobando que `poppler-glib.pc` y `libpoppler-glib.so` existan. +# No es paranoia: es el único punto donde este modo de fallar se puede ver. Si alguien toca las +# `[deps]` y vuelve a romper la cadena de pkg-config, el build muere acá en vez de sellar un +# artefacto que le miente a `zathura`. +name = "poppler-glib" +version = "25.02.0" +license = "GPL-2.0-or-later" + +[source] +tarball = "https://poppler.freedesktop.org/poppler-25.02.0.tar.xz" +sha256 = "21234cb2a9647d73c752ce4031e65a79d11a511a835f2798284c2497b8701dee" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +configure = ''' +ZW="$PWD/.zwrap"; mkdir -p "$ZW" +cat > "$ZW/cc" <<'W' +#!/bin/sh +a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done +exec /opt/zig/zig cc -mcpu=baseline $a +W +cat > "$ZW/cxx" <<'W' +#!/bin/sh +a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done +exec /opt/zig/zig c++ -mcpu=baseline $a +W +chmod +x "$ZW/cc" "$ZW/cxx" +cmake -B build -G Ninja -Wno-dev \ + -DCMAKE_C_COMPILER="$ZW/cc" -DCMAKE_CXX_COMPILER="$ZW/cxx" \ + -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \ + -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF -DBUILD_SHARED_LIBS=ON \ + -DENABLE_QT5=OFF -DENABLE_QT6=OFF -DENABLE_GLIB=ON -DENABLE_GOBJECT_INTROSPECTION=OFF \ + -DENABLE_CPP=OFF -DENABLE_UTILS=OFF -DENABLE_BOOST=OFF \ + -DENABLE_LIBOPENJPEG=none -DENABLE_DCTDECODER=libjpeg -DENABLE_LCMS=ON \ + -DENABLE_LIBCURL=OFF -DENABLE_LIBTIFF=OFF -DENABLE_NSS3=OFF -DENABLE_GPGME=OFF \ + -DBUILD_GTK_TESTS=OFF -DBUILD_QT5_TESTS=OFF -DBUILD_QT6_TESTS=OFF -DBUILD_CPP_TESTS=OFF \ + -DBUILD_MANUAL_TESTS=OFF +''' +compile = "cmake --build build" +install = ''' +set -e +DESTDIR=/out cmake --install build +# Ver la cabecera: sin esto, un cairo que pkg-config no encuentra sella una poppler SIN glib y el +# build reporta éxito. Se comprueba lo que esta receta EXISTE para producir. +test -f /out/usr/lib/pkgconfig/poppler-glib.pc || { + echo "ERROR: no se generó poppler-glib.pc — cmake apagó ENABLE_GLIB (¿CAIRO_FOUND falso?)" >&2 + exit 1 +} +test -e /out/usr/lib/libpoppler-glib.so || { + echo "ERROR: no se generó libpoppler-glib.so pese a existir el .pc" >&2 + exit 1 +} +''' + +[deps] +build = ["cmake", "samurai", "python3", "pkgconf", "gettext-tiny", "gperf", + "glib-shared", "pcre2-shared", "cairo", "pixman", "libffi", + "freetype-shared", "fontconfig-shared", "expat", "lcms2", + "libjpeg-turbo-shared", "libpng-shared", "zlib-shared"] diff --git a/recipes/poppler-render-check.toml b/recipes/poppler-render-check.toml new file mode 100644 index 00000000..76321ece --- /dev/null +++ b/recipes/poppler-render-check.toml @@ -0,0 +1,127 @@ +# poppler-render-check — receta-TESTIGO del camino de PDF, en el espíritu de `gtk4-hello`: +# no aporta nada a ninguna imagen, prueba que la cadena SIRVE y no sólo que sella. +# +# ══ QUÉ PRUEBA, Y POR QUÉ HACÍA FALTA ══════════════════════════════════════════════════════════ +# `zathura` es GTK4: sin compositor no abre ventana, así que «arranca» no se puede comprobar de la +# forma barata. Pero lo que de verdad importaba comprobar no es la ventana: es que +# **`poppler-glib` decodifique y RASTERICE**, que es exactamente el camino que recorre +# `zathura-pdf-poppler/render.c` — `poppler_document_new_from_file` → `poppler_page_render` sobre +# un surface de cairo. Eso sí se puede correr sin display, y es lo que hace este programa. +# +# Escribe un PDF mínimo A MANO (catálogo, páginas, una página con un rectángulo relleno Y texto +# Helvetica, más su xref), lo renderiza y comprueba tres cosas MEDIDAS, no un exit code: +# 1. que el documento abra y reporte 1 página de 200x100, +# 2. que la imagen tenga PÍXELES NEGROS — o sea que algo se DIBUJÓ. Sin esto, un render que +# devuelve un lienzo blanco pasa la prueba, que es el modo de fallar que este repo persigue +# (el mismo criterio que contar colores del PPM en el arranque de sway), +# 3. que el PNG salga y tenga cabecera PNG de verdad. +# +# ══ POR QUÉ EL ASSERT ES SOBRE UN RECTÁNGULO Y NO SOBRE EL TEXTO ═══════════════════════════════ +# La primera versión de esta receta dibujaba SÓLO texto y **falló**, con `pixeles_oscuros=0` y un +# `some font thing failed` de poppler. No es un fallo de la cadena: es que el sandbox de build no +# tiene NI UNA FUENTE, y las «base-14» de PDF (Helvetica, Times…) no vienen dentro del documento — +# el visor tiene que sustituirlas por fontconfig. Un rectángulo no depende de eso, así que aísla lo +# que esta receta quiere probar (¿decodifica y rasteriza?) de lo que no le toca (¿hay fuentes?). +# El texto se dibuja igual y se INFORMA aparte, sin condicionar el veredicto — así queda a la vista +# si algún día el sandbox sí tiene fuentes. +# +# ⚠ **Y deja una consecuencia escrita para las imágenes:** un PDF con fuentes base-14 se ve VACÍO +# si la imagen no trae fuentes. Los tres perfiles que llevan zathura tienen que traerlas; no es +# problema de esta receta pero es donde se descubre. +# +# Reutiliza el tarball de poppler sólo como acarreo de `[source]`; ignora su árbol. +name = "poppler-render-check" +version = "25.02.0" +license = "GPL-2.0-or-later" + +[source] +tarball = "https://poppler.freedesktop.org/poppler-25.02.0.tar.xz" +sha256 = "21234cb2a9647d73c752ce4031e65a79d11a511a835f2798284c2497b8701dee" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" + +[build.phases] +configure = "true" +compile = ''' +set -e +export PKG_CONFIG_PATH=/usr/lib/pkgconfig +cat > check.c <<'CEOF' +#include +#include +#include +#include +int main(void) { + GError *e = NULL; + char *uri = g_filename_to_uri("/src/prueba.pdf", NULL, &e); + PopplerDocument *doc = poppler_document_new_from_file(uri, NULL, &e); + if (!doc) { fprintf(stderr, "FALLO: no abre el PDF: %s\n", e ? e->message : "?"); return 1; } + int n = poppler_document_get_n_pages(doc); + PopplerPage *pg = poppler_document_get_page(doc, 0); + double w, h; poppler_page_get_size(pg, &w, &h); + printf("paginas=%d tamano=%.0fx%.0f\n", n, w, h); + if (n != 1 || (int)w != 200 || (int)h != 100) { fprintf(stderr, "FALLO: geometria inesperada\n"); return 1; } + cairo_surface_t *s = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, (int)w, (int)h); + cairo_t *cr = cairo_create(s); + cairo_set_source_rgb(cr, 1, 1, 1); cairo_paint(cr); + poppler_page_render(pg, cr); + cairo_destroy(cr); + cairo_surface_flush(s); + /* Tercera comprobacion: contar pixeles oscuros. Un lienzo blanco NO puede pasar. */ + unsigned char *d = cairo_image_surface_get_data(s); + int stride = cairo_image_surface_get_stride(s), oscuros = 0; + for (int y = 0; y < (int)h; y++) + for (int x = 0; x < (int)w; x++) { + unsigned char *px = d + y * stride + x * 4; + if (px[0] < 100 && px[1] < 100 && px[2] < 100) oscuros++; + } + printf("pixeles_oscuros=%d\n", oscuros); + /* El rectangulo son 160x60 = 9600 px. Con la mitad ya esta probado que rasterizo. */ + if (oscuros < 4000) { fprintf(stderr, "FALLO: se renderizo un lienzo vacio\n"); return 1; } + printf("texto_base14=%s (informativo: depende de que haya fuentes, no de esta cadena)\n", + oscuros > 9600 + 50 ? "si" : "no"); + if (cairo_surface_write_to_png(s, "salida.png") != CAIRO_STATUS_SUCCESS) { + fprintf(stderr, "FALLO: no escribe PNG\n"); return 1; + } + printf("OK: poppler-glib abre, rasteriza y dibuja\n"); + return 0; +} +CEOF +zig cc -mcpu=baseline check.c -o check $(pkg-config --cflags --libs poppler-glib cairo) +''' +install = ''' +set -e +# El PDF de prueba se arma acá y no se versiona: son 583 bytes de estructura PDF a mano. +python3 - <<'PYEOF' +objs = [ + b"<< /Type /Catalog /Pages 2 0 R >>", + b"<< /Type /Pages /Kids [3 0 R] /Count 1 >>", + b"<< /Type /Page /Parent 2 0 R /MediaBox [0 0 200 100] /Resources << /Font << /F1 5 0 R >> >> /Contents 4 0 R >>", + None, + b"<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>", +] +# Rectangulo relleno (no depende de fuentes) + texto (si que depende). Ver la cabecera. +stream = b"0 0 0 rg 20 20 160 60 re f\nBT /F1 12 Tf 30 45 Td 1 1 1 rg (HAMMER OK) Tj ET" +objs[3] = b"<< /Length %d >>\nstream\n" % len(stream) + stream + b"\nendstream" +out = b"%PDF-1.4\n"; offs = [] +for i, o in enumerate(objs, 1): + offs.append(len(out)); out += b"%d 0 obj\n" % i + o + b"\nendobj\n" +xref = len(out) +out += b"xref\n0 %d\n" % (len(objs) + 1) + b"0000000000 65535 f \n" +for off in offs: out += b"%010d 00000 n \n" % off +out += b"trailer\n<< /Size %d /Root 1 0 R >>\nstartxref\n%d\n%%%%EOF\n" % (len(objs) + 1, xref) +open("/src/prueba.pdf", "wb").write(out) +PYEOF +./check +head -c 8 salida.png | od -An -tx1 | grep -q "89 50 4e 47" || { echo "FALLO: el PNG no tiene cabecera PNG" >&2; exit 1; } +mkdir -p /out/usr/share/poppler-render-check +cp salida.png /out/usr/share/poppler-render-check/ +''' + +[deps] +build = ["pkgconf", "python3", "poppler-glib", "glib-shared", "pcre2-shared", "cairo", "pixman", + "libffi", "zlib", "zlib-shared", "bzip2-shared", + "freetype-shared", "fontconfig-shared", "expat", "lcms2", + "libjpeg-turbo-shared", "libpng-shared"] diff --git a/recipes/zathura-pdf-poppler.toml b/recipes/zathura-pdf-poppler.toml new file mode 100644 index 00000000..cc3ee2d2 --- /dev/null +++ b/recipes/zathura-pdf-poppler.toml @@ -0,0 +1,60 @@ +# zathura-pdf-poppler 2026.07.18 — el backend de PDF de `zathura`. Sin esto, zathura abre la +# ventana y no muestra un solo documento: los formatos entran por `.so` que carga con gmodule desde +# `/usr/lib/zathura`, y ésta es la única receta que pone uno ahí. +# +# El `plugindir` NO se codifica: sale de `zathura.pc` (`zathura.get_variable(pkgconfig:'plugindir')`), +# así que las dos recetas no pueden desincronizarse. Por eso `zathura` va en `[deps]` aunque el +# plugin no enlace nada suyo: aporta el `.pc`, las cabeceras de `plugin-api.h` y esa variable. +# +# Los símbolos `zathura_*` que el plugin usa NO se resuelven en el link: los resuelve el dlopen +# contra el EJECUTABLE, que zathura liga con `export_dynamic: true`. Es normal y es por qué esto es +# un `shared_module` y no una `shared_library`. +# +# `poppler-glib` es la receta del corpus escrita para esto: la poppler que ya existía va +# `-DENABLE_GLIB=OFF` y vive en `incoming-kde`. Ver su cabecera, que además explica por qué zathura +# no se declara en el perfil de KDE. +# +# ⚠ `glib-shared` y no `glib`, igual que las otras dos de la cadena: dos copias estáticas de +# GObject en el mismo proceso rompen el dlopen. Ver `recipes/poppler-glib.toml`. +# +# Su `data/meson.build` busca `desktop-file-validate` y `appstreamcli` con `required:false` — sin +# ellos simplemente no registra esos dos tests. No hace falta traer nada. +# +# Fuente por commit git (ADR 0006): `2026.07.18` es un objeto TAG ⇒ éste es su commit pelado. +name = "zathura-pdf-poppler" +version = "2026.07.18" +license = "Zlib" + +[source] +repo = "https://github.com/pwmt/zathura-pdf-poppler.git" +commit = "2aaedd3342a12f8d45b209995c375cbdfbf05137" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +flags = [] + +[build.phases] +configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release" +compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output" +install = ''' +set -e +PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild +# Un plugin que no aterriza donde zathura lo busca es un artefacto que sella y no sirve para nada: +# zathura arrancaría igual y diría «unknown file type». Se comprueba la ruta, no el exit code. +test -e /out/usr/lib/zathura/libpdf-poppler.so || { + echo "ERROR: el plugin no quedó en /usr/lib/zathura — ¿cambió el plugindir de zathura.pc?" >&2 + ls -R /out/usr/lib >&2 + exit 1 +} +''' + +[deps] +build = [ + "meson", "samurai", "python3", "pkgconf", "linux-headers", + "zathura", "girara", "poppler-glib", + "glib-shared", "pcre2-shared", "cairo", "pixman", "libffi", "zlib", + "freetype-shared", "fontconfig-shared", "expat", "lcms2", + "libjpeg-turbo-shared", "libpng-shared", "zlib-shared", +] diff --git a/recipes/zathura.toml b/recipes/zathura.toml new file mode 100644 index 00000000..181e6141 --- /dev/null +++ b/recipes/zathura.toml @@ -0,0 +1,117 @@ +# zathura 2026.07.18 — lector de documentos con teclas de vi, para las cuatro imágenes. +# +# ══ ⚠ CORRIGE UNA CREENCIA DEL REPO: ESTO NO ESTÁ BLOQUEADO POR GTK3 ═══════════════════════════ +# `docs/plan-apps-usuario-final.md` dejaba a zathura como «verificar antes que su cadena sea GTK4 y +# no GTK3», porque en Alpine `girara` —su librería de apoyo— era GTK3, y GTK3 está aparcado por +# diseño en esta distro. **Upstream VACIÓ girara**: en 2026.07.18 su árbol son siete `.c` de +# utilidades y su `meson.build` no menciona GTK ni una vez. Toda la UI se mudó acá adentro, y esto +# pide **GTK4 >= 4.12**, que está en el corpus (4.18.6). El muro no existe. Medido, no recordado. +# +# ══ EL BACKEND ES UNA RECETA APARTE, Y ESO IMPORTA ═════════════════════════════════════════════ +# zathura sin plugin ABRE LA VENTANA Y NADA MÁS: los formatos entran por `.so` que carga con +# gmodule desde `/usr/lib/zathura`. El de PDF es `zathura-pdf-poppler`, que necesita +# `poppler-glib` — y ésa hubo que escribirla, porque la poppler que ya existía va +# `-DENABLE_GLIB=OFF` y encima vive en `incoming-kde`. Ver `recipes/poppler-glib.toml`. +# `export_dynamic: true` (meson.build:207,221) es lo que hace que el plugin resuelva los símbolos +# `zathura_*` contra el EJECUTABLE al hacer dlopen. Ojo con eso y el wrapper de zig: hay una regla +# que quita `-static` ante `--export-dynamic`, la misma que documenta `recipes/luajit.toml`. +# +# ⚠ **NO SE DECLARA EN `escritorio-kde`, y es a propósito.** Esa imagen ya trae `okular`, que +# arrastra `incoming-kde/poppler`; las dos popplers instalan `/usr/lib/libpoppler.so.146` y son +# artefactos DISTINTOS, así que hidratar las dos pone dos ficheros en la misma ruta y gana el que se +# proyecte último — el cuadro de las dos glib. La salida no sería listarla igual, sería jubilar una +# de las dos popplers. Está escrito también en `recipes/poppler-glib.toml` y en `targets.toml`. +# +# ══ OPCIONES TODAS EXPLÍCITAS (las siete nacen `auto`) ═════════════════════════════════════════ +# `landlock=enabled` — y no es relleno: es el mismo mecanismo del kernel que usa `harkaq`, la jaula +# de este repo, así que el visor entra encajado con la casa. Se comprobó que la cadena da: pide +# `linux/landlock.h` **y** el campo `scoped` de `struct landlock_ruleset_attr`, que existe en las +# `linux-headers` 6.16.12 del corpus (línea 53 del header). Sin ese campo la perilla se apagaría +# sola, que es el modo de fallar que este repo persigue. +# `seccomp=disabled` — `libseccomp` sólo vive en `incoming-gnome`; una receta del corpus no alcanza +# una cola hermana. Landlock cubre el encierro. +# `synctex=disabled` — no hay receta `synctex` (es de TeX Live). +# `manpages=disabled` — su target pide `sphinx-build`, que no está en el corpus. +# `convert-icon=disabled` — pide `rsvg-convert`, y librsvg vive sólo en `incoming-gnome`. Sólo +# genera PNG del icono a cinco tamaños; el SVG se instala igual. +# `tests-x11` / `tests-wayland` apagadas: X11 está al tacho y la de wayland pide weston. +# +# ══ ⚠ `-Dc_link_args` CON LAS PRIVADAS DE gtk4 — EL PATRÓN QUE YA ESTÁ ESCRITO EN EL CORPUS ═════ +# La gtk4 del corpus es `libgtk-4.a` y **su `.pc` no declara `Libs.private` en absoluto** (asume +# link dinámico contra `libgtk-4.so`). Consecuencia: meson resuelve `dependency('gtk4')` como +# `-lgtk-4` a secas y el link muere con +# +# ld.lld: error: undefined symbol: epoxy_glBindRenderbuffer +# >>> referenced by gtkglarea.c ... in archive /usr/lib/libgtk-4.a +# +# **culpando a zathura cuando lo que falta es propagar epoxy.** `-Dprefer_static=true` NO lo +# arregla: no hay `Libs.private` que preferir. Hay que nombrar a mano las privadas que gdk/gsk +# enlazan directo, que son las mismas ocho que `recipes/gtk4-hello.toml` ya dejó escritas — +# harfbuzz-subset, epoxy, xkbcommon, wayland-client, wayland-egl, libtiff-4, libjpeg y +# cairo-script-interpreter. Se hace acá y no arreglando `gtk4.pc` porque re-hashear gtk4 arrastra +# **7 dependientes directos, 6 de ellos sellados que caerían a deuda**; mismo criterio que el +# wrapper de `ar` de las recetas Cargo: per-receta, no framework. +name = "zathura" +version = "2026.07.18" +license = "Zlib" + +[source] +repo = "https://github.com/pwmt/zathura.git" +commit = "4fad4e4d82ac3275632fcbc55386915ff361e404" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +# Dinámico: gtk4 y poppler-glib se exponen como `.so`, y el plugin se carga con dlopen. +link = "dynamic" +flags = [] + +[build.phases] +configure = ''' +set -e +export PKG_CONFIG_PATH=/usr/lib/pkgconfig +export PYTHONPATH=/usr/lib/python3.12/site-packages +# Ver la cabecera: gtk4.pc no trae Libs.private, así que las privadas de gdk/gsk se nombran a mano. +PRIV="$(pkg-config --libs --static harfbuzz-subset epoxy xkbcommon wayland-client wayland-egl libtiff-4 libjpeg cairo-script-interpreter)" +meson setup output --prefix=/usr --buildtype=release \ + -Dprefer_static=true \ + -Dc_link_args="$PRIV" \ + -Dsynctex=disabled -Dseccomp=disabled -Dlandlock=enabled -Dmanpages=disabled \ + -Dtests-x11=disabled -Dtests-wayland=disabled -Dconvert-icon=disabled +''' +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" + +# ⚠ `sqlite` Y `-Dprefer_static=true` ESTÁN ACÁ PORQUE UN VIGÍA CAZÓ UNA FUGA AL LAB ═══════════ +# La primera versión selló con `NEEDED libsqlite3.so.0`, un SONAME que **ningún artefacto del +# cierre publica** (el `sqlite` del corpus es `.a`): meson había resuelto `dependency('sqlite3')` +# contra el **sysroot Alpine DEL LAB**. Artefacto sellado, perfil al 100%, y una imagen que sólo +# arranca en una máquina con Alpine debajo. El lab NO entra en `hash_inputs` ⇒ el store no puede +# notarlo. Lo encontró `scripts/vigia-sonames.py escritorio-sway`, que existe para exactamente esto. +# +# **Y declarar la dep NO alcanzó** — vale la pena que quede escrito, porque era la corrección +# obvia y es la incompleta. Con `sqlite` en `[deps]` el NEEDED seguía ahí: el `.pc` del corpus le da +# a meson un `-lsqlite3` pelado y el linker prefiere la `.so` del lab sobre la `.a` del store. +# Lo que lo arregla es `-Dprefer_static=true`, que hace que meson pida los `.pc` en modo estático. +# Efecto medido: los NEEDED bajaron de DIEZ a CUATRO —libxkbcommon, las dos de wayland y libc— +# y los cuatro los publica el cierre. expat, libffi, zlib, pixman, xxhash y sqlite entraron +# estáticos. Las dos cosas hacen falta: sin la dep, meson ni encuentra el `.pc` del corpus. +# +# ⚠ `glib-shared` Y NO `glib`: una copia ESTÁTICA de GObject acá y otra dentro de +# `libpoppler-glib.so` hacen que el plugin de PDF muera con `cannot register existing type 'gchar'` +# al hacer dlopen. El porqué largo está en `recipes/poppler-glib.toml`. Las tres recetas de la +# cadena —ésta, poppler-glib y el plugin— tienen que declarar la MISMA. +# +# `.pc Requires` → `[deps].build`. La cadena larga es la de gtk4 (pango, gdk-pixbuf, graphene, +# cairo-gobject, libepoxy…), copiada de `recipes/gtk4.toml` porque es exactamente su clausura de +# pkg-config. `file` da `libmagic` (detección de tipo de documento), `xxhash` la caché de páginas +# renderizadas y `json-glib` la sesión. `gettext-tiny` porque `po/` y el `.desktop` pasan por i18n. +[deps] +build = [ + "meson", "samurai", "python3", "pkgconf", "linux-headers", "gettext-tiny", + "girara", "xxhash", "json-glib", "file", "sqlite", + "gtk4", "glib-shared", "pcre2-shared", "cairo", "pango", "gdk-pixbuf", "graphene", "libepoxy", + "wayland", "wayland-protocols", "libxkbcommon", "libdrm", "mesa", + "fontconfig", "harfbuzz", "fribidi", "freetype", "pixman", "expat", + "libpng", "libjpeg-turbo", "libtiff", "libffi", "zlib", "zlib-shared", "bzip2-shared", +]