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 1411Shell 141Markdown 85Rust 842918 Definiciones

static: la causa raíz NO era libtool — es que CC no lleva -target (samurai arreglada)

samurai declaraba link=static y salía DINÁMICO (NEEDED: libc.so). No usa libtool, así que el
patrón -all-static de jq/parted/shadow no aplicaba. Medido DENTRO del sandbox con readelf, sobre
un `int main(){return 0;}` trivial:

    zig cc -mcpu=baseline -static                           → NEEDED=1  (dinámico)
    zig cc -mcpu=baseline -target x86_64-linux-musl -static → NEEDED=0  (estático)

El lab exporta CC="zig cc -mcpu=baseline" SIN -target (sandbox.rs:415) ⇒ zig compila NATIVO,
detecta la musl de Alpine del rootfs (/usr/lib/libc.a existe) y enlaza contra ella IGNORANDO el
-static que el propio lab exporta por link="static". El -target fuerza la musl bundleada de zig.

Las recetas YA declaran target = "x86_64-linux-musl": el campo existe y no llega al CC. El fix
de framework re-hashea los 841 sellados ⇒ decisión aparte; por ahora va por receta.

samurai: estático de verdad (NEEDED=0), corre en el host, samu --version = 1.9.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

756928aa8c0064d6ee76aefa11a0e29ace4b16ff · por sergio · (hace 3 meses) · padre fa459784e · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

1 archivos · +12 −1

diff --git a/recipes/samurai.toml b/recipes/samurai.toml
index 66d8aeec..1114a681 100644
--- a/recipes/samurai.toml
+++ b/recipes/samurai.toml
@@ -19,7 +19,18 @@ zig_version = "0.13.0"
 build = ["make"]
 
 [build.phases]
-compile = 'make CFLAGS="-O2"'
+# `-target x86_64-linux-musl` en LDFLAGS: samurai NO usa libtool (Makefile pelado), así que el
+# `-all-static` de jq/parted/shadow no aplica — sería un flag desconocido para zig-cc. La causa era
+# otra y NO es de samurai: el lab exporta `CC="zig cc -mcpu=baseline"` SIN `-target` (sandbox.rs),
+# así que zig compila NATIVO, detecta la musl de Alpine del rootfs (/usr/lib/libc.a existe) y enlaza
+# contra ella IGNORANDO el `-static` que el lab exporta por `link = "static"`. Medido dentro del
+# sandbox sobre un `int main(){return 0;}` trivial, con readelf:
+#     zig cc -mcpu=baseline -static                          → NEEDED=1  (dinámico)
+#     zig cc -mcpu=baseline -target x86_64-linux-musl -static → NEEDED=0  (estático)
+# El `-target` fuerza la musl BUNDLEADA de zig ⇒ el `-static` se respeta. La receta ya declaraba
+# `target = "x86_64-linux-musl"`, pero ese campo no llega al CC: hasta que eso se arregle en el
+# framework (re-hashea los 841 sellados), va por receta.
+compile = 'make CFLAGS="-O2" LDFLAGS="-target x86_64-linux-musl -static"'
 install = '''
 set -e
 make install PREFIX="/usr" DESTDIR="/out"