aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2020-08-20 14:05:40 -0400
committerXavier Claessens <xclaesse@gmail.com>2020-08-20 18:47:33 -0400
commit6ca423e1fc8078aa1e138d94b10386dd9536af23 (patch)
tree16b798e1497eddbc37f704e8d4eebbb1366526ab /mesonbuild/interpreter.py
parentabc3b8e9cb82195a402091499216de3b500774e5 (diff)
downloadmeson-6ca423e1fc8078aa1e138d94b10386dd9536af23.zip
meson-6ca423e1fc8078aa1e138d94b10386dd9536af23.tar.gz
meson-6ca423e1fc8078aa1e138d94b10386dd9536af23.tar.bz2
interpreter: Do not get variable on failed subproject
Fixes: #7620
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 3a61c66..2924172 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2792,6 +2792,12 @@ external dependencies (including libraries) must go to "dependencies".''')
self.subprojects[dirname] = sub
return sub
+ def get_subproject(self, dirname):
+ sub = self.subprojects.get(dirname)
+ if sub and sub.found():
+ return sub
+ return None
+
def do_subproject(self, dirname: str, method: str, kwargs):
disabled, required, feature = extract_required_kwarg(kwargs, self.subproject)
if disabled:
@@ -3518,7 +3524,7 @@ external dependencies (including libraries) must go to "dependencies".''')
return DependencyHolder(NotFoundDependency(self.environment), self.subproject)
def verify_fallback_consistency(self, dirname, varname, cached_dep):
- subi = self.subprojects.get(dirname)
+ subi = self.get_subproject(dirname)
if not cached_dep or not varname or not subi or not cached_dep.found():
return
dep = subi.get_variable_method([varname], {})
@@ -3650,7 +3656,7 @@ external dependencies (including libraries) must go to "dependencies".''')
# even if the dependency is not required.
provider = self.environment.wrap_resolver.find_dep_provider(name)
dirname = mesonlib.listify(provider)[0]
- if provider and (required or dirname in self.subprojects):
+ if provider and (required or self.get_subproject(dirname)):
kwargs['fallback'] = provider
has_fallback = True
@@ -3680,8 +3686,7 @@ external dependencies (including libraries) must go to "dependencies".''')
# a higher level project, try to use it first.
if has_fallback:
dirname, varname = self.get_subproject_infos(kwargs)
- sub = self.subprojects.get(dirname)
- if sub and sub.found():
+ if self.get_subproject(dirname):
return self.get_subproject_dep(name, display_name, dirname, varname, kwargs)
wrap_mode = self.coredata.get_builtin_option('wrap_mode')