Files
Sergio 0e35652fb1 un solo NetworkManager (y KDE recupera WiFi) + upower al corpus sin arrastrar polkit
── 1. Se RETIRA incoming-kde/networkmanager.toml ───────────────────────────────────────────────
  networkmanager-qt  b3:78bbdcda00d758fb3cc3a0be7da6a67395dfbe0e4d55c5d8e5cf8afaf728ff72
  plasma-nm          b3:496a9ff7794ae5d89ac2842bdfbca38c25c91df37465a049db7cf75ee0041b82

Ayer se promovió NetworkManager al corpus CON WiFi porque la variante de KDE iba con -Dwifi=false,
y quedaron dos. Esto cierra el arco: retirada la de la cola, `networkmanager-qt` resuelve al PADRE
y la distro tiene UNO solo. Consecuencia concreta: **KDE pasa a tener WiFi**, porque su applet
hablaba con un demonio construido sin soporte inalámbrico.

Medido con `yupana radio` antes de borrar: 2 rebuilds (networkmanager-qt, plasma-nm), los dos en
la cola KDE. Y comprobado sobre el ARTEFACTO del corpus que publica lo que nm-qt pide —`libnm.pc`
y `usr/include/libnm`— antes de quitarle el suelo. Los dos sellan.

── 2. upower al corpus: COSMIC dibujaba una batería sin nadie que se la contara ────────────────
  libgudev  b3:87ca5e73…  ·  udev-pc  b3:fa880b5c…   (hash IDÉNTICO desde las dos partes ⇒ cache-hit)
  upower    b3:c82e655ff7011150f21f9413433c518f12c827c52ecf6f9fc3484f75d85c155c

Ayer escribí que esta cadena eran «3 promociones, una de ellas polkit, decisión de arquitectura».
Fui a mirar y polkit SALE de la ecuación con una perilla: la variante de KDE va `-Dpolkit=enabled`
«porque polkit YA está sellada» —cierto EN ESA COLA y falso desde el corpus—, y apagarlo cuesta
poco medido en FUNCIÓN: polkit en upower sólo gobierna las acciones privilegiadas (suspender e
hibernar por org.freedesktop.UPower, además deprecadas: hoy eso lo hace logind). Reportar batería,
carga, tiempo restante y línea de corriente NO pasa por polkit, que es justo lo que COSMIC quiere.

Se corrigió además la frase del comentario heredado que decía `-Dpolkit=enabled` al lado de un flag
que ahora dice `disabled`: una nota que desmiente al código de al lado es peor que no tener nota.
Y se le añadió su [[service]] (el corpus no lo traía; el label/id son los mismos que en GNOME a
propósito: el ULID identifica al SERVICIO, no al artefacto). No mueve el hash.

Comprobadas las NEEDED de upowerd con provee.py: libupower-glib, libffi.so.8, libz.so.1,
libudev.so.1 — las cuatro las publica el corpus y ya estaban en [deps]. Sin NEEDED colgante.

── 3. targets.toml ─────────────────────────────────────────────────────────────────────────────
  escritorio-kde     servicios += NetworkManager  (llegaba por clausura de plasma-nm y NADIE lo
                                                   arrancaba: el applet sobre un demonio apagado)
  escritorio-cosmic  paquetes  += upower · servicios += upowerd

⚠ Y se CORRIGE la nota de ayer que decía «NO declarar networkmanager en escritorio-kde porque
plasma-nm ya arrastra la variante de la cola». Ya no hay variante de cola.
2026-09-13 21:15:14 +00:00

66 lines
3.8 KiB
TOML

# upower 1.90.10 — **la variante del CORPUS**: el demonio que reporta batería, carga y estado de
# energía por D-Bus. Es lo que alimenta el indicador de batería de un escritorio.
#
# ══ POR QUÉ EXISTE ESTA COPIA (2026-09-13) ═════════════════════════════════════════════════════
# El barrido de servicios midió que **`escritorio-cosmic` dibuja un indicador de batería y NO tiene
# `upowerd`** en su clausura: el applet existe y no tiene de dónde leer. La receta vivía en
# `incoming-kde` y en `incoming-gnome` —las dos inalcanzables desde COSMIC, que es una cola
# hermana— así que la copia va al corpus, el único sitio desde el que las cuatro imágenes la ven.
#
# ══ EL CAMBIO QUE HACE QUE LA CADENA CIERRE: `-Dpolkit=disabled` ═══════════════════════════════
# La variante de KDE va con `-Dpolkit=enabled` «porque polkit YA está sellada» — cierto **en esa
# cola**. Desde el corpus, `polkit` NO se alcanza, y promoverlo sería meter un polkit de verdad al
# lado de `arje-polkit-compat`: una decisión de arquitectura, no un paso de este barrido.
#
# Apagarlo cuesta poco y conviene saber QUÉ cuesta: polkit en upower sólo gobierna las acciones
# PRIVILEGIADAS (suspender/hibernar por `org.freedesktop.UPower`), que además están deprecadas —
# hoy eso lo hace logind. **Reportar batería, carga, tiempo restante y estado de la línea de
# corriente no pasa por polkit**, y es exactamente para lo que COSMIC lo quiere. Con esto la cadena
# es `libgudev` + `udev-pc` + `upower`, y las dos primeras sellan con hash IDÉNTICO desde las dos
# partes ⇒ entran por cache-hit.
#
# ⚠ Hay tres variantes vivas (corpus, kde, gnome) y no colisionan: ninguna imagen hidrata dos.
# La de GNOME va con introspección (gjs dlopea `libupower-glib.so.3`); ésta no la necesita.
#
# Lo que sigue es la documentación de la variante de KDE, de la que ésta es copia.
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=disabled -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", "libffi", "pcre2", "zlib-shared", "expat", "dbus-shared"]
# El demonio. Mismo `label` e `id` que la variante de GNOME a propósito: es EL MISMO servicio
# lógico, y el id (ULID) del SDD 30 identifica al servicio, no al artefacto que lo trae. Ninguna
# imagen hidrata dos upower, así que no hay ambigüedad.
# ⚠ Declararlo NO lo enciende: falta que el perfil lo habilite. Ver `escritorio-cosmic`.
[[service]]
label = "upowerd"
id = "01HQAR53D4M2NBV8KZTYXFQA24"
exec = "/usr/libexec/upowerd"
scope = "system"
restart = { initial_ms = 500, max_ms = 20000 }