From 2795414a80839208c3463e49f197fee25f2be0f8 Mon Sep 17 00:00:00 2001 From: Greg Becker Date: Tue, 2 Jun 2020 02:02:28 -0700 Subject: Fix satisfaction checks for excluding variants from matrices (#16893) Because of the way abstract variants are implemented, the following spec matrix does not work as intended: ``` matrix: - [foo] - [bar=a, bar=b] exclude: - bar=a ``` because abstract variants always satisfy any variant of the same name, regardless of values. This PR converts abstract variants to whatever their appropriate type is before running satisfaction checks for the excludes clause in a matrix. fixes #16841 --- .../packages/multivalue-variant/package.py | 35 ++++++++++++++++++++++ .../packages/multivalue_variant/package.py | 35 ---------------------- .../singlevalue-variant-dependent/package.py | 2 +- 3 files changed, 36 insertions(+), 36 deletions(-) create mode 100644 var/spack/repos/builtin.mock/packages/multivalue-variant/package.py delete mode 100644 var/spack/repos/builtin.mock/packages/multivalue_variant/package.py (limited to 'var') diff --git a/var/spack/repos/builtin.mock/packages/multivalue-variant/package.py b/var/spack/repos/builtin.mock/packages/multivalue-variant/package.py new file mode 100644 index 0000000000..22d0ea1d97 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/multivalue-variant/package.py @@ -0,0 +1,35 @@ +# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class MultivalueVariant(Package): + homepage = "http://www.llnl.gov" + url = "http://www.llnl.gov/mpileaks-1.0.tar.gz" + + version(1.0, 'foobarbaz') + version(2.1, 'foobarbaz') + version(2.2, 'foobarbaz') + version(2.3, 'foobarbaz') + + variant('debug', default=False, description='Debug variant') + variant( + 'foo', description='Multi-valued variant', + values=any_combination_of('bar', 'baz', 'barbaz'), + ) + + variant( + 'fee', + description='Single-valued variant', + default='bar', + values=('bar', 'baz', 'barbaz'), + multi=False + ) + + depends_on('mpi') + depends_on('callpath') + depends_on('a') + depends_on('a@1.0', when='fee=barbaz') diff --git a/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py b/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py deleted file mode 100644 index 22d0ea1d97..0000000000 --- a/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * - - -class MultivalueVariant(Package): - homepage = "http://www.llnl.gov" - url = "http://www.llnl.gov/mpileaks-1.0.tar.gz" - - version(1.0, 'foobarbaz') - version(2.1, 'foobarbaz') - version(2.2, 'foobarbaz') - version(2.3, 'foobarbaz') - - variant('debug', default=False, description='Debug variant') - variant( - 'foo', description='Multi-valued variant', - values=any_combination_of('bar', 'baz', 'barbaz'), - ) - - variant( - 'fee', - description='Single-valued variant', - default='bar', - values=('bar', 'baz', 'barbaz'), - multi=False - ) - - depends_on('mpi') - depends_on('callpath') - depends_on('a') - depends_on('a@1.0', when='fee=barbaz') diff --git a/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py b/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py index 5507fbdc21..de14faa51f 100644 --- a/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py +++ b/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py @@ -14,4 +14,4 @@ class SinglevalueVariantDependent(Package): version('1.0', '0123456789abcdef0123456789abcdef') - depends_on('multivalue_variant fee=baz') + depends_on('multivalue-variant fee=baz') -- cgit v1.2.3-70-g09d2