Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

adopt module_load_environment: SystemMPI #3560

Open
wants to merge 1 commit into
base: 5.0.x
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 24 additions & 21 deletions easybuild/easyblocks/generic/systemmpi.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,25 +225,6 @@ def post_processing_step(self):
"""Do nothing."""
pass

def make_module_req_guess(self):
"""
A dictionary of possible directories to look for. Return known dict for the system MPI.
"""
guesses = {}
if self.cfg['generate_standalone_module']:
if self.mpi_prefix in ['/usr', '/usr/local']:
# Force off adding paths to module since unloading such a module would be a potential shell killer
print_warning("Ignoring option 'generate_standalone_module' since installation prefix is %s",
self.mpi_prefix)
else:
if self.cfg['name'] in ['OpenMPI', 'SpectrumMPI']:
guesses = ConfigureMake.make_module_req_guess(self)
elif self.cfg['name'] in ['impi']:
guesses = EB_impi.make_module_req_guess(self)
else:
raise EasyBuildError("I don't know how to generate module var guesses for %s", self.cfg['name'])
return guesses

def make_module_step(self, fake=False):
"""
Custom module step for SystemMPI: make 'EBROOT' and 'EBVERSION' reflect actual system MPI version
Expand All @@ -269,12 +250,34 @@ def make_module_step(self, fake=False):
self.installdir = self.mpi_prefix

# Generate module
res = super(SystemMPI, self).make_module_step(fake=fake)
module_generator_class = Bundle
if self.cfg['generate_standalone_module']:
if self.mpi_prefix in ['/usr', '/usr/local']:
# reset module load environment for system MPI in default $PATHS
# as such a module would be a potential shell killer
print_warning(
"Ignoring option 'generate_standalone_module' since installation prefix is "
f"already in $PATH: {self.mpi_prefix}"
)
module_vars = [str(env_var) for env_var in self.module_load_environment]
for env_var in module_vars:
delattr(self.module_load_environment, env_var)
else:
# determine system MPI easyblock module to generate standalone module
if self.cfg['name'] in ['OpenMPI', 'SpectrumMPI']:
module_generator_class = ConfigureMake
elif self.cfg['name'] in ['impi']:
module_generator_class = EB_impi
else:
raise EasyBuildError(f"Cannot generate standalone module for SystemMPI of {self.cfg['name']}")

module_path = module_generator_class.make_module_step(self, fake=fake)

# Reset version and installdir to EasyBuild values
self.installdir = self.orig_installdir
self.cfg['version'] = self.orig_version
return res

return module_path

def make_module_extend_modpath(self):
"""
Expand Down