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 1572Shell 203Rust 109Markdown 993728 Definitions

⎇ 0523ea066509b320d491ce444b9650bb1c7c9dfe recipes/xz-tools.toml TOML · 63 lines · 3.9 KB History raw

busybox: 79 → 69 applets sin otro dueño, y ninguno de los diez costó escribir userland 466972e30 · Sergio ·

1# xz 5.8.3 — VARIANTE que construye las HERRAMIENTAS de línea de comandos. NO sustituye a
2# `recipes/xz.toml`.
3#
4# ── POR QUÉ EXISTE ──────────────────────────────────────────────────────────────────────────────
5# La canónica pasa `--disable-xz --disable-xzdec --disable-lzmadec --disable-lzmainfo
6# --disable-scripts`: es liblzma y NADA más, a propósito, porque de ella cuelgan 14 recetas que la
7# enlazan. El problema es que `xz` figura en SEIS perfiles y su artefacto tiene el `usr/bin` VACÍO,
8# así que **el único `xz` dentro de la imagen es el applet de busybox** — medido el 2026-09-21 con
9# `scripts/busybox-censo-proveedores.py`, y es de los seis applets que hoy nadie más provee
10# (`xz unxz xzcat lzma unlzma lzcat`). Ver `docs/plan-botar-busybox.md`, §censo de proveedores.
11#
12# ── POR QUÉ VARIANTE Y NO QUITARLE EL `--disable-xz` A LA CANÓNICA ──────────────────────────────
13# Tocar `[build.phases] configure` de `xz.toml` re-hashea el artefacto y con él las 14 recetas que
14# lo declaran dep (`appstream dwarves ripgrep-all swayimg maturin wasm-pack trunk fnm dprint dufs
15# cargo-deb adwaita-hello sourceview-hello hammer-edit`). El coste no lo paga la funcionalidad que
16# se gana. Mismo patrón que `elfutils-libdw` sobre `elfutils` y que `openssl-threads`.
17#
18# ── LO QUE INSTALA, Y LO QUE SE BORRA A PROPÓSITO ───────────────────────────────────────────────
19# Sólo `usr/bin` + sus manpages. La lib y los headers se RETIRAN del artefacto aunque el `make
20# install` los genere: si viajaran, al hidratar una imagen que ya lleva `xz` habría dos `liblzma.a`
21# y dos `lzma.h` disputándose la misma ruta, y quién gana lo decide el orden de hidratación — que
22# es exactamente la clase de cosa que no debe depender del orden. La lib la sigue publicando la
23# canónica, que es su dueña.
24
25name    = "xz-tools"
26version = "5.8.3"
27license = "0BSD"
28
29[source]
30# Mismo tarball y mismo sha256 que la canónica: es el mismo upstream con otro `configure`.
31tarball = "https://github.com/tukaani-project/xz/releases/download/v5.8.3/xz-5.8.3.tar.xz"
32sha256  = "fff1ffcf2b0da84d308a14de513a1aa23d4e9aa3464d17e64b9714bfdd0bbfb6"
33
34[build]
35compiler = "zig-cc"
36target   = "x86_64-linux-musl"
37link     = "static"
38flags    = []
39
40[deps]
41build = ["make"]
42
43[build.phases]
44# Las herramientas vienen habilitadas por defecto; lo que se apaga es lo de siempre (shared, doc) y
45# `--disable-nls`, que en musl evita el <libintl.h> que no existe. `--enable-small` NO: cambia el
46# rendimiento del descompresor y esto es la herramienta de uso general, no un initramfs.
47configure = '''
48./configure --build=$CBUILD --host=$CHOST --prefix=/usr \
49	--disable-shared --enable-static --disable-nls --disable-doc
50'''
51# ⚠ `LDFLAGS=-all-static` EN COMPILE **Y** EN INSTALL. xz enlaza con libtool, y libtool RELINKEA
52# al instalar: sin el flag en las dos fases el `link = "static"` de la receta se ignora **en
53# silencio** y los binarios salen dinámicos. Medido acá: la primera corrida selló un `xz` que
54# funcionaba (comprime y descomprime) y era `interpreter /lib/ld-musl-x86_64.so.1`. Mismo pisón que
55# ya documentan `recipes/libarchive.toml` y `recipes/bluez.toml`; lo verifica `scripts/static-audit.sh`.
56compile = 'make LDFLAGS=-all-static'
57# `install` completo y después se retiran lib/include/pkgconfig: es más robusto que un
58# `make -C src/xz install`, que se saltaría `xzdec`, `lzmainfo` y los scripts (`xzgrep`, `xzdiff`,
59# `xzless`, `xzmore`) — que son los que dan `lzcat`/`unlzma`/`unxz` por symlink.
60install = '''
61make LDFLAGS=-all-static DESTDIR=/out install
62rm -rf /out/usr/lib /out/usr/include /out/usr/share/doc
63'''