aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2018-04-06 21:07:54 -0400
committerXavier Claessens <xavier.claessens@collabora.com>2018-04-07 21:35:47 -0400
commitda0f0f02e5463fa04bcb475a108485362a70e261 (patch)
treee4cb36dbcf114bcc9586b8455ae2d3184baede45
parent142f51a7b5c2defc760a57918fb0357477538356 (diff)
downloadmeson-da0f0f02e5463fa04bcb475a108485362a70e261.zip
meson-da0f0f02e5463fa04bcb475a108485362a70e261.tar.gz
meson-da0f0f02e5463fa04bcb475a108485362a70e261.tar.bz2
pkgconfig generator: Remove duplicates in required versions
-rw-r--r--mesonbuild/modules/pkgconfig.py8
-rw-r--r--test cases/common/51 pkgconfig-gen/dependencies/meson.build4
2 files changed, 8 insertions, 4 deletions
diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py
index 6e4f3df..11fa80d 100644
--- a/mesonbuild/modules/pkgconfig.py
+++ b/mesonbuild/modules/pkgconfig.py
@@ -133,9 +133,11 @@ class DependenciesHelper:
def add_version_reqs(self, name, version_reqs):
if version_reqs:
- vreqs = self.version_reqs.get(name, [])
- vreqs += mesonlib.stringlistify(version_reqs)
- self.version_reqs[name] = vreqs
+ if name not in self.version_reqs:
+ self.version_reqs[name] = set()
+ # We could have '>=1.0' or '>= 1.0', remove spaces to normalize
+ new_vreqs = [s.replace(' ', '') for s in mesonlib.stringlistify(version_reqs)]
+ self.version_reqs[name].update(new_vreqs)
def split_version_req(self, s):
for op in ['>=', '<=', '!=', '==', '=', '>', '<']:
diff --git a/test cases/common/51 pkgconfig-gen/dependencies/meson.build b/test cases/common/51 pkgconfig-gen/dependencies/meson.build
index d13f009..640115a 100644
--- a/test cases/common/51 pkgconfig-gen/dependencies/meson.build
+++ b/test cases/common/51 pkgconfig-gen/dependencies/meson.build
@@ -11,6 +11,7 @@ pkgg.generate(exposed_lib)
# Declare a few different Dependency objects
pc_dep = dependency('libfoo', version : '>=1.0')
+pc_dep_dup = dependency('libfoo', version : '>= 1.0')
notfound_dep = dependency('notfound', required : false)
threads_dep = dependency('threads')
custom_dep = declare_dependency(link_args : ['-lcustom'], compile_args : ['-DCUSTOM'])
@@ -24,9 +25,10 @@ custom2_dep = declare_dependency(link_args : ['-lcustom2'], compile_args : ['-DC
# - Having custom_dep in libraries and libraries_private should only add it in Libs
# - Having custom2_dep in libraries_private should not add its Cflags
# - Having pc_dep in libraries_private should add it in Requires.private
+# - pc_dep_dup is the same library and same version, should be ignored
# - notfound_dep is not required so it shouldn't appear in the pc file.
pkgg.generate(libraries : [main_lib, exposed_lib, threads_dep , custom_dep],
- libraries_private : [custom_dep, custom2_dep, pc_dep, notfound_dep],
+ libraries_private : [custom_dep, custom2_dep, pc_dep, pc_dep_dup, notfound_dep],
version : '1.0',
name : 'dependency-test',
filebase : 'dependency-test',