Update packages.yaml format and support configuration updates
The YAML config for paths and modules of external packages has changed: the new format allows a single spec to load multiple modules. Spack will automatically convert from the old format when reading the configs (the updates do not add new essential properties, so this change in Spack is backwards-compatible). With this update, Spack cannot modify existing configs/environments without updating them (e.g. “spack config add” will fail if the configuration is in a format that predates this PR). The user is prompted to do this explicitly and commands are provided. All config scopes can be updated at once. Each environment must be updated one at a time.
This commit is contained in:

committed by
Peter Scheibel

parent
1398038bee
commit
193e8333fa
@@ -2,12 +2,11 @@
|
||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
from spack import *
|
||||
|
||||
import os
|
||||
import re
|
||||
|
||||
import spack.package
|
||||
|
||||
|
||||
class FindExternals1(AutotoolsPackage):
|
||||
executables = ['find-externals1-exe']
|
||||
@@ -31,4 +30,6 @@ def determine_spec_details(cls, prefix, exes_in_prefix):
|
||||
match = re.search(r'find-externals1.*version\s+(\S+)', output)
|
||||
if match:
|
||||
version_str = match.group(1)
|
||||
return Spec('find-externals1@{0}'.format(version_str))
|
||||
return Spec.from_detection(
|
||||
'find-externals1@{0}'.format(version_str)
|
||||
)
|
||||
|
@@ -187,7 +187,7 @@ def setup_run_environment(self, env):
|
||||
# their run environments the code to make the compilers available.
|
||||
# For Cray MPIs, the regular compiler wrappers *are* the MPI wrappers.
|
||||
# Cray MPIs always have cray in the module name, e.g. "cray-mpich"
|
||||
if self.spec.external_module and 'cray' in self.spec.external_module:
|
||||
if self.spec.external_modules and 'cray' in self.spec.external_modules:
|
||||
env.set('MPICC', spack_cc)
|
||||
env.set('MPICXX', spack_cxx)
|
||||
env.set('MPIF77', spack_fc)
|
||||
@@ -210,7 +210,7 @@ def setup_dependent_build_environment(self, env, dependent_spec):
|
||||
def setup_dependent_package(self, module, dependent_spec):
|
||||
# For Cray MPIs, the regular compiler wrappers *are* the MPI wrappers.
|
||||
# Cray MPIs always have cray in the module name, e.g. "cray-mpich"
|
||||
if self.spec.external_module and 'cray' in self.spec.external_module:
|
||||
if self.spec.external_modules and 'cray' in self.spec.external_modules:
|
||||
self.spec.mpicc = spack_cc
|
||||
self.spec.mpicxx = spack_cxx
|
||||
self.spec.mpifc = spack_fc
|
||||
|
@@ -235,7 +235,7 @@ def setup_dependent_build_environment(self, env, dependent_spec):
|
||||
def setup_compiler_environment(self, env):
|
||||
# For Cray MPIs, the regular compiler wrappers *are* the MPI wrappers.
|
||||
# Cray MPIs always have cray in the module name, e.g. "cray-mvapich"
|
||||
if self.spec.external_module and 'cray' in self.spec.external_module:
|
||||
if self.spec.external_modules and 'cray' in self.spec.external_modules:
|
||||
env.set('MPICC', spack_cc)
|
||||
env.set('MPICXX', spack_cxx)
|
||||
env.set('MPIF77', spack_fc)
|
||||
@@ -249,7 +249,7 @@ def setup_compiler_environment(self, env):
|
||||
def setup_dependent_package(self, module, dependent_spec):
|
||||
# For Cray MPIs, the regular compiler wrappers *are* the MPI wrappers.
|
||||
# Cray MPIs always have cray in the module name, e.g. "cray-mvapich"
|
||||
if self.spec.external_module and 'cray' in self.spec.external_module:
|
||||
if self.spec.external_modules and 'cray' in self.spec.external_modules:
|
||||
self.spec.mpicc = spack_cc
|
||||
self.spec.mpicxx = spack_cxx
|
||||
self.spec.mpifc = spack_fc
|
||||
|
Reference in New Issue
Block a user