cosmic: los applets necesitan la libdbus COMPARTIDA, y el linker lo dice una hora tarde

`cosmic-applets` declaraba `dbus` a secas. Alcanza para que el build.rs de libdbus-sys
pase —le basta el .pc, que el paquete del daemon trae— y el fallo salta recién en el
enlace final del multiplexor: 'unable to find dynamic system library dbus-1'. El corpus
sólo empaqueta libdbus-1.a; el .so vive en `dbus-shared`, que es lo que ya declaraban
settings-daemon y pipewire. Era la única receta de la cola que pedía la estática.

De paso, las cuatro piezas que spawnea el PANEL (no cosmic-session) entran como raíces
de hydrate-cosmic.sh: se invocan por AppID, así que ningún grafo de deps las alcanza.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-03 22:32:22 -04:00
co-authored by Claude Opus 5
parent ac68b15b26
commit e99fc836fb
2 changed files with 23 additions and 5 deletions
+13 -5
View File
@@ -91,8 +91,16 @@ cp cosmic-applet-network/data/dbus-1/system.d/*.conf /out/usr/share/dbus-1/syste
'''
[deps]
# `dbus` se suma a las cuatro de todo cliente: los applets de red, bluetooth y status-area hablan
# D-Bus por `libdbus-sys` (FFI a la C), no por zbus como el resto de la suite. Su `build.rs` no da
# error legible — hace `panic!` a secas en la línea 25—, así que el mensaje útil es el nombre del
# crate y no lo que dice.
build = ["libxkbcommon", "pkgconf", "libudev-zero", "libinput", "dbus"]
# `dbus-shared` se suma a las cuatro de todo cliente: los applets de red, bluetooth y status-area
# hablan D-Bus por `libdbus-sys` (FFI a la C), no por zbus como el resto de la suite. Su `build.rs`
# no da error legible — hace `panic!` a secas en la línea 25—, así que el mensaje útil es el nombre
# del crate y no lo que dice.
#
# ⚠ Y tiene que ser la variante COMPARTIDA, no el `dbus` del corpus. Declarar `dbus` alcanza para que
# `build.rs` pase (le basta el `.pc`, y el paquete del daemon lo trae) y el error aparece **una hora
# después, en el enlace final**: `unable to find dynamic system library 'dbus-1'`. El corpus sólo
# empaqueta `libdbus-1.a` ahí; el `.so` vive en `dbus-shared`. Que el build.rs esté contento no dice
# nada sobre si el linker va a encontrar la biblioteca — son dos preguntas distintas y las contesta
# pkg-config una y el linker la otra. El resto de la cola ya lo hacía bien (settings-daemon, pipewire);
# ésta era la única receta de incoming-cosmic que pedía `dbus` a secas.
build = ["libxkbcommon", "pkgconf", "libudev-zero", "libinput", "dbus-shared"]
+10
View File
@@ -41,6 +41,16 @@ else
# ver la tabla de `.expect` del runbook.
recipes/incoming-cosmic/cosmic-settings-daemon.toml
recipes/incoming-cosmic/cosmic-notifications.toml
# Los que el PANEL spawnea (no cosmic-session): un binario multiplexado en veinte symlinks, más
# los tres botones. Sin ellos el panel arranca, dice «Done spawning applets» y NO SE DIBUJA —
# nada que medir, nada que pintar. Invisibles para el grafo por la misma razón que los de arriba:
# se invocan por AppID.
recipes/incoming-cosmic/cosmic-applets.toml
# Los tres que esos botones abren al hacer clic. No matan la sesión si faltan (el botón queda
# muerto), pero un escritorio sin lanzador ni biblioteca de apps no se puede usar.
recipes/incoming-cosmic/cosmic-launcher.toml
recipes/incoming-cosmic/cosmic-app-library.toml
recipes/incoming-cosmic/cosmic-workspaces-epoch.toml
# Ni binario ni librería: DATOS. El tema de iconos de COSMIC — sin él el escritorio no se ve
# «sin iconos», se ve roto, y con el cursor por software ni siquiera hay puntero.
recipes/incoming-cosmic/cosmic-icons.toml