summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2023-06-02 11:52:26 -0400
committerXavier Claessens <xclaesse@gmail.com>2023-10-09 21:13:58 -0400
commit3abe52133df7911d400445a5006f29002bd1fc2c (patch)
tree031bf72cb3bdead31138947a8251b01c21cf5a41
parentf752efdd88c251dfb070f444719cde13085f8884 (diff)
downloadmeson-3abe52133df7911d400445a5006f29002bd1fc2c.tar.gz
cargo: Use "-rs" suffix convention to lookup for Rust dependencies
-rw-r--r--mesonbuild/cargo/interpreter.py36
1 files changed, 24 insertions, 12 deletions
diff --git a/mesonbuild/cargo/interpreter.py b/mesonbuild/cargo/interpreter.py
index 0c4f52416..e8390c610 100644
--- a/mesonbuild/cargo/interpreter.py
+++ b/mesonbuild/cargo/interpreter.py
@@ -340,6 +340,14 @@ def _load_manifests(subdir: str) -> T.Dict[str, Manifest]:
return manifests
+def _dependency_name(package_name: str) -> str:
+ return package_name if package_name.endswith('-rs') else f'{package_name}-rs'
+
+
+def _dependency_varname(package_name: str) -> str:
+ return f'{fixup_meson_varname(package_name)}_dep'
+
+
def _create_project(cargo: Manifest, build: builder.Builder, env: Environment) -> T.List[mparser.BaseNode]:
"""Create a function call
@@ -370,22 +378,19 @@ def _create_project(cargo: Manifest, build: builder.Builder, env: Environment) -
def _create_dependencies(cargo: Manifest, build: builder.Builder) -> T.List[mparser.BaseNode]:
- ast: T.List[mparser.BaseNode] = [
- build.assign(build.function('import', [build.string('rust')]), 'rust')
- ]
+ ast: T.List[mparser.BaseNode] = []
for name, dep in cargo.dependencies.items():
kw = {
'version': build.array([build.string(s) for s in dep.version]),
}
ast.extend([
build.assign(
- build.method(
- 'cargo',
- build.identifier('rust'),
- [build.string(name)],
+ build.function(
+ 'dependency',
+ [build.string(_dependency_name(name))],
kw,
),
- f'dep_{fixup_meson_varname(name)}',
+ _dependency_varname(name),
),
])
return ast
@@ -394,9 +399,8 @@ def _create_dependencies(cargo: Manifest, build: builder.Builder) -> T.List[mpar
def _create_lib(cargo: Manifest, build: builder.Builder) -> T.List[mparser.BaseNode]:
kw: T.Dict[str, mparser.BaseNode] = {}
if cargo.dependencies:
- ids = [build.identifier(f'dep_{n}') for n in cargo.dependencies]
- kw['dependencies'] = build.array(
- [build.method('get_variable', i, [build.string('dep')]) for i in ids])
+ ids = [build.identifier(_dependency_varname(n)) for n in cargo.dependencies]
+ kw['dependencies'] = build.array(ids)
# FIXME: currently assuming that an rlib is being generated, which is
# the most common.
@@ -418,7 +422,15 @@ def _create_lib(cargo: Manifest, build: builder.Builder) -> T.List[mparser.BaseN
kw={'link_with': build.identifier('lib'), **kw},
),
'dep'
- )
+ ),
+ build.method(
+ 'override_dependency',
+ build.identifier('meson'),
+ [
+ build.string(_dependency_name(cargo.package.name)),
+ build.identifier('dep'),
+ ],
+ ),
]