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 +++++++------ var/spack/repos/builtin/packages/libfuse/package.py | 10 ++++------ 2 files changed, 11 insertions(+), 12 deletions(-) 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 = [ diff --git a/var/spack/repos/builtin/packages/libfuse/package.py b/var/spack/repos/builtin/packages/libfuse/package.py index 8df03c5366..298c0decdf 100644 --- a/var/spack/repos/builtin/packages/libfuse/package.py +++ b/var/spack/repos/builtin/packages/libfuse/package.py @@ -68,12 +68,10 @@ class Libfuse(MesonPackage): "INIT_D_PATH={0}".format(self.prefix.etc), ] - if 'default_library=shared' in self.spec: - args.extend(['--enable-shared', '--disable-static']) - elif 'default_library=static' in self.spec: - args.extend(['--disable-shared', '--enable-static']) - else: - args.extend(['--enable-shared', '--enable-static']) + args.append('--enable-static' if 'libs=static' in self.spec + else '--disable-static') + args.append('--enable-shared' if 'libs=shared' in self.spec + else '--disable-shared') configure(*args) -- cgit v1.2.3-60-g2f50