diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2025-10-24 15:18:29 +0200 |
|---|---|---|
| committer | Paolo Bonzini <pbonzini@redhat.com> | 2025-12-22 12:01:05 +0100 |
| commit | 20c07ba6742541f6ffec3962e57faa9068ac9e8b (patch) | |
| tree | e86e8b54141ef8c946c612e7e114458432d07117 /mesonbuild | |
| parent | b612ba31923db30d079d184791dcd799c01529e7 (diff) | |
| download | meson-20c07ba6742541f6ffec3962e57faa9068ac9e8b.tar.gz | |
cargo: use rust.workspace() to build the arguments
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'mesonbuild')
| -rw-r--r-- | mesonbuild/cargo/interpreter.py | 52 |
1 files changed, 23 insertions, 29 deletions
diff --git a/mesonbuild/cargo/interpreter.py b/mesonbuild/cargo/interpreter.py index 9ade9a824..d7d4a7733 100644 --- a/mesonbuild/cargo/interpreter.py +++ b/mesonbuild/cargo/interpreter.py @@ -334,9 +334,10 @@ class Interpreter: return build.block(ast) def _create_package(self, pkg: PackageState, build: builder.Builder, subdir: str) -> T.List[mparser.BaseNode]: - cfg = pkg.cfg ast: T.List[mparser.BaseNode] = [ - build.assign(build.array([build.string(f) for f in cfg.features]), 'features'), + build.assign(build.method('package', build.identifier('cargo_ws'), + [build.string(pkg.manifest.package.name)]), 'pkg_obj'), + build.assign(build.method('features', build.identifier('pkg_obj')), 'features'), build.function('message', [ build.string('Enabled features:'), build.identifier('features'), @@ -669,23 +670,19 @@ class Interpreter: # for the upkeep of the module 'meson_version': build.string(f'>= {coredata.stable_version}'), } - if not pkg: - return [ - build.function('project', args, kwargs), - ] - - default_options: T.Dict[str, mparser.BaseNode] = {} - if pkg.downloaded: - default_options['warning_level'] = build.string('0') - - kwargs.update({ - 'version': build.string(pkg.manifest.package.version), - 'default_options': build.dict({build.string(k): v for k, v in default_options.items()}), - }) - if pkg.manifest.package.license: - kwargs['license'] = build.string(pkg.manifest.package.license) - elif pkg.manifest.package.license_file: - kwargs['license_files'] = build.string(pkg.manifest.package.license_file) + if pkg: + default_options: T.Dict[str, mparser.BaseNode] = {} + if pkg.downloaded: + default_options['warning_level'] = build.string('0') + + kwargs.update({ + 'version': build.string(pkg.manifest.package.version), + 'default_options': build.dict({build.string(k): v for k, v in default_options.items()}), + }) + if pkg.manifest.package.license: + kwargs['license'] = build.string(pkg.manifest.package.license) + elif pkg.manifest.package.license_file: + kwargs['license_files'] = build.string(pkg.manifest.package.license_file) # project(...) # rust = import('rust') @@ -831,17 +828,13 @@ class Interpreter: dep = pkg.manifest.dependencies[name] dependencies.append(build.identifier(_dependency_varname(dep))) - dependency_map: T.Dict[mparser.BaseNode, mparser.BaseNode] = { - build.string(k): build.string(v) for k, v in cfg.get_dependency_map(pkg.manifest).items()} - for name, sys_dep in pkg.manifest.system_dependencies.items(): if sys_dep.enabled(cfg.features): dependencies.append(build.identifier(f'{fixup_meson_varname(name)}_system_dep')) - rustc_args_list = pkg.get_rustc_args(self.environment, subdir, MachineChoice.HOST) + package_rust_args = build.method('rust_args', build.identifier('pkg_obj')) extra_args_ref = build.identifier(_extra_args_varname()) - rust_args: T.List[mparser.BaseNode] = [build.string(a) for a in rustc_args_list] - rust_args.append(extra_args_ref) + rust_args = build.plus(package_rust_args, extra_args_ref) dependencies.append(build.identifier(_extra_deps_varname())) @@ -856,8 +849,8 @@ class Interpreter: kwargs: T.Dict[str, mparser.BaseNode] = { 'dependencies': build.array(dependencies), - 'rust_dependency_map': build.dict(dependency_map), - 'rust_args': build.array(rust_args), + 'rust_dependency_map': build.method('rust_dependency_map', build.identifier('pkg_obj')), + 'rust_args': rust_args, 'override_options': build.dict(override_options), } @@ -887,9 +880,10 @@ class Interpreter: kw={ 'link_with': build.identifier('lib'), 'variables': build.dict({ - build.string('features'): build.string(','.join(cfg.features)), + build.string('features'): build.method('join', build.string(','), + [build.identifier('features')]), }), - 'version': build.string(pkg.manifest.package.version), + 'version': build.method('version', build.identifier('pkg_obj')), }, ), 'dep' |
