diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py index a37dd4f66..dc45a5bfd 100644 --- a/mesonbuild/modules/pkgconfig.py +++ b/mesonbuild/modules/pkgconfig.py @@ -26,7 +26,8 @@ from ..interpreterbase import permittedKwargs, FeatureNew, FeatureNewKwargs already_warned_objs = set() class DependenciesHelper: - def __init__(self, name): + def __init__(self, state, name): + self.state = state self.name = name self.pub_libs = [] self.pub_reqs = [] @@ -73,6 +74,8 @@ class DependenciesHelper: '''Returns string names of requirements''' processed_reqs = [] for obj in mesonlib.listify(reqs, unholder=True): + if not isinstance(obj, str): + FeatureNew('pkgconfig.generate requirement from non-string object', '0.46.0').use(self.state.subproject) if hasattr(obj, 'generated_pc'): self._check_generated_pc_deprecation(obj) processed_reqs.append(obj.generated_pc) @@ -395,7 +398,7 @@ class PkgConfigModule(ExtensionModule): if mainlib: libraries = [mainlib] + libraries - deps = DependenciesHelper(filebase) + deps = DependenciesHelper(state, filebase) deps.add_pub_libs(libraries) deps.add_priv_libs(kwargs.get('libraries_private', [])) deps.add_pub_reqs(kwargs.get('requires', [])) diff --git a/run_unittests.py b/run_unittests.py index 015167b2c..898f05e54 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -707,18 +707,20 @@ class InternalTests(unittest.TestCase): class Mock: pass + dummystate = Mock() + dummystate.subproject = 'dummy' mock = Mock() mock.pcdep = Mock() mock.pcdep.name = "some_name" mock.version_reqs = [] # pkgconfig dependency as lib - deps = mesonbuild.modules.pkgconfig.DependenciesHelper("thislib") + deps = mesonbuild.modules.pkgconfig.DependenciesHelper(dummystate, "thislib") deps.add_pub_libs([mock]) self.assertEqual(deps.format_reqs(deps.pub_reqs), "some_name") # pkgconfig dependency as requires - deps = mesonbuild.modules.pkgconfig.DependenciesHelper("thislib") + deps = mesonbuild.modules.pkgconfig.DependenciesHelper(dummystate, "thislib") deps.add_pub_reqs([mock]) self.assertEqual(deps.format_reqs(deps.pub_reqs), "some_name")