diff options
| author | Xavier Claessens <xavier.claessens@collabora.com> | 2023-06-02 11:52:26 -0400 |
|---|---|---|
| committer | Xavier Claessens <xclaesse@gmail.com> | 2023-10-09 21:13:58 -0400 |
| commit | 3abe52133df7911d400445a5006f29002bd1fc2c (patch) | |
| tree | 031bf72cb3bdead31138947a8251b01c21cf5a41 | |
| parent | f752efdd88c251dfb070f444719cde13085f8884 (diff) | |
| download | meson-3abe52133df7911d400445a5006f29002bd1fc2c.tar.gz | |
cargo: Use "-rs" suffix convention to lookup for Rust dependencies
| -rw-r--r-- | mesonbuild/cargo/interpreter.py | 36 |
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'), + ], + ), ] |
