selfhost-verify: SWAP_RUST usa store dedicado (el input-hash no incluye el rustc)

recipe.hash_inputs = source+compiler+target+link+patches+flags+phases+deps; NO incluye
el binario rustc del toolchain. En el ./store compartido, arje-zero/hammerd quedarían
cacheados con los bytes de Alpine ⇒ el swap de rust sería un no-op (REF seguiría 9adefb82).
SWAP_RUST=1 ahora usa un store dedicado (store-rust, override RUST_STORE) para forzar el
rebuild de los 4/4 con hammer-rust, sin tocar el ./store baseline. Así of_tree refleja el
compilador nuevo (auto-consistencia).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-16 22:03:18 -04:00
co-authored by Claude Opus 4.8
parent fb71aca4be
commit f06bfc7ee4
+6
View File
@@ -84,6 +84,12 @@ if [[ "${SWAP_RUST:-0}" == 1 ]]; then
say "variante b (compilador) — swapear hammer-rust 1.91.1 en $TOOLCHAIN (criterio: auto-consistencia)"
scripts/rust-frontier/swap-rust-into-toolchain.sh --prefix "$RUST_PREFIX" --toolchain "$TOOLCHAIN"
trap 'scripts/rust-frontier/swap-rust-into-toolchain.sh --restore --toolchain "$TOOLCHAIN" >/dev/null 2>&1 || true' EXIT
# OJO: el input-hash del store NO incluye el rustc (recipe.hash_inputs = source+compiler+target+
# link+patches+flags+phases+deps), así que en el ./store compartido arje-zero/hammerd quedarían
# CACHEADOS con los bytes de Alpine y el swap sería un no-op. Usamos un store DEDICADO (store-rust)
# para forzar el rebuild de los 4/4 con hammer-rust; así el of_tree refleja el compilador nuevo.
STORE="${RUST_STORE:-store-rust}"
say "SWAP_RUST: store dedicado $STORE (el ./store baseline no se toca; fuerza rebuild con hammer-rust)"
# Con hammer-rust el REF NO es el 9adefb82 de Alpine; comparamos contra RUST_EXPECT_REF (si se
# conoce de una corrida previa), no contra el baseline Alpine.
EXPECT_REF="${RUST_EXPECT_REF:-}"