tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1572Shell 203Rust 109Markdown 993728 Definiciones

⎇ 2907e74a8f41b07296102c14adc378cea53f57f9 recipes/json-c.toml TOML · 46 líneas · 2.6 KB Historia crudo

brotli y json-c: selladas y rotas a la vez — las dos baratas del censo, arregladas d4d120a07 · Sergio ·

1# json-c 0.18 — lib C base (de-Alpinizada, Etapa G). compiler=zig-cc (migrado de gcc, matar-gcc 2026-07-16), configure-split, estático.
2name    = "json-c"
3version = "0.18"
4license = "MIT"
5
6[source]
7tarball = "https://s3.amazonaws.com/json-c_releases/releases/json-c-0.18.tar.gz"
8sha256  = "876ab046479166b869afc6896d288183bbc0e5843f141200c677b3e8dfb11724"
9patches = ["cmake-version.patch"]
10
11[build]
12compiler = "zig-cc"
13target   = "x86_64-linux-musl"
14link     = "static"
15flags    = []
16
17[build.phases]
18# ⚠ **`CMAKE_LINK_DEPENDS_USE_LINKER=OFF`: sin esto NO CONSTRUYE HOY.** Estaba sellada y rota a la
19# vez — el artefacto tapaba que el link muere con `Error running link command: Segmentation fault`.
20# La causa no es de esta receta: el `lld` de zig 0.16.0 **segfaultea con el `--dependency-file` que
21# CMake ≥3.27 mete en la línea de enlace**. Bisecado sobre la línea literal de `dwarves`
22# (`build/CMakeFiles/<target>.dir/link.txt`): quitar `-static` no cambia nada, quitar
23# `--dependency-file` lo arregla. Ver `recipes/dwarves.toml` para el detalle.
24configure = 'cmake -B build -DCMAKE_LINK_DEPENDS_USE_LINKER=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release'
25compile   = 'cmake --build build'
26install   = 'DESTDIR=/out cmake --install build'
27
28
29# ── SIN `[deps]` CONSTRUÍA POR ACCIDENTE ────────────────────────────────────────────────────────
30# Esta receta no declaraba NADA, y aun así sellaba — porque el rootfs del laptop trae `cmake` y
31# `make` instalados, así que el sandbox los encontraba «de prestado». En el worker, que no los trae,
32# muere con `/bin/sh: cmake: not found` y **exit 127**, el mismo código que engaña en el caso de
33# meson: se lee como «cmake no está» y lo que falta es DECLARARLO, no instalarlo.
34#
35# Salió a la luz construyendo `sway`, que depende de json-c: el fallo no estaba en sway ni en la
36# receta que se estaba escribiendo, sino en una dep de tercer nivel que llevaba tiempo mintiendo.
37#
38# ⇒ El arreglo es declarar la herramienta, **NUNCA engordar el rootfs del worker**: engordarlo haría
39#   que el build dependa de qué hay instalado en una máquina concreta, que es exactamente lo que
40#   rompe la reproducibilidad. Y una receta que sólo construye en la máquina del autor es una bomba
41#   de relojería: funciona hasta que alguien más la toca.
42#
43# `make` va además de `cmake` porque el generador por defecto de cmake en Unix es «Unix Makefiles»
44# ⇒ `cmake --build build` invoca `make` por debajo.
45[deps]
46build = ["cmake", "make", "pkgconf"]