Commit 319dc15
committed
CI: Nix CI with split build/test and cross-backend jobs
Replace ci.yml with nix-ci.yml, a comprehensive Nix-based CI workflow
for self-hosted aarch64-darwin runners using Tart VMs.
Architecture:
- Build stage: parallel dynamic=0 and dynamic=1 builds, each producing
a dist artifact with stage2 compiler + cross-compilation tools
- Test stage: runs GHC testsuite against dist artifacts (depends on build)
- Cross JS stage: builds JS backend libraries using emscripten/emsdk,
smoke tests with `node all.js`
- Cross WASM stage: builds WASM backend libraries using wasi-sdk,
smoke tests with post-link.mjs + Node.js WASI runtime
(see docs/users_guide/wasm.rst and utils/jsffi/post-link.mjs)
Key design decisions:
- Aggressive disk cleanup between stages (41GB APFS + 28GB WorkSpace
partition on runners; GHC builds need ~35GB)
- devx shell (input-output-hk/devx#ghc98-minimal-ghc) provides
bootstrap GHC 9.8.4 and build tools; exit code propagation requires
`set -eo pipefail` in all `shell: devx {0}` steps
- GIT_COMMIT_ID env var allows .git removal after checkout (saves ~2GB)
- Cross-builds use continue-on-error: true (experimental)
- Concurrency group cancels in-progress runs on same branch
- ghc-wasm-meta bootstrap for wasi-sdk + wasm32-wasi-ghc installation
- emsdk installation for emscripten + JS backend
Temporarily disable release workflow while restructuring CI.1 parent 2fd6333 commit 319dc15
3 files changed
Lines changed: 891 additions & 233 deletions
This file was deleted.
0 commit comments