Las cuatro no existían en NINGUNA cola (medido cruzando el grafo, no con grep).
Van al corpus y no a una cola porque OBS es una app que quieren las cuatro
imágenes, y una receta resuelve sibling-first y después el catálogo PADRE, nunca
una cola hermana.
Verificadas por CONTENIDO del artefacto, no por exit 0 (regla 3 del repo):
· uthash 5 cabeceras; no compila nada y la fase `compile` dice `true`
explícito, porque que una librería sea sólo cabeceras es un
hecho suyo, no un descuido de la receta.
· nlohmann-json pasa por CMake y no por un `cp` para que instale sus
nlohmann_jsonConfig/Targets.cmake: OBS hace find_package, y
copiar los .hpp a mano dejaría «está pero no lo encuentra».
· jansson libjansson.so.4.
· x264 libx264.so.165 + x264.pc, y `asm: yes` — con SIMD, que es la
lección que ffmpeg acaba de costar hoy.
⚠ jansson trajo su propia trampa: la perilla es JANSSON_BUILD_SHARED_LIBS, NO la
estándar BUILD_SHARED_LIBS de CMake (CMakeLists.txt:5, default OFF). Con la
estándar el build sale exit 0 y sella un artefacto con SÓLO libjansson.a — la
receta diciendo link="dynamic" y el artefacto estático. Se vio mirando usr/lib/
del artefacto, no el código de salida.
52 lines
2.2 KiB
TOML
52 lines
2.2 KiB
TOML
# x264 (rama stable, 2025) — codificador H.264. Entra por OBS: el plugin `obs-x264` hace
|
|
# `find_package(Libx264 REQUIRED)` y `plugins/CMakeLists.txt` lo agrega SIN condicional, así que no
|
|
# hay OBS sin esto.
|
|
#
|
|
# ══ NI TAGS NI RELEASES: SE PINEA UN COMMIT DE `stable` ════════════════════════════════════════
|
|
# x264 no publica releases ni tags; upstream mueve `master` y `stable` y las distros pinean un
|
|
# commit. Acá se pinea el de `stable`, que es la rama que upstream considera apta para consumo. El
|
|
# sha lo vuelve inmutable, que es lo único que el ADR 0006 exige: la fuente tiene que ser la MISMA
|
|
# mañana, no tiene que tener nombre bonito.
|
|
#
|
|
# ══ `configure` PROPIO, NO AUTOTOOLS ═══════════════════════════════════════════════════════════
|
|
# El `configure` de x264 es un script escrito a mano: no acepta `--build/--host` ni las variables de
|
|
# autotools, y toma el compilador por `--extra-cflags`/`CC`. Mismo caso que ffmpeg.
|
|
#
|
|
# `--disable-asm` NO se pone: nasm está en el corpus y un codificador sin SIMD es el error que
|
|
# acabamos de pagar en ffmpeg. Se declara `nasm` en `[deps]` justamente para que el ensamblador esté
|
|
# y la SIMD entre.
|
|
#
|
|
# `--disable-cli`: OBS consume la LIBRERÍA (`libx264.so` + `x264.h` + `x264.pc`); el binario `x264`
|
|
# no lo usa nadie y sólo agrega superficie.
|
|
name = "x264"
|
|
version = "0.165-stable"
|
|
license = "GPL-2.0-or-later"
|
|
|
|
[source]
|
|
repo = "https://code.videolan.org/videolan/x264.git"
|
|
commit = "b35605ace3ddf7c1a5d67a2eb553f034aef41d55"
|
|
|
|
[build]
|
|
compiler = "zig-cc"
|
|
target = "x86_64-linux-musl"
|
|
# DINÁMICO: quien la consume es `obs-x264.so`, un MÓDULO cargado por dlopen. Una x264 `.a` sin PIC
|
|
# dentro de un `.so` es exactamente el cuadro de gdk-pixbuf.
|
|
link = "dynamic"
|
|
flags = []
|
|
|
|
[build.phases]
|
|
configure = '''
|
|
ZW="$PWD/.zwrap"; mkdir -p "$ZW"
|
|
cat > "$ZW/cc" <<'W'
|
|
#!/bin/sh
|
|
exec hammer-zig-cc "$@"
|
|
W
|
|
chmod +x "$ZW/cc"
|
|
CC="$ZW/cc" ./configure --prefix=/usr --enable-shared --disable-cli --disable-opencl
|
|
'''
|
|
compile = 'make -j"$(nproc)"'
|
|
install = 'make DESTDIR=/out install'
|
|
|
|
[deps]
|
|
build = ["nasm", "pkgconf"]
|