Skip to content
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
35 changes: 21 additions & 14 deletions easybuild/easyblocks/s/score_p.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,23 +49,25 @@ class EB_Score_minus_P(ConfigureMake):
Support for building and installing software using the Score-P configuration style (e.g., Cube, OTF2, Scalasca,
and Score-P).
"""

def configure_step(self, *args, **kwargs):
"""Configure the build, set configure options for compiler, MPI and dependencies."""

if LooseVersion('8.0') <= LooseVersion(self.version) < LooseVersion('8.5'):
# Fix an issue where the configure script would fail if certain dependencies are installed in a path
# that includes "yes" or "no", see https://gitlab.com/score-p/scorep/-/issues/1008.
yes_no_regex = [
(r'\*yes\*\|\*no\*', 'yes,*|no,*|*,yes|*,no'),
(r'_lib}\${with_', '_lib},${with_'),
]
configure_scripts = [
os.path.join(self.start_dir, 'build-backend', 'configure'),
os.path.join(self.start_dir, 'build-mpi', 'configure'),
os.path.join(self.start_dir, 'build-shmem', 'configure'),
]
for configure_script in configure_scripts:
apply_regex_substitutions(configure_script, yes_no_regex)
if self.name == "Score-P":
if LooseVersion('8.0') <= LooseVersion(self.version) < LooseVersion('8.5'):
# Fix an issue where the configure script would fail if certain dependencies are installed in a path
# that includes "yes" or "no", see https://gitlab.com/score-p/scorep/-/issues/1008.
yes_no_regex = [
(r'\*yes\*\|\*no\*', 'yes,*|no,*|*,yes|*,no'),
(r'_lib}\${with_', '_lib},${with_'),
]
configure_scripts = [
os.path.join(self.start_dir, 'build-backend', 'configure'),
os.path.join(self.start_dir, 'build-mpi', 'configure'),
os.path.join(self.start_dir, 'build-shmem', 'configure'),
]
for configure_script in configure_scripts:
apply_regex_substitutions(configure_script, yes_no_regex)

# Remove some settings from the environment, as they interfere with
# Score-P's configure magic...
Expand All @@ -92,6 +94,7 @@ def configure_step(self, *args, **kwargs):
toolchain.INTELCOMP: 'intel',
toolchain.NVHPC: 'nvhpc',
toolchain.PGI: 'pgi',
toolchain.LLVM: 'clang',
}
nvhpc_since = {
'Score-P': '8.0',
Expand All @@ -115,6 +118,10 @@ def configure_step(self, *args, **kwargs):
else:
raise EasyBuildError("Compiler family %s not supported yet (only: %s)",
comp_fam, ', '.join(comp_opts.keys()))
# Enable LLVM instrumentation plugin instead of compiler instrumentation for Score-P v9.0+
if comp_fam == toolchain.LLVM:
if self.name == "Score-P" and LooseVersion(self.version) >= LooseVersion('9.0'):
self.cfg.update('configopts', "--enable-llvm-plugin")

# --with-mpi=(bullxmpi|cray|hp|ibmpoe|intel|intel2|intel3|intelpoe|lam|
# mpibull2|mpich|mpich2|mpich3|mpich4|openmpi|openmpi3| \
Expand Down