kde: upower — la imagen declaraba powerdevil y no tenía batería

Primero de los dos huecos que dejaban a KDE POR DEBAJO de una instalación estándar. El perfil
declaraba `powerdevil` —el gestor de energía de Plasma— pero no a `upower`, que es con quien
powerdevil habla para leer la batería y aplicar perfiles. Medido: upower sólo existía en la cola de
GNOME, y las colas no se ven entre sí (HERMANO→corpus, nunca de reojo). En un portátil eso es un
escritorio sin indicador de batería, y el arranque no falla ⇒ no se ve hasta usarlo.

Cuesta TRES recetas y no siete, y la diferencia es una perilla: `-Dintrospection=disabled`.
GNOME la necesita ENCENDIDA porque su shell hace `imports.gi.UPowerGlib` desde JavaScript, o sea que
carga el typelib. powerdevil NO: habla D-Bus con `org.freedesktop.UPower`. Apagarla saca de la
frontera gobject-introspection, gi-foreign-girs, glib-introspected y py3-setuptools, que sólo viven
en la cola de GNOME.

⚠ Y NO SE PROMUEVEN AL CORPUS, aunque era lo primero que intenté. Al mover `libgudev` allá su
ArtifactHash CAMBIÓ (7404bc8d → 87ca5e73) y eso no es una mudanza: `glib` existe en las DOS colas y
son recetas distintas, así que desde `incoming-gnome/` se construye contra la glib de GNOME y desde
el corpus contra la del corpus. Promoverla habría arrastrado a GNOME a la glib del corpus — el
cuadro de las «dos glib» que este repo ya pagó caro. Revertido y verificado que vuelve al hash de
antes (7404bc8d), o sea GNOME intacto. Se COPIAN a la cola de KDE.
`udev-pc` sí comparte artefacto (sus deps son sólo pkgconf ⇒ mismo hash desde las dos colas, un
solo directorio en el store). `libgudev` es otro a propósito, por la glib.

VERIFICADO sobre el artefacto sellado, no supuesto: trae `usr/libexec/upowerd`, el
`org.freedesktop.UPower.service` de system-services y su política en `system.d` — que es exactamente
lo que powerdevil necesita para que el demonio arranque por activación D-Bus.

El perfil pasa a 49 raíces, 301/301 listo, deuda 0.

