aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/wrap/wrap.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2020-04-20 19:14:49 -0400
committerXavier Claessens <xavier.claessens@collabora.com>2020-07-01 09:51:57 -0400
commitf08eed37cb69ba0d793c0f1d086eaef7f25c2ea3 (patch)
treebfebeb97c57945c43e948998f9f01240915c2022 /mesonbuild/wrap/wrap.py
parent288d1ae5a5de13c8844635023caf27378df4919b (diff)
downloadmeson-f08eed37cb69ba0d793c0f1d086eaef7f25c2ea3.zip
meson-f08eed37cb69ba0d793c0f1d086eaef7f25c2ea3.tar.gz
meson-f08eed37cb69ba0d793c0f1d086eaef7f25c2ea3.tar.bz2
find_program: Fallback if a wrap file provide the program name
We don't need the legacy variable name system as for dependency() fallbacks because meson.override_find_program() is largely used already, so we can just rely on it.
Diffstat (limited to 'mesonbuild/wrap/wrap.py')
-rw-r--r--mesonbuild/wrap/wrap.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/mesonbuild/wrap/wrap.py b/mesonbuild/wrap/wrap.py
index d645c2c..19e2175 100644
--- a/mesonbuild/wrap/wrap.py
+++ b/mesonbuild/wrap/wrap.py
@@ -126,6 +126,7 @@ class PackageDefinition:
def parse_provide_section(self):
self.provide = {self.name: None}
+ self.provide_programs = []
if self.config.has_section('provide'):
for k, v in self.config['provide'].items():
if k == 'dependency_names':
@@ -134,6 +135,11 @@ class PackageDefinition:
names = {n.strip(): None for n in v.split(',')}
self.provide.update(names)
continue
+ if k == 'program_names':
+ # A coma separated list of program names
+ names = {n.strip(): None for n in v.split(',')}
+ self.provide_programs += names
+ continue
if not v:
m = ('Empty dependency variable name for {!r} in {}. '
'If the subproject uses meson.override_dependency() '
@@ -199,6 +205,14 @@ class Resolver:
return wrap.name
return directory
+ def find_program_provider(self, names: T.List[str]):
+ wraps = [i[0] for i in self.wraps.values()]
+ for name in names:
+ for wrap in wraps:
+ if wrap and name in wrap.provide_programs:
+ return wrap.name
+ return None
+
def resolve(self, packagename: str, method: str, current_subproject: str = '') -> str:
self.current_subproject = current_subproject
self.packagename = packagename