mpich: fix the detection of the package (#29284)
This commit is contained in:
parent
f14840fcf2
commit
f1bdbefd46
@ -23,10 +23,10 @@ class Gcc(spack.compiler.Compiler):
|
|||||||
# Subclasses use possible names of Fortran 90 compiler
|
# Subclasses use possible names of Fortran 90 compiler
|
||||||
fc_names = ['gfortran']
|
fc_names = ['gfortran']
|
||||||
|
|
||||||
# MacPorts builds gcc versions with prefixes and -mp-X.Y suffixes.
|
# MacPorts builds gcc versions with prefixes and -mp-X or -mp-X.Y suffixes.
|
||||||
# Homebrew and Linuxbrew may build gcc with -X, -X.Y suffixes.
|
# Homebrew and Linuxbrew may build gcc with -X, -X.Y suffixes.
|
||||||
# Old compatibility versions may contain XY suffixes.
|
# Old compatibility versions may contain XY suffixes.
|
||||||
suffixes = [r'-mp-\d+\.\d+', r'-\d+\.\d+', r'-\d+', r'\d\d']
|
suffixes = [r'-mp-\d+(?:\.\d+)?', r'-\d+(?:\.\d+)?', r'\d\d']
|
||||||
|
|
||||||
# Named wrapper links within build_env_path
|
# Named wrapper links within build_env_path
|
||||||
link_paths = {'cc': 'gcc/gcc',
|
link_paths = {'cc': 'gcc/gcc',
|
||||||
|
@ -231,7 +231,8 @@ def get_spack_compiler_spec(path):
|
|||||||
actual_compiler = None
|
actual_compiler = None
|
||||||
# check if the compiler actually matches the one we want
|
# check if the compiler actually matches the one we want
|
||||||
for spack_compiler in spack_compilers:
|
for spack_compiler in spack_compilers:
|
||||||
if os.path.dirname(spack_compiler.cc) == path:
|
if (spack_compiler.cc and
|
||||||
|
os.path.dirname(spack_compiler.cc) == path):
|
||||||
actual_compiler = spack_compiler
|
actual_compiler = spack_compiler
|
||||||
break
|
break
|
||||||
return actual_compiler.spec if actual_compiler else None
|
return actual_compiler.spec if actual_compiler else None
|
||||||
@ -250,72 +251,72 @@ def is_disabled(text):
|
|||||||
|
|
||||||
results = []
|
results = []
|
||||||
for exe in exes:
|
for exe in exes:
|
||||||
variants = ''
|
variants = []
|
||||||
output = Executable(exe)(output=str, error=str)
|
output = Executable(exe)(output=str, error=str)
|
||||||
if re.search(r'--with-hwloc-prefix=embedded', output):
|
if re.search(r'--with-hwloc-prefix=embedded', output):
|
||||||
variants += '~hwloc'
|
variants.append('~hwloc')
|
||||||
|
|
||||||
if re.search(r'--with-pm=hydra', output):
|
if re.search(r'--with-pm=hydra', output):
|
||||||
variants += '+hydra'
|
variants.append('+hydra')
|
||||||
else:
|
else:
|
||||||
variants += '~hydra'
|
variants.append('~hydra')
|
||||||
|
|
||||||
match = re.search(r'--(\S+)-romio', output)
|
match = re.search(r'--(\S+)-romio', output)
|
||||||
if match and is_enabled(match.group(1)):
|
if match and is_enabled(match.group(1)):
|
||||||
variants += '+romio'
|
variants.append('+romio')
|
||||||
elif match and is_disabled(match.group(1)):
|
elif match and is_disabled(match.group(1)):
|
||||||
variants += '~romio'
|
variants.append('~romio')
|
||||||
|
|
||||||
if re.search(r'--with-ibverbs', output):
|
if re.search(r'--with-ibverbs', output):
|
||||||
variants += '+verbs'
|
variants.append('+verbs')
|
||||||
elif re.search(r'--without-ibverbs', output):
|
elif re.search(r'--without-ibverbs', output):
|
||||||
variants += '~verbs'
|
variants.append('~verbs')
|
||||||
|
|
||||||
match = re.search(r'--enable-wrapper-rpath=(\S+)', output)
|
match = re.search(r'--enable-wrapper-rpath=(\S+)', output)
|
||||||
if match and is_enabled(match.group(1)):
|
if match and is_enabled(match.group(1)):
|
||||||
variants += '+wrapperrpath'
|
variants.append('+wrapperrpath')
|
||||||
match = re.search(r'--enable-wrapper-rpath=(\S+)', output)
|
match = re.search(r'--enable-wrapper-rpath=(\S+)', output)
|
||||||
if match and is_disabled(match.group(1)):
|
if match and is_disabled(match.group(1)):
|
||||||
variants += '~wrapperrpath'
|
variants.append('~wrapperrpath')
|
||||||
|
|
||||||
if re.search(r'--disable-fortran', output):
|
if re.search(r'--disable-fortran', output):
|
||||||
variants += '~fortran'
|
variants.append('~fortran')
|
||||||
|
|
||||||
match = re.search(r'--with-slurm=(\S+)', output)
|
match = re.search(r'--with-slurm=(\S+)', output)
|
||||||
if match and is_enabled(match.group(1)):
|
if match and is_enabled(match.group(1)):
|
||||||
variants += '+slurm'
|
variants.append('+slurm')
|
||||||
|
|
||||||
if re.search(r'--enable-libxml2', output):
|
if re.search(r'--enable-libxml2', output):
|
||||||
variants += '+libxml2'
|
variants.append('+libxml2')
|
||||||
elif re.search(r'--disable-libxml2', output):
|
elif re.search(r'--disable-libxml2', output):
|
||||||
variants += '~libxml2'
|
variants.append('~libxml2')
|
||||||
|
|
||||||
if re.search(r'--with-thread-package=argobots', output):
|
if re.search(r'--with-thread-package=argobots', output):
|
||||||
variants += '+argobots'
|
variants.append('+argobots')
|
||||||
|
|
||||||
if re.search(r'--with-pmi=no', output):
|
if re.search(r'--with-pmi=no', output):
|
||||||
variants += ' pmi=off'
|
variants.append('pmi=off')
|
||||||
elif re.search(r'--with-pmi=simple', output):
|
elif re.search(r'--with-pmi=simple', output):
|
||||||
variants += ' pmi=pmi'
|
variants.append('pmi=pmi')
|
||||||
elif re.search(r'--with-pmi=pmi2/simple', output):
|
elif re.search(r'--with-pmi=pmi2/simple', output):
|
||||||
variants += ' pmi=pmi2'
|
variants.append('pmi=pmi2')
|
||||||
elif re.search(r'--with-pmix', output):
|
elif re.search(r'--with-pmix', output):
|
||||||
variants += ' pmi=pmix'
|
variants.append('pmi=pmix')
|
||||||
|
|
||||||
match = re.search(r'MPICH Device:\s+(ch3|ch4)', output)
|
match = re.search(r'MPICH Device:\s+(ch3|ch4)', output)
|
||||||
if match:
|
if match:
|
||||||
variants += ' device=' + match.group(1)
|
variants.append('device=' + match.group(1))
|
||||||
|
|
||||||
match = re.search(r'--with-device=ch.\S+(ucx|ofi|mxm|tcp)', output)
|
match = re.search(r'--with-device=ch.\S+(ucx|ofi|mxm|tcp)', output)
|
||||||
if match:
|
if match:
|
||||||
variants += ' netmod=' + match.group(1)
|
variants.append('netmod=' + match.group(1))
|
||||||
|
|
||||||
match = re.search(r'MPICH CC:\s+(\S+)', output)
|
match = re.search(r'MPICH CC:\s+(\S+)', output)
|
||||||
compiler_spec = get_spack_compiler_spec(
|
compiler_spec = get_spack_compiler_spec(
|
||||||
os.path.dirname(match.group(1)))
|
os.path.dirname(match.group(1)))
|
||||||
if compiler_spec:
|
if compiler_spec:
|
||||||
variants += '%' + str(compiler_spec)
|
variants.append('%' + str(compiler_spec))
|
||||||
results.append(variants)
|
results.append(' '.join(variants))
|
||||||
return results
|
return results
|
||||||
|
|
||||||
def setup_build_environment(self, env):
|
def setup_build_environment(self, env):
|
||||||
|
Loading…
Reference in New Issue
Block a user