gioser

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 1472Shell 176Rust 106Markdown 953592 Sutichaykuna

⎇ main recipes/pigz-zlibrs.toml TOML · 46 siq'ikuna · 2.7 KB Ñawpa willay ch'uya

paso 8 bis: pigz sobre zlib-rs, sellado — el swap en un consumidor real no costó una línea de su fuente 8836ce706 · Sergio ·

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"]