You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Run plinth-test in its own CI job consuming a bindist
Split the Linux CI into two jobs for a separate status check and timeout
budget: plinth-build-linux builds the compiler and plinth-test-linux runs
the test against it. The test job can't run in parallel (it needs the built
compiler), so it depends on the build job and downloads the artifact instead
of rebuilding GHC.
To hand the compiler between jobs, plinth-build.sh gains a BINDIST=1 mode
that produces the fixed-up uplc-ghc bindist + .tar.xz archive while keeping
the lean dev flavour; previously this only happened for RELEASE=1, which also
pulled in docs and the release flavour. The build job uploads the archive and
the test job installs it with the usual configure + make install (the
bindist's wrappers/ dir, written by the fixup, makes this produce
bin/uplc-ghc), then points plinth-test.sh at it via the now-overridable GHC
variable.
The lean dev flavour is plain "release" (no +assertions): an assertions GHC
is built with -DDEBUG, which slows compilation of GHC itself and of every
package built with it (the Plinth test project).
Compiling the test packages with the Plinth plugin (Core -> PLC) is
memory-heavy. The test's cabal parallelism is configurable via JOBS (default
"-j", all cores); the CI test job sets JOBS=1 to build serially. Even so, a
single makeLift-heavy module (PlutusLedgerApi.V3.Contexts) spikes past the
~16 GB runner RAM, so the test job adds a 16 GB swapfile on /mnt to let the
spike spill to swap instead of being OOM-killed.
The artifact name is keyed by matrix.os + matrix.ghc so build matrix legs
never collide within a run; the test job mirrors the build matrix so the
keys line up per leg. The shared Linux setup (free disk, /mnt bind-mount,
submodules, GHC/cabal) moves into a .github/actions/prepare composite action.
The GITHUB_TOKEN is restricted to contents: read (least privilege, flagged by
CodeQL). Now that the plutus submodule (ghc-plinth-plutus) is public, its
.gitmodules URL is switched from SSH to HTTPS and all the SSH plumbing
(SUBMODULE_SSH_KEY secret, ssh-keyscan setup) is removed; every submodule is
now an anonymous HTTPS clone.
Jobs are renamed for coherence: plinth-build-linux, plinth-test-linux,
plinth-build-windows (plinth-test-windows to follow).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments