gnome onda-2: jubilar la cola — 22 recetas y 22 hashes identicos a incoming-gnome

El caso LIMPIO del mismo fenomeno que onda-1, sin ninguna de sus asperezas: las
22 recetas son byte a byte identicas a las de incoming-gnome Y las 22 dan el
MISMO ArtifactHash, o sea la misma direccion del store. Sin divergencias, sin
colision de nombre y sin un solo artefacto que podar al retirarla.

La comprobacion que decide NO es `diff` sino `hammer hash`: la resolucion de
deps es hermano->padre, asi que dos ficheros identicos en colas distintas pueden
sellar distinto. Aca coinciden los 22.

Se va tambien `cairo-ctime-r.patch`, verificado identico al de incoming-gnome, y
comprobado que ninguna receta de ninguna cola queda apuntando a un parche
inexistente.

El andamio ya no sostenia nada: el trabajo de la isla dinamica vive en
incoming-gnome, que es la cola que el perfil usa. Sale de QUEUES en el mismo
commit, por la simetrica de la regla que ese fichero documenta.

Gate --check OK, grafo CIERRA, escritorio-gnome sigue 119/119, corpus 786/787.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LykB7vw38b4Ck1Zij15RQ4
This commit is contained in:
Sergio
2026-09-01 18:35:53 +00:00
co-authored by Claude Opus 5
parent b2e92de2f3
commit a2c2c4d968
29 changed files with 123 additions and 902 deletions
+23 -23
View File
@@ -890,7 +890,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 21
"dependientes_total": 20
},
"blackbox_exporter": {
"iname": "blackbox_exporter",
@@ -2220,7 +2220,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 145
"dependientes_total": 143
},
"cmctl": {
"iname": "cmctl",
@@ -4037,7 +4037,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 69
"dependientes_total": 64
},
"expat-shared": {
"iname": "expat-shared",
@@ -4322,7 +4322,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 19
"dependientes_total": 18
},
"flyctl": {
"iname": "flyctl",
@@ -4560,7 +4560,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 25
"dependientes_total": 23
},
"fselect": {
"iname": "fselect",
@@ -6002,7 +6002,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 9
"dependientes_total": 8
},
"gping": {
"iname": "gping",
@@ -8392,7 +8392,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 139
"dependientes_total": 138
},
"libelogind": {
"iname": "libelogind",
@@ -8433,7 +8433,7 @@
"escritorio-gnome",
"escritorio-kde"
],
"dependientes_total": 18
"dependientes_total": 17
},
"libevdev": {
"iname": "libevdev",
@@ -8497,7 +8497,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 110
"dependientes_total": 100
},
"libffi-shared": {
"iname": "libffi-shared",
@@ -8980,7 +8980,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 41
"dependientes_total": 40
},
"libxml2": {
"iname": "libxml2",
@@ -9421,7 +9421,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 113
"dependientes_total": 110
},
"mako": {
"iname": "mako",
@@ -9700,7 +9700,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 137
"dependientes_total": 136
},
"mesa-llvmpipe": {
"iname": "mesa-llvmpipe",
@@ -9790,7 +9790,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 128
"dependientes_total": 118
},
"micro": {
"iname": "micro",
@@ -10357,7 +10357,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 14
"dependientes_total": 13
},
"nebula": {
"iname": "nebula",
@@ -11094,7 +11094,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 86
"dependientes_total": 76
},
"pcre2-shared": {
"iname": "pcre2-shared",
@@ -11315,7 +11315,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 39
"dependientes_total": 35
},
"pkgconf": {
"iname": "pkgconf",
@@ -11338,7 +11338,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 394
"dependientes_total": 380
},
"plow": {
"iname": "plow",
@@ -11707,7 +11707,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 297
"dependientes_total": 285
},
"qrcp": {
"iname": "qrcp",
@@ -11797,7 +11797,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 5
"dependientes_total": 4
},
"reflex": {
"iname": "reflex",
@@ -12262,7 +12262,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 262
"dependientes_total": 251
},
"sassc": {
"iname": "sassc",
@@ -14460,7 +14460,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 148
"dependientes_total": 147
},
"wayland-protocols": {
"iname": "wayland-protocols",
@@ -14487,7 +14487,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 49
"dependientes_total": 48
},
"websocketd": {
"iname": "websocketd",
@@ -15098,7 +15098,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 104
"dependientes_total": 99
},
"zlib-ng": {
"iname": "zlib-ng",
+23 -23
View File
@@ -979,7 +979,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 21
"dependientes_total": 20
},
"blackbox_exporter": {
"iname": "blackbox_exporter",
@@ -2334,7 +2334,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 145
"dependientes_total": 143
},
"cmctl": {
"iname": "cmctl",
@@ -3773,7 +3773,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 69
"dependientes_total": 64
},
"expat-shared": {
"iname": "expat-shared",
@@ -4058,7 +4058,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 19
"dependientes_total": 18
},
"flyctl": {
"iname": "flyctl",
@@ -4300,7 +4300,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 25
"dependientes_total": 23
},
"fselect": {
"iname": "fselect",
@@ -6211,7 +6211,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 9
"dependientes_total": 8
},
"gping": {
"iname": "gping",
@@ -8768,7 +8768,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 139
"dependientes_total": 138
},
"libei": {
"iname": "libei",
@@ -8839,7 +8839,7 @@
"escritorio-gnome",
"escritorio-kde"
],
"dependientes_total": 18
"dependientes_total": 17
},
"libevdev": {
"iname": "libevdev",
@@ -8903,7 +8903,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 110
"dependientes_total": 100
},
"libffi-shared": {
"iname": "libffi-shared",
@@ -9756,7 +9756,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 41
"dependientes_total": 40
},
"libxml2": {
"iname": "libxml2",
@@ -10199,7 +10199,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 113
"dependientes_total": 110
},
"mako": {
"iname": "mako",
@@ -10478,7 +10478,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 137
"dependientes_total": 136
},
"mesa-llvmpipe": {
"iname": "mesa-llvmpipe",
@@ -10568,7 +10568,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 128
"dependientes_total": 118
},
"micro": {
"iname": "micro",
@@ -11188,7 +11188,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 14
"dependientes_total": 13
},
"nebula": {
"iname": "nebula",
@@ -12015,7 +12015,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 86
"dependientes_total": 76
},
"peco": {
"iname": "peco",
@@ -12217,7 +12217,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 39
"dependientes_total": 35
},
"pkgconf": {
"iname": "pkgconf",
@@ -12240,7 +12240,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 394
"dependientes_total": 380
},
"plow": {
"iname": "plow",
@@ -12679,7 +12679,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 297
"dependientes_total": 285
},
"qrcp": {
"iname": "qrcp",
@@ -12769,7 +12769,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 5
"dependientes_total": 4
},
"reflex": {
"iname": "reflex",
@@ -13234,7 +13234,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 262
"dependientes_total": 251
},
"sassc": {
"iname": "sassc",
@@ -15531,7 +15531,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 148
"dependientes_total": 147
},
"wayland-protocols": {
"iname": "wayland-protocols",
@@ -15558,7 +15558,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 49
"dependientes_total": 48
},
"websocketd": {
"iname": "websocketd",
@@ -16219,7 +16219,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 104
"dependientes_total": 99
},
"zlib-ng": {
"iname": "zlib-ng",
+22 -22
View File
@@ -1005,7 +1005,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 21
"dependientes_total": 20
},
"blackbox_exporter": {
"iname": "blackbox_exporter",
@@ -2453,7 +2453,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 145
"dependientes_total": 143
},
"cmctl": {
"iname": "cmctl",
@@ -3902,7 +3902,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 69
"dependientes_total": 64
},
"expat-shared": {
"iname": "expat-shared",
@@ -4289,7 +4289,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 19
"dependientes_total": 18
},
"flyctl": {
"iname": "flyctl",
@@ -4601,7 +4601,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 25
"dependientes_total": 23
},
"fselect": {
"iname": "fselect",
@@ -6019,7 +6019,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 9
"dependientes_total": 8
},
"gping": {
"iname": "gping",
@@ -12129,7 +12129,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 139
"dependientes_total": 138
},
"libepoxy": {
"iname": "libepoxy",
@@ -12153,7 +12153,7 @@
"escritorio-gnome",
"escritorio-kde"
],
"dependientes_total": 18
"dependientes_total": 17
},
"libevdev": {
"iname": "libevdev",
@@ -12213,7 +12213,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 110
"dependientes_total": 100
},
"libffi-shared": {
"iname": "libffi-shared",
@@ -13556,7 +13556,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 113
"dependientes_total": 110
},
"mako": {
"iname": "mako",
@@ -13835,7 +13835,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 137
"dependientes_total": 136
},
"mesa-llvmpipe": {
"iname": "mesa-llvmpipe",
@@ -13925,7 +13925,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 128
"dependientes_total": 118
},
"micro": {
"iname": "micro",
@@ -14552,7 +14552,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 14
"dependientes_total": 13
},
"nebula": {
"iname": "nebula",
@@ -15464,7 +15464,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 86
"dependientes_total": 76
},
"pcre2-shared": {
"iname": "pcre2-shared",
@@ -15745,7 +15745,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 39
"dependientes_total": 35
},
"pkgconf": {
"iname": "pkgconf",
@@ -15768,7 +15768,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 394
"dependientes_total": 380
},
"plasma-activities": {
"iname": "plasma-activities",
@@ -17074,7 +17074,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 297
"dependientes_total": 285
},
"qcoro": {
"iname": "qcoro",
@@ -17725,7 +17725,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 5
"dependientes_total": 4
},
"reflex": {
"iname": "reflex",
@@ -18190,7 +18190,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 262
"dependientes_total": 251
},
"sassc": {
"iname": "sassc",
@@ -20829,7 +20829,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 148
"dependientes_total": 147
},
"wayland-protocols": {
"iname": "wayland-protocols",
@@ -20856,7 +20856,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 49
"dependientes_total": 48
},
"websocketd": {
"iname": "websocketd",
@@ -21624,7 +21624,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 104
"dependientes_total": 99
},
"zlib-ng": {
"iname": "zlib-ng",
+23 -23
View File
@@ -871,7 +871,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 21
"dependientes_total": 20
},
"blackbox_exporter": {
"iname": "blackbox_exporter",
@@ -2178,7 +2178,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 145
"dependientes_total": 143
},
"cmctl": {
"iname": "cmctl",
@@ -3529,7 +3529,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 69
"dependientes_total": 64
},
"expat-shared": {
"iname": "expat-shared",
@@ -3814,7 +3814,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 19
"dependientes_total": 18
},
"flyctl": {
"iname": "flyctl",
@@ -4052,7 +4052,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 25
"dependientes_total": 23
},
"fselect": {
"iname": "fselect",
@@ -5468,7 +5468,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 9
"dependientes_total": 8
},
"gping": {
"iname": "gping",
@@ -7840,7 +7840,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 139
"dependientes_total": 138
},
"libepoxy": {
"iname": "libepoxy",
@@ -7864,7 +7864,7 @@
"escritorio-gnome",
"escritorio-kde"
],
"dependientes_total": 18
"dependientes_total": 17
},
"libevdev": {
"iname": "libevdev",
@@ -7928,7 +7928,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 110
"dependientes_total": 100
},
"libffi-shared": {
"iname": "libffi-shared",
@@ -8366,7 +8366,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 41
"dependientes_total": 40
},
"libxml2": {
"iname": "libxml2",
@@ -8787,7 +8787,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 113
"dependientes_total": 110
},
"mako": {
"iname": "mako",
@@ -9066,7 +9066,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 137
"dependientes_total": 136
},
"mesa-llvmpipe": {
"iname": "mesa-llvmpipe",
@@ -9156,7 +9156,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 128
"dependientes_total": 118
},
"micro": {
"iname": "micro",
@@ -9684,7 +9684,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 14
"dependientes_total": 13
},
"nebula": {
"iname": "nebula",
@@ -10421,7 +10421,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 86
"dependientes_total": 76
},
"peco": {
"iname": "peco",
@@ -10590,7 +10590,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 39
"dependientes_total": 35
},
"pkgconf": {
"iname": "pkgconf",
@@ -10613,7 +10613,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 394
"dependientes_total": 380
},
"plow": {
"iname": "plow",
@@ -10912,7 +10912,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 297
"dependientes_total": 285
},
"qrcp": {
"iname": "qrcp",
@@ -11002,7 +11002,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 5
"dependientes_total": 4
},
"reflex": {
"iname": "reflex",
@@ -11467,7 +11467,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 262
"dependientes_total": 251
},
"sassc": {
"iname": "sassc",
@@ -13863,7 +13863,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 148
"dependientes_total": 147
},
"wayland-protocols": {
"iname": "wayland-protocols",
@@ -13890,7 +13890,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 49
"dependientes_total": 48
},
"websocketd": {
"iname": "websocketd",
@@ -14515,7 +14515,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 104
"dependientes_total": 99
},
"zlib-ng": {
"iname": "zlib-ng",
+23 -23
View File
@@ -863,7 +863,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 21
"dependientes_total": 20
},
"blackbox_exporter": {
"iname": "blackbox_exporter",
@@ -2170,7 +2170,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 145
"dependientes_total": 143
},
"cmctl": {
"iname": "cmctl",
@@ -3504,7 +3504,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 69
"dependientes_total": 64
},
"expat-shared": {
"iname": "expat-shared",
@@ -3789,7 +3789,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 19
"dependientes_total": 18
},
"flyctl": {
"iname": "flyctl",
@@ -4027,7 +4027,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 25
"dependientes_total": 23
},
"fselect": {
"iname": "fselect",
@@ -5402,7 +5402,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 9
"dependientes_total": 8
},
"gping": {
"iname": "gping",
@@ -7702,7 +7702,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 139
"dependientes_total": 138
},
"libepoxy": {
"iname": "libepoxy",
@@ -7726,7 +7726,7 @@
"escritorio-gnome",
"escritorio-kde"
],
"dependientes_total": 18
"dependientes_total": 17
},
"libevdev": {
"iname": "libevdev",
@@ -7790,7 +7790,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 110
"dependientes_total": 100
},
"libffi-shared": {
"iname": "libffi-shared",
@@ -8228,7 +8228,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 41
"dependientes_total": 40
},
"libxml2": {
"iname": "libxml2",
@@ -8649,7 +8649,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 113
"dependientes_total": 110
},
"mako": {
"iname": "mako",
@@ -8928,7 +8928,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 137
"dependientes_total": 136
},
"mesa-llvmpipe": {
"iname": "mesa-llvmpipe",
@@ -9018,7 +9018,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 128
"dependientes_total": 118
},
"micro": {
"iname": "micro",
@@ -9546,7 +9546,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 14
"dependientes_total": 13
},
"nebula": {
"iname": "nebula",
@@ -10283,7 +10283,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 86
"dependientes_total": 76
},
"peco": {
"iname": "peco",
@@ -10452,7 +10452,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 39
"dependientes_total": 35
},
"pkgconf": {
"iname": "pkgconf",
@@ -10475,7 +10475,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 394
"dependientes_total": 380
},
"plow": {
"iname": "plow",
@@ -10774,7 +10774,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 297
"dependientes_total": 285
},
"qrcp": {
"iname": "qrcp",
@@ -10864,7 +10864,7 @@
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 5
"dependientes_total": 4
},
"reflex": {
"iname": "reflex",
@@ -11329,7 +11329,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 262
"dependientes_total": 251
},
"sassc": {
"iname": "sassc",
@@ -13527,7 +13527,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 148
"dependientes_total": 147
},
"wayland-protocols": {
"iname": "wayland-protocols",
@@ -13554,7 +13554,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 49
"dependientes_total": 48
},
"websocketd": {
"iname": "websocketd",
@@ -14049,7 +14049,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 104
"dependientes_total": 99
},
"zlib-ng": {
"iname": "zlib-ng",
@@ -1,53 +0,0 @@
cairo bajo zig-cc/musl: parches para construir la librería + su cairo-script-interpreter.pc en la granja.
(1) meson.build — el loop `foreach name : check_funcs` corre `cc.has_function('ctime_r')` SIN prefix
de header ⇒ prototipo desnudo que bajo zig-cc y gcc sobre musl choca con el builtin y el probe FALLA.
Entonces cairo-ps-surface.c:105 (`#ifndef HAVE_CTIME_R`) define un fallback static que colisiona con
<time.h> (presente por _GNU_SOURCE) ⇒ error duro. musl SIEMPRE provee ctime_r; forzamos el define.
(2) util/meson.build — cairo-trace: sus ejecutables no linkean libpixman-1.a bajo la estrategia
`no_fallback` de zig-cc; nada aguas abajo pide cairo-trace ⇒ se salta entero.
(3) util/cairo-script/meson.build — el subdir cairo-script SÍ se construye (la librería libcairoscript
y su `cairo-script-interpreter.pc` las piden los demos GTK), pero los EJECUTABLES csi-* fallan el mismo
link de pixman ⇒ se envuelven en `if false`. Así queda la .pc sin los exe.
diff -Naur a/meson.build b/meson.build
--- a/meson.build
+++ b/meson.build
@@ -708,4 +708,9 @@
endif
endforeach
+# hammer: has_function('ctime_r') sin prefix falla bajo zig/gcc+musl (prototipo desnudo choca
+# con el builtin); musl SIEMPRE provee ctime_r => forzar y evitar el fallback static de
+# cairo-ps-surface.c:105 que colisiona con la declaracion no-static de <time.h>.
+conf.set('HAVE_CTIME_R', 1)
+
conf.set('HAVE_STRNDUP', cc.has_function('strndup', prefix : '#include <string.h>'))
diff -Naur a/util/meson.build b/util/meson.build
--- a/util/meson.build
+++ b/util/meson.build
@@ -13,4 +13,4 @@
endif
-if conf.get('CAIRO_HAS_TRACE', 0) == 1
+if false # hammer: saltar cairo-trace (sus exe no linkean pixman bajo zig; nada pide su .pc)
subdir('cairo-trace')
diff -Naur a/util/cairo-script/meson.build b/util/cairo-script/meson.build
--- a/util/cairo-script/meson.build
+++ b/util/cairo-script/meson.build
@@ -48,3 +48,6 @@
meson.override_dependency('cairo-script-interpreter', libcairoscript_dep)
+# hammer: los ejecutables csi-* no linkean libpixman-1.a bajo zig no_fallback; la libreria
+# libcairoscript y su cairo-script-interpreter.pc SI (los demos GTK las piden). Saltar solo los exe.
+if false
csi_replay_exe = executable('csi-replay', csi_replay_sources,
@@ -64,4 +64,5 @@
)
endif
+endif
install_headers(cairoscript_interpreter_headers, subdir: 'cairo')
</content>
@@ -1,37 +0,0 @@
# cairo-shared 1.18.4 — variante DINÁMICA de cairo (libcairo.so.2 + libcairo-gobject.so, PIC) para la
# isla GNOME. El canónico (recipes/cairo.toml) es --prefer-static/default_library=static: su cairo.a
# arrastra fontconfig/freetype/pixman/expat como cadena ESTÁTICA que el linker de un consumidor DINÁMICO
# (gjs/pango, sin --prefer-static) no resuelve ⇒ 'undefined symbol: XML_GetCurrentLineNumber' (gjs) y el
# test cairo-ft de pango falla ("FontConfig support"). Con la .so, el consumidor linkea -lcairo y la
# cadena resuelve por NEEDED (libfontconfig.so→libexpat embebido, libfreetype.so→libpng/zlib.so).
#
# Sufijo -shared (NO sombrea recipes/cairo.toml): sólo lo consumen las recetas que lo declaran EXPLÍCITO.
# Deps al cierre -shared (freetype/fontconfig/libpng/zlib) para NEEDED coherentes; pixman canónico ya es
# dinámico (default_library=both); glib = la isla (libcairo-gobject NEEDED libgobject.so isla, sin doble
# estado). expat canónico (--with-pic ⇒ se embebe). Ver [[gnome-introspection-dinamica]].
name = "cairo-shared"
version = "1.18.4"
license = "LGPL-2.1-only OR MPL-1.1"
# Release ESTABLE de cairographics.org (hash fijo). El canónico usa el archive de GitLab, que NO es
# determinista (recomprime al vuelo: cada fetch da otro sha256 ⇒ imposible de pinnear). El release
# strippea boilerplate/ (sólo tests) ⇒ el configure sed-ea `subdir('boilerplate')`. + patch HAVE_CTIME_R.
[source]
tarball = "https://cairographics.org/releases/cairo-1.18.4.tar.xz"
sha256 = "445ed8208a6e4823de1226a74ca319d3600e83f6369f99b14265006599c32ccb"
patches = ["cairo-ctime-r.patch"]
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
# default_library=both (no static, sin --prefer-static): produce libcairo.so.2 (+ .a). png/freetype/
# fontconfig/glib enabled = misma superficie que el canónico. xlib/xcb off (Wayland-only).
configure = "sed -i \"/subdir('boilerplate')/d\" meson.build; PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Ddefault_library=both -Dc_args=-Wno-error=date-time -Dtests=disabled -Dxlib=disabled -Dxcb=disabled -Dquartz=disabled -Dtee=disabled -Dsymbol-lookup=disabled -Dspectre=disabled -Dgtk_doc=false -Dpng=enabled -Dfreetype=enabled -Dfontconfig=enabled -Dglib=enabled"
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", "pixman", "freetype-shared", "fontconfig-shared", "libpng-shared", "zlib-shared", "glib", "expat", "libffi", "pcre2"]
@@ -1,24 +0,0 @@
# cbindgen — genera headers C/C++ desde código Rust. Herramienta de BUILD de mozjs (el build de
# SpiderMonkey invoca cbindgen para los bindings de sus crates Rust). Binario Rust; el lab lo detecta
# como BuildSys::Cargo (hay Cargo.toml + Cargo.lock en el tarball de GitHub) y hace `cargo vendor` en el
# fetch + `cargo build --release --locked --offline` en el sandbox. Sin sys-crates C ⇒ no necesita el
# wrapper de AR (ver cargo-recipe-ar-wrapper). Firefox 128 pide cbindgen >= 0.26; 0.27 cumple.
name = "cbindgen"
version = "0.27.0"
license = "MPL-2.0"
[source]
tarball = "https://github.com/mozilla/cbindgen/archive/refs/tags/0.27.0.tar.gz"
sha256 = "dd813d37325d21cd6be807be4f902a5ef130567cb4da17ea743206a3ebeb6303"
strip_components = 1
[build]
compiler = "gcc" # convención de las CLIs Rust: gcc = toolchain del link zig-cc
target = "x86_64-linux-musl"
link = "static"
# cbindgen expone lib + bin homónimos ⇒ `cargo rustc -- <crt-static/reloc>` es ambiguo ("extra
# arguments to rustc can only be passed to one target"). --bin cbindgen fija el target del bin final.
flags = ["--bin", "cbindgen"]
[deps]
build = []
@@ -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"]
@@ -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,29 +0,0 @@
# gdk-pixbuf 2.44.6 — VARIANTE ISLA DINÁMICA (SHADOW de recipes/gdk-pixbuf.toml estática).
# Carga/escala de imágenes (loader de GTK4). gtk4 declara GdkPixbuf-2.0 en su introspección ⇒ el scan
# de gtk4 debe resolver GdkPixbuf-2.0.typelib + libgdk_pixbuf-2.0.so. Ver [[gnome-introspection-dinamica]].
#
# vs corpus: link=dynamic, default_library=both, introspection=ENABLED, SIN --prefer-static.
# Mantengo el resto de flags de la corpus (leaf PNG-only, -Dgio_sniffing=false esquiva shared-mime-info).
name = "gdk-pixbuf"
version = "2.44.6"
license = "LGPL-2.1-or-later"
[source]
tarball = "https://download.gnome.org/sources/gdk-pixbuf/2.44/gdk-pixbuf-2.44.6.tar.xz"
sha256 = "140c2d0b899fcf853ee92b26373c9dc228dbcde0820a4246693f4328a27466fa"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Ddefault_library=both -Dpng=enabled -Djpeg=disabled -Dtiff=disabled -Dothers=disabled -Dglycin=disabled -Dbuiltin_loaders=png -Dgio_sniffing=false -Dman=false -Dintrospection=enabled -Dtests=false -Dinstalled_tests=false -Dgtk_doc=false -Dc_args=-Wno-error=date-time"
compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
# glib(isla) + glib-introspected (GObject-2.0.gir) + gobject-introspection (tools) + libpng (loader PNG).
[deps]
# libpng-shared/zlib-shared: gdk-pixbuf.so (dinámica) linkea libpng por NEEDED (no 'undefined inflate':
# el libpng.a estático arrastraba zlib sin resolver). El resto = cierre .pc del corpus.
build = ["meson", "samurai", "python3", "py3-setuptools", "pkgconf", "glib", "glib-introspected", "gobject-introspection", "libpng-shared", "libffi", "pcre2", "zlib-shared"]
@@ -1,30 +0,0 @@
# gi-foreign-girs — instala los .gir FORÁNEOS estáticos que gobject-introspection trae hand-written en
# su source `gir/` (cairo-1.0, freetype2-2.0, fontconfig-2.0, xft/xlib/…). Nuestro g-i se construye con
# -Dbuild_introspection_data=false (evita el SIGSEGV de g-ir-compiler en los typelibs X11/cairo) ⇒ NO
# instala NINGÚN .gir. Pero las islas GUI los referencian por --include al escanear: harfbuzz→freetype2-2.0,
# pango/gjs→cairo-1.0, etc. El g-ir-scanner sólo necesita el .gir (XML) presente en /usr/share/gir-1.0
# para resolver el --include (no compila typelib) ⇒ copiarlos basta, SIN re-hashear g-i (sin cascada).
# Ver [[gnome-introspection-dinamica]].
name = "gi-foreign-girs"
version = "1.84.0"
[source]
tarball = "https://download.gnome.org/sources/gobject-introspection/1.84/gobject-introspection-1.84.0.tar.xz"
sha256 = "945b57da7ec262e5c266b89e091d14be800cc424277d82a02872b7d794a84779"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
# Sin compilar: sólo copia los .gir estáticos del source a /usr/share/gir-1.0.
configure = "true"
compile = "true"
# cairo-1.0.gir NO está en gir/ como .gir sino como .gir.in (g-i lo genera con configure_file
# sustituyendo @CAIRO_GIR_PACKAGE@=cairo-gobject y @CAIRO_SHARED_LIBRARY@=libcairo-gobject.so.2).
# Reproduzco la sustitución con sed (pango/PangoCairo lo referencian por --include=cairo-1.0).
install = "mkdir -p /out/usr/share/gir-1.0 && cp gir/*.gir /out/usr/share/gir-1.0/ && sed -e 's/@CAIRO_GIR_PACKAGE@/cairo-gobject/g' -e 's/@CAIRO_SHARED_LIBRARY@/libcairo-gobject.so.2/g' gir/cairo-1.0.gir.in > /out/usr/share/gir-1.0/cairo-1.0.gir && ls /out/usr/share/gir-1.0/"
[deps]
build = []
-50
View File
@@ -1,50 +0,0 @@
# gjs 1.84.2 — los bindings JavaScript de GNOME (GNOME 48). gnome-shell cuelga de gjs, y gjs cuelga de
# spidermonkey (mozjs-128), que YA está sellado en este repo (recipes/incoming-gnome/spidermonkey.toml,
# provee mozjs-128.pc). gjs 1.84 requiere mozjs 128 ✓ — coincide con el spidermonkey sellado.
#
# ⚠ PRIMER BORRADOR feature-minimal — NO garantiza sellar a la primera. Notas de diseño:
# · Build = meson (idioma GNOME, auto-detectado por el lab; calcado de gtk4/glib/libadwaita).
# · compiler = zig-cc (como todo el stack meson GNOME del corpus). gjs es cpp+c; zig lo cubre.
# · link = DYNAMIC (NO static como gtk4/glib): spidermonkey sólo provee libmozjs-128.so (shared-js);
# no hay .a de mozjs contra la que enlazar estáticamente, así que gjs enlaza la .so ⇒ dynamic.
# · Feature-minimal: sin instalar tests, sin profiler (evita la dep sysprof-capture), tests de
# DBus/GTK saltados, sin x11 (gjs no tiene backend x11 propio; cairo-xlib es `required: false`).
# readline SÍ (la receta readline existe y da la shell interactiva/depurador).
name = "gjs"
version = "1.84.2"
license = "MIT AND LGPL-2.0-or-later"
[source]
tarball = "https://download.gnome.org/sources/gjs/1.84/gjs-1.84.2.tar.xz"
sha256 = "35142edf345705636300291ec3a7d583f14969ff3fae0ff30f4a95b1e6740166"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
# -Dbsymbolic_functions=false: el linker zig/lld NO soporta -Bsymbolic-functions (meson.build:89 aborta).
# BLOQUEADO en el link por cairo: cairo es dep OBLIGATORIA (no hay -Dcairo) y el cairo estático arrastra
# fontconfig.a→expat, freetype→png/z, pixman ⇒ 'undefined symbol: XML_GetCurrentLineNumber'. cpp_link_args
# global rompe el sanity-check de meson. Fix real = cairo isla DINÁMICA (cierre C #7): entonces gjs linkea
# libcairo.so con NEEDED libfontconfig.so y la cadena resuelve al cargar. Ver [[gnome-introspection-dinamica]].
# sed: gjs incluye INCONDICIONALMENTE el subproyecto gobject-introspection-tests (Regress/WarnLib,
# con 'cairo=true') + subdirs installed-tests/test. Sus g-ir-scanner piden cairo-1.0.gir, que nuestro
# g-i (cairo=disabled) no instala ⇒ "Couldn't find include 'cairo-1.0.gir'". Son SÓLO fixtures de test;
# los removemos (gi_tests no se usa fuera del bloque). Deja la libgjs + GjsPrivate typelib, que es el hito.
configure = "sed -i \"/gi_tests = subproject('gobject-introspection-tests'/,/install_dir=@0@/d; /subdir('installed-tests')/d; /subdir('test')/d\" meson.build; PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Dbsymbolic_functions=false -Dinstalled_tests=false -Dprofiler=disabled -Dskip_dbus_tests=true -Dskip_gtk_tests=true -Dreadline=disabled -Dc_args=-Wno-error=date-time"
compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
[deps]
# spidermonkey → mozjs-128.pc (sellado); glib → glib-2.0/gobject-2.0/gio-2.0/gthread-2.0; cairo →
# cairo + cairo-gobject; libffi, readline, pkgconf existen en el corpus. meson/samurai/python3 = tooling.
# gobject-introspection: g-ir-scanner ⇒ typelib GjsPrivate + gobject-introspection-1.0.pc en link.
# glib-introspected: gjs escanea GjsPrivate, que referencia GObject/GLib ⇒ el scan necesita los .gir
# CORE (GObject-2.0.gir/GLib-2.0.gir) que SÓLO produce glib-introspected. hammer hidrata deps DIRECTAS,
# no transitivas de g-i ⇒ hay que declararla aquí (misma lección del keystone [[gnome-introspection-dinamica]]).
# cairo-shared (+ su cierre -shared) = cairo DINÁMICO: gjs linkea libcairo.so y la cadena resuelve por
# NEEDED (no undefined XML_GetCurrentLineNumber). glib-2.0.pc → libpcre2-8 (pcre2 canónico da el .pc).
# pixman canónico ya es dinámico. expat canónico (--with-pic, embebido en el cierre).
build = ["spidermonkey", "nspr", "glib", "glib-introspected", "cairo-shared", "freetype-shared", "fontconfig-shared", "pixman", "libpng-shared", "zlib-shared", "expat", "libffi", "readline", "ncurses", "gobject-introspection", "meson", "samurai", "python3", "py3-setuptools", "pkgconf", "pcre2"]
@@ -1,28 +0,0 @@
# glib 2.88.1 — GATE TEST de la isla: glib con introspection=ENABLED (produce GLib/GObject/Gio.typelib
# usando g-ir-scanner+compiler sobre GLib misma). Es el test definitivo del keystone: si sella,
# g-ir-compiler sirve para los typelibs CORE bajo musl (el SIGSEGV era sólo los .gir X11); si revienta,
# el tool está roto. Rompe el ciclo glib↔g-i: deps la g-i YA sellada (que usa la glib-stage1 sin
# introspección, también sellada) ⇒ glib-introspected → g-i → glib(stage1), sin ciclo.
# Ver [[gnome-introspection-dinamica]].
name = "glib-introspected"
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"
[build.phases]
configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Ddefault_library=both -Dtests=false -Dnls=disabled -Dlibmount=disabled -Dselinux=disabled -Dman-pages=disabled -Dintrospection=enabled -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"
# glib (stage1, sin introspección) hidrata libglib-2.0.so.0 para que g-ir-scanner (que _giscanner.so
# dlopea) CORRA al configure. hammer hidrata deps DIRECTAS, no transitivas de g-i ⇒ hay que declararla.
[deps]
build = ["meson", "samurai", "python3", "py3-setuptools", "pkgconf", "gobject-introspection", "glib", "libffi", "pcre2", "zlib"]
-44
View File
@@ -1,44 +0,0 @@
# glib 2.88.1 — VARIANTE DINÁMICA de la ISLA GNOME (SHADOW de recipes/glib.toml estática).
#
# Por qué existe: el shell de GNOME (gjs/gnome-shell) usa GObject-introspection en RUNTIME — un
# typelib mapea cada tipo a una biblioteca COMPARTIDA que gjs `dlopen`ea. g-ir-scanner exige lo mismo
# al BUILDear: `can't resolve libraries to shared libraries: glib-2.0` si glib es sólo `.a`. Ergo la
# isla GNOME necesita glib como `.so` real (libglib/gobject/gio/gmodule-2.0.so.0 con SONAME).
#
# Por qué NO tocar recipes/glib.toml: la estática la consume el árbol entero (KDE, corpus). Cambiarla
# re-hashearía cientos de sellados. En su lugar esta variante vive en la cola GNOME y, por el orden
# del resolver (hermano incoming-gnome/ → padre recipes/), SOMBREA la corpus SÓLO para las recetas
# GNOME; el resto del árbol sigue con la estática. Ver [[gnome-introspection-dinamica]].
#
# Deps internas (libffi/pcre2/zlib) estáticas: el .so las embebe (self-contained para ésas).
# Runtime: el rootfs de la imagen GNOME necesitará el loader musl (ld-musl-x86_64.so.1) — paso de
# ensamblado de imagen, no del build (el sandbox ya lo tiene).
#
# default_library=BOTH (no shared): la isla necesita AMBOS. El `.so` (con SONAME) es lo que
# g-ir-scanner resuelve para la introspección y lo que gjs dlopea en runtime; el `.a` es para el
# link ESTÁTICO INTERNO de los consumidores (el propio g-i compila binarios que hacen `-static
# -lglib-2.0` — sin el `.a` zig falla "unable to find static system library glib-2.0"). Con ambos,
# el consumidor estático encuentra el `.a` y el scanner encuentra el `.so`.
name = "glib"
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"
[build.phases]
# default_library=both ⇒ libglib-2.0.{a,so.0} &co. introspection=disabled a propósito: los typelibs
# de GLib/GObject los produce gobject-introspection escaneando este .so (externo), no glib a sí misma
# (evita el ciclo glib↔g-i en el bootstrap).
configure = "PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Ddefault_library=both -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", "zlib"]
@@ -1,47 +0,0 @@
# gobject-introspection 1.84.0 — el escáner de metadata de GNOME (g-ir-scanner + typelibs).
# Es dep de casi toda lib GNOME (gtk4/libadwaita/etc. lo declaran cuando -Dintrospection=enabled).
# meson static, backend feature-minimal: doctool/gtk_doc/tests off, PERO build_introspection_data=true
# (los .gir/.typelib SON su razón de ser).
#
# BORRADOR PARA EL MAPA — dificultad conocida: g-ir-scanner NO es puro metadata. Para cada lib
# COMPILA y EJECUTA un pequeño binario "dumper" enlazado contra el target para volcar los GTypes en
# runtime. En un lab cross/hermetico static-musl esto es el palo largo del stack GNOME:
# 1) ejecutar un binario del target dentro del sandbox (aquí target==host x86_64-linux-musl, así que
# NO hay emulación — a favor nuestro; el escenario cross real necesitaría qemu/exe_wrapper).
# 2) el dumper enlaza estático contra glib+libffi; el scanner invoca al compilador (CC/zig-cc) y al
# linker en runtime ⇒ necesita el toolchain + el cierre .pc COMPLETO visible en PKG_CONFIG_PATH.
# 3) suele pelear con -static / musl (símbolos de introspección, gi-dump). PROBABLEMENTE NO selle a
# la primera — dejar como frontera medida, no como sellado asumido.
name = "gobject-introspection"
version = "1.84.0"
license = "LGPL-2.0-or-later AND GPL-2.0-or-later"
[source]
tarball = "https://download.gnome.org/sources/gobject-introspection/1.84/gobject-introspection-1.84.0.tar.xz"
sha256 = "945b57da7ec262e5c266b89e091d14be800cc424277d82a02872b7d794a84779"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
# ISLA DINÁMICA: g-i es parte de la isla GNOME y linkea la glib dinámica. link=dynamic para que sus
# binarios internos (g-ir-compiler, dumper) tomen libglib-2.0.so CONSISTENTEMENTE — no mezclar el .a
# (estático) con la glib que ya trae libgirepository-2.0.so (dinámica): esa mezcla da DOS copias del
# estado de GType ⇒ g-ir-compiler SIGSEGV. Ver [[gnome-introspection-dinamica]].
link = "dynamic"
[build.phases]
# build_introspection_data=FALSE: g-i 1.84 sólo genera aquí los typelibs EXTERNOS de X11/cairo
# (cairo/xlib/xft/xrandr/xfixes/win32) — que NO queremos (Wayland-only) y sobre los que g-ir-compiler
# hace SIGSEGV bajo musl. Los typelibs CORE (GLib/GObject/Gio) los produce glib (absorbió girepository).
# g-i aquí = las TOOLS (g-ir-scanner/compiler) que usan gtk4 &co. default_library=both (isla dinámica).
configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Ddefault_library=both -Ddoctool=disabled -Dgtk_doc=false -Dtests=false -Dbuild_introspection_data=false -Dcairo=disabled -Dc_args=-Wno-error=date-time"
compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
[deps]
# glib + su cierre .pc estático (pkgconf resuelve Requires.private: pcre2, zlib, libffi).
# flex/bison: el parser de anotaciones del scanner. libffi: además lo enlaza el dumper.
# py3-setuptools: meson.build:29 exige `python3 (setuptools)` importable (instala giscanner como
# paquete python) — el python3 del rootfs NO trae setuptools; se lo damos como módulo sellado.
build = ["meson", "samurai", "python3", "py3-setuptools", "pkgconf", "flex", "bison", "glib", "libffi", "pcre2", "zlib"]
# FRONTERA: cairo omitida a propósito (-Dcairo=disabled) — feature-minimal, evita el typelib Cairo-1.0.
@@ -1,34 +0,0 @@
# graphene 1.10.8 — VARIANTE ISLA DINÁMICA (SHADOW de recipes/graphene.toml estática).
# Tipos/álgebra de vectores y matrices (GTK4/GSK). La isla GNOME la necesita como .so real CON
# typelib: gtk4 declara Graphene-1.0 en su introspección (Gsk expone tipos graphene) ⇒ el scan de
# gtk4 tiene que resolver Graphene-1.0.typelib + libgraphene-1.0.so. Ver [[gnome-introspection-dinamica]].
#
# vs corpus: link=dynamic (no static), default_library=both (.a p/ consumidores estáticos internos +
# .so p/ el scanner/gjs), introspection=ENABLED (produce el typelib). SIN --prefer-static (queremos el
# .so). Sombrea la corpus SÓLO para la cola GNOME (resolver hermano→padre); el resto del árbol sigue
# con la estática.
name = "graphene"
version = "1.10.8"
license = "MIT"
[source]
tarball = "https://download.gnome.org/sources/graphene/1.10/graphene-1.10.8.tar.xz"
sha256 = "a37bb0e78a419dcbeaa9c7027bcff52f5ec2367c25ec859da31dfde2928f279a"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Ddefault_library=both -Dtests=false -Dinstalled_tests=false -Dgtk_doc=false -Dintrospection=enabled"
compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
# glib(isla dinámica) + glib-introspected (GObject-2.0.gir que referencia el typelib) +
# gobject-introspection (g-ir-scanner/compiler). Graphene-1.0 referencia GObject ⇒ necesita el .gir CORE.
# py3-setuptools: g-ir-scanner (giscanner/utils.py) hace `import distutils`, que Python 3.12 ya NO trae;
# py3-setuptools instala el shim de setuptools + el .pth que lo activa. Sin él: ModuleNotFoundError:
# distutils al generar el .gir (mismo requisito que los keystones glib-introspected/g-i).
[deps]
build = ["meson", "samurai", "python3", "py3-setuptools", "pkgconf", "glib", "glib-introspected", "gobject-introspection", "libffi", "pcre2", "zlib"]
-43
View File
@@ -1,43 +0,0 @@
# gtk4 4.18.6 — VARIANTE ISLA DINÁMICA (SHADOW de recipes/gtk4.toml estática).
# El toolkit. gnome-shell/mutter lo usan y su JS (gjs) dlopea Gtk-4.0/Gdk-4.0/Gsk-4.0.typelib en runtime
# ⇒ gtk4 DEBE producir esos typelibs + libgtk-4.so real. Es la receta más dura de onda 2: introspection
# arrastra el cierre transitivo entero (wayland/libdrm/mesa/libepoxy). Ver [[gnome-introspection-dinamica]].
#
# vs corpus (mundo estático), REVERTIDO:
# · SIN el sed `libgtk_dep→libgtk_static_dep`: en la isla las tools linkean libgtk-4.so (natural).
# · SIN el fat-archive de install: era un hack para que `-static -lgtk-4` linkeara; los consumidores de
# la isla (mutter/gnome-shell) toman la .so. meson instala libgtk-4.so directo.
# · link=dynamic, default_library=both, introspection=ENABLED, SIN --prefer-static.
# · deps pango/gdk-pixbuf/graphene resuelven a las ISLAS (shadow) ⇒ sus typelibs+.so visibles al scan.
#
# ⚠ ITERATIVA: el scanner construye un dumper que linkea libgtk-4.so + todo su cierre. Las libs C del
# corpus (cairo/harfbuzz/wayland/libdrm/mesa/libepoxy) siguen ESTÁTICAS embebidas — si el scan falla por
# símbolo/estado duplicado, escalar la lib culpable a su propia isla. Esperar walls en el worker.
name = "gtk4"
version = "4.18.6"
license = "LGPL-2.1-or-later"
[source]
tarball = "https://download.gnome.org/sources/gtk/4.18/gtk-4.18.6.tar.xz"
sha256 = "e1817c650ddc3261f9a8345b3b22a26a5d80af154630dedc03cc7becefffd0fa"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Ddefault_library=both -Dwayland-backend=true -Dx11-backend=false -Dbroadway-backend=false -Dwin32-backend=false -Dmacos-backend=false -Dvulkan=disabled -Dintrospection=enabled -Dbuild-demos=false -Dbuild-testsuite=false -Dbuild-tests=false -Dbuild-examples=false -Dmedia-gstreamer=disabled -Dprint-cups=disabled -Dprint-cpdb=disabled -Dcloudproviders=disabled -Dsysprof=disabled -Dtracker=disabled -Dcolord=disabled -Df16c=disabled -Ddocumentation=false -Dman-pages=false -Dc_args=-Wno-error=date-time"
compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
# glib-introspected + gobject-introspection = la maquinaria de typelibs. pango/gdk-pixbuf/graphene =
# ISLAS (shadow) con sus typelibs. El resto = cierre C estático del corpus (wayland/mesa/libdrm/etc.).
[deps]
# Cierre C DINÁMICO (-shared) + gi-foreign-girs (cairo-1.0/etc.): mismo patrón que gjs/pango. pango/
# gdk-pixbuf/graphene/harfbuzz resuelven a las ISLAS (shadow). wayland/mesa/libdrm/libepoxy/libjpeg/
# libtiff quedan corpus (se embeben si son PIC; si no, el worker pide su -shared).
# libtiff-shared/libjpeg-turbo-shared: gtk4 EXIGE libtiff-4/libjpeg (loaders gdktiff/gdkjpeg, sin
# required:false ⇒ no se pueden quitar). El .a estático arrastra zlib no resuelto ('undefined inflate')
# ⇒ variantes .so (NEEDED libz.so/libjpeg.so). libtiff-shared autorado; libjpeg-turbo-shared de KDE.
build = ["meson", "samurai", "python3", "py3-setuptools", "pkgconf", "gi-foreign-girs", "glib", "glib-introspected", "gobject-introspection", "cairo-shared", "pango", "gdk-pixbuf", "graphene", "libepoxy", "wayland", "wayland-protocols", "libxkbcommon", "libdrm", "fontconfig-shared", "harfbuzz", "fribidi", "libpng-shared", "pixman", "freetype-shared", "expat", "libffi", "pcre2", "zlib-shared", "libtiff-shared", "libjpeg-turbo-shared", "mesa"]
@@ -1,30 +0,0 @@
# harfbuzz 14.2.1 — VARIANTE ISLA DINÁMICA (SHADOW de recipes/harfbuzz.toml estática).
# Shaping de texto (lo usa pango). Pango-1.0 referencia HarfBuzz-0.0 en su introspección ⇒ el
# g-ir-scanner de pango pide HarfBuzz-0.0.gir, que sólo produce harfbuzz con gobject+introspection.
# El corpus lo tiene disabled ⇒ esta variante lo habilita. Ver [[gnome-introspection-dinamica]].
#
# vs corpus: link=dynamic, default_library=both, -Dgobject=enabled -Dintrospection=enabled (produce
# HarfBuzz-0.0.gir/typelib + libharfbuzz.so/libharfbuzz-gobject.so). freetype-shared (el .so, para NEEDED
# coherente). Sombrea el corpus SÓLO para la cola GNOME.
name = "harfbuzz"
version = "14.2.1"
license = "MIT"
[source]
tarball = "https://github.com/harfbuzz/harfbuzz/releases/download/14.2.1/harfbuzz-14.2.1.tar.xz"
sha256 = "a54a5d8e9380a41fbb762ce367bcbf7704792dfca0d93f1bbca86c5a57902e0e"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Ddefault_library=both -Dglib=enabled -Dgobject=enabled -Dcairo=disabled -Dicu=disabled -Dgraphite=disabled -Dfreetype=enabled -Dtests=disabled -Ddocs=disabled -Dintrospection=enabled -Dutilities=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"
# glib(isla) + glib-introspected + gobject-introspection + py3-setuptools = maquinaria de typelibs.
# freetype-shared (.so) + su cierre libpng-shared/zlib-shared. pcre2/libffi = cierre .pc de glib.
[deps]
build = ["meson", "samurai", "python3", "py3-setuptools", "pkgconf", "gi-foreign-girs", "glib", "glib-introspected", "gobject-introspection", "freetype-shared", "libpng-shared", "zlib-shared", "pcre2", "libffi"]
@@ -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"]
@@ -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"]
@@ -1,27 +0,0 @@
# libtiff-shared 4.7.0 — variante DINÁMICA (libtiff.so, NEEDED libz.so/libjpeg.so) para la isla GNOME.
# gtk4 EXIGE libtiff-4 (meson.build:450, sin required:false ⇒ no se puede quitar). El canónico es
# BUILD_SHARED_LIBS=OFF: su libtiff.a arrastra zlib/jpeg como cadena estática que gtk4 (dinámico) no
# resuelve ('undefined inflate'). La .so lo resuelve por NEEDED. Ver [[gnome-introspection-dinamica]].
name = "libtiff-shared"
version = "4.7.0"
license = "libtiff"
[source]
tarball = "https://download.osgeo.org/libtiff/tiff-4.7.0.tar.gz"
sha256 = "67160e3457365ab96c5b3286a0903aa6e78bdc44c4bc737d2e486bcecb6ba976"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
# --undefined-version: el version-script de libtiff.so nombra símbolos Windows-only (TIFFOpenWExt) que
# en musl no se compilan; lld lo trata como error salvo con este flag (lo hace laxo, estándar en cross).
configure = "cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DCMAKE_SHARED_LINKER_FLAGS=-Wl,--undefined-version -Dtiff-tools=OFF -Dtiff-tests=OFF -Dtiff-contrib=OFF -Dtiff-docs=OFF -Dzlib=ON -Djpeg=ON -Dlzma=OFF -Dzstd=OFF -Dwebp=OFF -Djbig=OFF -Dlerc=OFF -Dlibdeflate=OFF -Dcxx=OFF"
compile = "cmake --build build --target tiff"
install = "DESTDIR=/out cmake --install build"
# zlib-shared/libjpeg-turbo-shared: la .so de tiff los enlaza por NEEDED (libz.so/libjpeg.so).
[deps]
build = ["cmake", "zlib-shared", "libjpeg-turbo-shared"]
-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"]
-25
View File
@@ -1,25 +0,0 @@
# nspr — Netscape Portable Runtime. Dep dura de mozjs/spidermonkey (hilos, IO, atómicos portables).
# Build autotools clásico. El tarball extrae a nspr-4.36/nspr/configure ⇒ con strip_components=1 queda
# `nspr/`, así que las fases entran a ese subdir. Alternativa si molesta: mozjs puede construir su nspr
# in-tree (--enable-nspr-build); acá lo hacemos aparte porque NSS y otros también lo van a querer.
name = "nspr"
version = "4.36"
license = "MPL-2.0"
[source]
tarball = "https://ftp.mozilla.org/pub/nspr/releases/v4.36/src/nspr-4.36.tar.gz"
sha256 = "55dec317f1401cd2e5dba844d340b930ab7547f818179a4002bce62e6f1c6895"
strip_components = 1
[build]
compiler = "gcc" # C plano con gcc-ismos en el configure; sigue el patrón de linux-pam
target = "x86_64-linux-musl"
link = "dynamic" # mozjs detecta libnspr4.so vía nspr-config/pkg-config
[build.phases]
configure = "cd nspr && ./configure --build=$CBUILD --host=$CHOST --prefix=/usr --libdir=/usr/lib --enable-optimize --disable-debug --enable-64bit"
compile = "cd nspr && make -j\"$(nproc)\""
install = "cd nspr && make DESTDIR=/out install"
[deps]
build = ["make"]
-35
View File
@@ -1,35 +0,0 @@
# pango 1.57.1 — VARIANTE ISLA DINÁMICA (SHADOW de recipes/pango.toml estática).
# Layout/render de texto i18n (base de GTK4). gtk4 declara Pango-1.0 en su introspección ⇒ el scan de
# gtk4 debe resolver Pango-1.0.typelib + libpango-1.0.so. Ver [[gnome-introspection-dinamica]].
#
# vs corpus: link=dynamic, default_library=both, introspection=ENABLED, SIN --prefer-static.
#
# ALCANCE (deuda declarada): sus sub-deps (cairo/harfbuzz/fribidi/freetype/fontconfig/pixman/libpng/
# expat) siguen siendo corpus ESTÁTICAS — se embeben en libpango-1.0.so vía default_library=both. Riesgo
# a medir en el worker: si dos .so de la isla embeben la MISMA lib estática (p.ej. cairo en libpango Y en
# libgtk-4), hay doble estado en runtime (misma clase de bug que el SIGSEGV de glib). Si aparece, se
# escala cairo/etc. a su propia isla dinámica. NO persigo el cierre dinámico transitivo completo a ciegas.
name = "pango"
version = "1.57.1"
license = "LGPL-2.0-or-later"
[source]
tarball = "https://download.gnome.org/sources/pango/1.57/pango-1.57.1.tar.xz"
sha256 = "e65d6d117080dc3aeeb7d8b4b3b518f7383aa2e6cfce23117c623cd624764c2f"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Ddefault_library=both -Dc_args=-Wno-error=date-time -Dintrospection=enabled -Dgtk_doc=false -Dbuild-testsuite=false -Dbuild-examples=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"
# glib(isla) + glib-introspected (GObject-2.0.gir) + gobject-introspection (tools). El resto = cierre .pc
# estático del corpus (cairo/harfbuzz/fribidi/freetype/fontconfig/pixman/libpng/expat).
[deps]
# Cierre C DINÁMICO (-shared): pango linkea libcairo.so/libfontconfig.so/… y la cadena resuelve por
# NEEDED (el test cairo-ft de meson deja de fallar 'FontConfig support'). pixman canónico ya es dinámico.
build = ["meson", "samurai", "python3", "py3-setuptools", "pkgconf", "gi-foreign-girs", "glib", "glib-introspected", "gobject-introspection", "cairo-shared", "harfbuzz", "fribidi", "freetype-shared", "fontconfig-shared", "pixman", "libpng-shared", "expat", "libffi", "pcre2", "zlib-shared"]
@@ -1,37 +0,0 @@
# py3-setuptools 75.8.2 — setuptools como MÓDULO importable de python3, para las recetas cuyo
# meson.build exige `python3 (setuptools)` (gobject-introspection:29, y todo el stack GUI-python
# que instala giscanner/entry-points). Python PURO: no se compila, se COPIA a site-packages.
#
# Mismo patrón que meson.toml: hammer evita el camino wheel/pip/gpep517 de Alpine (recetas que no
# tiene); la fuente ES el árbol Python sellado y se instala copiando los paquetes tal cual. Hermético
# (sin pip ni red). El `.pth` de precedencia de distutils replica lo que hace `pip install setuptools`
# para que `_distutils_hack` se active y setuptools gane sobre el distutils del stdlib.
name = "py3-setuptools"
version = "75.8.2"
license = "MIT"
[source]
tarball = "https://files.pythonhosted.org/packages/source/s/setuptools/setuptools-75.8.2.tar.gz"
sha256 = "4880473a969e5f23f2a2be3646b2dfd84af9028716d398e46192f84bc36900d2"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "static"
[build.phases]
# Python puro: nada que compilar.
compile = "true"
install = '''
set -e
SP=/out/usr/lib/python3.12/site-packages
mkdir -p "$SP"
cp -r setuptools pkg_resources _distutils_hack "$SP/"
# Replica el distutils-precedence.pth de pip: activa el shim que da precedencia a setuptools.
printf '%s\n' "import os; var = 'SETUPTOOLS_USE_DISTUTILS'; enabled = os.environ.get(var, 'local') == 'local'; enabled and __import__('_distutils_hack').add_shim();" \
> "$SP/distutils-precedence.pth"
'''
# python3 es dep de RUNTIME (lo importa quien use setuptools como build-dep).
[deps]
runtime = ["python3"]
@@ -1,48 +0,0 @@
# spidermonkey (mozjs 128 ESR) — el motor JavaScript de Mozilla. KEYSTONE del frente GNOME: gjs cuelga
# de él, y gnome-shell cuelga de gjs. Es de lo más DIFÍCIL que hay en cualquier distro.
#
# ⚠ PRIMER BORRADOR — NO va a sellar a la primera. mozjs sobre musl nunca compila de un saque; el
# sistema de build de Mozilla (mach/configure) NO es uno de los auto-detectados por el lab, así que las
# fases van A MANO y hay que ITERARLAS EN EL WORKER (ccx33 o mayor: el compile C++ come ~8GB+ y quiere
# swap; ccx23 va justo). Anclado al APKBUILD de mozjs128 de Alpine (misma libc musl). Decisiones:
# · Fuente = tarball del SOURCE de Firefox 128.14.0esr (mozjs se construye desde js/src de ese árbol).
# · clang (el rootfs trae LLVM 22); mozjs prefiere clang fuerte a gcc.
# · icu IN-TREE (--without-system-icu): evita casar versiones de un icu del sistema (una dep menos).
# · nspr y zlib del sistema (recetas nspr + zlib del corpus).
# · shared-js (libmozjs-128.so) — lo que gjs enlaza.
# Cosas que MUY probablemente haya que tocar al iterar: el nombre exacto del build dir/mach vs configure,
# --enable-release/--enable-hardening, flags de linker (lld), y RUST/CBINDGEN en PATH. Cuando selle en
# el worker, se congela el hash y se promueve.
name = "spidermonkey"
version = "128.14.0"
license = "MPL-2.0"
[source]
tarball = "https://ftp.mozilla.org/pub/firefox/releases/128.14.0esr/source/firefox-128.14.0esr.source.tar.xz"
sha256 = "93b9ef6229f41cb22ff109b95bbf61a78395a0fe4b870192eeca22947cb09a53"
strip_components = 1
[build]
compiler = "clang"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
# MOZBUILD_STATE_PATH: mach crea ahí su virtualenv de build. CADA fase es un bwrap aparte con
# `--tmpfs /tmp`, así que un venv en /tmp NO sobrevive de configure a compile ("bin/python: No such
# file or directory"). Lo anclamos a /src/.mozbuild (bind RW, persiste entre fases; es scratch, no
# entra a /out ⇒ no afecta el artefacto). MOZ_NOSPAM calla la telemetría. Va en las tres fases.
# Se construye en un obj-dir separado dentro de js/src (idioma de mozjs). CC/CXX=clang explícitos.
# AR=llvm-ar: mozjs con clang quiere la suite binutils de LLVM (llvm-ar/llvm-objdump/llvm-profdata).
# El rootfs las provee vía el paquete `llvm22` con symlinks en /usr/bin (bootstrap-devfs.sh); antes
# faltaban (sólo estaba `clang`) y configure abortaba "Cannot find ar/llvm-objdump".
# TRIPLE: mozjs exige que el --host de configure COINCIDA con el host que reporta rustc. El rustc del
# rootfs (Alpine) es `x86_64-alpine-linux-musl` (vendor `alpine`, no `pc` ni `unknown`); con cualquier
# otro, mozjs aborta ("rust compiler host ... not suitable for the configure host"). Fijamos ese triple
# exacto — clang lo acepta (vendor genérico) y así C-host == rust-host, que es lo que mozjs valida.
configure = "export MOZBUILD_STATE_PATH=/src/.mozbuild MOZ_NOSPAM=1 SHELL=/bin/sh PYTHON=python3 && cd js/src && mkdir -p obj && cd obj && CC=clang CXX=clang++ AR=llvm-ar ../configure --prefix=/usr --host=x86_64-alpine-linux-musl --target=x86_64-alpine-linux-musl --disable-debug --enable-optimize --enable-release --enable-hardening --disable-jemalloc --enable-shared-js --disable-tests --without-system-icu --with-system-nspr --with-system-zlib"
compile = "export MOZBUILD_STATE_PATH=/src/.mozbuild MOZ_NOSPAM=1 && cd js/src/obj && make -j\"$(nproc)\""
install = "export MOZBUILD_STATE_PATH=/src/.mozbuild MOZ_NOSPAM=1 && cd js/src/obj && make DESTDIR=/out install"
[deps]
build = ["nspr", "nasm", "cbindgen", "python3", "make", "zlib", "pkgconf"]
@@ -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"
+9 -1
View File
@@ -110,8 +110,16 @@ DISK_HIGH="${DISK_HIGH:-82}"
# Al jubilar `gnome-desktop` las dos hojas de la cola se quedaron sin consumidor: molía para nadie.
# ⚠ Lo caro no era el tiempo —todo salía por caché— sino que el `gsettings-desktop-schemas` viejo
# competía por el NOMBRE con el bueno: dos artefactos homónimos con hash distinto en el store.
#
# `incoming-gnome-onda2` —«la isla dinámica» del párrafo de arriba— se retiró el mismo día, y es el
# caso LIMPIO del mismo fenómeno: sus 22 recetas eran idénticas a las de `incoming-gnome` y las 22
# con el MISMO ArtifactHash, o sea la misma dirección del store. Sin divergencias, sin colisión de
# nombre y sin un solo artefacto que podar al retirarla. El andamio ya no sostenía nada: el trabajo
# de la isla dinámica vive en `incoming-gnome`, que es la cola que el perfil usa (119/119).
# ⇒ La comprobación que decide NO es `diff` de las recetas sino `hammer hash`: la resolución de deps
# es hermano→padre, así que dos ficheros idénticos en colas distintas PUEDEN sellar distinto.
# Orden: las colas con deuda van ANTES de las cerradas (kde 163/163, wlr 129/129 salen por cache-hit).
QUEUES="${QUEUES:-recipes/incoming recipes/incoming-go recipes/incoming-clib recipes/incoming-gnome-onda2 recipes/incoming-gnome recipes/incoming-cosmic recipes/incoming-kde recipes/incoming-wlr}"
QUEUES="${QUEUES:-recipes/incoming recipes/incoming-go recipes/incoming-clib recipes/incoming-gnome recipes/incoming-cosmic recipes/incoming-kde recipes/incoming-wlr}"
# REBUILD DEL BINARIO AL ARRANCAR (2026-07-18): el hammer horneado en la imagen golden ENVEJECE.
# Caso real que costó una noche de KDE: la golden del 29-jun traía un hammer sin el fix del overlay