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.
42 lines
2.0 KiB
TOML
42 lines
2.0 KiB
TOML
# jansson 2.14.1 — JSON en C. Entra por OBS: `libobs` la usa para leer/escribir sus perfiles y
|
|
# escenas.
|
|
#
|
|
# CMake y no autotools: el tarball de release trae `configure`, pero la fuente por commit (ADR 0006)
|
|
# NO — `configure` lo genera `autoreconf`, que pediría el stack autotools entero en `[deps]`. El
|
|
# árbol trae `CMakeLists.txt` de primera clase, así que se usa ése y el cierre queda en cmake+ninja.
|
|
#
|
|
# `-DJANSSON_BUILD_DOCS=OFF` porque su default ON invoca sphinx, que no está en el corpus; y
|
|
# `-DJANSSON_WITHOUT_TESTS=ON` para no compilar el árbol de tests, que no aporta al artefacto.
|
|
#
|
|
# ⚠ LA PERILLA ES `JANSSON_BUILD_SHARED_LIBS`, **NO** `BUILD_SHARED_LIBS`. jansson declara la suya
|
|
# propia (`CMakeLists.txt:5`, default OFF) y NO mira la estándar de CMake. Con `-DBUILD_SHARED_LIBS=ON`
|
|
# el build sale con exit 0 y sella un artefacto que trae SÓLO `libjansson.a` — o sea que la receta
|
|
# dice `link = "dynamic"` y el artefacto es estático, y nadie se entera hasta que un `.so` que la
|
|
# consume muere por PIC. Verificado mirando el `usr/lib/` del artefacto, no el código de salida:
|
|
# es la misma familia que el `link=static` que miente por libtool.
|
|
#
|
|
# Fuente por commit: `v2.14.1` es un tag ANOTADO ⇒ esto es el `^{}` pelado.
|
|
name = "jansson"
|
|
version = "2.14.1"
|
|
license = "MIT"
|
|
|
|
[source]
|
|
repo = "https://github.com/akheron/jansson.git"
|
|
commit = "ed5cae4ed0621ef409510f94270c9f8f263736d0"
|
|
|
|
[build]
|
|
compiler = "zig-cc"
|
|
target = "x86_64-linux-musl"
|
|
# DINÁMICO: OBS carga `libobs.so` y sus plugins como objetos compartidos, y una jansson `.a` sin PIC
|
|
# dentro de un `.so` es el fallo que ya costó caro en gdk-pixbuf. Compartida y sin sorpresas.
|
|
link = "dynamic"
|
|
flags = []
|
|
|
|
[build.phases]
|
|
configure = 'cmake -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DJANSSON_BUILD_SHARED_LIBS=ON -DJANSSON_BUILD_DOCS=OFF -DJANSSON_WITHOUT_TESTS=ON -DJANSSON_EXAMPLES=OFF'
|
|
compile = 'cmake --build build'
|
|
install = 'DESTDIR=/out cmake --install build'
|
|
|
|
[deps]
|
|
build = ["cmake", "samurai", "pkgconf"]
|