apps: swayimg sube a 5.5, que es lo que justificaba escribir luajit

Entró como 4.7 —la última sin Lua— sólo porque no había receta de luajit. Con luajit
sellada, sube a la actual. Lo que se gana: el motor de configuración pasó a ser Lua
(src/luaengine.cpp), y con él los perfiles de teclas y el .lua de ejemplo. Formatos:
suma qoi, ttf y xbm a los de 4.7.

Dos cambios de forma que sacan dos deps: `compositor` ya no pide json-c (la
integración con sway se rehizo sin JSON) y la man page viene PRE-GENERADA en
extra/swayimg.1 en vez de armarse con scdoc. -Ddoc=false porque ese target regenera
markdown con dos scripts de Python y lo que instala son .md, no páginas de manual.

Corregido de paso el comentario de las opciones apagadas: son DOS por cola, no una.
`svg` pide librsvg-2.0 (sólo en incoming-gnome) y `exif` pide exiv2 (sólo en
incoming-kde). Las dos existen en el disco y ninguna es alcanzable desde el corpus.
Por eso este visor no muestra metadatos EXIF, y queda escrito dónde está el hueco.

Evidencia de que la cadena cierra, no sólo de que sella: `swayimg -e` ejecuta Lua
dentro del visor y reporta «Lua 5.1 · jit=true · LuaJIT 2.1.1787165859» — que es
exactamente el relver de nuestra receta de luajit, o sea que el intérprete que corre
es el que construimos. Un script con error de sintaxis se reporta como error de Lua.
NEEDED sigue siendo sólo libc.so.

