# 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 + los # `crt*.o`. Tarball release pinned por sha256: igual de fuerte que un commit git para # reproducibilidad (ADR 0006). # # ⚠ ANTES ESTE COMENTARIO DECÍA «y el loader, para uso dinámico futuro». Era FALSO y costó caro: con # `--disable-shared` musl NO construye `libc.so` ni `ld-musl-x86_64.so.1`, así que el corpus no # publicaba ningún cargador dinámico y los 23 binarios dinámicos de una imagen quedaban INERTES # (SDD 28 §6.4). El loader vive ahora en `recipes/musl-shared.toml`; esta receta sigue siendo # estática pura, que es lo que Stage 1 necesita. name = "musl" version = "1.2.5" license = "MIT" [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" [deps] build = ["make"] [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"