split SystemCompilerGCC out of SystemCompiler and adopt module_load_environment #3559
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes three issues with
SystemCompiler
:fixes using
SystemCompiler
easyblock for wrapper around system GCC fails if an Intel license is not defined #2815It is not possible to have a single class that handles GCC and Intel compilers, because inheritance in python is linear, so as soon as multiple classes are added to
SystemCompiler
all of them come up in the chain of calls generated bysuper()
.Solution is to make
SystemCompiler
agnostic of any compiler family and create child classes per compiler family. This PR addsSystemCompilerGCC
for the GCC family. I'm not adding any foricc/ifort
as those easyconfigs have been already archived. In the future we could add one for intel-compilers if there is interest.This approach is quite simple as the main logic of handling the multiple families remains inside
SystemCompiler
, avoiding any duplication of code. Child classes only need to setself.compiler_class
appropriately.This PR is an alternative solution to fix GCC-system without Intel license #3402. The present solution avoids changes in other easyblocks like
EB_GCC
and is more future-proof as sub-classes handling different compiler families are completely isolated.fixes RPATH wrappers break SystemCompiler easyblock #3558
RPATH is forced disable in
SystemCompilers
as it has no role for this type of installation.updates
SystemCompiler
easyblock for replace make_module_req_guess with module_load_environment in all EasyBlocks #3527