python.dependency(): Do not stop when first candidate is not found

It has to lookup the dependency with required=False otherwise it raises
an exception when the first candidate (pkg-config) failed.
pull/9521/head
Xavier Claessens 3 years ago committed by Eli Schwartz
parent 98a9cc079c
commit c8d125653d
No known key found for this signature in database
GPG Key ID: CEB167EFB5722BD6
  1. 7
      mesonbuild/modules/python.py
  2. 4
      test cases/unit/101 python without pkgconfig/meson.build
  3. 4
      unittests/platformagnostictests.py

@ -500,11 +500,12 @@ class PythonInstallation(ExternalProgramHolder):
if disabled:
mlog.log('Dependency', mlog.bold('python'), 'skipped: feature', mlog.bold(feature), 'disabled')
else:
new_kwargs = kwargs.copy()
new_kwargs['required'] = False
methods = process_method_kw({DependencyMethods.PKGCONFIG, DependencyMethods.SYSTEM}, kwargs)
for d in python_factory(self.interpreter.environment,
MachineChoice.BUILD if kwargs.get('native', False) else MachineChoice.HOST,
kwargs,
process_method_kw({DependencyMethods.PKGCONFIG, DependencyMethods.SYSTEM}, kwargs),
self):
new_kwargs, methods, self):
dep = d()
if dep.found():
break

@ -0,0 +1,4 @@
project('python wihtout pkgconfig', 'c')
# This unit test is ran with PKG_CONFIG=notfound
import('python').find_installation().dependency()

@ -66,3 +66,7 @@ class PlatformAgnosticTests(BasePlatformTests):
# platlib is allowed, only python.platlib is reserved.
fname = write_file("option('platlib', type: 'string')")
interp.process(fname)
def test_python_dependency_without_pkgconfig(self):
testdir = os.path.join(self.unit_test_dir, '101 python without pkgconfig')
self.init(testdir, override_envvars={'PKG_CONFIG': 'notfound'})

Loading…
Cancel
Save