Los cinco grafos quedan en N/N con cero deuda.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XB2iEmxeLZgzqNfhWChrLo
This commit is contained in:
Sergio
2026-09-03 11:37:02 +00:00
co-authored by Claude Opus 5
parent 2d68e70a07
commit e2bcd96feb
7 changed files with 218 additions and 127 deletions
+8 -6
View File
@@ -35,7 +35,8 @@ Dos columnas, y **la que importa es la segunda**:
|---|---:|---|---|
| ~~wf-recorder~~ | — | — | ✅ **SELLADA 2026-09-03** (b3:25caa359), con audio. Se destrabó al promover pipewire al corpus. Sólo en `escritorio-sway`: captura por `wlr-screencopy` y KWin/mutter no lo implementan. |
| ~~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:601518b4), en las CUATRO imágenes. Visor sin GL: rasteriza a `wl_shm`. Trae backend DRM de yapa. |
| ~~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. |
| **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?). |
@@ -152,10 +153,11 @@ visor de imágenes.
estaban todas en el corpus ⇒ **cero recetas nuevas**. Y trae un backend **DRM** que muestra imágenes
en una TTY pelada, sin compositor, que es exactamente lo que le falta al instalador.
Se pineó la **4.7** y no la 5.5 a propósito: desde la 5.0 `dependency('luajit')` es obligatoria y no
hay receta `luajit` (la `lua5.2` del OSC de mpv es otra ABI). Escribir `luajit` destrabaría el salto
a 5.x **y** le daría a mpv su intérprete preferido — es el próximo paso barato, no deuda de esta
receta.
Entró primero como **4.7** —la última sin Lua— porque desde la 5.0 `dependency('luajit')` es
obligatoria y no había receta (la `lua5.2` del OSC de mpv es otra ABI). Se escribió `luajit` el mismo
día y subió a **5.5**. La cadena quedó verificada de punta a punta: `swayimg -e` reporta
`Lua 5.1 · jit=true · LuaJIT 2.1.1787165859`, que es exactamente el `relver` de nuestra receta.
`luajit` queda además disponible para mpv, que la prefiere sobre 5.2.
**Regla que sale de acá, para el próximo triaje de apps:** la pregunta no es «¿existe la receta?»
ni sólo «¿la alcanza?», sino **«¿la variante sellada publica el `.pc` y el `.so` que el consumidor
@@ -205,7 +207,7 @@ cierre (wayland, ffmpeg, libdrm) quedó completo cuando entró mpv.
3. **wf-recorder** — inmediato una vez tomada esa decisión; cubre el caso de uso principal de OBS.
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`** — receta barata que destraba swayimg 5.x y le da a mpv su intérprete preferido.
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.
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.
+37 -21
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 845,
"nodes": 846,
"sealed": 845,
"recipes": 846,
"nodes": 847,
"sealed": 846,
"ajeno": 1
},
"by_class": {
"ajeno": 1,
"c": 193,
"c": 194,
"go": 362,
"gui": 34,
"kernel": 6,
@@ -17,7 +17,7 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 805,
"sealed": 806,
"ajeno": 1
},
"incoming-cosmic": {
@@ -37,8 +37,8 @@
},
"escritorio-cosmic": {
"raices": 34,
"clausura": 114,
"sealed": 114
"clausura": 113,
"sealed": 113
},
"escritorio-mirada": {
"raices": 14,
@@ -7331,12 +7331,9 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 3
"dependientes_total": 2
},
"json-glib": {
"iname": "json-glib",
@@ -9555,6 +9552,29 @@
],
"dependientes_total": 1
},
"luajit": {
"iname": "luajit",
"version": "2.1.1787165859",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"make",
"pkgconf"
],
"cls": "c",
"queue": "corpus",
"hash": "b3:115d4c1c288554bb1b441ca28301ee48cc072ed6fa8c141cca1e6b3fe8dd74e7",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
},
"lux": {
"iname": "lux",
"version": "0.24.1",
@@ -9662,7 +9682,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 108
"dependientes_total": 109
},
"mako": {
"iname": "mako",
@@ -11634,7 +11654,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 373
"dependientes_total": 374
},
"plow": {
"iname": "plow",
@@ -12647,12 +12667,9 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 4
"dependientes_total": 3
},
"scorecard": {
"iname": "scorecard",
@@ -13435,7 +13452,7 @@
},
"swayimg": {
"iname": "swayimg",
"version": "4.7",
"version": "5.5",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
@@ -13443,8 +13460,8 @@
"samurai",
"python3",
"pkgconf",
"scdoc",
"linux-headers",
"luajit",
"wayland",
"wayland-protocols",
"libxkbcommon",
@@ -13457,7 +13474,6 @@
"libtiff",
"libwebp",
"giflib",
"json-c",
"zlib",
"zlib-shared",
"xz",
@@ -13466,7 +13482,7 @@
],
"cls": "c",
"queue": "corpus",
"hash": "b3:601518b418088f3a4c6c0d0993441c7fd196266a092a057c18a96e96e3ad29cd",
"hash": "b3:9bcd39c1175b0c73c6115e02dc183cc8002a92c2ab318d8212b9f9fef5c4f729",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
+37 -21
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 870,
"nodes": 871,
"sealed": 870,
"recipes": 871,
"nodes": 872,
"sealed": 871,
"ajeno": 1
},
"by_class": {
"ajeno": 1,
"c": 232,
"c": 233,
"go": 362,
"gui": 40,
"kernel": 6,
@@ -17,7 +17,7 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 796,
"sealed": 797,
"ajeno": 1
},
"incoming-gnome": {
@@ -37,8 +37,8 @@
},
"escritorio-gnome": {
"raices": 10,
"clausura": 139,
"sealed": 139
"clausura": 138,
"sealed": 138
},
"escritorio-mirada": {
"raices": 14,
@@ -7567,12 +7567,9 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 3
"dependientes_total": 2
},
"json-glib": {
"iname": "json-glib",
@@ -10209,6 +10206,29 @@
],
"dependientes_total": 1
},
"luajit": {
"iname": "luajit",
"version": "2.1.1787165859",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"make",
"pkgconf"
],
"cls": "c",
"queue": "corpus",
"hash": "b3:115d4c1c288554bb1b441ca28301ee48cc072ed6fa8c141cca1e6b3fe8dd74e7",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
},
"lux": {
"iname": "lux",
"version": "0.24.1",
@@ -10316,7 +10336,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 108
"dependientes_total": 109
},
"mako": {
"iname": "mako",
@@ -12412,7 +12432,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 373
"dependientes_total": 374
},
"plow": {
"iname": "plow",
@@ -13492,12 +13512,9 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 4
"dependientes_total": 3
},
"scorecard": {
"iname": "scorecard",
@@ -14325,7 +14342,7 @@
},
"swayimg": {
"iname": "swayimg",
"version": "4.7",
"version": "5.5",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
@@ -14333,8 +14350,8 @@
"samurai",
"python3",
"pkgconf",
"scdoc",
"linux-headers",
"luajit",
"wayland",
"wayland-protocols",
"libxkbcommon",
@@ -14347,7 +14364,6 @@
"libtiff",
"libwebp",
"giflib",
"json-c",
"zlib",
"zlib-shared",
"xz",
@@ -14356,7 +14372,7 @@
],
"cls": "c",
"queue": "corpus",
"hash": "b3:601518b418088f3a4c6c0d0993441c7fd196266a092a057c18a96e96e3ad29cd",
"hash": "b3:9bcd39c1175b0c73c6115e02dc183cc8002a92c2ab318d8212b9f9fef5c4f729",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
+37 -21
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 989,
"nodes": 990,
"sealed": 989,
"recipes": 990,
"nodes": 991,
"sealed": 990,
"ajeno": 1
},
"by_class": {
"ajeno": 1,
"c": 356,
"c": 357,
"go": 362,
"gui": 36,
"kernel": 6,
@@ -17,7 +17,7 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 791
"sealed": 792
},
"incoming-kde": {
"sealed": 198,
@@ -37,8 +37,8 @@
},
"escritorio-kde": {
"raices": 15,
"clausura": 197,
"sealed": 196,
"clausura": 196,
"sealed": 195,
"ajeno": 1
},
"escritorio-mirada": {
@@ -7458,12 +7458,9 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 3
"dependientes_total": 2
},
"jsonnet-bundler": {
"iname": "jsonnet-bundler",
@@ -13697,6 +13694,29 @@
],
"dependientes_total": 1
},
"luajit": {
"iname": "luajit",
"version": "2.1.1787165859",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"make",
"pkgconf"
],
"cls": "c",
"queue": "corpus",
"hash": "b3:115d4c1c288554bb1b441ca28301ee48cc072ed6fa8c141cca1e6b3fe8dd74e7",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
},
"lux": {
"iname": "lux",
"version": "0.24.1",
@@ -13804,7 +13824,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 108
"dependientes_total": 109
},
"mako": {
"iname": "mako",
@@ -16094,7 +16114,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 373
"dependientes_total": 374
},
"plasma-activities": {
"iname": "plasma-activities",
@@ -18676,12 +18696,9 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 4
"dependientes_total": 3
},
"scorecard": {
"iname": "scorecard",
@@ -19646,7 +19663,7 @@
},
"swayimg": {
"iname": "swayimg",
"version": "4.7",
"version": "5.5",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
@@ -19654,8 +19671,8 @@
"samurai",
"python3",
"pkgconf",
"scdoc",
"linux-headers",
"luajit",
"wayland",
"wayland-protocols",
"libxkbcommon",
@@ -19668,7 +19685,6 @@
"libtiff",
"libwebp",
"giflib",
"json-c",
"zlib",
"zlib-shared",
"xz",
@@ -19677,7 +19693,7 @@
],
"cls": "c",
"queue": "corpus",
"hash": "b3:601518b418088f3a4c6c0d0993441c7fd196266a092a057c18a96e96e3ad29cd",
"hash": "b3:9bcd39c1175b0c73c6115e02dc183cc8002a92c2ab318d8212b9f9fef5c4f729",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
+37 -21
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 819,
"nodes": 820,
"sealed": 819,
"recipes": 820,
"nodes": 821,
"sealed": 820,
"ajeno": 1
},
"by_class": {
"ajeno": 1,
"c": 190,
"c": 191,
"go": 362,
"gui": 32,
"kernel": 6,
@@ -17,7 +17,7 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 804,
"sealed": 805,
"ajeno": 1
},
"incoming-wlr": {
@@ -42,8 +42,8 @@
},
"escritorio-sway": {
"raices": 64,
"clausura": 150,
"sealed": 150
"clausura": 151,
"sealed": 151
}
},
"sin_perfil": 647,
@@ -6847,12 +6847,9 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 3
"dependientes_total": 2
},
"jsonnet-bundler": {
"iname": "jsonnet-bundler",
@@ -8983,6 +8980,29 @@
],
"dependientes_total": 1
},
"luajit": {
"iname": "luajit",
"version": "2.1.1787165859",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"make",
"pkgconf"
],
"cls": "c",
"queue": "corpus",
"hash": "b3:115d4c1c288554bb1b441ca28301ee48cc072ed6fa8c141cca1e6b3fe8dd74e7",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
},
"lux": {
"iname": "lux",
"version": "0.24.1",
@@ -9090,7 +9110,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 108
"dependientes_total": 109
},
"mako": {
"iname": "mako",
@@ -11023,7 +11043,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 373
"dependientes_total": 374
},
"plow": {
"iname": "plow",
@@ -11994,12 +12014,9 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 4
"dependientes_total": 3
},
"scorecard": {
"iname": "scorecard",
@@ -12939,7 +12956,7 @@
},
"swayimg": {
"iname": "swayimg",
"version": "4.7",
"version": "5.5",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
@@ -12947,8 +12964,8 @@
"samurai",
"python3",
"pkgconf",
"scdoc",
"linux-headers",
"luajit",
"wayland",
"wayland-protocols",
"libxkbcommon",
@@ -12961,7 +12978,6 @@
"libtiff",
"libwebp",
"giflib",
"json-c",
"zlib",
"zlib-shared",
"xz",
@@ -12970,7 +12986,7 @@
],
"cls": "c",
"queue": "corpus",
"hash": "b3:601518b418088f3a4c6c0d0993441c7fd196266a092a057c18a96e96e3ad29cd",
"hash": "b3:9bcd39c1175b0c73c6115e02dc183cc8002a92c2ab318d8212b9f9fef5c4f729",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
+35 -19
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 805,
"nodes": 806,
"sealed": 805,
"recipes": 806,
"nodes": 807,
"sealed": 806,
"ajeno": 1
},
"by_class": {
"ajeno": 1,
"c": 176,
"c": 177,
"go": 362,
"gui": 32,
"kernel": 6,
@@ -17,7 +17,7 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 805,
"sealed": 806,
"ajeno": 1
}
},
@@ -6732,12 +6732,9 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 3
"dependientes_total": 2
},
"jsonnet-bundler": {
"iname": "jsonnet-bundler",
@@ -8845,6 +8842,29 @@
],
"dependientes_total": 1
},
"luajit": {
"iname": "luajit",
"version": "2.1.1787165859",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"make",
"pkgconf"
],
"cls": "c",
"queue": "corpus",
"hash": "b3:115d4c1c288554bb1b441ca28301ee48cc072ed6fa8c141cca1e6b3fe8dd74e7",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
},
"lux": {
"iname": "lux",
"version": "0.24.1",
@@ -8952,7 +8972,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 108
"dependientes_total": 109
},
"mako": {
"iname": "mako",
@@ -10885,7 +10905,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 373
"dependientes_total": 374
},
"plow": {
"iname": "plow",
@@ -11856,12 +11876,9 @@
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 4
"dependientes_total": 3
},
"scorecard": {
"iname": "scorecard",
@@ -12644,7 +12661,7 @@
},
"swayimg": {
"iname": "swayimg",
"version": "4.7",
"version": "5.5",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
@@ -12652,8 +12669,8 @@
"samurai",
"python3",
"pkgconf",
"scdoc",
"linux-headers",
"luajit",
"wayland",
"wayland-protocols",
"libxkbcommon",
@@ -12666,7 +12683,6 @@
"libtiff",
"libwebp",
"giflib",
"json-c",
"zlib",
"zlib-shared",
"xz",
@@ -12675,7 +12691,7 @@
],
"cls": "c",
"queue": "corpus",
"hash": "b3:601518b418088f3a4c6c0d0993441c7fd196266a092a057c18a96e96e3ad29cd",
"hash": "b3:9bcd39c1175b0c73c6115e02dc183cc8002a92c2ab318d8212b9f9fef5c4f729",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,