Commit graph

6 commits

Author SHA1 Message Date
Graeme Geldenhuys 6c38672be3 ci: anchor rolling-bootstrap at v0.12.0 (native default, no QBE/gcc)
v0.12.0 is the clean rolling-bootstrap anchor — the broken v0.11.0->v0.12.0
commit range sits before it, so the replay range (v0.12.0..HEAD) is entirely
native-default with the internal assembler + linker and needs no external tools.

scripts/rolling-bootstrap.sh:
- build_step / smoke_test now compile straight to an executable with the native
  default backend (`--source ... --output ...`): no --emit-ir, no QBE, no gcc.
- Dropped the QBE_BIN requirement and the QBE= make var from the RTL build.

.github/workflows/bootstrap.yml:
- STAGE1_TAG v0.10.0 -> v0.12.0 (the new cold-start anchor).
- Removed the "Build QBE" and "Expose QBE to the compiler" steps and the QBE=
  make var from the -pre RTL rebuild — the bootstrap chain no longer needs them.
- Branch-scoped validate-only triggers (ci/**, feature/**, bootstrap/**) and
  master-only cache writes were already in place (Step 3d-bis).

These reference the v0.12.0 tag/release asset, which the cut creates next.
2026-06-23 23:59:47 +01:00
Graeme Geldenhuys 3e94044550 ci(bootstrap): add branch-scoped validate-only pre-flight runs
The rolling-bootstrap workflow only triggered on master, so a risky change
could not be proven against the bootstrap chain before merging — and a bad
commit on master cannot be removed without a force-push on a public repo.

Trigger the workflow on push to ci/**, feature/** and bootstrap/** branches
(plus master and the existing workflow_dispatch).  Branch runs are
VALIDATE-ONLY:

- The carry-forward cache (stage + save steps) is written ONLY on
  refs/heads/master, so a branch never overwrites master's resume anchor and
  a broken branch's -pre binary can never leak into a later master run.
- Branch runs still restore the cache read-only, so a branch off recent
  master resumes from master's latest good -pre and replays only its own new
  commits; a diverged branch falls back to the cold-start anchor as before.
- The -pre artifact upload still runs on branches (keyed by commit SHA, so it
  never collides with master's and is pull-only).

concurrency is already keyed on github.ref, so per-branch runs don't cancel
each other or master.

Note: this only takes effect once pushed, so like the other Phase 4 CI
changes it cannot be exercised until the v0.12.0 cut.
2026-06-20 15:20:32 +01:00
Graeme Geldenhuys 88db7f3b23 ci: run CLI-contract & internal-assembler tests; surface skips
The TCLIContractTests and TInternalAsmE2ETests suites resolve their
compiler binary from BLAISE_QBE_COMPILER, falling back to the
/tmp/fp_blaise{3,2} fixpoint binaries.  Those only exist after a local
fixpoint.sh run, so in CI both suites silently Ignore'd ~24 tests while
the run still reported green (25 ignored in CI vs 1 locally).

Two changes:
  - bootstrap.yml: set BLAISE_QBE_COMPILER to the bootstrapped -pre
    binary so both suites actually run in CI.
  - CompilerAvailable() in each suite now prints a one-time StdErr note
    when it skips, so a missing toolchain is loud instead of a silent
    green with hidden ignores.
2026-06-17 08:13:50 +01:00
Graeme Geldenhuys ea8dc01434 ci: bump deprecated actions to Node 24 majors
actions/checkout v4->v6, actions/cache v4->v5, actions/upload-artifact
v4->v7. Silences the Node.js 20 deprecation warning; cache format is
compatible across these majors so incremental resume still works.
2026-06-16 18:09:03 +01:00
Graeme Geldenhuys 85e2f28b0c ci: expose vendored QBE to the compiler via BLAISE_QBE
The compiler shells out to 'qbe' and resolves it via the BLAISE_QBE env
var, then PATH (uToolchain.ResolveQBE). The QBE= make variable passed by
rolling-bootstrap.sh only covers the script's own direct qbe calls, not
the compiler's internal invocation when building the RTL. On the runner
qbe is built at vendor/qbe/qbe but not on PATH, so the RTL build failed
with 'qbe error (exit 127)' on the very first replay step.

Set BLAISE_QBE (and prepend vendor/qbe to PATH) after building QBE so all
subsequent steps can find it.
2026-06-16 17:33:25 +01:00
Graeme Geldenhuys 16e29f2fc8 ci: add GitHub Actions rolling-bootstrap pipeline
Adds .github/workflows/bootstrap.yml: on push to master (and manual
dispatch), builds vendored QBE, replays the self-hosting chain via
scripts/rolling-bootstrap.sh, builds the RTL + TestRunner with the
resulting -pre binary, and runs the full test suite.

Cold start downloads the v0.10.0 release tarball as stage-1. Subsequent
runs resume the bootstrap from a cached -pre binary (actions/cache keyed
by commit SHA), replaying only commits new since the last successful run.
The -pre binary + blaise_rtl.a are published as workflow artifacts.
2026-06-16 17:25:53 +01:00