From 756928aa8c0064d6ee76aefa11a0e29ace4b16ff Mon Sep 17 00:00:00 2001 From: sergio Date: Fri, 17 Jul 2026 09:31:21 -0400 Subject: [PATCH] =?UTF-8?q?static:=20la=20causa=20ra=C3=ADz=20NO=20era=20l?= =?UTF-8?q?ibtool=20=E2=80=94=20es=20que=20CC=20no=20lleva=20-target=20(sa?= =?UTF-8?q?murai=20arreglada)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- recipes/samurai.toml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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"