only retain runtime dependencies of toolchain in Toolchain instance#5048
only retain runtime dependencies of toolchain in Toolchain instance#5048boegel merged 2 commits intoeasybuilders:developfrom
Toolchain instance#5048Conversation
In easybuilders#5042 `tcdeps` is actually used to get the software roots. Those are only available for *runtime* dependencies of the toolchain module. So it will fail for build dependencies which are however included by EasyConfig.toolchain.
There was a problem hiding this comment.
lgtm, fix is spot on I think, nice job @Flamefire
I'll dig a little more, mostly to understand why this doesn't affect all builds, but fix looks sane to me.
Until now, tcdeps was only used to produce dry run output, for nothing else.
This was wrong all along, but nobody really cared or noticed because it only leads to wrong dry run output if the module for the toolchain does not exist yet...
For example, in output of eb bzip2-1.0.8-GCCcore-14.3.0.eb -x:
Loading toolchain module...
module load M4/1.4.20 [SIMULATED]
module load binutils/2.44 [SIMULATED]
module load GCCcore/14.3.0 [SIMULATED]
|
I've tested this with easybuilders/easybuild-easyconfigs#24563. Without the patch from this PR I got: And with the patch it works fine: |
Toolchain instance
|
Without the fix, the enhanced test triggers the bug: |
I guess many toolchains don't have build dependencies.
Is it wrong though? I guess the toolchain module will automatically load the dependencies, doesn't it? |
In #5042
tcdepsis actually used to get the software roots. Those are only available for runtime dependencies of the toolchain module. So it will fail for build dependencies which are however included by EasyConfig.toolchain.Should we load the
tcdepsexplicitely before loading the toolchain module? The dry-run output seems to suggest that See https://github.com/boegel/easybuild-framework/blob/f7b811b49358e8608230db44835e389c2f6cbaf0/easybuild/tools/toolchain/toolchain.py#L627edit (by @boegel): this is a fix for failures like: