diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2025-09-12 13:41:21 +0200 |
|---|---|---|
| committer | Xavier Claessens <xclaesse@gmail.com> | 2025-10-27 21:14:30 +0100 |
| commit | 271dbd81c3821c7535056470b52ddbd6f5ada703 (patch) | |
| tree | 3e0fbdf3626226621c9deba202456f707f6f52be | |
| parent | d819ed3fe05967f0b9c9c15018d2feb5755d2d1c (diff) | |
| download | meson-271dbd81c3821c7535056470b52ddbd6f5ada703.tar.gz | |
rust: unify conversion from target name to crate name
_get_rust_dependency_name was less lenient in accepting targets containing
invalid characters for a crate name. This made it impossible to link to
those targets without using a dependency map. Use the same algorithm to
do the conversion.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
| -rw-r--r-- | mesonbuild/backend/ninjabackend.py | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index f1f28043c..5486b089b 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1947,11 +1947,16 @@ class NinjaBackend(backends.Backend): self.rust_crates[name] = crate - def _get_rust_dependency_name(self, target: build.BuildTarget, dependency: LibTypes) -> str: - # Convert crate names with dashes to underscores by default like - # cargo does as dashes can't be used as parts of identifiers - # in Rust - return target.rust_dependency_map.get(dependency.name, dependency.name).replace('-', '_') + @staticmethod + def _get_rust_crate_name(target_name: str) -> str: + # Rustc replaces - with _. spaces or dots are not allowed, so we replace them with underscores + crate_name = target_name.replace('-', '_').replace(' ', '_').replace('.', '_') + return crate_name + + @staticmethod + def _get_rust_dependency_name(target: build.BuildTarget, dependency: LibTypes) -> str: + crate_name_raw = target.rust_dependency_map.get(dependency.name, dependency.name) + return NinjaBackend._get_rust_crate_name(crate_name_raw) def generate_rust_sources(self, target: build.BuildTarget) -> T.Tuple[T.List[str], str]: orderdeps: T.List[str] = [] @@ -2026,8 +2031,7 @@ class NinjaBackend(backends.Backend): args.extend(rustc.get_linker_always_args()) args += self.generate_basic_compiler_args(target, rustc) - # Rustc replaces - with _. spaces or dots are not allowed, so we replace them with underscores - args += ['--crate-name', target.name.replace('-', '_').replace(' ', '_').replace('.', '_')] + args += ['--crate-name', self._get_rust_crate_name(target.name)] if depfile: args += rustc.get_dependency_gen_args(target_name, depfile) args += rustc.get_output_args(target_name) |
