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,
+27 -18
View File
@@ -20,14 +20,19 @@
# `wl_shm`. Encaja con la distro en vez de pelearse con ella, y de yapa trae backend **DRM**, que
# muestra imágenes en una TTY pelada sin compositor.
#
# ══ VERSIÓN 4.7 Y NO 5.5, A PROPÓSITO ══════════════════════════════════════════════════════════
# Desde la 5.0 `dependency('luajit')` es OBLIGATORIA (scripting), y no hay receta `luajit` — la
# `lua5.2` que entró para el OSC de mpv no sirve, es otra ABI. La 4.7 es la última sin lua y sus
# deps requeridas están TODAS en el corpus. Subir a 5.x = escribir `luajit` primero, que además le
# daría a mpv su intérprete preferido; queda anotado como el camino, no como deuda de esta receta.
# ══ 5.5, DESPUÉS DE ESCRIBIR `luajit` ══════════════════════════════════════════════════════════
# 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 no sirve, es otra ABI (LuaJIT es Lua 5.1
# + FFI + JIT). Se escribió `luajit` el mismo día y esto subió a 5.5. 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 que se instala con `-Dluameta=true`.
# Dos cambios de forma respecto de la 4.7: `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 ⇒ las dos deps se fueron de `[deps]`. `-Ddoc=false` porque ese target regenera markdown con
# dos scripts de Python y lo que instala son `.md`, no páginas de manual.
#
# ══ `-Dversion=4.7` NO ES COSMÉTICO ════════════════════════════════════════════════════════════
# Su default es la cadena `0.0.0`, y meson.build:24-35 la interpreta como «averiguala vos»: corre
# ══ `-Dversion=5.5` NO ES COSMÉTICO ════════════════════════════════════════════════════════════
# Su default es la cadena `0.0.0`, y meson.build:19-31 la interpreta como «averiguala vos»: corre
# `git describe --tags --long --always --dirty` sobre el árbol. O sea que **la versión estampada
# DENTRO del binario dependería del estado del checkout** (si hay `.git`, si trajo los tags, si
# quedó sucio) y dos builds del mismo commit podrían dar bytes distintos. Misma familia que el
@@ -38,23 +43,26 @@
# el artefacto pasaría a depender de qué otra cosa quedó montada en el lab. Se enumeran una por una.
# ENCENDIDAS (la dep ya está en el corpus): jpeg, png, tiff, webp, gif, y `compositor` (json-c, es
# la integración por IPC con sway).
# APAGADAS por falta de receta: exr, heif, avif, jxl, sixel, raw, exif, bash.
# APAGADA por cola: `svg` pide `librsvg-2.0`, que vive sólo en `incoming-gnome` — y una receta del
# corpus no alcanza una cola hermana. Es el mismo hueco que dejó mudo a wf-recorder.
# APAGADAS por falta de receta: exr, heif, avif, jp2, jxl, sixel, raw, bash.
# APAGADAS POR COLA — y son dos, no una: `svg` pide `librsvg-2.0`, que vive sólo en
# `incoming-gnome`, y `exif` pide `exiv2`, que vive sólo en `incoming-kde`. Las dos EXISTEN en el
# disco y ninguna es alcanzable desde el corpus: una receta resuelve sibling-first y después el
# catálogo padre, nunca una cola hermana. Es el mismo hueco que dejó mudo a wf-recorder, y es la
# razón por la que este visor no muestra metadatos EXIF.
#
# `-Dprefer_static=true` como mpv: fontconfig, freetype, libpng, libjpeg, libtiff, libwebp, expat y
# json-c son `.a` en el corpus, y sin esta perilla meson resuelve los `.pc` sin `Libs.private` y el
# link muere con símbolos de expat «en libfontconfig.a», culpando a fontconfig. `link=dynamic`
# porque wayland, libxkbcommon, libdrm y zstd sí publican `.so`.
#
# Fuente por commit git (ADR 0006): `v4.7` es un tag LIVIANO ⇒ éste es su commit.
# Fuente por commit git (ADR 0006): `v5.5` es un tag LIVIANO ⇒ éste es su commit.
name = "swayimg"
version = "4.7"
version = "5.5"
license = "MIT"
[source]
repo = "https://github.com/artemsen/swayimg.git"
commit = "8f0d660bb28a16e0972b986a1a27d4a1876b2cc5"
commit = "682fecf358c0a2da1f98422b6a013dc822c74c5b"
[build]
compiler = "zig-cc"
@@ -63,19 +71,20 @@ link = "dynamic"
flags = []
[build.phases]
configure = "PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Dprefer_static=true -Dversion=4.7 -Dwayland=enabled -Ddrm=enabled -Dcompositor=enabled -Djpeg=enabled -Dpng=enabled -Dtiff=enabled -Dwebp=enabled -Dgif=enabled -Dexr=disabled -Dheif=disabled -Davif=disabled -Djxl=disabled -Dsvg=disabled -Dsixel=disabled -Draw=disabled -Dexif=disabled -Dbash=disabled -Dzsh=disabled -Ddesktop=true -Dman=true -Dtests=disabled"
configure = "PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Dprefer_static=true -Dversion=5.5 -Dwayland=enabled -Ddrm=enabled -Dcompositor=enabled -Djp2=disabled -Djpeg=enabled -Dpng=enabled -Dtiff=enabled -Dwebp=enabled -Dgif=enabled -Dexr=disabled -Dheif=disabled -Davif=disabled -Djxl=disabled -Dsvg=disabled -Dsixel=disabled -Draw=disabled -Dexif=disabled -Dbash=disabled -Dzsh=disabled -Ddesktop=true -Dman=true -Dlicense=true -Ddoc=false -Dluameta=true -Dtests=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"
# `.pc Requires` → `[deps].build`, el patrón del corpus: fontconfig pide expat, freetype2 pide zlib
# y libpng, wayland-client pide libffi, libtiff-4 pide zlib+xz+zstd+libjpeg, libwebpdemux pide
# libsharpyuv (viene en el mismo artefacto). `scdoc` genera las dos man pages; `wayland` aporta
# además el `wayland-scanner` nativo que teje los ocho protocolos.
# libsharpyuv (viene en el mismo artefacto). `wayland` aporta además el `wayland-scanner` nativo que
# teje los NUEVE protocolos.
[deps]
build = [
"meson", "samurai", "python3", "pkgconf", "scdoc", "linux-headers",
"meson", "samurai", "python3", "pkgconf", "linux-headers",
"luajit",
"wayland", "wayland-protocols", "libxkbcommon", "libdrm",
"fontconfig", "freetype", "expat",
"libjpeg-turbo", "libpng", "libtiff", "libwebp", "giflib", "json-c",
"libjpeg-turbo", "libpng", "libtiff", "libwebp", "giflib",
"zlib", "zlib-shared", "xz", "zstd", "libffi",
]