Etapa G: fixes del kit de granja distribuida (validados en VPS Hetzner real)
Tres frentes que aparecieron al provisionar un CCX13 (Ubuntu 24.04) de verdad: - bootstrap-devfs §3b: el loader musl-256-keys ahora DETECTA la versión del rootfs (apk db) en vez de hardcodear 1.2.5. Alpine edge avanzó a musl 1.2.6 ⇒ un loader 1.2.5 vs coreutils 1.2.6 da `renameat2: symbol not found` → chmod roto en el sandbox → el wrapper zig-cc no queda +x → EACCES. case con sha de 1.2.5 y 1.2.6, die si aparece una nueva. - vps-setup §2b: compila bubblewrap 0.11.2 si el de la distro no soporta --overlay-src (Ubuntu 24.04 trae 0.9.0 sin overlayfs; el sandbox lo necesita). - farm-sync: excluye /.scratch (44G de fuentes mrustc/rustc) + *.png/content* del rsync al worker (casi copia 44G de más). Smoke test en el VPS: builds compilan código real (pasan cc/chmod), rustc 2 cores al 93%, RAM holgada. Worker funcional. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -202,11 +202,23 @@ fi
|
||||
# loader. ABI-compat (mismo musl 1.2.5): gcc/make/etc. siguen corriendo. Seguro para of_tree: el
|
||||
# loader runtime de las tools no afecta los bytes que emiten; el 4/4 es estático contra hammer-musl.
|
||||
# Idempotente: si ya existe el backup .orig128, no rehace nada.
|
||||
# CRÍTICO: el loader reconstruido DEBE ser de la MISMA versión de musl que el rootfs (Alpine edge
|
||||
# es rodante: pasó de 1.2.5 a 1.2.6). Si difieren, los coreutils del rootfs (linkeados contra la
|
||||
# versión de edge) no hallan símbolos nuevos en el loader viejo (p.ej. `renameat2: symbol not
|
||||
# found` con loader 1.2.5 vs coreutils 1.2.6) ⇒ chmod/cat/rm rotos dentro del sandbox y los builds
|
||||
# fallan al ejecutar el wrapper zig-cc (EACCES). Por eso DETECTAMOS la versión del rootfs.
|
||||
MUSL_LOADER="$ROOTFS/lib/ld-musl-x86_64.so.1"
|
||||
if [[ $SKIP_APK -eq 0 && ! -f "$MUSL_LOADER.orig128" ]]; then
|
||||
log "musl: reconstruyendo loader del toolchain con PTHREAD_KEYS_MAX=256 (frente rust)"
|
||||
MUSL_VER=1.2.5
|
||||
MUSL_SHA=a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4
|
||||
# versión de musl instalada en el rootfs (apk db): "1.2.6-r2" → "1.2.6"
|
||||
MUSL_VER="$(awk '/^P:musl$/{f=1} f&&/^V:/{sub(/-.*/,"",$0);print substr($0,3);exit}' \
|
||||
"$ROOTFS/lib/apk/db/installed" 2>/dev/null)"
|
||||
MUSL_VER="${MUSL_VER:-1.2.6}"
|
||||
case "$MUSL_VER" in
|
||||
1.2.5) MUSL_SHA=a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4 ;;
|
||||
1.2.6) MUSL_SHA=d585fd3b613c66151fc3249e8ed44f77020cb5e6c1e635a616d3f9f82460512a ;;
|
||||
*) die "musl $MUSL_VER del rootfs sin sha256 conocido — agregalo al case (bootstrap-devfs.sh §3b)" ;;
|
||||
esac
|
||||
log "musl: reconstruyendo loader del toolchain $MUSL_VER con PTHREAD_KEYS_MAX=256 (frente rust)"
|
||||
MWORK="$WORK/musl256"; rm -rf "$MWORK"; mkdir -p "$MWORK"
|
||||
curl -fsSL -o "$MWORK/musl.tar.gz" "https://musl.libc.org/releases/musl-$MUSL_VER.tar.gz"
|
||||
echo "$MUSL_SHA $MWORK/musl.tar.gz" | sha256sum -c - >/dev/null || die "musl tarball sha256 mismatch"
|
||||
|
||||
Reference in New Issue
Block a user