cosmic: dav1d 1.5.4 sellado (b3:aab7a874) — la feature de cargo la prende OTRO, no el paquete
cosmic-bg declara `image` con default-features=false y sin AVIF, y aun así se compila dav1d-sys: las features de cargo se UNIFICAN en el grafo, así que alcanza con que otro crate del árbol la prenda para que la decisión del que la apagó no mande. 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; no se hizo, porque eso es mentirle al paquete sobre lo que hace. Si el grafo dice que sabe decodificar AVIF, que lo sepa de verdad — y cualquier cosa del corpus que decodifique AV1 va a querer dav1d igual. Dos decisiones del build, las dos leídas del meson.build y no supuestas: nasm es dep REAL (find_program en :536, exige >= 2.14; copiado de la cola GNOME con hash verificado b3:33383070), y default_library=both porque quien consuma dav1d con enlace estático necesita la .a — publicar sólo la .so convierte cualquier link=static río abajo en una etiqueta falsa. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
@@ -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"]
|
||||
Reference in New Issue
Block a user