aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2021-03-26 10:41:38 -0400
committerJussi Pakkanen <jpakkane@gmail.com>2021-03-26 23:41:03 +0200
commit47633330da1011f9c526bab8950c8265ef9ed7d4 (patch)
tree7904dd8383d406486e572f4595911de9b0adc7fe
parentdf4314c7b88998aa9e7a497b1da04efb77110f60 (diff)
downloadmeson-47633330da1011f9c526bab8950c8265ef9ed7d4.zip
meson-47633330da1011f9c526bab8950c8265ef9ed7d4.tar.gz
meson-47633330da1011f9c526bab8950c8265ef9ed7d4.tar.bz2
pkgconfig: Allow setting prefix in dataonly pc file
Some variables are reserved because meson set them automatically. But we are not setting them for dataonly pc files, so there is no reason to reserve them. Fixes: #8583.
-rw-r--r--mesonbuild/modules/pkgconfig.py6
-rwxr-xr-xrun_unittests.py1
-rw-r--r--test cases/common/45 pkgconfig-gen/meson.build7
3 files changed, 11 insertions, 3 deletions
diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py
index fd2c24a..c9af5bf 100644
--- a/mesonbuild/modules/pkgconfig.py
+++ b/mesonbuild/modules/pkgconfig.py
@@ -469,10 +469,12 @@ class PkgConfigModule(ExtensionModule):
raise mesonlib.MesonException('Too many positional arguments passed to Pkgconfig_gen.')
dataonly = kwargs.get('dataonly', False)
+ if not isinstance(dataonly, bool):
+ raise mesonlib.MesonException('dataonly must be boolean.')
if dataonly:
default_subdirs = []
blocked_vars = ['libraries', 'libraries_private', 'require_private', 'extra_cflags', 'subdirs']
- if len(set(kwargs) & set(blocked_vars)) > 0:
+ if any(k in kwargs for k in blocked_vars):
raise mesonlib.MesonException(f'Cannot combine dataonly with any of {blocked_vars}')
subdirs = mesonlib.stringlistify(kwargs.get('subdirs', default_subdirs))
@@ -519,7 +521,7 @@ class PkgConfigModule(ExtensionModule):
reserved = ['prefix', 'libdir', 'includedir']
variables = []
for name, value in vardict.items():
- if name in reserved:
+ if not dataonly and name in reserved:
raise mesonlib.MesonException(f'Variable "{name}" is reserved')
variables.append((name, value))
return variables
diff --git a/run_unittests.py b/run_unittests.py
index 5362616..0888a97 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -6444,6 +6444,7 @@ class LinuxlikeTests(BasePlatformTests):
self.assertEqual(libhello_nolib.get_link_args(), [])
self.assertEqual(libhello_nolib.get_compile_args(), [])
self.assertEqual(libhello_nolib.get_pkgconfig_variable('foo', {}), 'bar')
+ self.assertEqual(libhello_nolib.get_pkgconfig_variable('prefix', {}), self.prefix)
def test_pkgconfig_gen_deps(self):
'''
diff --git a/test cases/common/45 pkgconfig-gen/meson.build b/test cases/common/45 pkgconfig-gen/meson.build
index 4638123..6a3b788 100644
--- a/test cases/common/45 pkgconfig-gen/meson.build
+++ b/test cases/common/45 pkgconfig-gen/meson.build
@@ -65,7 +65,12 @@ pkgg.generate(
description : 'A minimalistic pkgconfig file.',
version : libver,
dataonly: true,
- variables : {'foo': 'bar'},
+ variables : {
+ 'foo': 'bar',
+ # prefix is not set by default for dataonly pc files, but it is allowed to
+ # define it manually.
+ 'prefix': get_option('prefix'),
+ },
)
# Regression test for 2 cases: