Skip to content

Commit

Permalink
Merge branch 'develop' into sync-20241113
Browse files Browse the repository at this point in the history
  • Loading branch information
lexming committed Nov 13, 2024
2 parents cce4c2d + 28b2084 commit 9001521
Showing 1 changed file with 7 additions and 37 deletions.
44 changes: 7 additions & 37 deletions easybuild/easyblocks/generic/bundle.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
@author: Pieter De Baets (Ghent University)
@author: Jens Timmerman (Ghent University)
@author: Jasper Grimm (University of York)
@author: Jan Andre Reuter (Juelich Supercomputing Centre)
"""
import copy
import os
Expand Down Expand Up @@ -71,8 +70,8 @@ def __init__(self, *args, **kwargs):
self.altroot = None
self.altversion = None

# list of EasyConfig instances and their EasyBlocks for components
self.comp_instances = []
# list of EasyConfig instances for components
self.comp_cfgs = []

# list of EasyConfig instances of components for which to run sanity checks
self.comp_cfgs_sanity_check = []
Expand Down Expand Up @@ -198,7 +197,7 @@ def __init__(self, *args, **kwargs):
if comp_cfg['patches']:
self.cfg.update('patches', comp_cfg['patches'])

self.comp_instances.append((comp_cfg, comp_cfg.easyblock(comp_cfg)))
self.comp_cfgs.append(comp_cfg)

self.cfg.update('checksums', checksums_patches)

Expand All @@ -217,7 +216,7 @@ def check_checksums(self):
"""
checksum_issues = super(Bundle, self).check_checksums()

for comp, _ in self.comp_instances:
for comp in self.comp_cfgs:
checksum_issues.extend(self.check_checksums_for(comp, sub="of component %s" % comp['name']))

return checksum_issues
Expand Down Expand Up @@ -247,12 +246,14 @@ def build_step(self):
def install_step(self):
"""Install components, if specified."""
comp_cnt = len(self.cfg['components'])
for idx, (cfg, comp) in enumerate(self.comp_instances):
for idx, cfg in enumerate(self.comp_cfgs):

print_msg("installing bundle component %s v%s (%d/%d)..." %
(cfg['name'], cfg['version'], idx + 1, comp_cnt))
self.log.info("Installing component %s v%s using easyblock %s", cfg['name'], cfg['version'], cfg.easyblock)

comp = cfg.easyblock(cfg)

# correct build/install dirs
comp.builddir = self.builddir
comp.install_subdir, comp.installdir = self.install_subdir, self.installdir
Expand Down Expand Up @@ -322,37 +323,6 @@ def install_step(self):
# close log for this component
comp.close_log()

def make_module_req_guess(self):
"""
Set module requirements from all components, e.g. $PATH, etc.
During the install step, we only set these requirements temporarily.
Later on when building the module, those paths are not considered.
Therefore, iterate through all the components again and gather
the requirements.
Do not remove duplicates or check for existance of folders,
as this is done while creating the modulefile already.
"""
# Start with the paths from the generic EasyBlock.
# If not added here, they might be missing entirely and fail sanity checks.
final_reqs = super(Bundle, self).make_module_req_guess()

for cfg, comp in self.comp_instances:
self.log.info("Gathering module paths for component %s v%s", cfg['name'], cfg['version'])
reqs = comp.make_module_req_guess()

try:
for key, value in sorted(reqs.items()):
if isinstance(reqs, str):
value = [value]
final_reqs.setdefault(key, [])
final_reqs[key] += value
except AttributeError:
raise EasyBuildError("Cannot process module requirements of bundle component %s v%s",
cfg['name'], cfg['version'])

return final_reqs

def make_module_extra(self, *args, **kwargs):
"""Set extra stuff in module file, e.g. $EBROOT*, $EBVERSION*, etc."""
if not self.altroot and not self.altversion:
Expand Down

0 comments on commit 9001521

Please sign in to comment.