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 1181Shell 82Rust 62Markdown 521515 Definitions

⎇ 1ca210a311ecd2a8f8cd6db07b68853b34b27e99 recipes/util-linux.toml TOML · 77 lines · 2.8 KB History raw

takana etapa 5a: los comentarios de las 741 recetas e852f4849 · Sergio ·

1# Importada de nixpkgs por `takana import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
2# de-Alpinizada al lab de takana (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, takana 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"]