jubilar 13 copias de cola que sellan IDÉNTICO al corpus — y de paso el grafo deja de mentir

Continúa lo que ya se hizo el 2026-09-02 con las 8 copias de gnome. Medido receta por receta con
`hammer hash`: de los 30 nombres que viven en el corpus Y en alguna cola, 13 dan el MISMO
ArtifactHash que su gemela del corpus y 22 son variantes deliberadas (glib/gtk4/pango de gnome,
dbus/openssl/libxml2 de kde…) que NO se tocan.

Se van las 13 redundantes: alsa-lib ×3, nasm ×2, zlib-shared ×2, y de incoming-kde ffmpeg,
fontconfig-shared, freetype-shared, libjpeg-turbo-shared, libpng-shared y vulkan-headers. Cada
consumidor las resuelve ahora en el catálogo PADRE, con el mismo hash.

VERIFICADO ANTES Y DESPUÉS, no argumentado: se snapshotearon los 47 consumidores directos, se
borraron las 13, y se re-hashearon. **0 consumidores vivos con hash distinto** (las 4 diferencias
son las propias recetas borradas, que se consumían entre sí). Cero rebuild.

EL EFECTO QUE NO SE BUSCABA Y ES EL MÁS VALIOSO: `build-state.json` guarda sus nodos POR NOMBRE, y
cuando un nombre vive en dos colas la membresía se consulta por el par `(cola, nombre)` de UNA sola
de ellas. Resultado: `ffmpeg`, `alsa-lib`, `vulkan-headers` y `zlib-shared` reportaban
`perfiles: []` —o sea "no está en ninguna imagen"— **mientras estaban en las cuatro**. Ahora dicen
la verdad, y `escritorio-kde` pasa de 183 a 185 porque aparecen dos nodos que el grafo no contaba.

La lección para el próximo análisis, que ya quedó en `scripts/vigia-sonames.py`: sobre el grafo se
pregunta con `yupana.membresia()`, que llavea por `(cola,nombre)`; el campo `perfiles` del JSON es
fiable sólo mientras el nombre viva en una sola cola.

