fix(fixpoint): drive runtime build with stage-1 binary, not compiler/target/blaise
fixpoint.sh's runtime build (step 1) relied on the runtime Makefile's default BLAISE=../compiler/target/blaise. After scripts/rolling-bootstrap.sh — which installs only to releases/ and leaves the live compiler/target/ empty — that path does not exist, so `cd runtime && make` failed with "compiler/target/blaise: No such file or directory" (RUNTIME_FAIL) even though the release binary was perfectly usable. Pass BLAISE=<abs stage-1 path> into both the runtime `make` and `make install` so the build never depends on a pre-existing compiler/target/blaise. Resolve the RTL archive into $RTL_ARCHIVE once (installed compiler/target copy, falling back to runtime/target/), and use it at both link sites. Verified by running the patched script from a fresh clone with no compiler/target/ present (the exact post-rolling-bootstrap state): reaches FIXPOINT_OK where it previously aborted at step 1.
This commit is contained in:
parent
41a16ad6cc
commit
16c4f5b690
|
|
@ -36,11 +36,31 @@ if [ ! -x "$STAGE1_BIN" ]; then
|
|||
fi
|
||||
echo "stage-1: $STAGE1_BIN"
|
||||
|
||||
echo "[1/5] rebuild + install runtime"
|
||||
( cd runtime && make > /tmp/fp_rtl.log 2>&1 && make install >> /tmp/fp_rtl.log 2>&1 ) || {
|
||||
# The runtime Makefile defaults BLAISE to ../compiler/target/blaise, which may
|
||||
# not exist yet — e.g. straight after scripts/rolling-bootstrap.sh, which
|
||||
# installs only to releases/ and leaves the live compiler/target/ empty.
|
||||
# Drive the runtime build with the stage-1 binary explicitly so fixpoint never
|
||||
# depends on a pre-existing compiler/target/blaise. make runs inside runtime/,
|
||||
# so BLAISE must be an absolute path.
|
||||
ABS_STAGE1=$(readlink -f "$STAGE1_BIN")
|
||||
|
||||
echo "[1/5] rebuild + install runtime (BLAISE=$ABS_STAGE1)"
|
||||
( cd runtime && make BLAISE="$ABS_STAGE1" > /tmp/fp_rtl.log 2>&1 \
|
||||
&& make BLAISE="$ABS_STAGE1" install >> /tmp/fp_rtl.log 2>&1 ) || {
|
||||
echo "RUNTIME_FAIL"; tail -5 /tmp/fp_rtl.log; exit 11;
|
||||
}
|
||||
|
||||
# Resolve the RTL archive for the link steps below. `make install` copies it
|
||||
# to compiler/target/, but fall back to the runtime build dir so the link
|
||||
# never fails on a tree where compiler/target/ was not populated.
|
||||
if [ -f compiler/target/blaise_rtl.a ]; then
|
||||
RTL_ARCHIVE=compiler/target/blaise_rtl.a
|
||||
elif [ -f runtime/target/blaise_rtl.a ]; then
|
||||
RTL_ARCHIVE=runtime/target/blaise_rtl.a
|
||||
else
|
||||
echo "RUNTIME_FAIL: blaise_rtl.a not found after runtime build"; exit 11
|
||||
fi
|
||||
|
||||
echo "[2/5] stage-1 -> stage-2 IR"
|
||||
"$STAGE1_BIN" --source compiler/src/main/pascal/Blaise.pas \
|
||||
--unit-path compiler/src/main/pascal --unit-path runtime/src/main/pascal --unit-path stdlib/src/main/pascal \
|
||||
|
|
@ -57,7 +77,7 @@ echo "[3/5] assemble + link stage-2 binary"
|
|||
vendor/qbe/qbe -o /tmp/fp_stage2.s /tmp/fp_stage2.ssa 2>/tmp/fp_qbe.err || {
|
||||
echo "QBE_FAIL"; cat /tmp/fp_qbe.err; exit 2;
|
||||
}
|
||||
gcc -o /tmp/fp_blaise2 /tmp/fp_stage2.s compiler/target/blaise_rtl.a 2>/tmp/fp_gcc.err || {
|
||||
gcc -o /tmp/fp_blaise2 /tmp/fp_stage2.s "$RTL_ARCHIVE" 2>/tmp/fp_gcc.err || {
|
||||
echo "GCC_FAIL"; cat /tmp/fp_gcc.err; exit 3;
|
||||
}
|
||||
|
||||
|
|
@ -93,7 +113,7 @@ echo "[+1] assemble + link stage-3 binary"
|
|||
vendor/qbe/qbe -o /tmp/fp_stage3.s /tmp/fp_stage3.ssa 2>/tmp/fp_qbe3.err || {
|
||||
echo "QBE3_FAIL"; cat /tmp/fp_qbe3.err; exit 2;
|
||||
}
|
||||
gcc -o /tmp/fp_blaise3 /tmp/fp_stage3.s compiler/target/blaise_rtl.a 2>/tmp/fp_gcc3.err || {
|
||||
gcc -o /tmp/fp_blaise3 /tmp/fp_stage3.s "$RTL_ARCHIVE" 2>/tmp/fp_gcc3.err || {
|
||||
echo "GCC3_FAIL"; cat /tmp/fp_gcc3.err; exit 3;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue