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"]