The package compiler moves by itself, every day. Nothing else does. The tasks in this chapter are the only way the repository’s tooling changes, and each is a pull request a maintainer opens and reviews.
No workflow performs them on a schedule. A pull request opened by a workflow
with the repository’s GITHUB_TOKEN does not start CI, so an automated update
would arrive untested and wait for a maintainer anyway. More to the point, each
of these changes decides which code runs in CI, which is a decision to review
and not a chore to automate.
| Task | Files changed | When |
|---|---|---|
Update the lock |
|
To take newer tool versions, or to make a newer nightly selectable as |
Change the tooling compiler |
|
When scripts need a newer compiler, or periodically to stay close to current |
Upgrade Blueprint |
|
For a new roc-blueprint release |
Update script dependencies |
Script headers, |
For a new release of a platform or package the scripts use |
Regenerate host bindings |
A platform’s committed bindings |
When |
Update the lock
-
Run
blueprint update, orblueprint update <input>to move one input and keep every other pin. -
Run
blueprint run check. -
Open a pull request whose only changed file is
Blueprint.lock. -
Merge after
ci.ymlpasses.
A lock update moves the overlay revision, the package source and tool versions.
It never changes which release is roc-stable, because that tag is written in
Blueprint.roc. It does not change the blueprint binary or the platform URL.
Where the repository fingerprints native build inputs, a lock change can make
those inputs stale. ci.yml reports that, and the fix is a new linker-input
release in the same pull request; see
Choose the correct maintainer path.
Change the tooling compiler
-
Choose a published nightly release.
-
Change the tag in the
Command("roc-stable", …)setting ofBlueprint.roc. -
Change the
rocfield in every script header to the same tag. The check script fails until they all match. -
If the locked overlay revision predates that release, run
blueprint update rocand commitBlueprint.lockin the same pull request. -
Fix any script the new compiler breaks in that pull request, so the tag and the scripts move together.
-
Merge after
ci.ymlpasses.
This is a maintainer’s decision for each repository. Repositories need not agree.
Upgrade Blueprint
A release’s blueprint binary must be used with that release’s platform URL.
actions/setup-blueprint reads the release from that URL, so the URL is the
only place to change:
-
Choose a roc-blueprint release.
-
Move the workflows' reference to
actions/setup-blueprintto a revision that records that release, if the current one does not. Dependabot proposes this change;actions/setup-blueprintexplains where the checksums are reviewed. -
Change the platform URL in the
Blueprint.rocheader. -
Run
blueprint updateif the new release refuses the existing lock. -
Merge after
ci.ymlpasses.
No workflow file names the Blueprint version or a checksum.
Contributors then download the binary from the same release.
Update script dependencies
-
Change the release URL in each script header that uses the dependency.
-
Change the same URL under
RocPackagesinBlueprint.roc, and add any new dependencies of that dependency.roc-stable deps scripts/check_all.roclists them. -
Run
blueprint updateand commitBlueprint.lock. -
Merge after
ci.ymlpasses.
Regenerate host bindings
See Upgrade the bindings.