Files
hammer/recipes/musl.toml
T
SergioandClaude Opus 4.8 879af17f5c build: flags estáticos vía cargo rustc -- … (no RUSTFLAGS) para no romper proc-macros
Tercera iteración del fix de la corrida real (runbook §8). +crt-static (y
relocation-model=static) en RUSTFLAGS rompen los proc-macros en build nativo:
RUSTFLAGS alcanza a las deps, y un proc-macro es un dylib PIC que no puede ser
estático ("cannot produce proc-macro for clap_derive ... crate types").

Fix: pasar los flags de codegen del binario por `cargo rustc --release … -- <flags>`,
que los aplica SÓLO a la crate top-level, dejando proc-macros/deps intactos. Así el
binario final es crt-static + relocation-model=static (AUTOCONTENIDO y ET_EXEC sin
interpreter, como busybox: sin libc.so, sin loader, sin soname). El linker (zig cc)
sigue por RUSTFLAGS. musl queda --disable-shared (no se necesita loader).

Validado por unit tests; la corrida real rebuildea hammerd/arje-zero crt-static.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 11:24:01 +00:00

26 lines
1.0 KiB
TOML

# musl libc 1.2.5 — libc del target para el userland mínimo del Stage 1 (SDD 11 §3).
#
# Se compila estática con `zig cc` cross al target. El artefacto aporta headers + libc.a (y el
# loader, para uso dinámico futuro) al rootfs sellado. Tarball release pinned por sha256: igual de
# fuerte que un commit git para reproducibilidad (ADR 0006).
name = "musl"
version = "1.2.5"
[source]
tarball = "https://musl.libc.org/releases/musl-1.2.5.tar.gz"
sha256 = "a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "static"
[build.phases]
# El sandbox exporta CC="zig cc", DESTDIR=/out y PREFIX=/usr. musl trae su propio `configure`.
# Sólo estático: los componentes Rust se compilan crt-static + no-PIE (autocontenidos, ET_EXEC sin
# interpreter), así que el rootfs no necesita el loader/shared de musl. Ver runbooks §8.
configure = "./configure --prefix=/usr --disable-shared --enable-static"
compile = "make -j\"$(nproc)\""
install = "make install"