Consolidated fix pass over the 9-task Jaguar toolchain plan's final whole-branch review: - Add a no-push "docker build" validation step to jaguar-toolchain.yml so the Dockerfile is actually exercised in CI; correct jaguar-toolchain-image.yml's header comment, which falsely claimed that coverage already existed. - Add tools/jaguar-toolchain/setup.sh to jaguar-toolchain-image.yml's paths: trigger -- the Dockerfile COPYs it, so editing it must republish. - Align jaguar-toolchain.yml on actions/checkout@v7 (repo convention, matches its sibling workflow). - Add an OCI description LABEL to the Dockerfile's final stage crediting 42Bastian for new_bjl/lyxass, since the published image itself (not just the README) redistributes those Unlicense-credited binaries. - README: state plainly that BootIntro-style demos needing `jagcrypt -tursi` still fail to build against the pinned pc_jagcrypt (a real upstream gap, 38/54 JaguarDemos Makefiles affected) without retracting the true claim that toolchain discovery/build wiring works; add the jagcrypt binary to the pin-refresh verification checklist. - Add timeout-minutes + a concurrency block (PR-triggered workflow) to guard against rln's plain-HTTP fetch hanging; tighten the smoke step's `command -v` check to a per-tool loop so a missing tool actually fails the build. Docker was unavailable in this environment (as in Task 7), so the new validation step and LABEL are verified by YAML/shell syntax checks only, not an actual build -- documented in .superpowers/sdd/2026-08-23-jaguar-toolchain/final-fix-report.md. Co-Authored-By: Claude Sonnet 5 <[email protected]>
Jaguar assembler toolchain
On-demand fetch + build for the Jaguar cross-development toolchain this
repo's test suite can use: rmac/rln (68000 assembler + linker),
lyxass (GPU/DSP assembler), pc_jagcrypt (BootIntro encrypt), and
new_bjl (BJL_ROOT — loader stub binaries + 68K includes some
JaguarDemos Makefiles reference).
None of these are vendored into this repo's git history — setup.sh
clones each from its pinned source in PIN into a gitignored
tools/vendor/jaguar-toolchain/, matching how test/jaguar-demos/
already handles its own on-demand clone.
Usage
make jaguar-toolchain-build # fetch + build everything
eval "$(tools/jaguar-toolchain/setup.sh env)" # add to PATH, set BJL_ROOT
smoke/hello68k.s and smoke/hellogpu.s are the minimal
does-the-toolchain-work sources CI assembles on every change here (see
.github/workflows/jaguar-toolchain.yml). Their header comments record
the non-obvious syntax each assembler actually requires — notably that
rmac rejects .org in a 68K section (the address goes on rln -a) and
that lyxass emits nothing for code placed before its .run
directive, while still exiting 0. Read them before writing new Jaguar
assembly here.
Once built, test/jaguar-demos/run.sh's have_jag_toolchain() finds
this automatically — make jaguar-demos-build starts actually building
demos from source instead of skipping. Toolchain discovery and the
rmac/rln/lyxass build path are proven working end-to-end; most
individual demo builds still fail downstream of that, for a reason
unrelated to this setup — see the license/build-gap note below.
Sources and licenses
| tool | source | license |
|---|---|---|
| rmac / rln | github.com/mwenge/rmac, tiddly.mooo.com/rln | no LICENSE file found upstream |
| lyxass | github.com/42Bastian/lyxass | MIT |
| pc_jagcrypt | github.com/cubanismo/pc_jagcrypt | no LICENSE file found upstream |
| new_bjl | github.com/42Bastian/new_bjl | Unlicense (public domain) -- credit 42Bastian on any use |
BootIntro-style demos and the jagcrypt -tursi gap: 38 of the 54
JaguarDemos Makefiles invoke jagcrypt -q -u -tursi as a build step, and
the pinned cubanismo/pc_jagcrypt (verified against its real upstream
history) has never supported a -tursi flag. Those demos' individual
builds fail downstream of this toolchain for that reason -- a real gap in
the pinned pc_jagcrypt upstream, not a bug in the fetch/build/discovery
wiring here. Demos that only need rmac/rln/lyxass (no jagcrypt -tursi step), and any future microbenchmark ROMs built for #536, are
unaffected.
Refreshing the pin
- Bump
SHA=inPINfor the tool you're updating. make jaguar-toolchain-fetch && make jaguar-toolchain-build- Confirm the built binaries still run (
rmac -v,lyxass,rln -v,jagcrypt-- pc_jagcrypt's built binary is namedjagcrypt, notpc_jagcrypt). - Commit the
PINchange.