diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/spack/spack/cmd/config.py | 4 | ||||
-rw-r--r-- | lib/spack/spack/test/cmd/env.py | 14 |
2 files changed, 17 insertions, 1 deletions
diff --git a/lib/spack/spack/cmd/config.py b/lib/spack/spack/cmd/config.py index adfe286c37..ee0bad2bae 100644 --- a/lib/spack/spack/cmd/config.py +++ b/lib/spack/spack/cmd/config.py @@ -304,6 +304,10 @@ def _config_change_requires_scope(path, spec, scope, match_spec=None): item["any_of"] = [override_cfg_spec(x) for x in item["any_of"]] elif "spec" in item: item["spec"] = override_cfg_spec(item["spec"]) + elif isinstance(item, str): + item = override_cfg_spec(item) + else: + raise ValueError(f"Unexpected requirement: ({type(item)}) {str(item)}") new_require.append(item) spack.config.set(path, new_require, scope=scope) diff --git a/lib/spack/spack/test/cmd/env.py b/lib/spack/spack/test/cmd/env.py index 0908ae3be3..1d3380b8a6 100644 --- a/lib/spack/spack/test/cmd/env.py +++ b/lib/spack/spack/test/cmd/env.py @@ -922,10 +922,22 @@ spack: # a spec string that requires enclosing in quotes as # part of the config path config("change", 'packages:libelf:require:"@0.8.12:"') - test_spec = spack.spec.Spec("libelf@0.8.12").concretized() + spack.spec.Spec("libelf@0.8.12").concretized() # No need for assert, if there wasn't a failure, we # changed the requirement successfully. + # Use change to add a requirement for a package that + # has no requirements defined + config("change", "packages:fftw:require:+mpi") + test_spec = spack.spec.Spec("fftw").concretized() + assert test_spec.satisfies("+mpi") + config("change", "packages:fftw:require:~mpi") + test_spec = spack.spec.Spec("fftw").concretized() + assert test_spec.satisfies("~mpi") + config("change", "packages:fftw:require:@1.0") + test_spec = spack.spec.Spec("fftw").concretized() + assert test_spec.satisfies("@1.0~mpi") + # Use "--match-spec" to change one spec in a "one_of" # list config("change", "packages:bowtie:require:@1.2.2", "--match-spec", "@1.2.0") |