# ══ COPIA AL CORPUS, hash IDÉNTICO (b3:bfef7bf3…) ════════════════════════════════════ # El original vive en `incoming-kde/` porque entró por kpipewire (grabar streams). Sube al corpus # porque `mpv` lo necesita y una receta del corpus no alcanza una cola hermana. # # GRATIS Y SIN DUPLICAR, medido con `hammer hash` antes de escribir esto: sus dos deps son `pkgconf` # y `zlib-shared`; `incoming-kde/zlib-shared.toml` y `recipes/zlib-shared.toml` son el mismo texto # (difieren en una línea en blanco, que no entra a `hash_inputs`) ⇒ el cierre no cambia y los dos # ficheros dan el MISMO ArtifactHash. Una imagen KDE con mpv adentro hidrata UN ffmpeg. # # ⚠ LO QUE ESTA COPIA HEREDA Y `mpv` PAGA: `--disable-x86asm`. Para kpipewire —que sólo codifica un # stream de escritorio— da igual; para un reproductor de video es la diferencia entre decodificar con # SIMD y decodificar sin ella. Se deja ASÍ A PROPÓSITO: cambiarlo acá produciría un ffmpeg con hash # distinto al de `incoming-kde/`, y entonces sí habría DOS ffmpeg peleando por las mismas rutas en # una imagen KDE. El arreglo correcto no es esta receta sino promover una sola ffmpeg con x86asm y # jubilar la de la cola —cambio con radio propio, que se mide antes de hacerlo. `nasm` ya está en el # corpus para cuando toque. # ffmpeg 7.1 — libavcodec/libavutil/libavformat/libavfilter (+swscale/swresample). Campaña KDE (ADR 0011): # **kpipewire** los exige los cuatro REQUIRED (`pkg_check_modules(AVCodec ... libavcodec REQUIRED)` etc.) # para KPipeWireRecord (grabar streams a fichero), y spectacle linkea K::KPipeWireRecord duro. # # ffmpeg NO usa autotools: trae su propio `configure` con --cc/--ar/--nm/--ranlib. Se le pasan wrappers de # UN SOLO TOKEN (`$PWD/.zwrap/*`): un `--ar="zig ar"` con espacio se ejecutaría como un binario único # (mismo gotcha que el AR de los crates `cc` en las recetas Rust). # # **--disable-autodetect** es clave para el determinismo: sin él, configure escanea el sandbox y activa # libs a discreción. Con él, ffmpeg queda auto-contenido (sus códecs nativos, sin x264/x265/vpx/etc.). # Sin programas (ffmpeg/ffplay/ffprobe) ni doc: kpipewire sólo consume las libs. name = "ffmpeg" version = "7.1" [source] tarball = "https://ffmpeg.org/releases/ffmpeg-7.1.tar.xz" sha256 = "40973d44970dbc83ef302b0609f2e74982be2d85916dd2ee7472d30678a7abe6" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "dynamic" flags = [] [build.phases] configure = ''' ZW="$PWD/.zwrap"; mkdir -p "$ZW" cat > "$ZW/cc" <<'W' #!/bin/sh exec /opt/zig/zig cc -mcpu=baseline "$@" W cat > "$ZW/cxx" <<'W' #!/bin/sh exec /opt/zig/zig c++ -mcpu=baseline "$@" W cat > "$ZW/ar" <<'W' #!/bin/sh exec /opt/zig/zig ar "$@" W cat > "$ZW/ranlib" <<'W' #!/bin/sh exec /opt/zig/zig ranlib "$@" W chmod +x "$ZW/cc" "$ZW/cxx" "$ZW/ar" "$ZW/ranlib" ./configure --prefix=/usr \ --cc="$ZW/cc" --cxx="$ZW/cxx" --ar="$ZW/ar" --ranlib="$ZW/ranlib" \ --enable-shared --disable-static \ --disable-autodetect --disable-doc --disable-programs --disable-debug \ --disable-x86asm ''' compile = 'make -j"$(nproc)"' install = "make DESTDIR=/out install" [deps] build = ["pkgconf", "zlib-shared"]