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