From 56e7e2a406264479bca32f3d46013fa10ca49c21 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 25 May 2021 12:07:00 +0200 Subject: MesonPackage: make "default_library" a multi-valued variant (#23540) Currently if one package does `depends_on('pkg default_library=shared')` and another does `depends_on('pkg default_library=both')`, you'd get a concretization error. With this PR one package can do `depends_on('pkg default_library=shared')` and another depends_on('default_library=static'), and it would concretize to `pkg default_library=shared,static` Co-authored-by: Massimiliano Culpo --- lib/spack/spack/build_systems/meson.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/spack/spack/build_systems/meson.py b/lib/spack/spack/build_systems/meson.py index 8f9972ba2e..14fe093f28 100644 --- a/lib/spack/spack/build_systems/meson.py +++ b/lib/spack/spack/build_systems/meson.py @@ -55,9 +55,8 @@ class MesonPackage(PackageBase): variant('buildtype', default='debugoptimized', description='Meson build type', values=('plain', 'debug', 'debugoptimized', 'release', 'minsize')) - variant('default_library', default='shared', - description=' Default library type', - values=('shared', 'static', 'both')) + variant('default_library', default='shared', values=('shared', 'static'), + multi=True, description='Build shared libs, static libs or both') variant('strip', default=False, description='Strip targets on install') depends_on('meson', type='build') @@ -102,9 +101,11 @@ class MesonPackage(PackageBase): strip = 'true' if '+strip' in pkg.spec else 'false' - try: - default_library = pkg.spec.variants['default_library'].value - except KeyError: + if 'libs=static,shared' in pkg.spec: + default_library = 'both' + elif 'libs=static' in pkg.spec: + default_library = 'static' + else: default_library = 'shared' args = [ -- cgit v1.2.3-60-g2f50