summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarmen Stoppels <harmenstoppels@gmail.com>2021-05-25 12:07:00 +0200
committerGitHub <noreply@github.com>2021-05-25 12:07:00 +0200
commit56e7e2a406264479bca32f3d46013fa10ca49c21 (patch)
tree54c46c49cf207455762e58a5214816158c38d70f
parent6d29f0d61f43f1246138fc40dc7ff16410ebd17c (diff)
downloadspack-56e7e2a406264479bca32f3d46013fa10ca49c21.tar.gz
spack-56e7e2a406264479bca32f3d46013fa10ca49c21.tar.bz2
spack-56e7e2a406264479bca32f3d46013fa10ca49c21.tar.xz
spack-56e7e2a406264479bca32f3d46013fa10ca49c21.zip
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 <massimiliano.culpo@gmail.com>
-rw-r--r--lib/spack/spack/build_systems/meson.py13
-rw-r--r--var/spack/repos/builtin/packages/libfuse/package.py10
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)