Queda el segundo hueco: KDE no tiene backend de portal (ni `xdg-desktop-portal` en su cola), o sea
que no hay compartir pantalla — y en particular la captura de obs-studio, que la imagen ya trae, no
tiene con quién hablar en Plasma. Eso es más caro: pide traer el portal a la cola y ESCRIBIR
`xdg-desktop-portal-kde`, que no existe como receta en ninguna cola.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LCt3ettR4Z7b6wPCBmbvEV
This commit is contained in:
Sergio
2026-09-09 22:02:49 +00:00
co-authored by Claude Opus 5
parent 807683dbc6
commit 542d9875fb
12 changed files with 508 additions and 209 deletions
+13 -13
View File
@@ -3600,7 +3600,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 10
"dependientes_total": 11
},
"ddh": {
"iname": "ddh",
@@ -4527,7 +4527,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 67
"dependientes_total": 68
},
"expat-shared": {
"iname": "expat-shared",
@@ -5549,7 +5549,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 107
"dependientes_total": 108
},
"gh": {
"iname": "gh",
@@ -6075,7 +6075,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 33
"dependientes_total": 35
},
"glib-shared": {
"iname": "glib-shared",
@@ -9785,7 +9785,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 113
"dependientes_total": 115
},
"libffi-shared": {
"iname": "libffi-shared",
@@ -10317,7 +10317,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 46
"dependientes_total": 48
},
"libunibreak": {
"iname": "libunibreak",
@@ -11402,7 +11402,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 125
"dependientes_total": 127
},
"micro": {
"iname": "micro",
@@ -12999,7 +12999,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 85
"dependientes_total": 87
},
"pcre2-shared": {
"iname": "pcre2-shared",
@@ -13261,7 +13261,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 397
"dependientes_total": 400
},
"plow": {
"iname": "plow",
@@ -13730,7 +13730,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 316
"dependientes_total": 318
},
"qrcp": {
"iname": "qrcp",
@@ -14345,7 +14345,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 268
"dependientes_total": 270
},
"sassc": {
"iname": "sassc",
@@ -17933,7 +17933,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 115
"dependientes_total": 116
},
"zlib-ng": {
"iname": "zlib-ng",
@@ -17975,7 +17975,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 86
"dependientes_total": 87
},
"zola": {
"iname": "zola",
+12 -12
View File
@@ -3267,7 +3267,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 10
"dependientes_total": 11
},
"ddh": {
"iname": "ddh",
@@ -4239,7 +4239,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 67
"dependientes_total": 68
},
"expat-shared": {
"iname": "expat-shared",
@@ -5367,7 +5367,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 107
"dependientes_total": 108
},
"gh": {
"iname": "gh",
@@ -10225,7 +10225,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 113
"dependientes_total": 115
},
"libffi-shared": {
"iname": "libffi-shared",
@@ -11099,7 +11099,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 46
"dependientes_total": 48
},
"libunibreak": {
"iname": "libunibreak",
@@ -12226,7 +12226,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 125
"dependientes_total": 127
},
"micro": {
"iname": "micro",
@@ -13992,7 +13992,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 85
"dependientes_total": 87
},
"pcre2-shared": {
"iname": "pcre2-shared",
@@ -14254,7 +14254,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 397
"dependientes_total": 400
},
"plow": {
"iname": "plow",
@@ -14800,7 +14800,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 316
"dependientes_total": 318
},
"qrcp": {
"iname": "qrcp",
@@ -15415,7 +15415,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 268
"dependientes_total": 270
},
"sassc": {
"iname": "sassc",
@@ -19143,7 +19143,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 115
"dependientes_total": 116
},
"zlib-ng": {
"iname": "zlib-ng",
@@ -19185,7 +19185,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 86
"dependientes_total": 87
},
"zola": {
"iname": "zola",
+104 -22
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 1045,
"nodes": 1047,
"sealed": 1045,
"recipes": 1048,
"nodes": 1050,
"sealed": 1048,
"ajeno": 2
},
"by_class": {
"ajeno": 2,
"c": 400,
"c": 403,
"go": 362,
"gui": 44,
"kernel": 6,
@@ -21,7 +21,7 @@
"ajeno": 1
},
"incoming-kde": {
"sealed": 193,
"sealed": 196,
"ajeno": 1
}
},
@@ -37,9 +37,9 @@
"sealed": 76
},
"escritorio-kde": {
"raices": 48,
"clausura": 299,
"sealed": 298,
"raices": 49,
"clausura": 302,
"sealed": 301,
"ajeno": 1
},
"escritorio-mirada": {
@@ -3383,7 +3383,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 10
"dependientes_total": 11
},
"ddh": {
"iname": "ddh",
@@ -4419,7 +4419,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 67
"dependientes_total": 68
},
"expat-shared": {
"iname": "expat-shared",
@@ -5604,7 +5604,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 107
"dependientes_total": 108
},
"gh": {
"iname": "gh",
@@ -6130,7 +6130,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 33
"dependientes_total": 35
},
"glib-shared": {
"iname": "glib-shared",
@@ -13723,7 +13723,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 113
"dependientes_total": 115
},
"libffi-shared": {
"iname": "libffi-shared",
@@ -13832,6 +13832,34 @@
],
"dependientes_total": 17
},
"libgudev": {
"iname": "libgudev",
"version": "238",
"link": "static",
"compiler": "zig-cc",
"deps": [
"glib",
"libffi",
"libudev-zero",
"meson",
"pcre2",
"pkgconf",
"python3",
"samurai",
"zlib"
],
"cls": "c",
"queue": "incoming-kde",
"foreign": false,
"hash": "b3:87ca5e730612988bf88d04e4a0b50dc0aa7a4ce38845c059bd9e983d2d58b8a8",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 1
},
"libinput": {
"iname": "libinput",
"version": "1.28.1",
@@ -14575,7 +14603,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 46
"dependientes_total": 48
},
"libunibreak": {
"iname": "libunibreak",
@@ -15848,7 +15876,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 125
"dependientes_total": 127
},
"micro": {
"iname": "micro",
@@ -17761,7 +17789,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 85
"dependientes_total": 87
},
"pcre2-shared": {
"iname": "pcre2-shared",
@@ -18091,7 +18119,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 397
"dependientes_total": 400
},
"plasma-activities": {
"iname": "plasma-activities",
@@ -18919,7 +18947,7 @@
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 2
"dependientes_total": 3
},
"polkit-qt-1": {
"iname": "polkit-qt-1",
@@ -19650,7 +19678,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 316
"dependientes_total": 318
},
"qcoro": {
"iname": "qcoro",
@@ -20875,7 +20903,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 268
"dependientes_total": 270
},
"sassc": {
"iname": "sassc",
@@ -23225,6 +23253,26 @@
],
"dependientes_total": 0
},
"udev-pc": {
"iname": "udev-pc",
"version": "1.0.4",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"pkgconf"
],
"cls": "c",
"queue": "incoming-kde",
"foreign": false,
"hash": "b3:fa880b5c36fbbaa19be875fc526b833ceb7ad6a1817de92bf6f41f5d4c671d5f",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 1
},
"umoci": {
"iname": "umoci",
"version": "0.6.0",
@@ -23297,6 +23345,40 @@
"perfiles": [],
"dependientes_total": 0
},
"upower": {
"iname": "upower",
"version": "1.90.10",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"dbus-shared",
"expat",
"gettext-tiny",
"glib",
"libffi",
"libgudev",
"libudev-zero",
"meson",
"pcre2",
"pkgconf",
"polkit",
"python3",
"samurai",
"udev-pc",
"zlib-shared"
],
"cls": "c",
"queue": "incoming-kde",
"foreign": false,
"hash": "b3:bf6a8d8f602ccb7ee436443c1098cfdd76d31084346a9b15601d7a67c2f1a8b8",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 0
},
"usbutils": {
"iname": "usbutils",
"version": "019",
@@ -25048,7 +25130,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 115
"dependientes_total": 116
},
"zlib-ng": {
"iname": "zlib-ng",
@@ -25090,7 +25172,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 86
"dependientes_total": 87
},
"zola": {
"iname": "zola",
+13 -13
View File
@@ -3137,7 +3137,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 10
"dependientes_total": 11
},
"ddh": {
"iname": "ddh",
@@ -4102,7 +4102,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 67
"dependientes_total": 68
},
"expat-shared": {
"iname": "expat-shared",
@@ -5164,7 +5164,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 107
"dependientes_total": 108
},
"gh": {
"iname": "gh",
@@ -5690,7 +5690,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 33
"dependientes_total": 35
},
"glib-shared": {
"iname": "glib-shared",
@@ -9434,7 +9434,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 113
"dependientes_total": 115
},
"libffi-shared": {
"iname": "libffi-shared",
@@ -9940,7 +9940,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 46
"dependientes_total": 48
},
"libunibreak": {
"iname": "libunibreak",
@@ -11025,7 +11025,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 125
"dependientes_total": 127
},
"micro": {
"iname": "micro",
@@ -12625,7 +12625,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 85
"dependientes_total": 87
},
"pcre2-shared": {
"iname": "pcre2-shared",
@@ -12887,7 +12887,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 397
"dependientes_total": 400
},
"plow": {
"iname": "plow",
@@ -13312,7 +13312,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 316
"dependientes_total": 318
},
"qrcp": {
"iname": "qrcp",
@@ -13927,7 +13927,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 268
"dependientes_total": 270
},
"sassc": {
"iname": "sassc",
@@ -17732,7 +17732,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 115
"dependientes_total": 116
},
"zlib-ng": {
"iname": "zlib-ng",
@@ -17774,7 +17774,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 86
"dependientes_total": 87
},
"zola": {
"iname": "zola",
+9 -9
View File
@@ -5604,7 +5604,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 33
"dependientes_total": 34
},
"glib-shared": {
"iname": "glib-shared",
@@ -9317,7 +9317,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 113
"dependientes_total": 114
},
"libffi-shared": {
"iname": "libffi-shared",
@@ -9823,7 +9823,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 46
"dependientes_total": 47
},
"libunibreak": {
"iname": "libunibreak",
@@ -10908,7 +10908,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 125
"dependientes_total": 126
},
"micro": {
"iname": "micro",
@@ -12508,7 +12508,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 85
"dependientes_total": 86
},
"pcre2-shared": {
"iname": "pcre2-shared",
@@ -12770,7 +12770,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 397
"dependientes_total": 399
},
"plow": {
"iname": "plow",
@@ -13195,7 +13195,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 316
"dependientes_total": 317
},
"qrcp": {
"iname": "qrcp",
@@ -13810,7 +13810,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 268
"dependientes_total": 269
},
"sassc": {
"iname": "sassc",
@@ -17301,7 +17301,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 115
"dependientes_total": 116
},
"zlib-ng": {
"iname": "zlib-ng",
+1 -1
View File
@@ -40,7 +40,7 @@
},
"escritorio-kde": {
"grafo": "docs/state/build-state-kde.json",
"nodos": 299,
"nodos": 302,
"en_deuda": 0,
"ondas": 0,
"profundidad": 0,
+53 -14
View File
@@ -80,7 +80,7 @@
"incoming-kde/dbus"
],
"radio": {
"corpus/dbus-shared": 10,
"corpus/dbus-shared": 11,
"corpus/dbus": 6,
"incoming-kde/dbus": 117
}
@@ -104,7 +104,7 @@
],
"radio": {
"corpus/expat-shared": 2,
"corpus/expat": 67
"corpus/expat": 68
}
},
{
@@ -165,7 +165,7 @@
],
"radio": {
"corpus/glib-shared": 25,
"corpus/glib": 33,
"corpus/glib": 35,
"incoming-gnome/glib-introspected": 30,
"incoming-gnome/glib": 46
}
@@ -204,7 +204,7 @@
],
"radio": {
"corpus/libffi-shared": 10,
"corpus/libffi": 113
"corpus/libffi": 115
}
},
{
@@ -385,7 +385,7 @@
],
"radio": {
"corpus/pcre2-shared": 26,
"corpus/pcre2": 85
"corpus/pcre2": 87
}
},
{
@@ -454,8 +454,8 @@
"corpus/zlib-shared"
],
"radio": {
"corpus/zlib-shared": 86,
"corpus/zlib": 115
"corpus/zlib-shared": 87,
"corpus/zlib": 116
}
},
{
@@ -489,7 +489,7 @@
"corpus/itstool"
],
"radio": {
"corpus/gettext-tiny": 107,
"corpus/gettext-tiny": 108,
"corpus/itstool": 1
},
"carriers": [
@@ -532,14 +532,17 @@
"sha": "10148cfd6047d387",
"nudos": [
"corpus/libudev-zero",
"incoming-gnome/udev-pc"
"incoming-gnome/udev-pc",
"incoming-kde/udev-pc"
],
"radio": {
"corpus/libudev-zero": 46,
"incoming-gnome/udev-pc": 4
"corpus/libudev-zero": 48,
"incoming-gnome/udev-pc": 4,
"incoming-kde/udev-pc": 1
},
"carriers": [
"incoming-gnome/udev-pc"
"incoming-gnome/udev-pc",
"incoming-kde/udev-pc"
]
},
{
@@ -564,6 +567,30 @@
}
],
"sombras": [
{
"nombre": "libgudev",
"colas": [
"incoming-gnome",
"incoming-kde"
],
"redundante": true,
"radio": {
"incoming-gnome/libgudev": 6,
"incoming-kde/libgudev": 1
}
},
{
"nombre": "udev-pc",
"colas": [
"incoming-gnome",
"incoming-kde"
],
"redundante": true,
"radio": {
"incoming-gnome/udev-pc": 4,
"incoming-kde/udev-pc": 1
}
},
{
"nombre": "cairo-shared",
"colas": [
@@ -610,7 +637,7 @@
],
"redundante": false,
"radio": {
"corpus/glib": 33,
"corpus/glib": 35,
"incoming-gnome/glib": 46
}
},
@@ -891,7 +918,7 @@
"redundante": false,
"radio": {
"incoming-gnome/polkit": 5,
"incoming-kde/polkit": 2
"incoming-kde/polkit": 3
}
},
{
@@ -908,6 +935,18 @@
"incoming-kde/pulseaudio": 4
}
},
{
"nombre": "upower",
"colas": [
"incoming-gnome",
"incoming-kde"
],
"redundante": false,
"radio": {
"incoming-gnome/upower": 0,
"incoming-kde/upower": 0
}
},
{
"nombre": "util-linux",
"colas": [
+127 -125
View File
@@ -2,37 +2,135 @@
"schema": "hammer-keystones/3",
"nudos": [
{
"nudo": "corpus/make",
"gateo_total": 524,
"nudo": "incoming-kde/libgudev",
"gateo_total": 1,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": true
},
{
"nudo": "corpus/make",
"gateo_total": 526,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/binutils",
"gateo_total": 446,
"gateo_en_deuda": 0,
"gateo_total": 448,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/pkgconf",
"gateo_total": 438,
"gateo_en_deuda": 0,
"gateo_total": 441,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/zlib",
"gateo_total": 379,
"gateo_en_deuda": 0,
"gateo_total": 381,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/perl",
"gateo_total": 375,
"gateo_en_deuda": 0,
"gateo_total": 377,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/xz-shared",
"gateo_total": 356,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/bzip2-shared",
"gateo_total": 355,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/ncurses-shared",
"gateo_total": 355,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/readline-shared",
"gateo_total": 354,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/openssl-threads",
"gateo_total": 353,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/sqlite-shared",
"gateo_total": 353,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/python3",
"gateo_total": 352,
"gateo_en_deuda": 1,
"exclusivo": 1,
"en_deuda": false
},
{
"nudo": "corpus/samurai",
"gateo_total": 337,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/meson",
"gateo_total": 314,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/libffi",
"gateo_total": 248,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/pcre2",
"gateo_total": 220,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/libudev-zero",
"gateo_total": 91,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/glib",
"gateo_total": 82,
"gateo_en_deuda": 1,
"exclusivo": 0,
"en_deuda": false
},
@@ -43,76 +141,6 @@
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/xz-shared",
"gateo_total": 354,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/bzip2-shared",
"gateo_total": 353,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/ncurses-shared",
"gateo_total": 353,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/readline-shared",
"gateo_total": 352,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/openssl-threads",
"gateo_total": 351,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/sqlite-shared",
"gateo_total": 351,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/python3",
"gateo_total": 350,
"gateo_en_deuda": 0,
"exclusivo": 1,
"en_deuda": false
},
{
"nudo": "corpus/samurai",
"gateo_total": 335,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/meson",
"gateo_total": 312,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/libffi",
"gateo_total": 246,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/bison",
"gateo_total": 223,
@@ -120,16 +148,9 @@
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/pcre2",
"gateo_total": 218,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/expat",
"gateo_total": 211,
"gateo_total": 212,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
@@ -269,20 +290,20 @@
},
{
"nudo": "corpus/gettext-tiny",
"gateo_total": 130,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/linux-headers",
"gateo_total": 126,
"gateo_total": 131,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "incoming-kde/dbus",
"gateo_total": 127,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/linux-headers",
"gateo_total": 126,
"gateo_en_deuda": 0,
"exclusivo": 0,
@@ -381,7 +402,7 @@
},
{
"nudo": "corpus/zlib-shared",
"gateo_total": 114,
"gateo_total": 115,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
@@ -428,20 +449,6 @@
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/libudev-zero",
"gateo_total": 89,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/glib",
"gateo_total": 80,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "incoming-kde/util-linux",
"gateo_total": 80,
@@ -486,14 +493,14 @@
},
{
"nudo": "corpus/pcre2-shared",
"gateo_total": 55,
"gateo_total": 56,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "corpus/glib-shared",
"gateo_total": 54,
"gateo_total": 55,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
@@ -553,21 +560,16 @@
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
},
{
"nudo": "incoming-gnome/glib",
"gateo_total": 46,
"gateo_en_deuda": 0,
"exclusivo": 0,
"en_deuda": false
}
],
"en_deuda": 0,
"en_deuda": 1,
"camino_critico": {
"con_datos": true,
"segundos": 0,
"pasos": 0,
"cobertura": "0/0",
"secuencia": []
"segundos": 45.0,
"pasos": 1,
"cobertura": "0/1",
"secuencia": [
"incoming-kde/libgudev"
]
}
}
+10
View File
@@ -248,6 +248,16 @@ paquetes = [
# b3:98ad44a5 desde `incoming-gnome`/`incoming-cosmic`, 0 rebuilds en sus 4 consumidores) para que
# la alcancen las cuatro imágenes.
"breeze-icons", "hicolor-icon-theme",
# ── ENERGÍA: sin esto la imagen NO TIENE BATERÍA (añadido 2026-09-09) ─────────────────────────
# ⚠ El perfil declaraba `powerdevil` —el gestor de energía de Plasma— pero NO a upower, que es
# con quien powerdevil habla para leer la batería y aplicar perfiles de energía. Medido: `upower`
# no estaba ni en esta cola ni en el corpus, sólo en la de GNOME, y las colas no se ven entre sí.
# En un portátil eso es un escritorio sin indicador de batería, y el arranque no falla ⇒ no se ve
# hasta usarlo. Es el mismo tipo de hueco que las fuentes de GNOME o el «abrir con» vacío.
# La receta es una VARIANTE con `-Dintrospection=disabled`: GNOME la necesita encendida porque su
# shell hace `imports.gi.UPowerGlib`, pero powerdevil habla D-Bus con `org.freedesktop.UPower` y
# no toca el typelib. Apagarla evita copiar cuatro recetas más de introspección a esta cola.
"upower",
]
[perfil.escritorio-gnome]
+39
View File
@@ -0,0 +1,39 @@
# ⚠ COPIA EN LA COLA KDE (2026-09-09), y NO es lo mismo que la de GNOME aunque el texto sea igual.
# Las colas no se ven entre sí (HERMANO→corpus), así que `upower` en KDE necesita una acá.
# ⚠ Y el ARTEFACTO ES DISTINTO a propósito: `glib` existe en las DOS colas y son recetas distintas.
# Desde `incoming-gnome/` esto se construye contra la glib de GNOME; desde acá, contra la del
# corpus (KDE no tiene glib hermana). Medido: promoverla al corpus le cambiaba el hash y habría
# arrastrado a GNOME a la glib del corpus — el cuadro de las «dos glib» que este repo ya pagó.
# Por eso se COPIA y no se promueve.
# libgudev 238 — envoltorio GObject sobre libudev (GUdevClient/GUdevDevice: enumerar dispositivos y
# escuchar uevents con el bucle de GLib en vez de a mano).
#
# La piden DOS de la onda 3, y por eso va antes que colord: mutter por su opción `udev`, que es la
# que necesita el backend NATIVO (KMS/DRM) —o sea, la que hace que mutter sea un compositor de
# verdad y no sólo un cliente anidado— y colord, que la exige incondicionalmente (gudev-1.0).
#
# libudev lo provee libudev-zero, ya en el corpus y sellado (libudev.pc + libudev.a). Ojo con el
# gotcha ya conocido de este frente: eudev y libudev-zero PISAN el mismo .pc y el mismo .so — acá se
# declara libudev-zero explícitamente para que no haya duda de cuál entra en el cierre.
#
# Feature-minimal: introspection/vapi/tests disabled (tests piden umockdev), gtk_doc off.
name = "libgudev"
version = "238"
license = "LGPL-2.1-or-later"
[source]
tarball = "https://download.gnome.org/sources/libgudev/238/libgudev-238.tar.xz"
sha256 = "61266ab1afc9d73dbc60a8b2af73e99d2fdff47d99544d085760e4fa667b5dd1"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "static"
[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=disabled -Dvapi=disabled -Dtests=disabled -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"
[deps]
build = ["meson", "samurai", "python3", "pkgconf", "glib", "libudev-zero", "libffi", "pcre2", "zlib"]
+53
View File
@@ -0,0 +1,53 @@
# ⚠ COPIA EN LA COLA KDE (2026-09-09). El original vive en `incoming-gnome/`, y las colas NO se ven
# entre sí: una receta resuelve HERMANO→corpus y nunca de reojo a otra cola. `upower` la necesita
# para que KDE tenga batería y perfiles de energía (powerdevil habla con upower por D-Bus).
# Sus deps son sólo `pkgconf`, que está en el corpus ⇒ **el ArtifactHash es el MISMO que el de la
# copia de GNOME** (verificado): un solo artefacto en el store, cero builds nuevos.
# 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"
license = "ISC"
[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"]
+74
View File
@@ -0,0 +1,74 @@
# ⚠ VARIANTE PARA LA COLA KDE (2026-09-09) — el original está en `incoming-gnome/`.
#
# POR QUÉ EXISTE. La imagen de KDE declara `powerdevil` pero NO traía upower, y powerdevil es quien
# habla con él para la BATERÍA y los perfiles de energía. Medido el 2026-09-09: `upower` no está en
# la cola de KDE ni en el corpus, así que en un portátil la imagen quedaba sin indicador de batería
# —y sin que nada fallara al arrancar, que es el modo de fallo caro—. Las colas no se ven entre sí
# (HERMANO→corpus, nunca de reojo a otra cola), de ahí la copia.
#
# ⚠ Y LA DIFERENCIA CON LA DE GNOME NO ES COSMÉTICA: `-Dintrospection=disabled`.
# GNOME la necesita ENCENDIDA porque su shell hace `imports.gi.UPowerGlib` desde JavaScript — o sea
# que carga el typelib. **powerdevil no**: habla D-Bus con `org.freedesktop.UPower`, que es la
# interfaz de red del demonio y no tiene nada que ver con la introspección.
# Apagarla saca CUATRO recetas de la frontera —gobject-introspection, gi-foreign-girs,
# glib-introspected y py3-setuptools— que sólo viven en la cola de GNOME y habría que copiar acá.
# Es la diferencia entre 3 recetas y 7.
# upower 1.90.10 — el servicio de energía (batería, carga, suspensión por batería crítica) y su
# librería cliente `libupower-glib`, de donde sale el typelib `UPowerGlib-1.0`.
#
# POR QUÉ ENTRA: gnome-shell lo importa desde JavaScript sin condicional
# (`js/misc/dependencies.js`: `import 'gi://UPowerGlib?version=1.0'`). O sea que **es dep de RUNTIME
# del shell** aunque no aparezca en su meson.build — el indicador de batería del panel se apoya en
# esto. Se destapó arrancando la sesión, no compilando.
#
# FUENTE: el archivo de gitlab.freedesktop.org y no `upower.freedesktop.org/releases/`, que hoy sirve
# un índice generado por `tree` sin los tarballs de la serie 1.90. Es el mismo patrón que ya usan
# cairo, libdrm, libinput, pixman y modemmanager en este repo.
#
# LAS TRES PERILLAS QUE HAY QUE FIJAR A MANO, y las tres por el mismo motivo — el `auto` de upower
# significa «preguntale a un pkg-config de systemd», que acá no existe:
#
# -Dudevrulesdir / -Dudevhwdbdir: con `auto` hace `udev_dep.get_variable(pkgconfig: 'udev_dir')`
# (meson.build:97 y :103). Nuestro `udev-pc` declara la variable **`udevdir`**, no `udev_dir` —
# el nombre con guión bajo es de systemd-udev; el sin guión es el histórico de eudev, que es el que
# copiamos. En vez de tocar `udev-pc` (que arrastraría a libudev-zero y sus 51 dependientes) se
# fijan los dos directorios acá, que es lo que la opción existe para permitir.
#
# -Dsystemdsystemunitdir=no: con la cadena vacía hace `dependency('systemd')` DURA
# (meson.build:120-122). El valor `no` está contemplado por upstream y saltea la instalación de la
# unit (src/meson.build:107). Acá PID1 es arje-zero.
#
# -Dintrospection=enabled es el punto de todo esto. `-Didevice=disabled` saca libimobiledevice (el
# soporte de batería de iPhone), que no está en el corpus. `-Dpolkit=enabled` porque polkit YA está
# sellada y es lo que decide quién puede suspender.
#
# ISLA DINÁMICA: el typelib nombra `libupower-glib.so.3` y gjs la dlopea.
name = "upower"
version = "1.90.10"
license = "GPL-2.0-or-later"
[source]
tarball = "https://gitlab.freedesktop.org/upower/upower/-/archive/v1.90.10/upower-v1.90.10.tar.gz"
sha256 = "7fcd51bece2526dbee5170feb3ffd1adab5b0cd023575f1fd119d969b73f4b90"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
configure = '''
set -e
PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output \
--prefix=/usr --buildtype=release --wrap-mode=nodownload \
-Ddefault_library=both -Dos_backend=linux -Dintrospection=disabled \
-Didevice=disabled -Dpolkit=enabled -Dman=false -Dgtk-doc=false \
-Dudevrulesdir=/usr/lib/udev/rules.d -Dudevhwdbdir=/usr/lib/udev/hwdb.d \
-Dsystemdsystemunitdir=no -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]
# Sin las cuatro de introspección: las saca `-Dintrospection=disabled` (ver cabecera).
build = ["meson", "samurai", "python3", "pkgconf", "gettext-tiny", "glib", "libgudev", "udev-pc", "libudev-zero", "polkit", "libffi", "pcre2", "zlib-shared", "expat", "dbus-shared"]