🔇 wireplumber: construido, corriendo… y NO era el bloqueo
b3:b8f3baf0, selló a la primera. Arranca desde cosmic-start ("wireplumber OK (pid
192) — hay gestor de sesión"), se conecta al grafo (dos clientes en wpctl status) y
wpctl pasa a mostrar una sección Video que antes no existía.
Y el Start de ScreenCast SIGUE sin Response a los 60s. Mismo resultado exacto.
LA HIPÓTESIS QUEDA MATADA POR MEDICIÓN. "Falta el gestor de sesión que mueva el nodo
de Paused a Streaming" era mía y era razonable; no era cierta. Queda escrita junto a
su refutación porque una hipótesis descartada CON EVIDENCIA vale más que una lista de
sospechosos: acota el próximo paso a lo que queda, que es el backend mismo.
El dato nuevo, que es por dónde seguir: con wireplumber corriendo, `wpctl status`
lista `Video → Streams` VACÍO durante el handshake. O sea que el nodo
`cosmic-screencast` que SÍ existe en `pw-cli ls Node` no llega a wireplumber como
stream gestionado. Próximo movimiento: RUST_LOG=trace sobre screencast_thread, no
otra dep.
── por qué receta propia y no la de GNOME ──────────────────────────────────────
La de incoming-gnome funciona pero NEEDea libglib/libgobject/libpipewire de la ISLA
DINÁMICA de GNOME: traerla metería una segunda glib y una segunda pipewire en la
imagen. De 19 deps, 14 dan hash idéntico; las que divergen divergen a propósito —
sobre todo `pipewire`, que acá apunta a la de COSMIC (338d1d8c), la que el escritorio
realmente ARRANCA. Un gestor de sesión contra otra pipewire que la que corre no
gestiona nada.
El cambio de fondo es glib → glib-shared. COSMIC usa la glib ESTÁTICA del corpus, que
le alcanza al portal porque es un ejecutable. Acá no: wireplumber produce un .so y 17
módulos, y libglib-2.0.a tiene 44.275 reubicaciones R_X86_64_32/32S ⇒ no es PIC. La
regla del frente GNOME (readelf -r ANTES de gastar el build) ahorró uno.
Y la salida no fue una campaña nueva sino una MEDICIÓN: incoming-kde/glib-shared
copiada a esta cola resuelve al MISMO hash (0584ce1f) y ya estaba sellada ⇒ cero
rebuild. Idem pcre2-shared, lua y libelogind. Las dos glib coexisten sin pisarse (.a
y .so son ficheros distintos) y el portal conserva sus 3 NEEDED.
escritorio-cosmic: 84 → 89 recetas, 0 faltantes.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -170,6 +170,34 @@ else
|
||||
say "!! sin /usr/bin/pipewire — ScreenCast no va a poder crear stream"
|
||||
fi
|
||||
|
||||
# ── EL GESTOR DE SESIÓN: wireplumber ────────────────────────────────────────────────────────────
|
||||
# pipewire se construye con `-Dsession-managers=[]`, o sea que arranca y sirve pero NO TIENE
|
||||
# POLÍTICA: nada decide qué es entrada, qué es salida, ni quién mueve un nodo de `Paused` a
|
||||
# `Streaming`. wireplumber es esa política, escrita en Lua.
|
||||
#
|
||||
# Por qué está acá y no antes: **necesita el socket de pipewire ya abierto**. Se lanza después a
|
||||
# propósito, no por orden estético — un gestor de sesión sin demonio que gestionar sale con error.
|
||||
#
|
||||
# Acá NO se puede esperar un socket, porque wireplumber no abre ninguno: es un CLIENTE de pipewire,
|
||||
# no un servidor. Lo que dice que hizo su trabajo es que aparezca como cliente en el grafo
|
||||
# (`pw-cli ls Client`), y eso es una medición del sistema, no una condición de arranque. Así que se
|
||||
# espera un instante y se reporta si el proceso sigue vivo — con el log a mano, que es lo que sirve
|
||||
# cuando falla.
|
||||
if [ -x /usr/bin/wireplumber ] && [ -S "$XDG_RUNTIME_DIR/pipewire-0" ]; then
|
||||
/usr/bin/wireplumber >/tmp/wireplumber.log 2>&1 &
|
||||
WP_PID=$!
|
||||
sleep 2
|
||||
if alive $WP_PID; then
|
||||
say "wireplumber OK (pid $WP_PID) — hay gestor de sesión"
|
||||
else
|
||||
say "!! wireplumber MURIÓ:"; dump /tmp/wireplumber.log
|
||||
fi
|
||||
elif [ -x /usr/bin/wireplumber ]; then
|
||||
say "!! wireplumber presente pero sin socket de pipewire — no se lanza"
|
||||
else
|
||||
say "-- sin wireplumber (pipewire sirve, pero sin política de sesión)"
|
||||
fi
|
||||
|
||||
# ── FONDO: color liso, porque la imagen por defecto NO SE PUEDE EMPAQUETAR ────────────────────
|
||||
# El default de cosmic-bg apunta a `/usr/share/backgrounds/cosmic/orion_nebula_nasa_heic0601a.jpg`,
|
||||
# que vive en el repo `cosmic-wallpapers`… en **git-lfs**: el tarball de GitHub pesa 20 KB y trae
|
||||
|
||||
@@ -84,6 +84,11 @@ else
|
||||
# con el bus y el compositor vivos— y sale estática, sin un NEEDED, justamente para que nunca
|
||||
# falle por algo del sistema que está midiendo.
|
||||
recipes/incoming-cosmic/portal-probe.toml
|
||||
# El GESTOR DE SESIÓN de pipewire. Ningún `[deps]` lo alcanza —es un cliente del demonio, no una
|
||||
# librería de nadie— así que es raíz a mano como todo lo que se lanza por PATH. Trae consigo la
|
||||
# glib COMPARTIDA (`glib-shared`), que no es la estática que usa el resto de la cola: wireplumber
|
||||
# produce `.so` y la estática del corpus no es PIC.
|
||||
recipes/incoming-cosmic/wireplumber.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
|
||||
|
||||
Reference in New Issue
Block a user