Files
takana/recipes/alsa-lib.toml
T
Sergio 032aa02582 lua5.2 5.2.4: mpv gana el OSC — la barra, las estadísticas y la consola
El OSC de mpv es `player/lua/osc.lua`: sin Lua el reproductor anda y responde al teclado pero NO
DIBUJA NADA de interfaz. La `lua` del corpus no sirve — `meson.build:701` acepta 5.1, 5.2 o LuaJIT
y el `lua.pc` genérico va acotado a `>=5.1.0, <5.3.0`; la nuestra es 5.4.8 y entró para wireplumber.

CÓMO CONVIVEN LAS DOS SIN PISARSE, que es lo que hace legítimo tener dos Lua: esta receta instala
**sólo la librería**. Sin `/usr/bin/lua`, sin `luac` y sin `lua.pc` genérico — que son exactamente
los tres ficheros que colisionarían si una imagen hidratara las dos. Las `.so` no colisionan porque
el SONAME lleva la versión, y los headers van a `/usr/include/lua5.2/` porque los de 5.2 y 5.4 se
llaman igual y dicen cosas distintas.

La diferencia con 5.4 que muerde: en 5.2.4 `luaconf.h:43-49` hace que `LUA_USE_LINUX` implique
`LUA_USE_READLINE` (en 5.4 eso vive en el target `linux-readline` del Makefile). Se esquiva
construyendo el target `a` —sólo `liblua.a`— en vez de `all`: `LUA_USE_READLINE` lo consume nada
más que `lua.c`, el binario del REPL, que acá no se compila. Sale gratis y de paso es lo que hace
que no haya `/usr/bin/lua` que colisione.

`-Dlua=lua5.2` y no `auto`: auto recorre ocho nombres de `.pc` y se lleva el primero que encuentre
en el sandbox ⇒ el artefacto dependería de qué otra cosa quedó montada en el lab.

EVIDENCIA, del mpv re-sellado (b3:d9072a10):
  List of enabled features: … libass libplacebo **lua5.2** … wayland
  [cplayer] Set property: user-data/osc/visibility="auto" -> 1
  [cplayer] Done loading scripts.
o sea que el script del OSC no sólo compiló: se carga y corre.

alsa-lib: se corrige el comentario, que decía que las pipewire iban con `-Dpipewire-alsa=disabled`.
Ya no. Y queda escrito el gotcha que costó encontrarlo: el `alsa.conf` que instala carga
`/var/lib/alsa/conf.d`, `/usr/etc/alsa/conf.d` y `/etc/alsa/conf.d`, NO `/usr/share/alsa/alsa.conf.d`,
que es donde meson deja la config del plugin.
2026-09-03 05:07:12 +00:00

48 lines
2.7 KiB
TOML

# ══ COPIA AL CORPUS, hash IDÉNTICO (b3:73fb200a…) ════════════════════════════════════
# El original nació en `incoming-kde/` y ya fue copiado a `incoming-gnome/` y `incoming-cosmic/` por
# la misma razón que sube ahora al corpus: **una receta sólo alcanza su propia cola y el catálogo
# padre**, nunca una cola hermana. `mpv` vive en el corpus y necesita `alsa.pc`.
#
# GRATIS, MEDIDO: su única dep es `pkgconf`, que ya resolvía al catálogo PADRE desde las tres colas
# ⇒ el cierre no cambia y `hammer hash` da el MISMO ArtifactHash a los cuatro ficheros. Un solo
# artefacto en el store, hidrate quien hidrate.
#
# QUÉ SIGNIFICA ESTO PARA EL SONIDO DE VERDAD: el servidor de audio de la distro es PipeWire
# (decisión del usuario, 2026-07-29), y desde 2026-09-03 las tres recetas de pipewire van con
# `-Dpipewire-alsa=enabled` ⇒ **ALSA es la ABI de audio universal de esta distro**. Un cliente ALSA
# que abre "default" desemboca en PipeWire por el plugin `libasound_module_pcm_pipewire.so`, no le
# pelea la tarjeta. Eso es lo que hace que esta receta alcance para una app de audio del corpus sin
# tener que subir `libpipewire` (que vive en las tres colas de escritorio y arrastra glib).
#
# ⚠ OJO con el `alsa.conf` que instala: sus `@hooks` cargan `/var/lib/alsa/conf.d`,
# `/usr/etc/alsa/conf.d` y `/etc/alsa/conf.d` — **NO** `/usr/share/alsa/alsa.conf.d`, que es donde
# meson deja la config del plugin. Por eso las recetas de pipewire tienen que enlazarla a mano: sin
# ese enlace el plugin queda instalado y no lo usa nadie. (El `/usr/etc` sale de que acá el
# `./configure` no pasa `--sysconfdir=/etc`; cambiarlo re-hashearía alsa-lib y sus cuatro copias.)
# alsa-lib 1.2.14 — API de audio del kernel Linux (libasound.so). Campaña KDE (ADR 0011): sustrato de
# PulseAudio → pulseaudio-qt → plasma-pa (el applet de volumen). Primer eslabón de la cadena de AUDIO real
# (hasta ahora el lab sólo tenía libcanberra con backend NULL, sin reproducción).
#
# --disable-python: los bindings pyalsa exigen headers de python + no hacen falta. Sin deps externas.
name = "alsa-lib"
version = "1.2.14"
license = "LGPL-2.1-or-later"
[source]
tarball = "https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.14.tar.bz2"
sha256 = "be9c88a0b3604367dd74167a2b754a35e142f670292ae47a2fdef27a2ee97a32"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --disable-static --disable-python'
compile = 'make -j"$(nproc)"'
install = "make DESTDIR=/out install && find /out -name '*.la' -delete"
[deps]
build = ["pkgconf"]