# cmus 2.12.0 — reproductor de música en terminal. C, con un `configure` PROPIO (no autotools). # # ── POR QUÉ ENTRA ────────────────────────────────────────────────────────────────────────────── # El catálogo cerró el vídeo con `mpv` y no tenía nada para escuchar música: ni reproductor ni # gestor de biblioteca. cmus lo cubre en las cuatro imágenes sin tocar ninguna decisión de # escritorio — es una TUI, no depende del compositor. # # ── EL `configure` NO ES AUTOTOOLS, Y ESO CAMBIA LA SINTAXIS ────────────────────────────────── # Toma asignaciones `clave=valor`, no `--flags`: `prefix=/usr`, `CONFIG_ALSA=y`. Pasarle # `--prefix=/usr` no da un error, lo IGNORA — y el paquete acabaría en /usr/local sin que nada # falle. Es el modo de fallo silencioso de siempre, así que va anotado. # # `CONFIG_PULSE=n`: el corpus tiene `pipewire` (promovida el 2026-09-03) y su capa ALSA # (`-Dpipewire-alsa=enabled`), así que la salida ALSA desemboca en PipeWire igual que hace `mpv`. # `libpulse` del corpus es la variante con la glib ESTÁTICA adentro y no se quiere en un cliente. name = "cmus" version = "2.12.0" license = "GPL-2.0-only" [source] repo = "https://github.com/cmus/cmus" commit = "58d34cf9db5c29e01a985a48a9b6947855cb6cc9" [build] compiler = "zig-cc" target = "x86_64-linux-musl" # ⚠ `dynamic` Y NO ES UNA CONCESIÓN: cmus CARGA SUS FORMATOS POR `dlopen`. El artefacto trae cinco # plugins —`usr/lib/cmus/ip/{wav,cue,ffmpeg}.so` y `usr/lib/cmus/op/{alsa,oss}.so`— y un binario # estático no puede abrirlos: quedaría un reproductor que no reproduce nada. Es la misma razón por # la que `sway` va dinámico (dlopea los drivers DRI de mesa). # La primera versión decía `static` y era MENTIRA MEDIBLE: `scripts/static-audit.sh` la marcó # («dice static, es DINÁMICO → libncursesw.so.6 libc.so») y dejó el audit del cron en rojo. Una # declaración que el build ignora es peor que no declarar, porque las herramientas río abajo la creen. link = "dynamic" [build.phases] configure = './configure prefix=/usr CONFIG_ALSA=y CONFIG_PULSE=n CONFIG_JACK=n CONFIG_AO=n CONFIG_SNDIO=n CONFIG_ROAR=n CONFIG_FFMPEG=y CONFIG_CDIO=n CONFIG_MPRIS=n' compile = 'make' install = 'make DESTDIR=/out install' # ⚠ `ncurses-shared` EN RUNTIME, Y SE DESCUBRIÓ CORRIENDO EL BINARIO. El artefacto sale # `NEEDED libncursesw.so.6` (el resto —ffmpeg, alsa— sí entra estático, son `.a`), y la `ncurses` # canónica del corpus es `--without-shared`: sin declarar la variante `-shared`, la imagen no lleva # ese `.so` y cmus muere en el loader. Es exactamente la fuga que el perfil de sway ya pagó con # zlib/expat/libffi, y no la ve ningún auditor de recetas — sólo `readelf -d` sobre el artefacto. [deps] build = ["ncurses", "ffmpeg", "alsa-lib", "pkgconf"] runtime = ["ncurses-shared"]