summaryrefslogtreecommitdiff
path: root/mesonbuild/cargo/interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/cargo/interpreter.py')
-rw-r--r--mesonbuild/cargo/interpreter.py17
1 files changed, 9 insertions, 8 deletions
diff --git a/mesonbuild/cargo/interpreter.py b/mesonbuild/cargo/interpreter.py
index bd505d7c7..6af7469ae 100644
--- a/mesonbuild/cargo/interpreter.py
+++ b/mesonbuild/cargo/interpreter.py
@@ -39,8 +39,8 @@ def _dependency_name(package_name: str, api: str, suffix: str = '-rs') -> str:
return f'{basename}-{api}{suffix}'
-def _dependency_varname(package_name: str) -> str:
- return f'{fixup_meson_varname(package_name)}_dep'
+def _dependency_varname(dep: Dependency) -> str:
+ return f'{fixup_meson_varname(dep.package)}_{(dep.api.replace(".", "_"))}_dep'
def _extra_args_varname() -> str:
@@ -329,6 +329,8 @@ class Interpreter:
if not dep.meson_version:
raise MesonException(f'Cannot determine version of cargo package {dep.package}')
dep_pkg = self._fetch_package(dep.package, dep.api)
+ if not dep.version:
+ dep.update_version(f'={dep_pkg.manifest.package.version}')
return dep_pkg
def _load_manifest(self, subdir: str, workspace: T.Optional[Workspace] = None, member_path: str = '') -> T.Union[Manifest, Workspace]:
@@ -513,7 +515,6 @@ class Interpreter:
def _create_dependency(self, pkg: PackageState, dep: Dependency, build: builder.Builder) -> T.List[mparser.BaseNode]:
version_ = dep.meson_version or [pkg.manifest.package.version]
- api = dep.api or pkg.manifest.package.api
kw = {
'version': build.array([build.string(s) for s in version_]),
}
@@ -533,10 +534,10 @@ class Interpreter:
build.assign(
build.function(
'dependency',
- [build.string(_dependency_name(dep.package, api))],
+ [build.string(_dependency_name(dep.package, dep.api))],
kw,
),
- _dependency_varname(dep.package),
+ _dependency_varname(dep),
),
# actual_features = xxx_dep.get_variable('features', default_value : '').split(',')
build.assign(
@@ -544,7 +545,7 @@ class Interpreter:
'split',
build.method(
'get_variable',
- build.identifier(_dependency_varname(dep.package)),
+ build.identifier(_dependency_varname(dep)),
[build.string('features')],
{'default_value': build.string('')}
),
@@ -563,7 +564,7 @@ class Interpreter:
build.if_(build.not_in(build.identifier('f'), build.identifier('actual_features')), build.block([
build.function('error', [
build.string('Dependency'),
- build.string(_dependency_name(dep.package, api)),
+ build.string(_dependency_name(dep.package, dep.api)),
build.string('previously configured with features'),
build.identifier('actual_features'),
build.string('but need'),
@@ -648,7 +649,7 @@ class Interpreter:
dependency_map: T.Dict[mparser.BaseNode, mparser.BaseNode] = {}
for name in pkg.required_deps:
dep = pkg.manifest.dependencies[name]
- dependencies.append(build.identifier(_dependency_varname(dep.package)))
+ dependencies.append(build.identifier(_dependency_varname(dep)))
if name != dep.package:
dep_pkg = self._dep_package(pkg, dep)
dep_lib_name = dep_pkg.manifest.lib.name