Skip to content

Reprod scripts#163

Draft
casparvl wants to merge 12 commits intoEESSI:mainfrom
casparvl:reprod_scripts
Draft

Reprod scripts#163
casparvl wants to merge 12 commits intoEESSI:mainfrom
casparvl:reprod_scripts

Conversation

@casparvl
Copy link
Contributor

@casparvl casparvl commented Feb 17, 2026

This script is the result of joint development with @bedroge on implementing what was discussed in https://gitlab.com/eessi/support/-/issues/233

In summary: it generates easystack files that will allow you to replicate the software stack installed for a reference architecture. We will use this in practice to deploy software for zen5, which will also serve as a test for these scripts.

@casparvl casparvl requested a review from bedroge February 17, 2026 14:00
Comment on lines 166 to 167
easyblock_path = os.path.join(software_version_dir, "easybuild", "reprod", "easyblocks", "*.py")
easyconfig_path = os.path.join(software_version_dir, "easybuild", f"{software_name}-{software_version}.eb")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These paths are not correct, they're missing the timestamped subdir. So I guess we can use datestamp_dir_last_build, but we may have to move it out of the else clause to make sure it's defined.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can just move datestamp_dir_last_build up, where datestamp_dir_first_build is also initialized?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And then we can probably just use:

Suggested change
easyblock_path = os.path.join(software_version_dir, "easybuild", "reprod", "easyblocks", "*.py")
easyconfig_path = os.path.join(software_version_dir, "easybuild", f"{software_name}-{software_version}.eb")
easyblock_path = os.path.join(datestamp_dir_last_build, "easybuild", "reprod", "easyblocks", "*.py")
easyconfig_path = os.path.join(datestamp_dir_last_build, "easybuild", f"{software_name}-{software_version}.eb")

Caspar van Leeuwen and others added 5 commits February 17, 2026 20:26
…systacks produced matches the original build order
…es that the easyconfig and easyblocks are used as they are specified in the easystack files - which is typically not the case if something is build as a dependency for something else
@bedroge
Copy link
Contributor

bedroge commented Feb 24, 2026

Just to leave it as a note here as well: in EESSI/software-layer#1412 (comment) we found that poetry was rebuilt with an additional dependency, and due to the setup of our reprod script this is not being handled well. We retain the original build order, but always build with the last used easyconfig/easyblock/EB version. In this particular case it means poetry couldn't be built, because that additional dependency (build) was not available yet.

It would be really tricky to automatically get that right. As an alternative we could simply process rebuilds afterwards, in the same way as it was originally done. That does involve more work though, which is the main reason why we had decided to process rebuilds immediately (i.e. build with the latest version). We could reconsider that, though this probably doesn't happen very often, and it can be easily fixed manually by moving some stuff around in the generated easystacks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants