gnome onda 3: MUTTER SELLADO (b3:50c37a83) — cae el muro de logind
El compositor construye: /usr/bin/mutter + gdctl, libmutter-*.so, los typelibs Clutter-16 y
Cogl-16, y libmutter-16.pc — que es exactamente lo que gnome-shell enlaza e importa.
LO QUE DESTRABÓ TODO: libelogind (b3:a6058906), receta nueva sobre `arje-sdlogin-compat`, un
crate que escribí en tawasuyu para esto. arje-logind-compat ya publicaba el estado de sesión
en /run/systemd/{sessions,users,seats}; faltaba la librería C que lo LEYERA, porque la API
sd-login no es cliente D-Bus: lee esos ficheros. mutter probó libsystemd (no), después
libelogind (sí) y siguió de largo. No es un stub: lee estado real que el daemon publica.
Después del muro aparecieron cinco cosas más, todas resueltas y ninguna de fondo:
udev-pc (b3:69e2d418) mutter pide DOS pkg-config: `libudev` (lo da libudev-zero) y `udev`
(metadata: udevdir). Receta aparte y no agregado a libudev-zero
porque `yupana radio` daba 51 SELLADOS cayendo a deuda en las cinco
imágenes. Un .pc de 4 líneas no justifica medio catálogo.
libxcvt (b3:ab8ede67) mutter corre `cvt` en build-time para generar meta-default-modes.h.
El app/cvt clásico vive en xorg.freedesktop.org, que desde acá no
responde (probé x.org, kernel.org y Lysator). libxcvt es la
extracción moderna del mismo código, está en el pool de Debian y no
arrastra nada de X11.
-Dbash_completion=false y el sed de subdir('doc/man') (pedía rst2man).
py3-setuptools el distutils del g-ir-scanner, mismo precedente que polkit y gjs.
cierre C dinámico freetype/fontconfig/cairo/libpng/zlib/libjpeg/libtiff pasan a sus
variantes -shared: mutter ya es .so y las estáticas canónicas no
entran («relocation R_X86_64_32 … recompile with -fPIC»). Mismas
variantes que usa gtk4.
Y gsettings-desktop-schemas pasa a introspection=true + isla dinámica: su gir GDesktopEnums
entra en el de Meta, y sin él el scanner cortaba en el ÚLTIMO target (721/722). Es exactamente
el caso que el comentario de esa receta dejaba previsto («si mutter/gjs lo pidieran vía
typelib, se re-activa»). Costo medido: 1 sellado (gnome-desktop), reconstruido acá mismo.
PENDIENTE: la receta apunta al commit de gitea que todavía NO está pusheado (ver el informe).
El artefacto ya es el correcto — la URL no entra al ArtifactHash, sólo el commit, así que
construir desde el clon local dio el MISMO hash que dará desde gitea.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Semántico sayk'uy
Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.
6 qillqakuna · +280 −112
diff --git a/docs/state/build-state-gnome.json b/docs/state/build-state-gnome.json
index aaed719c..217b1258 100644
--- a/docs/state/build-state-gnome.json
+++ b/docs/state/build-state-gnome.json
@@ -1,21 +1,21 @@
{
"schema": "hammer-build-state/1",
"totals": {
- "recipes": 814,
- "nodes": 814,
- "sealed": 804,
- "never": 8,
+ "recipes": 815,
+ "nodes": 815,
+ "sealed": 806,
+ "never": 7,
"debt": 2
},
"by_class": {
- "c": 179,
+ "c": 180,
"go": 362,
"gui": 40,
"kernel": 6,
"rust": 227
},
"debt_by_class": {
- "c": 4,
+ "c": 3,
"gui": 5,
"rust": 1
},
@@ -26,8 +26,8 @@
"debt": 2
},
"incoming-gnome": {
- "sealed": 46,
- "never": 6
+ "sealed": 48,
+ "never": 5
}
},
"by_profile": {
@@ -43,9 +43,9 @@
},
"escritorio-gnome": {
"raices": 9,
- "clausura": 99,
- "sealed": 93,
- "never": 6
+ "clausura": 100,
+ "sealed": 95,
+ "never": 5
},
"escritorio-mirada": {
"raices": 14,
@@ -603,7 +603,7 @@
"hash": "b3:33f4a8911658c210c3d8c43374d63060655a239b9c3ae23debfeca80db010daa",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -1180,11 +1180,11 @@
"hash": "b3:439fe1abc78f5e6e74e4b4003bb52c01b9adac875e22d98a599e33c30fe2fcc3",
"state": "sealed",
"blocked_by": [],
- "unblocks": 5,
+ "unblocks": 4,
"perfiles": [
"escritorio-gnome"
],
- "dependientes_total": 15
+ "dependientes_total": 14
},
"cairo-shared": {
"iname": "cairo-shared",
@@ -1215,7 +1215,7 @@
"perfiles": [
"escritorio-gnome"
],
- "dependientes_total": 3
+ "dependientes_total": 4
},
"caligula": {
"iname": "caligula",
@@ -2284,7 +2284,7 @@
"hash": "b3:a0c30aacb29e80bc13e3cf0246adf0f05c53668e2c7b9c7cc54e1f496db067c7",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -3522,7 +3522,7 @@
"hash": "b3:e6990b3e555f0c54b085cb6e49672ac38f6d8700b4a8afe7688c69962a5fa542",
"state": "sealed",
"blocked_by": [],
- "unblocks": 6,
+ "unblocks": 5,
"perfiles": [
"base",
"cli",
@@ -3842,12 +3842,12 @@
"hash": "b3:b6957a16be9a666c0698855a55a63ac98ea3e473a250705af5cc4029f0674814",
"state": "sealed",
"blocked_by": [],
- "unblocks": 4,
+ "unblocks": 3,
"perfiles": [
"escritorio-gnome",
"escritorio-kde"
],
- "dependientes_total": 23
+ "dependientes_total": 22
},
"fontconfig-shared": {
"iname": "fontconfig-shared",
@@ -3872,7 +3872,7 @@
"perfiles": [
"escritorio-gnome"
],
- "dependientes_total": 4
+ "dependientes_total": 5
},
"foot": {
"iname": "foot",
@@ -3959,12 +3959,12 @@
"hash": "b3:26df6ca03d8e528d1d2865aabf19217128571e01a05fd9b008625e3558fec8e4",
"state": "sealed",
"blocked_by": [],
- "unblocks": 4,
+ "unblocks": 3,
"perfiles": [
"escritorio-gnome",
"escritorio-kde"
],
- "dependientes_total": 25
+ "dependientes_total": 24
},
"freetype-shared": {
"iname": "freetype-shared",
@@ -3985,7 +3985,7 @@
"perfiles": [
"escritorio-gnome"
],
- "dependientes_total": 6
+ "dependientes_total": 7
},
"freeze": {
"iname": "freeze",
@@ -4020,7 +4020,7 @@
"hash": "b3:ef3cb3d2d6b27cfdaa6711566c58ae89b8e730f0bd5bfaa7cad225cf2eb04726",
"state": "sealed",
"blocked_by": [],
- "unblocks": 4,
+ "unblocks": 3,
"perfiles": [
"escritorio-gnome"
],
@@ -4184,7 +4184,7 @@
"hash": "b3:6b18375925154506bde61868943d66084ec02f2e14b6e41c0e5cc0b494838f56",
"state": "sealed",
"blocked_by": [],
- "unblocks": 5,
+ "unblocks": 4,
"perfiles": [
"escritorio-gnome"
],
@@ -4209,7 +4209,7 @@
],
"cls": "c",
"queue": "incoming-gnome",
- "hash": "b3:2b2be6e31814fe5a4645b23b3c800cb28c911d06311371ea1e1dd34dd89fd60c",
+ "hash": "b3:4c8cef1f13b07045d3aa4064017d4e92bfa4d9b7e1fe6f7f55ceccd1b7ae9353",
"state": "never",
"blocked_by": [
"gnome-session"
@@ -4265,7 +4265,7 @@
"hash": "b3:56959e5941c8240a888a148af0bc2a697d267627e7c42e4c8e76fda5dd2367dc",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome",
"escritorio-kde"
@@ -4355,7 +4355,7 @@
"perfiles": [
"escritorio-gnome"
],
- "dependientes_total": 5
+ "dependientes_total": 7
},
"giflib": {
"iname": "giflib",
@@ -4753,7 +4753,7 @@
"hash": "b3:f6ccdf98b91158f9f1e071a278f4b21b4700b3594f2425458ef723a76c7b98e4",
"state": "sealed",
"blocked_by": [],
- "unblocks": 6,
+ "unblocks": 5,
"perfiles": [
"escritorio-gnome"
],
@@ -4785,7 +4785,7 @@
"perfiles": [
"escritorio-gnome"
],
- "dependientes_total": 9
+ "dependientes_total": 11
},
"glow": {
"iname": "glow",
@@ -4845,10 +4845,10 @@
],
"cls": "gui",
"queue": "incoming-gnome",
- "hash": "b3:f65767ca7278d748e4ea57a0030a97ad597b6e41105ff22f0799dd9a2aea500e",
+ "hash": "b3:85a1ea0bc049add93f0a11b0570748c5cd6e2eabaf0021ac464bc6befc8475c4",
"state": "sealed",
"blocked_by": [],
- "unblocks": 5,
+ "unblocks": 4,
"perfiles": [
"escritorio-gnome"
],
@@ -4892,7 +4892,7 @@
],
"cls": "gui",
"queue": "incoming-gnome",
- "hash": "b3:c58b1c064d2c8a63fb512ccc2e0eada8b0db0869b53c5f72dab1bfe4f6c4368f",
+ "hash": "b3:053f26c4e3e693401db165919fd39d20dcf32978f7adef279b3785cae4c4f129",
"state": "never",
"blocked_by": [],
"unblocks": 1,
@@ -4925,7 +4925,7 @@
],
"cls": "gui",
"queue": "incoming-gnome",
- "hash": "b3:07554049519dd7f35e7a29117c3eabf96aede7a3c26e19ce3c8e2f58b75ad1c3",
+ "hash": "b3:d0e2a84e75ce33f91396559ccd3201ad074a4c52de15baab87f55f2d9cac6e45",
"state": "never",
"blocked_by": [],
"unblocks": 0,
@@ -4976,11 +4976,9 @@
],
"cls": "gui",
"queue": "incoming-gnome",
- "hash": "b3:3d261bc52f46c139f3eb12a66417fdf57dcee07d601511951b65a120eb5ea979",
+ "hash": "b3:274f4907c14bd12422128070b9b1623f06f5c7d521d928cd34c8ac805165acf1",
"state": "never",
- "blocked_by": [
- "mutter"
- ],
+ "blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-gnome"
@@ -5191,11 +5189,11 @@
"hash": "b3:935cedf3fe4ceee0d6921da7469c2e9f1a057080815fd71ec707a18a5d9d6ee5",
"state": "sealed",
"blocked_by": [],
- "unblocks": 4,
+ "unblocks": 3,
"perfiles": [
"escritorio-gnome"
],
- "dependientes_total": 14
+ "dependientes_total": 15
},
"gobuster": {
"iname": "gobuster",
@@ -5816,7 +5814,7 @@
"hash": "b3:caf47c37f1263412674cb1d2f4e7f4d52927fdd021222a3c2ac14b3e02225ef3",
"state": "sealed",
"blocked_by": [],
- "unblocks": 4,
+ "unblocks": 3,
"perfiles": [
"escritorio-gnome"
],
@@ -5938,12 +5936,16 @@
"gsettings-desktop-schemas": {
"iname": "gsettings-desktop-schemas",
"version": "48.0",
- "link": "static",
+ "link": "dynamic",
"compiler": "zig-cc",
"deps": [
"meson",
"samurai",
"python3",
+ "py3-setuptools",
+ "gi-foreign-girs",
+ "gobject-introspection",
+ "glib-introspected",
"pkgconf",
"glib",
"libffi",
@@ -5952,10 +5954,10 @@
],
"cls": "c",
"queue": "incoming-gnome",
- "hash": "b3:e43e9da56433891689f572c3cf6895aa954ba9ec97934c509c37fe71b32293b1",
+ "hash": "b3:0a5737af4481588057ff49668aeae39b4c2956e9ad5756d7a38058e9697d8d99",
"state": "sealed",
"blocked_by": [],
- "unblocks": 6,
+ "unblocks": 5,
"perfiles": [
"escritorio-gnome"
],
@@ -6004,7 +6006,7 @@
"hash": "b3:07a631ba6e2e1b588933c718ce12a8628025482d65807705746e332ef768820b",
"state": "sealed",
"blocked_by": [],
- "unblocks": 4,
+ "unblocks": 3,
"perfiles": [
"escritorio-gnome"
],
@@ -6271,7 +6273,7 @@
"hash": "b3:6db98e41595f49a17d44f7425a7ab0832a5e2a8b39571ba6b0045ff506b2782c",
"state": "sealed",
"blocked_by": [],
- "unblocks": 5,
+ "unblocks": 4,
"perfiles": [
"escritorio-gnome"
],
@@ -6659,7 +6661,7 @@
"hash": "b3:bdc36cf9a118a0eb505966cd5132552e51e420c12186694907898fb44873684a",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -6845,7 +6847,7 @@
"hash": "b3:c447da2987354cd6e86edd24855239ed21da30ad8a4e01d2859eee8895cb70b7",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -7018,7 +7020,7 @@
"hash": "b3:1b90c87650b775ad60049f7c3c20c9bf4d56f230ca43eec411ce69762d661c9d",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -7914,7 +7916,7 @@
"hash": "b3:07fbf8a1da5b346fe394bebe512cbc0e8acc9b509c3614b462329fe70b1a73b8",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -8139,7 +8141,7 @@
"hash": "b3:260f0519727bcf33ce69d05644929558eafb7fae78730e5201345629a3dff42c",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -8161,7 +8163,7 @@
"hash": "b3:62525e34e17993ad51369c816c96ef4ca812184998b31fe98dc1f3f0778b436b",
"state": "sealed",
"blocked_by": [],
- "unblocks": 6,
+ "unblocks": 5,
"perfiles": [
"escritorio-gnome",
"escritorio-kde",
@@ -8193,7 +8195,7 @@
"hash": "b3:0537145b86a96fb93c86df447e7c309f5851786b75f7f3eced525bef522c8c3f",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -8210,7 +8212,7 @@
"hash": "b3:a6058906892b121ff0de08b910169701212e90f6452cb3566e1c8cee220851dc",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -8233,7 +8235,7 @@
"hash": "b3:ea32e6b5b970564904e345078b70fcc48c6b55988cadd473d0b1c55766112389",
"state": "sealed",
"blocked_by": [],
- "unblocks": 4,
+ "unblocks": 3,
"perfiles": [
"escritorio-gnome",
"escritorio-kde"
@@ -8255,7 +8257,7 @@
"hash": "b3:0cbb4b4d3619b4b8971fd4c66f3416bdb9eecbb44004ee5a3691843f511b8fad",
"state": "sealed",
"blocked_by": [],
- "unblocks": 2,
+ "unblocks": 1,
"perfiles": [
"escritorio-gnome",
"escritorio-mirada"
@@ -8292,7 +8294,7 @@
"hash": "b3:2f6d62862c9978c79a5fc593625e110c6947475b8a6a600efa2c95b83033a6b1",
"state": "sealed",
"blocked_by": [],
- "unblocks": 8,
+ "unblocks": 7,
"perfiles": [
"escritorio-gnome",
"escritorio-kde",
@@ -8397,7 +8399,7 @@
"hash": "b3:a767a2310ab7cc4840290f5a8549e64210c142f415e01d791e05b96e54a892e4",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -8426,7 +8428,7 @@
"hash": "b3:4903731df83a46fe04dd182936fce2d20daa860c1d0bbae550bb063cc732f96f",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -8451,7 +8453,7 @@
"hash": "b3:de1a73ac32a8cc231c9cd87d940285713c48575bdd98fb7b96fd780b554a5482",
"state": "sealed",
"blocked_by": [],
- "unblocks": 2,
+ "unblocks": 1,
"perfiles": [
"escritorio-gnome",
"escritorio-mirada"
@@ -8471,11 +8473,11 @@
"hash": "b3:82e319b977f1c928cf90f6e998b3ea21c2edc6d0ba374e705843ea499f6ac3fd",
"state": "sealed",
"blocked_by": [],
- "unblocks": 4,
+ "unblocks": 3,
"perfiles": [
"escritorio-gnome"
],
- "dependientes_total": 15
+ "dependientes_total": 14
},
"libjpeg-turbo-shared": {
"iname": "libjpeg-turbo-shared",
@@ -8495,7 +8497,7 @@
"perfiles": [
"escritorio-gnome"
],
- "dependientes_total": 2
+ "dependientes_total": 3
},
"libksba": {
"iname": "libksba",
@@ -8554,12 +8556,12 @@
"hash": "b3:f65887051274b7babcdd52f286ea5cdfe52e5ef8be2915bd0289990a076b987f",
"state": "sealed",
"blocked_by": [],
- "unblocks": 4,
+ "unblocks": 3,
"perfiles": [
"escritorio-gnome",
"escritorio-kde"
],
- "dependientes_total": 22
+ "dependientes_total": 21
},
"libpng-shared": {
"iname": "libpng-shared",
@@ -8579,7 +8581,7 @@
"perfiles": [
"escritorio-gnome"
],
- "dependientes_total": 8
+ "dependientes_total": 9
},
"libsass": {
"iname": "libsass",
@@ -8614,7 +8616,7 @@
"hash": "b3:b3da6b8031d75e5220a1622c94402b9a02156507794655a131e9bbaad1386f9a",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -8671,11 +8673,11 @@
"hash": "b3:8d257bef5f5693db6db77cbc07b761ee3df1862ea8ea9103de7e8e01ab5e5594",
"state": "sealed",
"blocked_by": [],
- "unblocks": 4,
+ "unblocks": 3,
"perfiles": [
"escritorio-gnome"
],
- "dependientes_total": 13
+ "dependientes_total": 12
},
"libtiff-shared": {
"iname": "libtiff-shared",
@@ -8696,7 +8698,7 @@
"perfiles": [
"escritorio-gnome"
],
- "dependientes_total": 1
+ "dependientes_total": 2
},
"libudev-zero": {
"iname": "libudev-zero",
@@ -8712,7 +8714,7 @@
"hash": "b3:bf6607effbb9bcfa3cb1eb2ffe37d8a06a90702431b1b4c233c1815977455417",
"state": "sealed",
"blocked_by": [],
- "unblocks": 2,
+ "unblocks": 1,
"perfiles": [
"base",
"cli",
@@ -8735,7 +8737,7 @@
"hash": "b3:a8507df1a20e98511afce4f28dcf568ec8f6f531f810d4c67dab451ac66a1b3b",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -8776,6 +8778,28 @@
"perfiles": [],
"dependientes_total": 0
},
+ "libxcvt": {
+ "iname": "libxcvt",
+ "version": "0.1.3",
+ "link": "dynamic",
+ "compiler": "zig-cc",
+ "deps": [
+ "meson",
+ "samurai",
+ "python3",
+ "pkgconf"
+ ],
+ "cls": "c",
+ "queue": "incoming-gnome",
+ "hash": "b3:ab8ede6717042ebc259f99c9e2a8fe56dd5257bf680f1f9e8640d4b3e3ea893d",
+ "state": "sealed",
+ "blocked_by": [],
+ "unblocks": 0,
+ "perfiles": [
+ "escritorio-gnome"
+ ],
+ "dependientes_total": 1
+ },
"libxkbcommon": {
"iname": "libxkbcommon",
"version": "1.7.0",
@@ -8793,7 +8817,7 @@
"hash": "b3:14d29058553e8b2a93ade023ecf80815749117d66d183ced6605d701675aeda1",
"state": "sealed",
"blocked_by": [],
- "unblocks": 2,
+ "unblocks": 1,
"perfiles": [
"escritorio-gnome",
"escritorio-mirada"
@@ -9433,7 +9457,7 @@
"hash": "b3:6d443d9fdc833adbd0736ad52b51befdaa44902091932cc2cf23211974d050ab",
"state": "sealed",
"blocked_by": [],
- "unblocks": 6,
+ "unblocks": 5,
"perfiles": [
"escritorio-gnome",
"escritorio-kde",
@@ -9519,7 +9543,7 @@
"hash": "b3:b45037ebba3fdbf0361ef0fcc61dee5c9795b08c1ea4a0231aafc7dc45bdaf85",
"state": "sealed",
"blocked_by": [],
- "unblocks": 6,
+ "unblocks": 5,
"perfiles": [
"base",
"cli",
@@ -9527,7 +9551,7 @@
"escritorio-kde",
"escritorio-mirada"
],
- "dependientes_total": 88
+ "dependientes_total": 89
},
"micro": {
"iname": "micro",
@@ -9889,7 +9913,10 @@
"samurai",
"python3",
"pkgconf",
+ "py3-setuptools",
+ "gi-foreign-girs",
"gobject-introspection",
+ "glib-introspected",
"gsettings-desktop-schemas",
"gnome-desktop",
"glib",
@@ -9899,7 +9926,7 @@
"wayland-protocols",
"libinput",
"libxkbcommon",
- "cairo",
+ "cairo-shared",
"pango",
"gdk-pixbuf",
"mesa",
@@ -9908,15 +9935,15 @@
"pixman",
"harfbuzz",
"fribidi",
- "libpng",
- "freetype",
+ "libpng-shared",
+ "freetype-shared",
"expat",
"libffi",
"pcre2",
- "zlib",
- "libjpeg-turbo",
- "libtiff",
- "fontconfig",
+ "zlib-shared",
+ "libjpeg-turbo-shared",
+ "libtiff-shared",
+ "fontconfig-shared",
"json-glib",
"lcms2",
"libdisplay-info",
@@ -9935,12 +9962,13 @@
"iso-codes",
"libseccomp",
"libelogind",
- "udev-pc"
+ "udev-pc",
+ "libxcvt"
],
"cls": "c",
"queue": "incoming-gnome",
- "hash": "b3:f1e153a1c956a71925bee46b437e942fdaa2321005fe5e855def4e234907148c",
- "state": "never",
+ "hash": "b3:50c37a83865015529e2c6017aae040553f790066c4f0f9be61fbd4715edaad58",
+ "state": "sealed",
"blocked_by": [],
"unblocks": 1,
"perfiles": [
@@ -10731,7 +10759,7 @@
"hash": "b3:a5030365ad5dea77821e57dc5f3a67e84bad4e1ea30f75d5a44ede15969eb9bb",
"state": "sealed",
"blocked_by": [],
- "unblocks": 5,
+ "unblocks": 4,
"perfiles": [
"escritorio-gnome"
],
@@ -10840,7 +10868,7 @@
"hash": "b3:06ad7580fd1d61db1822a5682dc0a9cef359329e4b4cf6bfa6c6dc507973f47d",
"state": "sealed",
"blocked_by": [],
- "unblocks": 6,
+ "unblocks": 5,
"perfiles": [
"base",
"cli",
@@ -11003,7 +11031,7 @@
"hash": "b3:b86203bd3076ae913fe38fc27e27b3a27de6746a8dc0f870891823093c884248",
"state": "sealed",
"blocked_by": [],
- "unblocks": 5,
+ "unblocks": 4,
"perfiles": [
"escritorio-gnome",
"escritorio-kde",
@@ -11022,7 +11050,7 @@
"hash": "b3:f0b5d0b1cb4321b3c61f24a871b9a58da3ebb7eb903af4015e35bd41a6465437",
"state": "sealed",
"blocked_by": [],
- "unblocks": 8,
+ "unblocks": 7,
"perfiles": [
"base",
"cli",
@@ -11030,7 +11058,7 @@
"escritorio-kde",
"escritorio-mirada"
],
- "dependientes_total": 304
+ "dependientes_total": 305
},
"plow": {
"iname": "plow",
@@ -11382,7 +11410,7 @@
"perfiles": [
"escritorio-gnome"
],
- "dependientes_total": 11
+ "dependientes_total": 13
},
"python3": {
"iname": "python3",
@@ -11398,7 +11426,7 @@
"hash": "b3:27889026076514935b53d486951792d08ed7fd5210b44e7f92979c03c96be665",
"state": "sealed",
"blocked_by": [],
- "unblocks": 6,
+ "unblocks": 5,
"perfiles": [
"base",
"cli",
@@ -11406,7 +11434,7 @@
"escritorio-kde",
"escritorio-mirada"
],
- "dependientes_total": 246
+ "dependientes_total": 247
},
"qrcp": {
"iname": "qrcp",
@@ -11944,7 +11972,7 @@
"hash": "b3:b8fca71dd92577d3a44ef01a7d5779d86473553199e0c24736438cdc846e5199",
"state": "sealed",
"blocked_by": [],
- "unblocks": 6,
+ "unblocks": 5,
"perfiles": [
"base",
"cli",
@@ -11952,7 +11980,7 @@
"escritorio-kde",
"escritorio-mirada"
],
- "dependientes_total": 220
+ "dependientes_total": 221
},
"sassc": {
"iname": "sassc",
@@ -12526,7 +12554,7 @@
"hash": "b3:235b18d98f18c136b26a58e942eb70030ed59054435c3c01bb07e5c0896d2f13",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -13703,7 +13731,7 @@
"hash": "b3:69e2d4185b2d27b6fa3c35b8f611d94ee74bca5badbad00b7c77074134811a1a",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -14157,7 +14185,7 @@
"hash": "b3:c4eb40ba21935bba70ab54338fe755e3dc8b41541d877a48be544dfe73bbfe7b",
"state": "sealed",
"blocked_by": [],
- "unblocks": 6,
+ "unblocks": 5,
"perfiles": [
"escritorio-gnome",
"escritorio-kde",
@@ -14182,7 +14210,7 @@
"hash": "b3:a2122760419cc44529d9be002613aa3c66dad2efc31cd706dadfb6d2e4cdbb59",
"state": "sealed",
"blocked_by": [],
- "unblocks": 6,
+ "unblocks": 5,
"perfiles": [
"escritorio-gnome",
"escritorio-kde",
@@ -14434,7 +14462,7 @@
],
"cls": "gui",
"queue": "incoming-gnome",
- "hash": "b3:550f0e9b21f8b33ff03e8dcabf090d4afffbe61f2c42134789b4b7b241f9bbb6",
+ "hash": "b3:e9bb793d120550ab4a92383c0ecb9e63b2d6cca188cbdf225588f242b8739dd5",
"state": "never",
"blocked_by": [],
"unblocks": 0,
@@ -14474,7 +14502,7 @@
"hash": "b3:bcf9b766d13a579583e1dcdc18128990aa33dbed539a754b90cd78a5dc4b481c",
"state": "sealed",
"blocked_by": [],
- "unblocks": 1,
+ "unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
@@ -14720,7 +14748,7 @@
"hash": "b3:28522f99f433496dbaacfa309f8e937d6526ac3c8db34b4a94b18e22656dcd33",
"state": "sealed",
"blocked_by": [],
- "unblocks": 9,
+ "unblocks": 8,
"perfiles": [
"base",
"cli",
@@ -14728,7 +14756,7 @@
"escritorio-kde",
"escritorio-mirada"
],
- "dependientes_total": 98
+ "dependientes_total": 97
},
"zlib-ng": {
"iname": "zlib-ng",
@@ -14764,7 +14792,7 @@
"perfiles": [
"escritorio-gnome"
],
- "dependientes_total": 10
+ "dependientes_total": 11
},
"zola": {
"iname": "zola",
diff --git a/recipes/incoming-gnome/gsettings-desktop-schemas.toml b/recipes/incoming-gnome/gsettings-desktop-schemas.toml
index 14c856f8..bad0f4c8 100644
--- a/recipes/incoming-gnome/gsettings-desktop-schemas.toml
+++ b/recipes/incoming-gnome/gsettings-desktop-schemas.toml
@@ -2,8 +2,11 @@
# fondo, interface, wm, a11y, sound… Casi todo el escritorio los lee en runtime. Receta LIVIANA:
# compila XML de schemas + una libcita de enums; meson static. sha256 REAL de curl|sha256sum.
#
-# Feature-minimal: introspection=false (el typelib no lo exige el runtime de schemas; si mutter/gjs
-# lo pidieran vía typelib, se re-activa). Sin docs/tests.
+# introspection=true DESDE 2026-07-28, y es exactamente el caso que este comentario preveía: mutter
+# lo pide. Su gir de `Meta` incluye GDesktopEnums-3.0.gir, que sale de acá; sin él el g-ir-scanner
+# corta en el ÚLTIMO target de mutter (721/722). Al activarla la receta pasa a la isla dinámica: un
+# typelib necesita un .so real que escanear, no una .a. Costo medido con `yupana radio`: 1 sellado a
+# reconstruir (gnome-desktop). Sin docs/tests.
name = "gsettings-desktop-schemas"
version = "48.0"
@@ -14,13 +17,13 @@ sha256 = "e68f155813bf18f865a8b2c8e9d473588b6ccadcafbb666ab788857c6c2d1bd3"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
-link = "static"
+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 --prefer-static -Ddefault_library=static -Dintrospection=false -Dc_args=-Wno-error=date-time"
+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=shared -Dintrospection=true -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 aporta gio (compila los schemas) + su cierre .pc. gobject-introspection sólo si introspection=true.
[deps]
-build = ["meson", "samurai", "python3", "pkgconf", "glib", "libffi", "pcre2", "zlib"]
+build = ["meson", "samurai", "python3", "py3-setuptools", "gi-foreign-girs", "gobject-introspection", "glib-introspected", "pkgconf", "glib", "libffi", "pcre2", "zlib"]
diff --git a/recipes/incoming-gnome/libelogind.toml b/recipes/incoming-gnome/libelogind.toml
new file mode 100644
index 00000000..50297075
--- /dev/null
+++ b/recipes/incoming-gnome/libelogind.toml
@@ -0,0 +1,59 @@
+# libelogind — la C-ABI `sd-login` que le faltaba a la distro, implementada en arje-compat.
+#
+# QUÉ RESUELVE: mutter (y polkit, gcr, at-spi2-core) exigen un proveedor de logind por pkg-config —
+# `libsystemd` o `libelogind`— para llamar la API C sd-login. Esa API NO es un cliente D-Bus: lee
+# `/run/systemd/{sessions,users,seats}`. Los otros tres tienen perilla para esquivarla y se
+# construyeron por su camino degradado; **mutter no tiene**, porque `-Dudev=false` exige
+# `-Dlogind=false` (mutter/meson.build:257) y sin udev+logind no hay backend nativo KMS: no hay
+# compositor de verdad, sólo anidado.
+#
+# POR QUÉ NO ES elogind NI UN STUB: `arje-logind-compat` ya escribe ese estado en /run/systemd (ver
+# `arje_compat::login_state`). Lo único que faltaba era una librería que lo LEYERA y lo ofreciera en
+# C. `arje-sdlogin-compat` hace exactamente eso — no inventa datos ni levanta un daemon paralelo.
+# Empaquetar elogind sería traer un logind entero a competirle al que arje ya tiene.
+#
+# Corrige de paso lo que afirma el comentario de recipes/arje-logind-compat.toml («no hace falta la
+# C-ABI sd-login… los escritorios consultan login1 en RUNTIME por D-Bus»): es cierto para los
+# clientes D-Bus y FALSO para mutter, que la enlaza.
+#
+# HUB-ONLY, como toda receta de fuente tawasuyu: la gitea escucha en :2345 y el worker efímero es
+# secretless ⇒ recibe Connection refused en :22. Se muele en el hub.
+name = "libelogind"
+version = "0.0.1"
+
+[source]
+# El `commit` es el identificador inmutable; la URL es sólo locator y NO entra al ArtifactHash.
+# Rama `selfhost/arje-zero-attest-lockfile`, igual que arje-logind-compat, porque es la única que
+# versiona el `Cargo.lock` de la raíz: sin él, el vendoreo `--locked` del fetch no es reproducible
+# (el monorepo lo gitignora en main).
+repo = "gitea@git.tawasuyu.net:tawasuyu/tawasuyu.git"
+commit = "0c9857879ae3a115f9f4c10fe2ea0ab7769763fb"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+# dynamic, no static: el producto ES una librería compartida (cdylib). Con `link = "static"` el lab
+# exporta -static y no hay .so que valga.
+link = "dynamic"
+flags = ["-p", "arje-sdlogin-compat"]
+
+[build.phases]
+# Sólo se sobrescribe `install`: el `compile` por defecto del lab (cargo build --release, offline y
+# vendoreado) es el correcto. El default de Cargo copia EJECUTABLES a /usr/bin, y acá no hay ninguno:
+# hay una .so, una cabecera y un .pc.
+#
+# El SONAME (libelogind.so.0) lo fija el build.rs del crate, no esta receta, para que un `cargo build`
+# a mano también produzca algo enlazable. Por eso el fichero se instala directamente con ese nombre y
+# el `libelogind.so` es el symlink de desarrollo que busca el linker.
+#
+# La cabecera va a /usr/include/elogind/systemd/ y el .pc trae `-I${includedir}/elogind`: así el
+# `#include <systemd/sd-login.h>` de mutter resuelve sin que mutter sepa que somos nosotros. Es el
+# mismo arreglo de elogind upstream.
+install = '''
+set -e
+mkdir -p /out/usr/lib/pkgconfig /out/usr/include/elogind/systemd
+cp target/release/libelogind.so /out/usr/lib/libelogind.so.0
+ln -s libelogind.so.0 /out/usr/lib/libelogind.so
+cp 03_ukupacha/arje/arje-sdlogin-compat/include/systemd/sd-login.h /out/usr/include/elogind/systemd/
+cp 03_ukupacha/arje/arje-sdlogin-compat/pkgconfig/libelogind.pc /out/usr/lib/pkgconfig/
+'''
diff --git a/recipes/incoming-gnome/libxcvt.toml b/recipes/incoming-gnome/libxcvt.toml
new file mode 100644
index 00000000..ad2330f9
--- /dev/null
+++ b/recipes/incoming-gnome/libxcvt.toml
@@ -0,0 +1,31 @@
+# libxcvt 0.1.3 — la fórmula VESA CVT (modelines) como librería, y con ella el binario `cvt`.
+#
+# mutter lo necesita EN BUILD-TIME, no en runtime: su backend nativo genera `meta-default-modes.h`
+# corriendo `src/backends/native/gen-default-modes.py`, y ese script hace `os.popen("cvt …")` para
+# cada resolución (src/meson.build:1034). Sin el binario, el configure corta.
+#
+# ES libxcvt Y NO EL `cvt` DE XORG a propósito, y no sólo por comodidad: el `app/cvt` clásico vive en
+# xorg.freedesktop.org, que desde acá no responde (probé x.org, el mirror de kernel.org y el de
+# Lysator). libxcvt es la extracción moderna de ese mismo código —la que empaquetan hoy las distros—,
+# está en el pool de Debian con tarball inmutable, es meson y no arrastra NADA de X11: es aritmética
+# de temporizados de video sobre libc. El `cvt` que instala produce la misma salida que el original,
+# que es lo único que el script de mutter parsea.
+name = "libxcvt"
+version = "0.1.3"
+
+[source]
+tarball = "http://deb.debian.org/debian/pool/main/libx/libxcvt/libxcvt_0.1.3.orig.tar.xz"
+sha256 = "a929998a8767de7dfa36d6da4751cdbeef34ed630714f2f4a767b351f2442e01"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "dynamic"
+
+[build.phases]
+configure = "meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Ddefault_library=shared -Dc_args=-Wno-error=date-time"
+compile = "ninja -C output"
+install = "DESTDIR=/out ninja -C output install"
+
+[deps]
+build = ["meson", "samurai", "python3", "pkgconf"]
diff --git a/recipes/incoming-gnome/mutter.toml b/recipes/incoming-gnome/mutter.toml
index 69532715..3c22ccdd 100644
--- a/recipes/incoming-gnome/mutter.toml
+++ b/recipes/incoming-gnome/mutter.toml
@@ -17,7 +17,7 @@ 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=shared -Dxwayland=false -Dx11=false -Dopengl=false -Dglx=false -Dremote_desktop=false -Dlibwacom=false -Dsound_player=false -Dstartup_notification=false -Dsm=false -Dtests=disabled -Dcogl_tests=false -Dclutter_tests=false -Dmutter_tests=false -Dprofiler=false -Ddocs=false -Dinstalled_tests=false -Dc_args=-Wno-error=date-time"
+configure = "sed -i \"/^subdir('doc\\/man')$/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=shared -Dxwayland=false -Dx11=false -Dopengl=false -Dglx=false -Dremote_desktop=false -Dlibwacom=false -Dsound_player=false -Dstartup_notification=false -Dsm=false -Dtests=disabled -Dcogl_tests=false -Dclutter_tests=false -Dmutter_tests=false -Dprofiler=false -Dbash_completion=false -Ddocs=false -Dinstalled_tests=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"
@@ -33,4 +33,4 @@ install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson ins
# libgudev, libwacom — device/tablet.
# sysprof-capture — opcional (profiler=false lo evita).
[deps]
-build = ["meson", "samurai", "python3", "pkgconf", "gobject-introspection", "gsettings-desktop-schemas", "gnome-desktop", "glib", "gtk4", "graphene", "wayland", "wayland-protocols", "libinput", "libxkbcommon", "cairo", "pango", "gdk-pixbuf", "mesa", "libdrm", "libepoxy", "pixman", "harfbuzz", "fribidi", "libpng", "freetype", "expat", "libffi", "pcre2", "zlib", "libjpeg-turbo", "libtiff", "fontconfig", "json-glib", "lcms2", "libdisplay-info", "hwdata", "at-spi2-core", "colord", "libgudev", "libudev-zero", "libgusb", "libusb", "sqlite", "gettext-tiny", "libei", "libevdev", "xkeyboard-config", "iso-codes", "libseccomp"]
+build = ["meson", "samurai", "python3", "pkgconf", "py3-setuptools", "gi-foreign-girs", "gobject-introspection", "glib-introspected", "gsettings-desktop-schemas", "gnome-desktop", "glib", "gtk4", "graphene", "wayland", "wayland-protocols", "libinput", "libxkbcommon", "cairo-shared", "pango", "gdk-pixbuf", "mesa", "libdrm", "libepoxy", "pixman", "harfbuzz", "fribidi", "libpng-shared", "freetype-shared", "expat", "libffi", "pcre2", "zlib-shared", "libjpeg-turbo-shared", "libtiff-shared", "fontconfig-shared", "json-glib", "lcms2", "libdisplay-info", "hwdata", "at-spi2-core", "colord", "libgudev", "libudev-zero", "libgusb", "libusb", "sqlite", "gettext-tiny", "libei", "libevdev", "xkeyboard-config", "iso-codes", "libseccomp", "libelogind", "udev-pc", "libxcvt"]
diff --git a/recipes/incoming-gnome/udev-pc.toml b/recipes/incoming-gnome/udev-pc.toml
new file mode 100644
index 00000000..b8bb7d7d
--- /dev/null
+++ b/recipes/incoming-gnome/udev-pc.toml
@@ -0,0 +1,47 @@
+# udev-pc — el `udev.pc` que falta, y nada más.
+#
+# QUÉ ES: mutter pide DOS pkg-config distintos para su backend nativo (meson.build:262-264):
+# `libudev` (la librería, que da libudev-zero) y `udev` (metadata: la variable `udevdir`, dónde van
+# las reglas). libudev-zero provee el primero y no el segundo — no tiene por qué: es una libudev sin
+# udevd. En distros con systemd el `udev.pc` lo pone systemd; en las que no, lo pone eudev.
+#
+# POR QUÉ UNA RECETA APARTE Y NO AGREGARLO A libudev-zero: `yupana radio libudev-zero` da **51
+# sellados cayendo a deuda**, en las cinco imágenes (base, cli y los tres escritorios). Un fichero de
+# 4 líneas no justifica reconstruir medio catálogo. Esta receta instala SÓLO el .pc, así que no pisa
+# nada de libudev-zero y las dos conviven en el mismo cierre.
+#
+# LA FUENTE es el tarball de libudev-zero a propósito, aunque no se compile nada de él: `[source]` es
+# obligatorio en el esquema de receta, y atarla a su upstream natural deja claro de quién es
+# compañera. El .pc se escribe acá porque libudev-zero no lo trae.
+#
+# udevdir=/usr/lib/udev es la ruta real de esta distro: la Semilla de arje arranca /usr/bin/udevd y
+# ahí busca sus reglas. mutter sólo usa el valor para saber dónde instalar las suyas.
+name = "udev-pc"
+version = "1.0.4"
+
+[source]
+tarball = "https://github.com/illiliti/libudev-zero/archive/refs/tags/1.0.4.tar.gz"
+sha256 = "10148cfd6047d387bf71eca72cd19c177084224d96434a118d8def6e0a3d6316"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "dynamic"
+
+[build.phases]
+compile = 'true'
+install = '''
+set -e
+mkdir -p /out/usr/share/pkgconfig
+cat > /out/usr/share/pkgconfig/udev.pc <<'PC'
+prefix=/usr
+udevdir=${prefix}/lib/udev
+
+Name: udev
+Description: udev device manager (metadata; la libreria la provee libudev-zero)
+Version: 252
+PC
+'''
+
+[deps]
+build = ["pkgconf"]