Bump an existing EasyBuild recipe#
A bump is a canonical EasyBuild-origin package bundle. It emits a planned SBOM, a Resolvo lock, and a rewritten recipe; it does not use a separate text rewrite API.
Retarget the toolchain generation#
eb-stack package bump \
--source tests/repro_fixtures/gromacs/GROMACS-2024.4-foss-2023b.eb \
--toolchain-name foss \
--toolchain-version 2024a \
--easyconfigs tests/repro_fixtures/universe_foss_2024a \
--out-dir /tmp/gromacs-2024a
The solver materializes the source recipe as a default profile, derives the target toolchain hierarchy from the robot tree, and asks Resolvo for a jointly feasible dependency selection. Existing robot artifacts keep independent build-tool scopes, matching EasyBuild’s installed-module model.
The output is:
/tmp/gromacs-2024a/
package.plan.json
package.sbom.cdx.json
locks/default.lock.json
easyconfigs/g/GROMACS/GROMACS-2024.4-foss-2024a.eb
Use site overlays and stack preferences#
Pass robot paths from general to specific:
eb-stack package bump \
--source GROMACS-2024.4-foss-2023b.eb \
--toolchain-name foss \
--toolchain-version 2024a \
--easyconfigs vendor/easybuild-easyconfigs/easybuild/easyconfigs \
--easyconfigs site/easyconfigs \
--stack-policy site/foss-2024a.toml \
--out-dir /tmp/gromacs-2024a
Preferred distribution pins participate in the SAT solve and may fall back. Locked pins are exact constraints. Both outcomes are recorded in the profile lock, so a site preference never becomes an invisible post-solve edit.
An explicit override is also a locked solver input:
eb-stack package bump \
--source App-1.0-foss-2023b.eb \
--toolchain-name foss \
--toolchain-version 2024a \
--easyconfigs /path/to/robot \
--dep Python=3.12.3 \
--out-dir /tmp/app
Change the application version#
eb-stack package bump \
--source App-1.0-foss-2023b.eb \
--toolchain-name foss \
--toolchain-version 2024a \
--version 1.1 \
--source-checksum SHA256 \
--easyconfigs /path/to/robot \
--out-dir /tmp/app-1.1
The emitter updates the package version, target toolchain, selected dependency versions, conventional filename, and source checksum entry. Patches remain explicit review work. Omitting the new checksum produces a residual and leaves the old digest visible; it never invents one.
Check and build#
RECIPE=/tmp/gromacs-2024a/easyconfigs/g/GROMACS/GROMACS-2024.4-foss-2024a.eb
eb-stack recipe format "$RECIPE"
eb-stack recipe lint "$RECIPE"
eb-stack recipe check \
--recipe "$RECIPE" \
--easyconfigs /path/to/robot \
--easyconfigs /tmp/gromacs-2024a/easyconfigs
eb-stack campaign run \
--bundle /tmp/gromacs-2024a \
--config examples/targets/base.toml \
--config ~/.config/eb-stack/site.toml \
--target site-builder \
--state /tmp/gromacs-2024a.campaign.json
package bump can establish resolves. Only the campaign’s EasyBuild run can
establish builds, and only declared verification commands can establish
binary-verified. Follow skills/annual-bump/SKILL.md for batch operation and
repair handling.