summaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2025-10-24 15:18:29 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2025-12-22 12:01:05 +0100
commit20c07ba6742541f6ffec3962e57faa9068ac9e8b (patch)
treee86e8b54141ef8c946c612e7e114458432d07117 /mesonbuild
parentb612ba31923db30d079d184791dcd799c01529e7 (diff)
downloadmeson-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.py52
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'