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…
licencias: campo `license` en la receta — de 0 a 228 de 1141, sin re-hashear nada
1# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
2# de-Alpinizada al lab de hammer (zig-cc / musl estático). Objetivo mínimo:
3# mount/umount/lsblk/blkid/fdisk/lscpu (utilería base del sistema).
4name = "util-linux"
5version = "2.42.2"
6license = "GPL-2.0-or-later AND LGPL-2.1-or-later AND BSD-3-Clause"
7
8[source]
9tarball = "https://www.kernel.org/pub/linux/utils/util-linux/v2.42/util-linux-2.42.2.tar.xz"
10sha256 = "03a05d3adf9602ef128f2da05b84b3205ce60c351e5737c0370f74000679ce8a"
11
12[build]
13compiler = "zig-cc"
14target = "x86_64-linux-musl"
15link = "static"
16flags = []
17
18[build.phases]
19# fase configure EXPLÍCITA: si la receta no la define, hammer autogenera su propio
20# `./configure --prefix=/usr` (sin nuestros --disable-*) e ignora estos flags.
21#
22# ESTÁTICO: libtool se COME el `-static` de LDFLAGS (lo lee como "static libtool
23# libs", no como link real) ⇒ el único camino a binarios musl 100% estáticos es
24# `--enable-static-programs`, que SÓLO soporta
25# blkid,fdisk,losetup,mount,nsenter,partx,sfdisk,umount,unshare. Produce
26# {mount,umount,blkid,fdisk}.static (verificados corriendo en el host). lsblk y
27# lscpu NO están en esa lista ⇒ quedan dinámicos-musl: construyen y corren en la
28# distro musl, pero en un host glibc segfaultean por loader-skew (no verificables
29# acá). El resto de binarios (lsblk/lscpu/...) son musl-dinámicos.
30configure = '''
31./configure \
32 --build=$CBUILD \
33 --host=$CHOST \
34 --prefix=/usr \
35 --localstatedir=/var \
36 --sysconfdir=/etc \
37 --disable-shared \
38 --enable-static \
39 --enable-static-programs=blkid,fdisk,mount,umount \
40 --disable-nls \
41 --disable-rpath \
42 --disable-liblastlog2 \
43 --disable-pylibmount \
44 --disable-makeinstall-setuid \
45 --disable-makeinstall-chown \
46 --without-python \
47 --without-systemd \
48 --without-systemdsystemunitdir \
49 --without-udev \
50 --without-cryptsetup \
51 --without-ncursesw \
52 --without-ncurses \
53 --without-tinfo \
54 --without-readline \
55 --without-libz \
56 --without-selinux \
57 --without-audit \
58 --without-econf
59'''
60compile = '''
61# zig cc traduce `-mcpu=baseline` a un `-mcpu=` VACÍO en modo preprocesador
62# (`-dM -E -`), que zig rechaza. Los generadores errnos.h/syscalls.h de
63# util-linux invocan `$(CC) -dM -E -` ⇒ filtramos ese flag (irrelevante para
64# extraer #defines) sólo en esos dos scripts; el resto del build lo conserva.
65for f in tools/all_errnos tools/all_syscalls; do
66 sed -i 's#^"$@" -MD#a=(); for x in "$@"; do [ "$x" = "-mcpu=baseline" ] || a+=("$x"); done\n"${a[@]}" -MD#' "$f"
67done
68make LDFLAGS="-all-static -no-pie"
69'''
70install = '''
71make DESTDIR="/out" install LDFLAGS="-all-static -no-pie"
72'''
73
74# deps de Alpine/nix remapeadas al catálogo canónico. AUSENTES quitadas:
75# autoconf/automake/po4a/libxcrypt/sqlite/linux-pam/libcap-ng/systemd-minimal-libs.
76[deps]
77build = ["linux-headers", "make"]