Sin cambios en la deuda: cosmic sigue 105/106 por el OOM de xdg-desktop-portal-cosmic.
This commit is contained in:
Sergio
2026-09-03 05:13:21 +00:00
parent 5e6b3631e2
commit f19b8b3e4a
18 changed files with 154 additions and 504 deletions
+33 -24
View File
@@ -18,10 +18,10 @@
},
"by_queue": {
"corpus": {
"sealed": 796
"sealed": 799
},
"incoming-cosmic": {
"sealed": 46,
"sealed": 43,
"debt": 1
}
},
@@ -242,15 +242,18 @@
"pkgconf"
],
"cls": "c",
"queue": "incoming-cosmic",
"queue": "corpus",
"hash": "b3:73fb200aae06b0743035dc9f961121fc94295e80a12d39dc358920d698b7bfe0",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic"
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 2
"dependientes_total": 7
},
"alterx": {
"iname": "alterx",
@@ -2221,7 +2224,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 144
"dependientes_total": 142
},
"cmctl": {
"iname": "cmctl",
@@ -4038,7 +4041,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 64
"dependientes_total": 63
},
"expat-shared": {
"iname": "expat-shared",
@@ -4244,7 +4247,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 3
},
"ffuf": {
"iname": "ffuf",
@@ -4438,7 +4441,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 10
"dependientes_total": 12
},
"foot": {
"iname": "foot",
@@ -4555,7 +4558,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 12
"dependientes_total": 14
},
"freeze": {
"iname": "freeze",
@@ -6065,7 +6068,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 7
"dependientes_total": 6
},
"gping": {
"iname": "gping",
@@ -8753,7 +8756,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 7
"dependientes_total": 13
},
"libksba": {
"iname": "libksba",
@@ -8889,7 +8892,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 14
"dependientes_total": 20
},
"libqalculate": {
"iname": "libqalculate",
@@ -9635,7 +9638,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 112
"dependientes_total": 110
},
"mako": {
"iname": "mako",
@@ -10524,15 +10527,18 @@
"make"
],
"cls": "c",
"queue": "incoming-cosmic",
"queue": "corpus",
"hash": "b3:3624bdd8370b82b799e1f3f13ed8356fc4a7d8db123b592dd35b776b0fc9aab3",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic"
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 3
},
"natls": {
"iname": "natls",
@@ -11600,7 +11606,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 384
"dependientes_total": 376
},
"plow": {
"iname": "plow",
@@ -11969,7 +11975,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 290
"dependientes_total": 288
},
"qrcp": {
"iname": "qrcp",
@@ -12524,7 +12530,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 254
"dependientes_total": 252
},
"sassc": {
"iname": "sassc",
@@ -14664,7 +14670,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 3
},
"vultr-cli": {
"iname": "vultr-cli",
@@ -15442,15 +15448,18 @@
"compiler": "zig-cc",
"deps": [],
"cls": "c",
"queue": "incoming-cosmic",
"queue": "corpus",
"hash": "b3:b7d5397b96fc080a6e4ee9a19f5ea5ee32a63148ef87c63c795955676c5f344f",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic"
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 5
"dependientes_total": 75
},
"zola": {
"iname": "zola",
+28 -22
View File
@@ -15,10 +15,10 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 789
"sealed": 791
},
"incoming-gnome": {
"sealed": 79
"sealed": 77
}
},
"by_profile": {
@@ -291,15 +291,18 @@
"pkgconf"
],
"cls": "c",
"queue": "incoming-gnome",
"queue": "corpus",
"hash": "b3:73fb200aae06b0743035dc9f961121fc94295e80a12d39dc358920d698b7bfe0",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-gnome"
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 2
"dependientes_total": 7
},
"alterx": {
"iname": "alterx",
@@ -2328,7 +2331,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 144
"dependientes_total": 142
},
"cmctl": {
"iname": "cmctl",
@@ -3767,7 +3770,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 64
"dependientes_total": 63
},
"expat-shared": {
"iname": "expat-shared",
@@ -3973,7 +3976,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 3
},
"ffuf": {
"iname": "ffuf",
@@ -4167,7 +4170,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 10
"dependientes_total": 12
},
"foot": {
"iname": "foot",
@@ -4284,7 +4287,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 12
"dependientes_total": 14
},
"freeze": {
"iname": "freeze",
@@ -6158,7 +6161,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 7
"dependientes_total": 6
},
"gping": {
"iname": "gping",
@@ -9243,7 +9246,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 7
"dependientes_total": 13
},
"libksba": {
"iname": "libksba",
@@ -9379,7 +9382,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 14
"dependientes_total": 20
},
"libpsl": {
"iname": "libpsl",
@@ -10284,7 +10287,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 112
"dependientes_total": 110
},
"mako": {
"iname": "mako",
@@ -11226,15 +11229,18 @@
"make"
],
"cls": "c",
"queue": "incoming-gnome",
"queue": "corpus",
"hash": "b3:3624bdd8370b82b799e1f3f13ed8356fc4a7d8db123b592dd35b776b0fc9aab3",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-gnome"
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 3
},
"natls": {
"iname": "natls",
@@ -12373,7 +12379,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 384
"dependientes_total": 376
},
"plow": {
"iname": "plow",
@@ -12812,7 +12818,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 290
"dependientes_total": 288
},
"qrcp": {
"iname": "qrcp",
@@ -13367,7 +13373,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 254
"dependientes_total": 252
},
"sassc": {
"iname": "sassc",
@@ -15606,7 +15612,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 3
},
"vultr-cli": {
"iname": "vultr-cli",
@@ -16445,7 +16451,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 38
"dependientes_total": 75
},
"zola": {
"iname": "zola",
+61 -37
View File
@@ -17,10 +17,10 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 778
"sealed": 786
},
"incoming-kde": {
"sealed": 208,
"sealed": 200,
"wanted": 1
}
},
@@ -37,8 +37,8 @@
},
"escritorio-kde": {
"raices": 14,
"clausura": 183,
"sealed": 183
"clausura": 185,
"sealed": 185
},
"escritorio-mirada": {
"raices": 14,
@@ -46,7 +46,7 @@
"sealed": 29
}
},
"sin_perfil": 720,
"sin_perfil": 714,
"orphan_deps": [],
"topo_ok": true,
"nodes": {
@@ -240,13 +240,18 @@
"pkgconf"
],
"cls": "c",
"queue": "incoming-kde",
"queue": "corpus",
"hash": "b3:73fb200aae06b0743035dc9f961121fc94295e80a12d39dc358920d698b7bfe0",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [],
"dependientes_total": 2
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 7
},
"alterx": {
"iname": "alterx",
@@ -2449,7 +2454,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 144
"dependientes_total": 142
},
"cmctl": {
"iname": "cmctl",
@@ -3898,7 +3903,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 64
"dependientes_total": 63
},
"expat-shared": {
"iname": "expat-shared",
@@ -4114,13 +4119,18 @@
"zlib-shared"
],
"cls": "c",
"queue": "incoming-kde",
"queue": "corpus",
"hash": "b3:bfef7bf3a85032167ad45e40b420735d08ee13d7b27af46e2cf72768e8460f6e",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [],
"dependientes_total": 2
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 3
},
"ffuf": {
"iname": "ffuf",
@@ -4369,13 +4379,15 @@
"zlib-shared"
],
"cls": "gui",
"queue": "incoming-kde",
"queue": "corpus",
"hash": "b3:3031ef0098201d2d302f431a283cfe397e74da20c21b026591a59e2200e5f955",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [],
"dependientes_total": 2
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 12
},
"foot": {
"iname": "foot",
@@ -4558,13 +4570,15 @@
"pkgconf"
],
"cls": "c",
"queue": "incoming-kde",
"queue": "corpus",
"hash": "b3:80b5c5f06b0756b876178e54b47e280bdc32e7dc926605a8d8b059697dc48d1a",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [],
"dependientes_total": 3
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 14
},
"freeze": {
"iname": "freeze",
@@ -6052,7 +6066,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 7
"dependientes_total": 6
},
"gping": {
"iname": "gping",
@@ -12421,13 +12435,15 @@
"samurai"
],
"cls": "c",
"queue": "incoming-kde",
"queue": "corpus",
"hash": "b3:afc8000655fb31cc2204fb24be2bded107dea7810ddc18159fc9a6b22bf6939e",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [],
"dependientes_total": 6
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 13
},
"libksba": {
"iname": "libksba",
@@ -12811,13 +12827,15 @@
"pkgconf"
],
"cls": "c",
"queue": "incoming-kde",
"queue": "corpus",
"hash": "b3:761a6a9f25f59fa351663d574ae527d6a100aed86eef6ea2ef77a8e8ce628f6f",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [],
"dependientes_total": 8
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 20
},
"libpthread-stubs": {
"iname": "libpthread-stubs",
@@ -13734,7 +13752,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 112
"dependientes_total": 110
},
"mako": {
"iname": "mako",
@@ -14713,7 +14731,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 3
},
"natls": {
"iname": "natls",
@@ -16018,7 +16036,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 384
"dependientes_total": 376
},
"plasma-activities": {
"iname": "plasma-activities",
@@ -17370,7 +17388,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 290
"dependientes_total": 288
},
"qcoro": {
"iname": "qcoro",
@@ -18514,7 +18532,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 254
"dependientes_total": 252
},
"sassc": {
"iname": "sassc",
@@ -21014,15 +21032,18 @@
"pkgconf"
],
"cls": "c",
"queue": "incoming-kde",
"queue": "corpus",
"hash": "b3:7731a012db7de92a21ac7005125180e49f37955d1446fb4b3246ebd6c4844e7b",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-kde"
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 2
"dependientes_total": 3
},
"vulkan-loader": {
"iname": "vulkan-loader",
@@ -21990,15 +22011,18 @@
"compiler": "zig-cc",
"deps": [],
"cls": "c",
"queue": "incoming-kde",
"queue": "corpus",
"hash": "b3:b7d5397b96fc080a6e4ee9a19f5ea5ee32a63148ef87c63c795955676c5f344f",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-kde"
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 36
"dependientes_total": 75
},
"zola": {
"iname": "zola",
+16 -16
View File
@@ -248,7 +248,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 7
},
"alterx": {
"iname": "alterx",
@@ -2196,7 +2196,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 144
"dependientes_total": 142
},
"cmctl": {
"iname": "cmctl",
@@ -3547,7 +3547,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 64
"dependientes_total": 63
},
"expat-shared": {
"iname": "expat-shared",
@@ -3753,7 +3753,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 3
},
"ffuf": {
"iname": "ffuf",
@@ -3947,7 +3947,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 10
"dependientes_total": 12
},
"foot": {
"iname": "foot",
@@ -4064,7 +4064,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 12
"dependientes_total": 14
},
"freeze": {
"iname": "freeze",
@@ -5548,7 +5548,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 7
"dependientes_total": 6
},
"gping": {
"iname": "gping",
@@ -8201,7 +8201,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 7
"dependientes_total": 13
},
"libksba": {
"iname": "libksba",
@@ -8337,7 +8337,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 14
"dependientes_total": 20
},
"libsass": {
"iname": "libsass",
@@ -9018,7 +9018,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 112
"dependientes_total": 110
},
"mako": {
"iname": "mako",
@@ -9898,7 +9898,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 3
},
"natls": {
"iname": "natls",
@@ -10914,7 +10914,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 384
"dependientes_total": 376
},
"plow": {
"iname": "plow",
@@ -11213,7 +11213,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 290
"dependientes_total": 288
},
"qrcp": {
"iname": "qrcp",
@@ -11768,7 +11768,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 254
"dependientes_total": 252
},
"sassc": {
"iname": "sassc",
@@ -14106,7 +14106,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 3
},
"vultr-cli": {
"iname": "vultr-cli",
@@ -14909,7 +14909,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 38
"dependientes_total": 75
},
"zola": {
"iname": "zola",
+16 -16
View File
@@ -240,7 +240,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 7
},
"alterx": {
"iname": "alterx",
@@ -2188,7 +2188,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 144
"dependientes_total": 142
},
"cmctl": {
"iname": "cmctl",
@@ -3522,7 +3522,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 64
"dependientes_total": 63
},
"expat-shared": {
"iname": "expat-shared",
@@ -3728,7 +3728,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 3
},
"ffuf": {
"iname": "ffuf",
@@ -3922,7 +3922,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 10
"dependientes_total": 12
},
"foot": {
"iname": "foot",
@@ -4039,7 +4039,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 12
"dependientes_total": 14
},
"freeze": {
"iname": "freeze",
@@ -5482,7 +5482,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 7
"dependientes_total": 6
},
"gping": {
"iname": "gping",
@@ -8063,7 +8063,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 7
"dependientes_total": 13
},
"libksba": {
"iname": "libksba",
@@ -8199,7 +8199,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 14
"dependientes_total": 20
},
"libsass": {
"iname": "libsass",
@@ -8880,7 +8880,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 112
"dependientes_total": 110
},
"mako": {
"iname": "mako",
@@ -9760,7 +9760,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 3
},
"natls": {
"iname": "natls",
@@ -10776,7 +10776,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 384
"dependientes_total": 376
},
"plow": {
"iname": "plow",
@@ -11075,7 +11075,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 290
"dependientes_total": 288
},
"qrcp": {
"iname": "qrcp",
@@ -11630,7 +11630,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 254
"dependientes_total": 252
},
"sassc": {
"iname": "sassc",
@@ -13770,7 +13770,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 1
"dependientes_total": 3
},
"vultr-cli": {
"iname": "vultr-cli",
@@ -14443,7 +14443,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 38
"dependientes_total": 75
},
"zola": {
"iname": "zola",
-26
View File
@@ -1,26 +0,0 @@
# alsa-lib 1.2.14 — API de audio del kernel Linux (libasound.so). Campaña KDE (ADR 0011): sustrato de
# PulseAudio → pulseaudio-qt → plasma-pa (el applet de volumen). Primer eslabón de la cadena de AUDIO real
# (hasta ahora el lab sólo tenía libcanberra con backend NULL, sin reproducción).
#
# --disable-python: los bindings pyalsa exigen headers de python + no hacen falta. Sin deps externas.
name = "alsa-lib"
version = "1.2.14"
license = "LGPL-2.1-or-later"
[source]
tarball = "https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.14.tar.bz2"
sha256 = "be9c88a0b3604367dd74167a2b754a35e142f670292ae47a2fdef27a2ee97a32"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --disable-static --disable-python'
compile = 'make -j"$(nproc)"'
install = "make DESTDIR=/out install && find /out -name '*.la' -delete"
[deps]
build = ["pkgconf"]
-23
View File
@@ -1,23 +0,0 @@
# nasm — ensamblador x86. Herramienta de BUILD de mozjs (algunas rutas de código generan .asm) y de
# varias libs de media más adelante. No está en el rootfs Alpine ni tenía receta. C plano, autotools.
name = "nasm"
version = "2.16.03"
license = "BSD-2-Clause"
[source]
tarball = "https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.xz"
sha256 = "1412a1c760bbd05db026b6c0d1657affd6631cd0a63cddb6f73cc6d4aa616148"
strip_components = 1
[build]
compiler = "gcc"
target = "x86_64-linux-musl"
link = "static" # binario de herramienta: estático, sin runtime que arrastrar
[build.phases]
configure = "./configure --build=$CBUILD --host=$CHOST --prefix=/usr"
compile = "make -j\"$(nproc)\""
install = "make DESTDIR=/out install"
[deps]
build = ["make"]
-34
View File
@@ -1,34 +0,0 @@
# zlib-shared 1.3.1 — variante DINÁMICA de zlib para el escritorio KDE.
#
# El zlib canónico (recipes/zlib.toml) es `--static` (sólo libz.a, para el toolchain rust/mrustc). Pero
# el stack GUI dinámico (Qt/KDE/libpng/Mesa) linkea `libz.so.1` por SONAME en runtime, y ese `.so` no lo
# provee ningún artefacto sellado ⇒ el rootfs hidratado caía a la libz.so.1 del sysroot Alpine (fuga de
# soberanía, deuda static↔dinámico de Capa 0). Esta variante sella el `libz.so.1` soberano: los `.so` de
# KDE ya tienen NEEDED libz.so.1 (mismo soname), así que basta hidratar este artefacto — sin rebuild de KDE.
#
# Build shared: el configure de zlib aborta bajo zig cc ("compiler error reporting too harsh"), así que se
# fabrica el libz.so.1 a mano del libz.a PIC con --whole-archive. CLAVE (fix soberanía): se pasa el
# --version-script=zlib.map del propio tarball ⇒ el .so exporta los símbolos VERSIONADOS (ZLIB_1.2.0
# compressBound, ZLIB_1.2.3.4 inflateReset2, …). Qt6 (libQt6Core/Gui) fue enlazado contra un zlib
# versionado y NEEDED esos @tags; sin el mapa, un libz.so con nombres pelados no resolvía
# inflateReset2@ZLIB_1.2.3.4 al enlazar gwenview (--no-allow-shlib-undefined) y Qt caía en runtime a la
# libz.so.1 de Alpine (fuga). El .so versionado satisface consumidores versionados Y no-versionados.
# -fPIC/-O2/-fno-sanitize=undefined igual que la canónica (evita el runtime UBSan de zig).
name = "zlib-shared"
version = "1.3.1"
license = "Zlib"
[source]
tarball = "https://github.com/madler/zlib/releases/download/v1.3.1/zlib-1.3.1.tar.gz"
sha256 = "9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
configure = "CFLAGS='-fPIC -O2 -fno-sanitize=undefined' ./configure --prefix=/usr --static"
compile = "make -j\"$(nproc)\" && ${CC:-zig cc} -shared -Wl,-soname,libz.so.1 -Wl,--version-script,zlib.map -Wl,--whole-archive libz.a -Wl,--no-whole-archive -o libz.so.1.3.1"
install = "make install DESTDIR=/out && install -Dm755 libz.so.1.3.1 /out/usr/lib/libz.so.1.3.1 && ln -sf libz.so.1.3.1 /out/usr/lib/libz.so.1 && ln -sf libz.so.1 /out/usr/lib/libz.so"
-26
View File
@@ -1,26 +0,0 @@
# alsa-lib 1.2.14 — API de audio del kernel Linux (libasound.so). Campaña KDE (ADR 0011): sustrato de
# PulseAudio → pulseaudio-qt → plasma-pa (el applet de volumen). Primer eslabón de la cadena de AUDIO real
# (hasta ahora el lab sólo tenía libcanberra con backend NULL, sin reproducción).
#
# --disable-python: los bindings pyalsa exigen headers de python + no hacen falta. Sin deps externas.
name = "alsa-lib"
version = "1.2.14"
license = "LGPL-2.1-or-later"
[source]
tarball = "https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.14.tar.bz2"
sha256 = "be9c88a0b3604367dd74167a2b754a35e142f670292ae47a2fdef27a2ee97a32"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --disable-static --disable-python'
compile = 'make -j"$(nproc)"'
install = "make DESTDIR=/out install && find /out -name '*.la' -delete"
[deps]
build = ["pkgconf"]
-23
View File
@@ -1,23 +0,0 @@
# nasm — ensamblador x86. Herramienta de BUILD de mozjs (algunas rutas de código generan .asm) y de
# varias libs de media más adelante. No está en el rootfs Alpine ni tenía receta. C plano, autotools.
name = "nasm"
version = "2.16.03"
license = "BSD-2-Clause"
[source]
tarball = "https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.xz"
sha256 = "1412a1c760bbd05db026b6c0d1657affd6631cd0a63cddb6f73cc6d4aa616148"
strip_components = 1
[build]
compiler = "gcc"
target = "x86_64-linux-musl"
link = "static" # binario de herramienta: estático, sin runtime que arrastrar
[build.phases]
configure = "./configure --build=$CBUILD --host=$CHOST --prefix=/usr"
compile = "make -j\"$(nproc)\""
install = "make DESTDIR=/out install"
[deps]
build = ["make"]
-26
View File
@@ -1,26 +0,0 @@
# alsa-lib 1.2.14 — API de audio del kernel Linux (libasound.so). Campaña KDE (ADR 0011): sustrato de
# PulseAudio → pulseaudio-qt → plasma-pa (el applet de volumen). Primer eslabón de la cadena de AUDIO real
# (hasta ahora el lab sólo tenía libcanberra con backend NULL, sin reproducción).
#
# --disable-python: los bindings pyalsa exigen headers de python + no hacen falta. Sin deps externas.
name = "alsa-lib"
version = "1.2.14"
license = "LGPL-2.1-or-later"
[source]
tarball = "https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.14.tar.bz2"
sha256 = "be9c88a0b3604367dd74167a2b754a35e142f670292ae47a2fdef27a2ee97a32"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --disable-static --disable-python'
compile = 'make -j"$(nproc)"'
install = "make DESTDIR=/out install && find /out -name '*.la' -delete"
[deps]
build = ["pkgconf"]
-55
View File
@@ -1,55 +0,0 @@
# ffmpeg 7.1 — libavcodec/libavutil/libavformat/libavfilter (+swscale/swresample). Campaña KDE (ADR 0011):
# **kpipewire** los exige los cuatro REQUIRED (`pkg_check_modules(AVCodec ... libavcodec REQUIRED)` etc.)
# para KPipeWireRecord (grabar streams a fichero), y spectacle linkea K::KPipeWireRecord duro.
#
# ffmpeg NO usa autotools: trae su propio `configure` con --cc/--ar/--nm/--ranlib. Se le pasan wrappers de
# UN SOLO TOKEN (`$PWD/.zwrap/*`): un `--ar="zig ar"` con espacio se ejecutaría como un binario único
# (mismo gotcha que el AR de los crates `cc` en las recetas Rust).
#
# **--disable-autodetect** es clave para el determinismo: sin él, configure escanea el sandbox y activa
# libs a discreción. Con él, ffmpeg queda auto-contenido (sus códecs nativos, sin x264/x265/vpx/etc.).
# Sin programas (ffmpeg/ffplay/ffprobe) ni doc: kpipewire sólo consume las libs.
name = "ffmpeg"
version = "7.1"
[source]
tarball = "https://ffmpeg.org/releases/ffmpeg-7.1.tar.xz"
sha256 = "40973d44970dbc83ef302b0609f2e74982be2d85916dd2ee7472d30678a7abe6"
[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
exec /opt/zig/zig cc -mcpu=baseline "$@"
W
cat > "$ZW/cxx" <<'W'
#!/bin/sh
exec /opt/zig/zig c++ -mcpu=baseline "$@"
W
cat > "$ZW/ar" <<'W'
#!/bin/sh
exec /opt/zig/zig ar "$@"
W
cat > "$ZW/ranlib" <<'W'
#!/bin/sh
exec /opt/zig/zig ranlib "$@"
W
chmod +x "$ZW/cc" "$ZW/cxx" "$ZW/ar" "$ZW/ranlib"
./configure --prefix=/usr \
--cc="$ZW/cc" --cxx="$ZW/cxx" --ar="$ZW/ar" --ranlib="$ZW/ranlib" \
--enable-shared --disable-static \
--disable-autodetect --disable-doc --disable-programs --disable-debug \
--disable-x86asm
'''
compile = 'make -j"$(nproc)"'
install = "make DESTDIR=/out install"
[deps]
build = ["pkgconf", "zlib-shared"]
@@ -1,28 +0,0 @@
# fontconfig-shared 2.18.1 — variante DINÁMICA (libfontconfig.so.1, PIC) para el escritorio KDE.
# El canónico (recipes/fontconfig.toml) es --disable-shared (sólo libfontconfig.a sin PIC) ⇒ no enlaza en
# un .so. Lo exige poppler (búsqueda/sustitución de fuentes del PDF) → okular. Deuda Capa 0 del ADR 0011.
#
# expat NO necesita variante: el canónico ya usa --with-pic (su .a lleva objetos PIC, enlazable en .so).
# libpng-shared+zlib-shared: freetype se compila --with-png ⇒ freetype2.pc trae `Requires: libpng` (y
# libpng.pc → zlib); sin ellos pkg-config no resuelve freetype2 y ./configure aborta (gotcha .pc transitivo).
name = "fontconfig-shared"
version = "2.18.1"
license = "MIT"
[source]
tarball = "https://gitlab.freedesktop.org/api/v4/projects/890/packages/generic/fontconfig/2.18.1/fontconfig-2.18.1.tar.xz"
sha256 = "2300f3dbfa7253b3a44f4feecdbc8dfa45dde5dc2cfb71fceaf31f394cb41031"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = "./configure --build=$CBUILD --host=$CHOST --prefix=/usr --sysconfdir=/etc --enable-shared --disable-static --disable-docs"
compile = 'make -j"$(nproc)"'
install = "make install DESTDIR=/out && find /out -name '*.la' -delete"
[deps]
build = ["freetype-shared", "expat", "pkgconf", "gperf", "python3", "libpng-shared", "zlib-shared"]
-32
View File
@@ -1,32 +0,0 @@
# freetype-shared 2.14.3 — variante DINÁMICA (libfreetype.so.6, PIC) para el escritorio KDE.
# El canónico (recipes/freetype.toml) es --disable-shared (sólo libfreetype.a sin PIC) ⇒ no enlaza dentro
# de un .so. Lo exige poppler (rasterizado de fuentes del PDF) → okular. Deuda Capa 0 que el ADR 0011
# marcaba pendiente ("freetype/fontconfig shared-PIC").
#
# SIN los 3 patches del canónico (pcf-family-names/subpixel/table-validation-modules): son tweaks de
# rendering de Alpine y viven en recipes/ (copiarlos a esta cola arriesga la colisión de patches homónimos).
# No afectan la corrección del rasterizado que poppler necesita.
#
# --without-harfbuzz: corta el ciclo freetype↔harfbuzz (harfbuzz autodetectaría freetype). --without-brotli:
# no hay brotli sellado (sólo afecta fuentes WOFF2). zlib/png dinámicos vía las variantes -shared.
name = "freetype-shared"
version = "2.14.3"
license = "FTL OR GPL-2.0-or-later"
[source]
tarball = "https://download.savannah.gnu.org/releases/freetype/freetype-2.14.3.tar.xz"
sha256 = "36bc4f1cc413335368ee656c42afca65c5a3987e8768cc28cf11ba775e785a5f"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --disable-static --without-harfbuzz --without-brotli --with-zlib=yes --with-png=yes CPPFLAGS=-I/usr/include LDFLAGS=-L/usr/lib'
compile = 'make -j"$(nproc)"'
install = "make DESTDIR=/out install && find /out -name '*.la' -delete"
[deps]
build = ["zlib-shared", "libpng-shared", "pkgconf"]
@@ -1,25 +0,0 @@
# libjpeg-turbo-shared 3.1.3 — variante DINÁMICA (libjpeg.so.8 + libturbojpeg.so.0, PIC) para el
# escritorio KDE. El canónico (recipes/incoming-kde/libjpeg-turbo.toml) es ENABLE_SHARED=0 (sólo .a sin
# PIC) ⇒ no enlaza dentro de un .so ('R_X86_64_32S ... recompile with -fPIC', jpeg_nbits_table). Como
# zlib-shared/bzip2-shared. Nombre distinto para no colisionar con el canónico. gwenview lo linkea.
name = "libjpeg-turbo-shared"
version = "3.1.3"
license = "IJG AND BSD-3-Clause AND Zlib"
[source]
tarball = "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/3.1.3/libjpeg-turbo-3.1.3.tar.gz"
sha256 = "075920b826834ac4ddf97661cc73491047855859affd671d52079c6867c1c6c0"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = "cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DENABLE_SHARED=1 -DENABLE_STATIC=0 -DWITH_SIMD=0"
compile = "cmake --build build"
install = "DESTDIR=/out cmake --install build"
[deps]
build = ["cmake", "samurai"]
-24
View File
@@ -1,24 +0,0 @@
# libpng-shared 1.6.58 — variante DINÁMICA (libpng16.so.16, PIC) para el escritorio KDE. El canónico
# (recipes/libpng.toml) es --disable-shared (sólo libpng16.a sin PIC) ⇒ no enlaza dentro de un .so. Como
# zlib-shared/xz-shared: autotools --enable-shared, zig-cc, contra zlib-shared (libz.so). gwenview linkea.
name = "libpng-shared"
version = "1.6.58"
license = "Libpng"
[source]
tarball = "https://downloads.sourceforge.net/libpng/libpng-1.6.58.tar.gz"
sha256 = "8c9b05b675ca7301a458df2c2e46f26e1d41ff36b8863f8c33530bc58c2e6225"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --disable-static CPPFLAGS=-I/usr/include LDFLAGS=-L/usr/lib'
compile = 'make -j"$(nproc)"'
install = "make DESTDIR=/out install && find /out -name '*.la' -delete"
[deps]
build = ["zlib-shared", "pkgconf"]
-33
View File
@@ -1,33 +0,0 @@
# vulkan-headers 1.4.350.1 — cabeceras de la API Vulkan + config CMake Vulkan::Headers. Blocker de kwin
# (find_package(Vulkan REQUIRED) → Vulkan::Vulkan). Campaña KDE (ADR 0011), cadena Vulkan. Headers-only:
# INTERFACE library, no compila nada, sólo instala include/vulkan + los .cmake. Versión debe casar con
# vulkan-loader. Tests y el módulo C++20 (Vulkan-Hpp) apagados.
name = "vulkan-headers"
version = "1.4.350.1"
[source]
tarball = "https://github.com/KhronosGroup/Vulkan-Headers/archive/refs/tags/vulkan-sdk-1.4.350.1.tar.gz"
sha256 = "6d1bb65e49520344cc0a48af3dc02e993781efff14c7ebdcb8ae9fa23ddf7e83"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
zig_version = "0.13.0"
[build.phases]
configure = '''
ZW="$PWD/.zwrap"; mkdir -p "$ZW"
printf '#!/bin/sh\nexec /opt/zig/zig cc -mcpu=baseline "$@"\n' > "$ZW/cc"
printf '#!/bin/sh\nexec /opt/zig/zig c++ -mcpu=baseline "$@"\n' > "$ZW/cxx"
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 \
-DVULKAN_HEADERS_ENABLE_TESTS=OFF -DVULKAN_HEADERS_ENABLE_MODULE=OFF
'''
compile = "cmake --build build"
install = "DESTDIR=/out cmake --install build"
[deps]
build = ["cmake", "samurai", "python3", "pkgconf"]
-34
View File
@@ -1,34 +0,0 @@
# zlib-shared 1.3.1 — variante DINÁMICA de zlib para el escritorio KDE.
#
# El zlib canónico (recipes/zlib.toml) es `--static` (sólo libz.a, para el toolchain rust/mrustc). Pero
# el stack GUI dinámico (Qt/KDE/libpng/Mesa) linkea `libz.so.1` por SONAME en runtime, y ese `.so` no lo
# provee ningún artefacto sellado ⇒ el rootfs hidratado caía a la libz.so.1 del sysroot Alpine (fuga de
# soberanía, deuda static↔dinámico de Capa 0). Esta variante sella el `libz.so.1` soberano: los `.so` de
# KDE ya tienen NEEDED libz.so.1 (mismo soname), así que basta hidratar este artefacto — sin rebuild de KDE.
#
# Build shared: el configure de zlib aborta bajo zig cc ("compiler error reporting too harsh"), así que se
# fabrica el libz.so.1 a mano del libz.a PIC con --whole-archive. CLAVE (fix soberanía): se pasa el
# --version-script=zlib.map del propio tarball ⇒ el .so exporta los símbolos VERSIONADOS (ZLIB_1.2.0
# compressBound, ZLIB_1.2.3.4 inflateReset2, …). Qt6 (libQt6Core/Gui) fue enlazado contra un zlib
# versionado y NEEDED esos @tags; sin el mapa, un libz.so con nombres pelados no resolvía
# inflateReset2@ZLIB_1.2.3.4 al enlazar gwenview (--no-allow-shlib-undefined) y Qt caía en runtime a la
# libz.so.1 de Alpine (fuga). El .so versionado satisface consumidores versionados Y no-versionados.
# -fPIC/-O2/-fno-sanitize=undefined igual que la canónica (evita el runtime UBSan de zig).
name = "zlib-shared"
version = "1.3.1"
license = "Zlib"
[source]
tarball = "https://github.com/madler/zlib/releases/download/v1.3.1/zlib-1.3.1.tar.gz"
sha256 = "9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
configure = "CFLAGS='-fPIC -O2 -fno-sanitize=undefined' ./configure --prefix=/usr --static"
compile = "make -j\"$(nproc)\" && ${CC:-zig cc} -shared -Wl,-soname,libz.so.1 -Wl,--version-script,zlib.map -Wl,--whole-archive libz.a -Wl,--no-whole-archive -o libz.so.1.3.1"
install = "make install DESTDIR=/out && install -Dm755 libz.so.1.3.1 /out/usr/lib/libz.so.1.3.1 && ln -sf libz.so.1.3.1 /out/usr/lib/libz.so.1 && ln -sf libz.so.1 /out/usr/lib/libz.so"