plan de apps: la decisión de audio queda tomada — opción 1, con la salvedad de pulseaudio

Se cierra la pregunta abierta de anoche. Ganó promover UNA pipewire al corpus, y el documento pasa
a registrar POR QUÉ salió barata (la variante de cosmic ya resolvía todo contra el padre) y por qué
pulseaudio quedó afuera (45.712 vs 2.455.600 bytes de `libpulse-mainloop-glib`: la del corpus se
traga la glib estática).

Queda escrita la regla que decide la próxima promoción: enlazar contra una variante y correr contra
otra es legítimo cuando lo que cruza es un SONAME; lo que no se puede es hidratar dos artefactos
distintos en la misma ruta.
This commit is contained in:
Sergio
2026-09-03 06:18:22 +00:00
parent 39f5007cff
commit 3b305286d5
+29 -4
View File
@@ -33,7 +33,7 @@ Dos columnas, y **la que importa es la segunda**:
| app | faltan | muros | veredicto |
|---|---:|---|---|
| **wf-recorder** | 0 | *(ver ⚠ abajo)* | construible hoy **sin audio**: su captura de sonido es pulse o pipewire, y ninguno de los dos se alcanza desde el corpus. |
| ~~wf-recorder~~ | | — | ✅ **SELLADA 2026-09-03** (b3:25caa359), con audio. Se destrabó al promover pipewire al corpus. Sólo en `escritorio-sway`: captura por `wlr-screencopy` y KWin/mutter no lo implementan. |
| **imv** | 7 | — | barato: los 7 son cargadores de formato opcionales (heif, jxl, freeimage…). Visor de imágenes. |
| **zathura** | 8 | — | lector de PDF; `girara` es su propia lib y ya usa GTK4 en Alpine. |
| **mupdf** | 9 | X11 | el X11 es del visor `mupdf-x11`; el motor y `mupdf-gl` no. Requiere mirar. |
@@ -66,7 +66,8 @@ Ya chocó dos veces en un día: `mpv` terminó con `--ao=alsa` en vez de su sali
(y por eso hubo que dar vuelta `-Dpipewire-alsa` en las tres pipewire, que fue el arreglo correcto
pero fue un rodeo), y ahora `wf-recorder` se queda mudo.
**La decisión que hay que tomar (no es de madrugada):** promover UNA pipewire al corpus. Construye
**DECIDIDA Y HECHA el 2026-09-03 — opción 1, con una salvedad medida.** Lo que sigue queda como
registro de por qué. La decisión era: promover UNA pipewire al corpus. Construye
—el corpus tiene su propia `glib`, `dbus` y `pcre2`— pero el problema no es construirla: es que una
imagen que hidrate `corpus/pipewire` **y** la de su cola pondría dos `libpipewire-0.3.so` distintas
en la misma ruta, que es la enfermedad de las dos glib. Las salidas posibles, para pensarlas
@@ -83,8 +84,32 @@ despierto:
3. **Que las apps multimedia vivan en las colas**, una copia por escritorio. Es lo que la estructura
empuja hoy y es exactamente lo que no queremos para una app que sirve a las cuatro imágenes.
Hasta que eso se decida, `wf-recorder` queda **sin escribir**: un grabador de pantalla mudo es
justamente la clase de media-cosa que conviene no sellar sin que alguien la haya elegido.
### Cómo se resolvió
Ganó la **opción 1**, y salió barata porque la variante de COSMIC ya resolvía su cierre entero
contra el catálogo padre: `recipes/pipewire.toml` sella el MISMO hash que tenía en la cola. Con ella
subieron `libsndfile` y `dbus-shared` (duplicados exactos). 9 copias de cola jubiladas, **5
rebuilds**.
Lo que hizo segura la promoción fue una medición, no un argumento: **ningún pipewire enlaza glib**
—sus NEEDED son `libdbus-1.so.3`, `libpulse.so.0`, `libsndfile.so.1`— así que `libpipewire-0.3.so`
se comparte entre las cuatro imágenes sin repetir el episodio de las dos glib.
**Y la salvedad, que es la parte que valía la pena medir:** `pulseaudio` NO se promovió.
`libpulse-mainloop-glib.so.0.0.6` mide **45.712 bytes** en la variante de GNOME (NEEDED
`libglib-2.0.so.0`) y **2.455.600** en la del corpus, que se traga la glib ESTÁTICA. Esa dentro del
proceso de gnome-shell —que ya carga la glib sombra dinámica— es el cuadro de colord. Las tres
pulseaudio se quedan: son variantes deliberadas. Sin esa salvedad los rebuilds habrían sido 8,
incluido `gnome-shell`.
La regla general que sale de acá, y sirve para la próxima promoción:
> **Enlazar contra una variante y correr contra otra es legítimo cuando lo que cruza es un SONAME**
> (misma ABI). Lo que no se puede es **hidratar dos artefactos distintos en la misma ruta**. Por eso
> pipewire se puede compartir y pulseaudio no.
Consecuencias inmediatas: `mpv` pasó a `-Dpipewire=enabled` (con ALSA detrás, para imágenes sin
demonio) y `wf-recorder` se escribió y selló el mismo día.
## Los dos veredictos que corrigen al ADR