bootstrap: fixes de la primera corrida real de Stage 1 (musl+busybox ✓ con zig cc)
Primera ejecución del runbook en el host. El userland C builda end-to-end; el camino Rust queda bloqueado por una decisión de toolchain. Hallazgos verificados: recipes/busybox.toml — tres incompatibilidades GNU-toolchain ↔ zig, resueltas: - gcc hardcodeado (CC/HOSTCC = gcc con `=` ignora el env): pasar CC='zig cc' HOSTCC='zig cc' en línea de comando de make - flags GNU-ld que zig cc valida y rechaza (--warn-common, -Map, --verbose): quitarlos de scripts/trylink con sed Con esto musl 1.2.5 y busybox 1.36.1 compilan, linkean y se sellan. scripts/bootstrap-devfs.sh — añade rust+cargo al rootfs (las recetas Cargo corren cargo en el sandbox), con CAVEAT: el rust de Alpine es x86_64-alpine-linux-musl pero BuildSys::Cargo pide x86_64-unknown-linux-musl (no instalado, sin rustup) → bloquea hammerd/arje-zero. Decisión de toolchain abierta (plan C.2). docs/runbooks/stage1-vm-boot.md §8 — bitácora con la tabla de etapas, los fixes y las opciones para resolver el triple Rust. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
56af1b5748
commit
5a1088d5ce
+10
-3
@@ -24,7 +24,14 @@ link = "static"
|
||||
# busybox usa Kconfig, no autotools: arrancamos de `defconfig` y forzamos CONFIG_STATIC=y. `tc`
|
||||
# no compila contra musl (gcc-ismos de red), así que lo desactivamos — es el ajuste mínimo
|
||||
# conocido para un build estático limpio con musl.
|
||||
configure = "make defconfig && sed -i -e 's/^# CONFIG_STATIC is not set/CONFIG_STATIC=y/' -e 's/^CONFIG_TC=y/# CONFIG_TC is not set/' -e 's/^CONFIG_FEATURE_TC_INGRESS=y/# CONFIG_FEATURE_TC_INGRESS is not set/' .config"
|
||||
compile = "make -j\"$(nproc)\""
|
||||
#
|
||||
# CC='zig cc' HOSTCC='zig cc' EN LÍNEA DE COMANDO: el Kbuild de busybox fija `CC = gcc` y
|
||||
# `HOSTCC = gcc` con `=` (hard), que ignora el env `CC` del sandbox; sólo un override de línea de
|
||||
# comando gana. Apunta target (CC) y herramientas host (HOSTCC, p.ej. fixdep/gcc-version.sh) a
|
||||
# `zig cc`, manteniendo la hermeticidad zig-only (ADR 0003) sin meter gcc al rootfs.
|
||||
# El link final asume GNU ld y pasa flags que `zig cc` valida y rechaza (`--warn-common`, `-Map`,
|
||||
# `--verbose`); los quitamos de scripts/trylink. Es la incompatibilidad GNU-ld↔zig/lld esperada.
|
||||
configure = "make CC='zig cc' HOSTCC='zig cc' defconfig && sed -i -e 's/^# CONFIG_STATIC is not set/CONFIG_STATIC=y/' -e 's/^CONFIG_TC=y/# CONFIG_TC is not set/' -e 's/^CONFIG_FEATURE_TC_INGRESS=y/# CONFIG_FEATURE_TC_INGRESS is not set/' .config && sed -i -e 's/-Wl,--warn-common//g' -e 's/-Wl,-Map,[^ ]*//g' -e 's/-Wl,--verbose//g' scripts/trylink"
|
||||
compile = "make -j\"$(nproc)\" CC='zig cc' HOSTCC='zig cc'"
|
||||
# busybox instala en CONFIG_PREFIX (no DESTDIR): bin/busybox + symlinks de cada applet.
|
||||
install = "make CONFIG_PREFIX=/out install"
|
||||
install = "make CC='zig cc' HOSTCC='zig cc' CONFIG_PREFIX=/out install"
|
||||
|
||||
Reference in New Issue
Block a user