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 1384Shell 130Rust 79Markdown 732486 Definitions

⎇ b12ea3ac9d7c56eaf18936abb9b3289fb5172ec2 recipes/samurai.toml TOML · 46 lines · 2.3 KB History raw

static: pkgconf arreglada + CORRIJO el alcance del hallazgo de 756928a 87e0fc331 · sergio ·

1# samurai 1.3 — clon C de ninja (lo que usa Alpine como `ninja`). Build-tool del stack meson
2# (libdrm/wayland/mesa lo invocan como backend). Provee /usr/bin/samu + symlink /usr/bin/ninja.
3# zig 0.13.0: con el zig default (0.16/clang21) el binario musl miscompila y falla en runtime
4# con "reallocarray: No error information" — el patrón conocido (binutils/elfutils/flex).
5name    = "samurai"
6version = "1.3"
7
8[source]
9tarball = "https://github.com/michaelforney/samurai/releases/download/1.3/samurai-1.3.tar.gz"
10sha256  = "1bc020a9e133432df51911ac71cc34322f828934d9a2282ba2916d88c15976af"
11
12[build]
13compiler    = "zig-cc"
14target      = "x86_64-linux-musl"
15link        = "static"
16zig_version = "0.13.0"
17
18[deps]
19build = ["make"]
20
21[build.phases]
22# `-target x86_64-linux-musl` en LDFLAGS. Samurai cae en la INTERSECCIÓN de dos rarezas, y por eso es
23# la única receta que necesita esto:
24#
25#   1. NO usa libtool (Makefile pelado) ⇒ el `-all-static` de jq/parted/shadow/expat no aplica acá:
26#      sería un flag desconocido para zig-cc. El `-static` llega crudo al driver.
27#   2. Pinea `zig_version = "0.13.0"` (ver arriba: el zig default miscompila el musl acá) — y el
28#      `-static` de zig 0.13 está ROTO para el target NATIVO dentro del sandbox: compila nativo,
29#      detecta la musl de Alpine del rootfs (/usr/lib/libc.a existe) y enlaza contra ella IGNORANDO
30#      el -static. `-target` fuerza la musl BUNDLEADA de zig ⇒ el -static se respeta.
31#
32# Medido DENTRO del sandbox con readelf, sobre un `int main(){return 0;}` trivial:
33#     zig 0.13.0:  -static                           → NEEDED=1  (dinámico)  ← el bug
34#     zig 0.13.0:  -target x86_64-linux-musl -static → NEEDED=0  (estático)
35#     zig 0.16.0:  -static                           → NEEDED=0  (estático)  ← default, sano
36#
37# NO es un agujero de framework: con el zig default el -static del lab funciona, así que `CC` sin
38# `-target` (sandbox.rs) está bien y NO hay que re-hashear el store. Las otras 4 recetas que pinean
39# 0.13.0 con link=static (mtools/openssh/openssl/xorriso) están sanas: usan libtool, que absorbe el
40# -static por su cuenta. Auditadas, 0 mienten.
41compile = 'make CFLAGS="-O2" LDFLAGS="-target x86_64-linux-musl -static"'
42install = '''
43set -e
44make install PREFIX="/usr" DESTDIR="/out"
45ln -s samu /out/usr/bin/ninja
46'''