diff options
| -rw-r--r-- | mesonbuild/modules/pkgconfig.py | 7 | ||||
| -rw-r--r-- | test cases/common/44 pkgconfig-gen/meson.build | 8 | ||||
| -rw-r--r-- | test cases/common/44 pkgconfig-gen/test.json | 1 |
3 files changed, 14 insertions, 2 deletions
diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py index 1295cea50..7d5bc913e 100644 --- a/mesonbuild/modules/pkgconfig.py +++ b/mesonbuild/modules/pkgconfig.py @@ -150,6 +150,8 @@ class DependenciesHelper: self.add_version_reqs(obj.name, obj.version_reqs) elif isinstance(obj, str): name, version_req = self.split_version_req(obj) + if name is None: + continue processed_reqs.append(name) self.add_version_reqs(name, [version_req] if version_req is not None else None) elif isinstance(obj, dependencies.Dependency) and not obj.found(): @@ -298,10 +300,11 @@ class DependenciesHelper: # foo, bar' is ok, but 'foo,bar' is not. self.version_reqs[name].update(version_reqs) - def split_version_req(self, s: str) -> T.Tuple[str, T.Optional[str]]: + def split_version_req(self, s: str) -> T.Tuple[T.Optional[str], T.Optional[str]]: stripped_str = s.strip() if not stripped_str: - raise mesonlib.MesonException(f'required dependency must not be empty, "{s}" was provided.') + mlog.warning('Required dependency was found to be an empty string. Did you mean to pass an empty array?') + return None, None for op in ['>=', '<=', '!=', '==', '=', '>', '<']: pos = stripped_str.find(op) if pos < 0: diff --git a/test cases/common/44 pkgconfig-gen/meson.build b/test cases/common/44 pkgconfig-gen/meson.build index fd6371ef4..c31287348 100644 --- a/test cases/common/44 pkgconfig-gen/meson.build +++ b/test cases/common/44 pkgconfig-gen/meson.build @@ -193,3 +193,11 @@ simple7 = library('simple7', include_directories: 'inc1') dep = declare_dependency(include_directories: 'inc2') install_headers('inc1/inc1.h', 'inc2/inc2.h') pkgg.generate(simple7, libraries: dep) + +# Regression test: empty string passed to requires.private should not +# fail the build +pkgg.generate( + name : 'emptytest', + description : 'Check that requires.private can be an empty string', + requires_private: '', +) diff --git a/test cases/common/44 pkgconfig-gen/test.json b/test cases/common/44 pkgconfig-gen/test.json index 01786d424..36c7e95e1 100644 --- a/test cases/common/44 pkgconfig-gen/test.json +++ b/test cases/common/44 pkgconfig-gen/test.json @@ -16,6 +16,7 @@ {"type": "file", "file": "usr/lib/pkgconfig/simple5.pc"}, {"type": "file", "file": "usr/lib/pkgconfig/simple6.pc"}, {"type": "file", "file": "usr/lib/pkgconfig/simple7.pc"}, + {"type": "file", "file": "usr/lib/pkgconfig/emptytest.pc"}, {"type": "file", "file": "usr/lib/pkgconfig/ct.pc"}, {"type": "file", "file": "usr/lib/pkgconfig/ct0.pc"}, {"type": "file", "file": "usr/share/pkgconfig/libhello_nolib.pc"} |
