Skip to content

Commit

Permalink
Merge pull request #3504 from boegel/20241112184552_new_pr_bundle
Browse files Browse the repository at this point in the history
revert changes from PR #3472, seems to be leading to an infinite loop in easyconfigs test suite?
  • Loading branch information
jfgrimm authored Nov 12, 2024
2 parents 27c471c + 80c0e96 commit 28b2084
Showing 1 changed file with 7 additions and 38 deletions.
45 changes: 7 additions & 38 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 @@ -72,8 +71,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 @@ -199,7 +198,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 @@ -218,7 +217,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 @@ -248,12 +247,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 @@ -323,38 +324,6 @@ def install_step(self):
# close log for this component
comp.close_log()

def make_module_req_guess(self):
"""
Set module requirements from all comppnents, 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 in the generic EasyBlock 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, string_type):
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 28b2084

Please sign in to comment.