diff options
| author | Xavier Claessens <xavier.claessens@collabora.com> | 2024-03-09 18:44:40 -0500 |
|---|---|---|
| committer | Xavier Claessens <xclaesse@gmail.com> | 2024-10-24 11:00:10 -0400 |
| commit | afd89440aaf114c00652d799b8043d3d43fb807a (patch) | |
| tree | 7c700f9d4fa9444c75a76ee874edb9f8f77ac994 /mesonbuild/interpreter | |
| parent | c02e0b7b1e2499f3ae18d26e443e18043fff3046 (diff) | |
| download | meson-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.py | 5 |
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? |
