python: Use detect.find_external_dependency() for log consistency

py.find_installation().dependency() was not logging whether it is found
or not. Use find_external_dependency() for consistency.
pull/11354/merge
Xavier Claessens 3 years ago committed by Eli Schwartz
parent 1a9f20d44a
commit 26da7ec9f5
  1. 5
      mesonbuild/dependencies/detect.py
  2. 10
      mesonbuild/modules/python.py

@ -80,7 +80,7 @@ display_name_map = {
'wxwidgets': 'WxWidgets',
}
def find_external_dependency(name: str, env: 'Environment', kwargs: T.Dict[str, object]) -> T.Union['ExternalDependency', NotFoundDependency]:
def find_external_dependency(name: str, env: 'Environment', kwargs: T.Dict[str, object], candidates: T.Optional[T.List['DependencyGenerator']] = None) -> T.Union['ExternalDependency', NotFoundDependency]:
assert name
required = kwargs.get('required', True)
if not isinstance(required, bool):
@ -101,7 +101,8 @@ def find_external_dependency(name: str, env: 'Environment', kwargs: T.Dict[str,
type_text = PerMachine('Build-time', 'Run-time')[for_machine] + ' dependency'
# build a list of dependency methods to try
candidates = _build_external_dependency_list(name, env, for_machine, kwargs)
if candidates is None:
candidates = _build_external_dependency_list(name, env, for_machine, kwargs)
pkg_exc: T.List[DependencyException] = []
pkgdep: T.List[ExternalDependency] = []

@ -22,7 +22,7 @@ from .. import mlog
from ..coredata import UserFeatureOption
from ..build import known_shmod_kwargs
from ..dependencies import NotFoundDependency
from ..dependencies.detect import get_dep_identifier
from ..dependencies.detect import get_dep_identifier, find_external_dependency
from ..dependencies.python import BasicPythonExternalProgram, python_factory, _PythonDependencyBase
from ..interpreter import ExternalProgramHolder, extract_required_kwarg, permitted_dependency_kwargs
from ..interpreter import primitives as P_OBJ
@ -185,12 +185,8 @@ class PythonInstallation(ExternalProgramHolder):
new_kwargs = kwargs.copy()
new_kwargs['required'] = False
# it's theoretically (though not practically) possible to not bind dep, let's ensure it is.
dep: Dependency = NotFoundDependency('python', self.interpreter.environment)
for d in python_factory(self.interpreter.environment, for_machine, new_kwargs, self.held_object):
dep = d()
if dep.found():
break
candidates = python_factory(self.interpreter.environment, for_machine, new_kwargs, self.held_object)
dep = find_external_dependency('python', self.interpreter.environment, new_kwargs, candidates)
self.interpreter.coredata.deps[for_machine].put(identifier, dep)
return dep

Loading…
Cancel
Save