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

⎇ main recipes/incoming-gnome/libmount-shared.toml TOML · 76 lines · 3.7 KB History raw

udisks: el cierre de bloque entero pasa a variantes -shared, y parted se cae de la cadena 4c637a09e · Sergio ·

1# libmount-shared 2.42.2 — SÓLO libmount.so del tarball de util-linux, para la isla dinámica.
2# Hermana de `libuuid-shared.toml`, escrita por el mismo motivo y con su mismo criterio.
3#
4# ── POR QUÉ, MEDIDO ───────────────────────────────────────────────────────────────────────────
5# `libblockdev` construye sus plugins como `.so` (los carga con `dlopen`) y el util-linux canónico
6# es `--disable-shared --enable-static`. Su `libblkid.a` NO es PIC, y el enlace muere nombrando el
7# fichero exacto:
8#
9#     ld.lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
10#     >>> defined in /usr/lib/libblkid.a(la-init.o)
11#     >>> referenced by init.c:65 (libblkid/src/init.c:65)
12#
13# Es el mismo cuadro que ya documentan `libarchive-shared` y `lz4-shared` en esta cola, y que
14# `libuuid-shared` pagó antes para evolution-data-server.
15#
16# ── ANGOSTA A PROPÓSITO ───────────────────────────────────────────────────────────────────────
17# `--disable-all-programs` apaga los ~100 binarios de util-linux (mount, fdisk, lsblk…) y
18# `--enable-libmount` deja exactamente una librería. NO se duplica el canónico entero: su lista de
19# `--without-*` está elegida para el userland estático y mantenerla en dos sitios es cómo divergen.
20#
21# El sed de `-mcpu=baseline` se conserva del canónico: zig cc traduce ese flag a un `-mcpu=` VACÍO
22# en modo preprocesador y los generadores `errnos.h`/`syscalls.h` lo invocan así.
23name    = "libmount-shared"
24version = "2.42.2"
25license = "LGPL-2.1-or-later"
26
27[source]
28tarball = "https://www.kernel.org/pub/linux/utils/util-linux/v2.42/util-linux-2.42.2.tar.xz"
29sha256  = "03a05d3adf9602ef128f2da05b84b3205ce60c351e5737c0370f74000679ce8a"
30
31[build]
32compiler = "zig-cc"
33target   = "x86_64-linux-musl"
34link     = "dynamic"
35flags    = []
36
37[build.phases]
38configure = '''
39./configure \
40	--build=$CBUILD --host=$CHOST \
41	--prefix=/usr \
42	--enable-shared --disable-static \
43	--disable-all-programs \
44	--enable-libblkid --enable-libmount \
45	--disable-nls --disable-rpath \
46	--without-python --without-systemd --without-systemdsystemunitdir \
47	--without-udev --without-ncursesw --without-ncurses --without-tinfo \
48	--without-readline --without-libz --without-selinux --without-audit --without-econf
49'''
50compile = '''
51for f in tools/all_errnos tools/all_syscalls; do
52	[ -f "$f" ] || continue
53	sed -i 's#^"$@" -MD#a=(); for x in "$@"; do [ "$x" = "-mcpu=baseline" ] || a+=("$x"); done\n"${a[@]}" -MD#' "$f"
54done
55make -j"$(nproc)"
56'''
57# ⚠ INSTALA SÓLO libmount, Y ESO PIDE EXPLICACIÓN: `--enable-libmount` NO se puede construir sin
58# libblkid —libmount la usa para saber QUÉ sistema de ficheros tiene el dispositivo antes de
59# montarlo—, así que el árbol compila las dos. Si esta receta instalara las dos, habría DOS
60# proveedores de `libblkid.so` en el catálogo y la hidratación (que sobrescribe) elegiría por orden
61# de lista, que es justo la trampa que `libblockdev.toml` documenta con e2fsprogs. Cada receta
62# publica lo que dice su nombre; libblkid la da `libblkid-shared`, y el `NEEDED` de libmount.so la
63# resuelve en runtime.
64install = '''
65set -e
66make DESTDIR=/out install
67rm -f /out/usr/lib/libblkid.* /out/usr/lib/pkgconfig/blkid.pc
68rm -rf /out/usr/include/blkid
69rm -f /out/usr/lib/libuuid.* /out/usr/lib/pkgconfig/uuid.pc
70rm -rf /out/usr/include/uuid
71test -f /out/usr/lib/libmount.so
72test ! -e /out/usr/lib/libblkid.so
73'''
74
75[deps]
76build = ["linux-headers", "make", "pkgconf"]