summaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2024-03-09 18:44:40 -0500
committerXavier Claessens <xclaesse@gmail.com>2024-10-24 11:00:10 -0400
commitafd89440aaf114c00652d799b8043d3d43fb807a (patch)
tree7c700f9d4fa9444c75a76ee874edb9f8f77ac994 /mesonbuild/interpreter
parentc02e0b7b1e2499f3ae18d26e443e18043fff3046 (diff)
downloadmeson-afd89440aaf114c00652d799b8043d3d43fb807a.tar.gz
cargo: Fix feature resolution
Introduce a global Cargo interpreter state that keeps track of enabled features on each crate. Before generating AST of a Cargo subproject, it downloads every sub-subproject and resolves the set of features enabled on each of them recursively. When it later generates AST for one its dependencies, its set of features and dependencies is already determined.
Diffstat (limited to 'mesonbuild/interpreter')
-rw-r--r--mesonbuild/interpreter/interpreter.py5
1 files changed, 3 insertions, 2 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index 8a2e0e954..27177f30d 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -1045,9 +1045,10 @@ class Interpreter(InterpreterBase, HoldableObject):
FeatureNew.single_use('Cargo subproject', '1.3.0', self.subproject, location=self.current_node)
mlog.warning('Cargo subproject is an experimental feature and has no backwards compatibility guarantees.',
once=True, location=self.current_node)
+ if self.environment.cargo is None:
+ self.environment.cargo = cargo.Interpreter(self.environment)
with mlog.nested(subp_name):
- ast, options = cargo.interpret(subp_name, subdir, self.environment)
- self.coredata.update_project_options(options, subp_name)
+ ast = self.environment.cargo.interpret(subdir)
return self._do_subproject_meson(
subp_name, subdir, default_options, kwargs, ast,
# FIXME: Are there other files used by cargo interpreter?