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