Conversation
|
This one has tarballs from the GNU mirror, which was causing issues in EESSI/software-layer#1557 bot: build repo:eessi.io-2026.06-software instance:eessi-bot-mc-aws for:arch=x86_64/amd/zen2 |
|
New job on instance
|
|
bot: build repo:eessi.io-2026.06-software instance:eessi-bot-deucalion for:arch=aarch64/a64fx |
|
New job on instance
|
|
The a64fx build already showed how this improves things: |
|
Trying it again with bot: build repo:eessi.io-2026.06-software instance:eessi-bot-deucalion for:arch=aarch64/a64fx |
|
New job on instance
|
|
Also trying one without the last item ( bot: build repo:eessi.io-2026.06-software instance:eessi-bot-mc-aws for:arch=x86_64/amd/zen2 |
|
New job on instance
|
|
a64fx build (still with 3 items in the easystack): Then it exits, as expected. For the zen 2 build (only 2 items): So, also as expected. Will do one more without download issues to ensure that this still works as well. |
|
bot: build repo:eessi.io-2026.06-software instance:eessi-bot-mc-aws for:arch=x86_64/amd/zen2 |
|
New job on instance
|
|
That still works, so everything seems to work as expected. Removed the easystack file again. Note that this doesn't require a build/ingest. |
|
|
||
| if [ -f ${easystack_file} ]; then | ||
| echo_green "Downloading sources for easystack file ${easystack_file}..." | ||
| ${EB} --fetch-all --easystack ${easystack_file} --robot |
There was a problem hiding this comment.
--fetch-all is only supported from EasyBuild 5.3.0 onwards, do we need a version check here?
There was a problem hiding this comment.
Good point. I guess it's not very likely that we'll still be using older versions, but I've added a check by running eb --help and grepping for --fetch-all first. Otherwise it falls back to --fetch.
|
Does this mean that if the sources for already existing software in the easystack file cannot be fetched, the build process will fail? so we need to fix the existing easyconfigs first? |
I guess that could happen, theoretically, e.g. if we would clean up the sources for some already installed applications. But I don't think we've ever done that. Also, we usually stick to the latest EB release, so the easyconfigs should be quite up-to-date, and it should not really happen that we are trying to use outdated source URLs from an old easyconfig. |
As discussed in the support meeting, I've introduced an environment variable ( |
Download problems can also happen because upstream is down (like https://cmake.org right now, or https://ftpmirror.gnu.org/ having trouble for a while now). But the "cached" downloads should largely prevent frequent trouble there, indeed... |
| ${EB} --help | grep -q -e "fetch-all" && fetch_option="--fetch-all" | ||
| echo_green "Downloading sources for easystack file ${easystack_file} using eb ${fetch_option}..." | ||
| echo "(note: this step can be skipped by setting $EESSI_SKIP_FETCH_EASYSTACK_SOURCES to a non-empty value)" | ||
| ${EB} ${fetch_option} --easystack ${easystack_file} --robot |
There was a problem hiding this comment.
In some situations, this is going to result in quite a bit of slowdown, even if all source files for the easyconfigs listed in the easystack file are already available in the cached downloads (sourcepath), since this will iterate over all required sources (due to --robot), including the ones for extensions...
I understand how prefetching of sources helps, but is the above really what we want?
Can we somehow extract the list of easyconfig files being added to the easystack file, and only call --fetch-all on those?
There was a problem hiding this comment.
That's a good idea. I wasn't sure if that was easy to implement, but with some help of a friend I got an awk command that could fetch the added lines for each easystack file from the PR diff file. Still feels a little bit brittle, but let me give it a try.
Co-authored-by: Kenneth Hoste <kenneth.hoste@ugent.be>
| easystack_additions=$(mktemp --suffix=.yml) | ||
| # use the PR diff file to find which items have been added to this particular easystack file | ||
| # and dump that to a temporary easystack file that we can use to fetch the sources for only these added items | ||
| awk -v file="${easystack_file}" ' |
There was a problem hiding this comment.
Are we sure awk is available everywhere we need it to be?
There was a problem hiding this comment.
Both the compat layer and container have awk.
Enhance awk script to handle empty additions case.
This should make it fail early in case source tarballs cannot be downloaded. Note that if you're processing multiple easystack files, it will not fetch the sources for all of them. Doing that would require more changes to the code, and we're not doing that very often anyway: almost all PRs change only one easystack file, so this should already be a big improvement.
I'll give it a try with an actual easystack file.