diff --git a/recipes/incoming-cosmic/cosmic-bg.toml b/recipes/incoming-cosmic/cosmic-bg.toml index f5958b59..a688cc72 100644 --- a/recipes/incoming-cosmic/cosmic-bg.toml +++ b/recipes/incoming-cosmic/cosmic-bg.toml @@ -42,4 +42,7 @@ cd data && find v1 -type f -exec install -Dm0644 {} /out/usr/share/cosmic/com.sy ''' [deps] -build = ["libxkbcommon", "pkgconf"] +# dav1d: NO lo pide cosmic-bg sino la unificación de features de cargo — el crate `image` +# termina con AVIF prendida por otro consumidor del árbol aunque acá esté declarada sin +# defaults. Ver el comentario de recipes/incoming-cosmic/dav1d.toml. +build = ["libxkbcommon", "pkgconf", "dav1d"] diff --git a/recipes/incoming-cosmic/dav1d.toml b/recipes/incoming-cosmic/dav1d.toml new file mode 100644 index 00000000..8aabddbc --- /dev/null +++ b/recipes/incoming-cosmic/dav1d.toml @@ -0,0 +1,41 @@ +# dav1d 1.5.4 — el decodificador AV1 de VideoLAN. Entra por la puerta de atrás: lo pide `dav1d-sys`, +# que llega al grafo de `cosmic-bg` a través del crate `image`. +# +# ── POR QUÉ ESTÁ ACÁ Y NO SE APAGÓ LA FEATURE ─────────────────────────────────────────────────── +# cosmic-bg declara `image` con `default-features = false` y sin AVIF. Igual se compila `dav1d-sys`, +# porque **las features de cargo se UNIFICAN en el grafo**: alcanza con que otro crate del árbol +# —acá, los que traen `image` con sus defaults— la prenda, y la decisión del paquete que la apagó no +# manda. Es el mismo modo de falla que un `.pc Requires` arrastrando una dep que nadie declaró. +# Se podría parchear el Cargo.toml de upstream para cortarlo, pero eso es mentirle al paquete sobre +# lo que hace: si el grafo dice que sabe decodificar AVIF, que lo sepa de verdad. +# +# Y no es una dep de un solo cliente: cualquier cosa del corpus que decodifique AV1 la va a querer. +# +# ── DECISIONES DEL BUILD, LAS DOS MEDIDAS EN EL meson.build ───────────────────────────────────── +# · `nasm` es dep de build REAL, no opcional: con `enable_asm` (el default) `meson.build:536` hace +# `find_program('nasm')` y exige >= 2.14. La alternativa honesta sería `-Denable_asm=false`, que +# deja un decodificador AV1 en C puro — varias veces más lento. nasm ya está sellado en la cola +# GNOME, así que la copia no cuesta un build (hash verificado: b3:33383070). +# · `default_library=both`: dav1d-sys resuelve por pkg-config, y quien lo consuma con enlace ESTÁTICO +# necesita la `.a`. Publicar sólo la `.so` convierte cualquier `link = "static"` río abajo en una +# etiqueta falsa — la deuda que el frente static-audit ya persiguió una vez. +name = "dav1d" +version = "1.5.4" + +[source] +tarball = "https://code.videolan.org/videolan/dav1d/-/archive/1.5.4/dav1d-1.5.4.tar.gz" +sha256 = "a1d5b63d2d38ec9bd03acf643caa51fa22edd1e89c5a109c4807717216bbec07" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" +zig_version = "0.13.0" + +[build.phases] +configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig meson setup output --prefix=/usr --libdir=/usr/lib --buildtype=release --default-library=both -Denable_tools=false -Denable_tests=false" +compile = "ninja -C output" +install = "DESTDIR=/out ninja -C output install" + +[deps] +build = ["meson", "samurai", "python3", "pkgconf", "nasm"] diff --git a/recipes/incoming-cosmic/nasm.toml b/recipes/incoming-cosmic/nasm.toml new file mode 100644 index 00000000..f047e0aa --- /dev/null +++ b/recipes/incoming-cosmic/nasm.toml @@ -0,0 +1,22 @@ +# nasm — ensamblador x86. Herramienta de BUILD de mozjs (algunas rutas de código generan .asm) y de +# varias libs de media más adelante. No está en el rootfs Alpine ni tenía receta. C plano, autotools. +name = "nasm" +version = "2.16.03" + +[source] +tarball = "https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.xz" +sha256 = "1412a1c760bbd05db026b6c0d1657affd6631cd0a63cddb6f73cc6d4aa616148" +strip_components = 1 + +[build] +compiler = "gcc" +target = "x86_64-linux-musl" +link = "static" # binario de herramienta: estático, sin runtime que arrastrar + +[build.phases] +configure = "./configure --build=$CBUILD --host=$CHOST --prefix=/usr" +compile = "make -j\"$(nproc)\"" +install = "make DESTDIR=/out install" + +[deps] +build = ["make"]