tawasuyu

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

⎇ ce2668598e4d8b60e5e070a0e422cd1dd12f0033 recipes/samurai.toml TOML · 47 lines · 2.3 KB History raw

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