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…
nautilus y gvfs: el censo de frontera decía 26 recetas y son 6
1# libarchive-shared 3.8.1 — variante DINÁMICA de libarchive para la isla de GNOME.
2#
3# POR QUÉ EXISTE, y está MEDIDO, no supuesto. `gnome-autoar` produce `libgnome-autoar-0.so` y
4# enlaza libarchive adentro. La canónica (`recipes/libarchive.toml`) es `--disable-shared` y su
5# `.a` NO es PIC:
6#
7# readelf -r libarchive.a | awk '/^Relocation section/{s=$3}
8# /R_X86_64_32/{if (s !~ /debug/) n++} END{print n+0}'
9# ⇒ 3205 (control: libcap.a=0, dbus-1.a=0, json-glib.a=0)
10#
11# O sea exactamente el cuadro de `fontconfig` que documenta `libadwaita.toml`: el link de la `.so`
12# muere con `relocation R_X86_64_64 cannot be used against local symbol`. El awk excluye las
13# secciones `.rela.debug_*` a propósito — la regla corta (`grep R_X86_64_32`) miente, y la memoria
14# [[gnome-introspection-dinamica]] tiene el caso de libepoxy que lo prueba.
15#
16# NO se toca la canónica: `yupana radio libarchive` la comparte el corpus (bsdtar/bsdcpio son el
17# extractor de referencia cruzada del plan-freebsd) y cambiarla re-hashearía a sus consumidores por
18# nada. El sufijo `-shared` NO sombrea al padre — sólo la consume quien la declara explícito, que es
19# el mismo patrón de `zlib-shared`/`libgcrypt-shared` en esta misma cola.
20#
21# MISMO CONJUNTO DE FORMATOS que la canónica (sólo zlib), a propósito: esta variante existe por el
22# PIC, no para ampliar el alcance. Si mañana `gvfsd-archive` quiere leer un `.tar.zst`, eso es una
23# línea en las dos recetas y un re-sellado — no se adelanta acá.
24#
25# -fno-sanitize=undefined: zig cc inyecta el runtime UBSan y la `.so` queda con referencias a
26# `__ubsan_handle_*` que nadie define, que `--no-allow-shlib-undefined` rechaza. Lo documentan ya
27# `zlib-shared` y `libgcrypt-shared`; la canónica lo lleva por la razón simétrica (no arrastrar esas
28# llamadas a todo consumidor estático).
29name = "libarchive-shared"
30version = "3.8.1"
31license = "BSD-2-Clause"
32
33[source]
34tarball = "https://github.com/libarchive/libarchive/releases/download/v3.8.1/libarchive-3.8.1.tar.xz"
35sha256 = "19f917d42d530f98815ac824d90c7eaf648e9d9a50e4f309c812457ffa5496b5"
36
37[build]
38compiler = "zig-cc"
39target = "x86_64-linux-musl"
40link = "dynamic"
41
42[build.phases]
43# Sin `--enable-bsdtar/--enable-bsdcpio`: los ejecutables ya los da la canónica y dos `bsdtar` en el
44# mismo store serían dos proveedores del mismo nombre. Esta receta publica la librería y nada más.
45configure = """
46CFLAGS='-O2 -fPIC -fno-sanitize=undefined' ./configure --build=$CBUILD --host=$CHOST --prefix=/usr \
47 --enable-shared --disable-static --with-pic \
48 --disable-bsdtar --disable-bsdcpio --disable-bsdcat --disable-bsdunzip \
49 --with-zlib --without-bz2lib --without-lzma --without-zstd --without-lz4 \
50 --without-lzo2 --without-libb2 --without-iconv --without-xml2 --without-expat \
51 --without-openssl --without-nettle --without-cng --disable-acl --disable-xattr
52"""
53compile = 'make -j"$(nproc)"'
54install = 'make DESTDIR=/out install'
55
56[deps]
57# `zlib-shared` y no `zlib`: la canónica es estática y el mismo argumento del PIC vale para ella.
58build = ["make", "zlib-shared"]