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 1346Shell 97Rust 63Markdown 571650 Definiciones

⎇ 32627251b1adcc995958bd60e72226040bff6125 recipes/zstd-cli.toml TOML · 55 líneas · 3.0 KB Historia crudo

zstd-cli: la distro comprime todo con zstd y no traía con qué descomprimirlo d3b42f892 · Sergio ·

1# zstd-cli 1.5.7 — la HERRAMIENTA `zstd`, que la receta canónica no produce.
2#
3# ── POR QUÉ EXISTE ──────────────────────────────────────────────────────────────────────────────
4# `recipes/zstd.toml` construye **sólo `lib/`** («build de lib/ (no CLI)», dice su cabecera) porque
5# lo que necesitan sus 13 consumidores —mesa, libadwaita, appstream, rsync, los `zstd-sys` de Rust—
6# es `libzstd.a`. El binario nunca se construyó, y eso dejó un agujero que sólo se ve al instalar la
7# distro en una máquina de verdad:
8#
9#     $ tar --zstd -tf lab-image.tar.zst
10#     tar: unrecognized option: zstd          ← el tar del rootfs es el de busybox
11#     $ zstd --version
12#     sh: zstd: not found
13#
14# **Un takana recién instalado no puede desempacar su propio laboratorio.** La distro comprime todo
15# con zstd (la imagen del lab, el respaldo al Storage Box, el `dd` remoto de una instalación) y no
16# traía con qué descomprimirlo: había que extraer por tubería desde otro hub. Un hub que se instala
17# solo no puede depender de que otro hub le descomprima las cosas (SDD 28 §6.6).
18#
19# Y hay un segundo consumidor: `scripts/respaldo-storagebox.sh` usa `--compress-choice=zstd` —el
20# doble de rendimiento efectivo, medido— que rsync sólo ofrece si lo encuentra al construirse.
21#
22# ── POR QUÉ UNA VARIANTE Y NO AMPLIAR LA CANÓNICA ───────────────────────────────────────────────
23# `zstd` es dep de **13 recetas**, y `mesa` está entre ellas. Ampliar la canónica re-hashea la lib y
24# arrastra en cascada toda esa torre por un binario de 700 K que ninguna de ellas usa. Mismo criterio
25# que las variantes `*-shared` (23 en el corpus): la canónica no se mueve, el nombre es distinto, y
26# cada consumidor toma la que necesita. Acá el eje no es estático/dinámico sino **librería/herramienta**.
27#
28# Radio: cero. Nadie depende de `zstd-cli`; sólo la declara `perfil.base` como raíz.
29
30name    = "zstd-cli"
31version = "1.5.7"
32license = "BSD-3-Clause OR GPL-2.0-only"
33
34[source]
35tarball = "https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz"
36sha256  = "eb33e51f49a15e023950cd7825ca74a4a2b43db8354825ac24fc1b7ee09e6fa3"
37
38[build]
39compiler = "zig-cc"
40target   = "x86_64-linux-musl"
41link     = "static"
42
43# Split de la info de depuración (SDD 23 etapa 4). Entra en `hash_inputs`.
44strip_debug = true
45flags    = []
46
47[deps]
48build = ["make"]
49
50[build.phases]
51# `programs/` construye el ejecutable y enlaza la lib del propio árbol; no hace falta la canónica.
52# HAVE_ZLIB/LZMA/LZ4=0: sin esas deps el Makefile de zstd las detectaría del sysroot del LAB y el
53# binario saldría pidiendo sonames que el artefacto no publica — la fuga de [[needed-colgante]].
54compile = 'make -C programs zstd HAVE_ZLIB=0 HAVE_LZMA=0 HAVE_LZ4=0 CFLAGS="-O3"'
55install = 'mkdir -p /out/usr/bin && cp programs/zstd /out/usr/bin/zstd'