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. When a selected pin belongs to another toolchain generation, the emitted dependency tuple includes that toolchain explicitly. Source dependencies that already use an explicit toolchain preserve their family and retarget its generation before solving.
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.