phase2_selfhost.sh raw
1 #!/bin/bash
2 set -euo pipefail
3 SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
4 ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
5 source "$SCRIPT_DIR/util.sh"
6
7 echo ""
8 echo "=== Phase 2: Self-hosting chain ==="
9
10 td="$(tempdir "selfhost")"; rm -rf "$td"; mkdir -p "$td"
11
12 # 2a: build stage1 with legacy compiler
13 name="selfhost:stage1"
14 t0=$(date +%s%N)
15 legacy_moxie="${LEGACY_MOXIE:-$HOME/.local/bin/moxie}"
16 if (cd "$ROOT" && MOXIEROOT="$ROOT" "$legacy_moxie" build -internal-nodwarf -o "$td/stage1" ./_mxc_stage4/) >"$td/stage1.log" 2>&1; then
17 t1=$(date +%s%N)
18 log_pass "$name" "ok"
19 else
20 log_fail "$name" "legacy compiler failed: $(tail -3 "$td/stage1.log")"
21 rm -rf "$td"
22 exit 1
23 fi
24
25 # 2b: verify stage1 version
26 name="selfhost:stage1-version"
27 t0=$(date +%s%N)
28 if "$td/stage1" version >"$td/ver1.log" 2>&1; then
29 t1=$(date +%s%N)
30 log_pass "$name" "ok"
31 else
32 log_fail "$name" "stage1 version failed: $(tail -3 "$td/ver1.log")"
33 rm -rf "$td"
34 exit 1
35 fi
36
37 # 2c: self-host with stage1
38 name="selfhost:stage2"
39 t0=$(date +%s%N)
40 if MOXIEROOT="$ROOT" "$td/stage1" build -o "$td/stage2" "$ROOT/_mxc_stage4/" >"$td/stage2.log" 2>&1; then
41 t1=$(date +%s%N)
42 log_pass "$name" "ok"
43 else
44 log_fail "$name" "stage1 self-host failed: $(tail -3 "$td/stage2.log")"
45 rm -rf "$td"
46 exit 1
47 fi
48
49 # 2d: verify stage2
50 name="selfhost:stage2-version"
51 t0=$(date +%s%N)
52 if "$td/stage2" version >"$td/ver2.log" 2>&1; then
53 t1=$(date +%s%N)
54 log_pass "$name" "ok"
55 else
56 log_fail "$name" "stage2 version failed: $(tail -3 "$td/ver2.log")"
57 rm -rf "$td"
58 exit 1
59 fi
60
61 rm -rf "$td"
62