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…
1# pigz 2.8 sobre zlib-rs — la PRUEBA DE CONSUMIDOR del paso 8 del plan, sellada.
2#
3# ── POR QUÉ ESTA VARIANTE EXISTE ────────────────────────────────────────────────────────────────
4# `recipes/zlib-rs.toml` demostró que la lib anda contra un programa de prueba propio. Eso no alcanza
5# para decidir la campaña de las 122 recetas: lo que hay que saber es si un **consumidor de verdad**,
6# con su propio Makefile y su propio uso de la API, compila y CORRE sin tocar su fuente.
7#
8# pigz es el mejor candidato del corpus para eso, y no por ser chico:
9# · usa los RINCONES de zlib, no el `compress2` de manual — `inflateBack`, `inflateBackInit_`,
10# `inflateBackEnd`, `deflatePending`, `deflatePrime`, `crc32_combine`, `deflateSetHeader`.
11# Comprobado que zlib-rs exporta los siete antes de intentar el build.
12# · su producto es un fichero .gz que se puede verificar contra el `pigz` canónico: mismo formato,
13# descomprimible por el otro, y con el CRC que el formato lleva adentro.
14# · viaja en 6 perfiles, así que si el swap anda acá, anda donde importa.
15#
16# ── LO ÚNICO QUE CAMBIA RESPECTO DE `recipes/pigz.toml` ─────────────────────────────────────────
17# 1. `deps.build`: `zlib-rs` en vez de `zlib`. Publica `libz.a` con el mismo nombre, así que el
18# `-lz` del Makefile lo encuentra sin tocar nada.
19# 2. `LIBS` gana `-lunwind`. Es la reserva nº 3 del paso 8: un `staticlib` de Rust arrastra el
20# backtrace de std y sin el unwinder el enlace muere con `undefined symbol: _Unwind_Resume`.
21# Va en `LIBS` y NO en `LDFLAGS` porque el Makefile de pigz pone `$(LDFLAGS)` ANTES de los
22# objetos y `$(LIBS)` al final (línea 15) — en enlace estático el orden decide, y `-lunwind`
23# tiene que ir DESPUÉS de `-lz`, que es quien lo necesita.
24#
25# La fuente, las banderas y el resto de las fases son idénticas a la receta canónica: la comparación
26# vale porque lo único distinto es la lib.
27name = "pigz-zlibrs"
28version = "2.8"
29license = "Zlib"
30
31[source]
32tarball = "https://zlib.net/pigz/pigz-2.8.tar.gz"
33sha256 = "eb872b4f0e1f0ebe59c9f7bd8c506c4204893ba6a8492de31df416f0d5170fd0"
34
35[build]
36compiler = "zig-cc"
37target = "x86_64-linux-musl"
38link = "static"
39flags = []
40
41[build.phases]
42compile = 'make pigz CC="$CC" CFLAGS="-O2 -I/usr/include" LDFLAGS="-static -no-pie -L/usr/lib" LIBS="-lm -lpthread -lz -lunwind"'
43install = 'mkdir -p /out/usr/bin && cp pigz /out/usr/bin/pigz && ln -sf pigz /out/usr/bin/unpigz'
44
45[deps]
46build = ["zlib-rs", "make"]