diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2025-08-01 19:00:04 +0200 |
|---|---|---|
| committer | Xavier Claessens <xclaesse@gmail.com> | 2025-10-17 12:48:29 -0400 |
| commit | 18b6ed9ebbe352d11c07b432ba0b88138dfd77e6 (patch) | |
| tree | bcf99fc8c6da1926b1f1d6c22d773a0fcdb66bcd /mesonbuild/cargo/interpreter.py | |
| parent | 58b5d1b09583eb83f0a934e05cbd4686ede7165c (diff) | |
| download | meson-18b6ed9ebbe352d11c07b432ba0b88138dfd77e6.tar.gz | |
cargo: split interpret_package() and _create_package()
Extracted from a patch by Xavier Claessens <xclaessens@netflix.com>
Diffstat (limited to 'mesonbuild/cargo/interpreter.py')
| -rw-r--r-- | mesonbuild/cargo/interpreter.py | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/mesonbuild/cargo/interpreter.py b/mesonbuild/cargo/interpreter.py index 1a2330084..08ee3575e 100644 --- a/mesonbuild/cargo/interpreter.py +++ b/mesonbuild/cargo/interpreter.py @@ -88,6 +88,11 @@ class Interpreter: def interpret(self, subdir: str) -> mparser.CodeBlockNode: manifest = self._load_manifest(subdir) + filename = os.path.join(self.environment.source_dir, subdir, 'Cargo.toml') + build = builder.Builder(filename) + return self.interpret_package(manifest, build, subdir) + + def interpret_package(self, manifest: Manifest, build: builder.Builder, subdir: str) -> mparser.CodeBlockNode: pkg, cached = self._fetch_package(manifest.package.name, manifest.package.api) if not cached: # This is an entry point, always enable the 'default' feature. @@ -95,11 +100,14 @@ class Interpreter: self._enable_feature(pkg, 'default') # Build an AST for this package - filename = os.path.join(self.environment.source_dir, subdir, 'Cargo.toml') - build = builder.Builder(filename) - ast = self._create_project(pkg, build) - ast += [ - build.assign(build.function('import', [build.string('rust')]), 'rust'), + ast: T.List[mparser.BaseNode] = [] + ast += self._create_project(pkg, build) + ast.append(build.assign(build.function('import', [build.string('rust')]), 'rust')) + ast += self._create_package(pkg, build, subdir) + return build.block(ast) + + def _create_package(self, pkg: PackageState, build: builder.Builder, subdir: str) -> T.List[mparser.BaseNode]: + ast: T.List[mparser.BaseNode] = [ build.function('message', [ build.string('Enabled features:'), build.array([build.string(f) for f in pkg.features]), @@ -112,7 +120,7 @@ class Interpreter: for crate_type in pkg.manifest.lib.crate_type: ast.extend(self._create_lib(pkg, build, crate_type)) - return build.block(ast) + return ast def _fetch_package(self, package_name: str, api: str) -> T.Tuple[PackageState, bool]: key = PackageKey(package_name, api) |
