From c725816c8191ad3235fe3f5f45dddaff429158e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 13 Apr 2023 20:38:32 +0300 Subject: rust: Convert dashes in crate names to underscores Dashes can't be used as identifiers in Rust and cargo is converting dashes in crate names to underscores for the same reason. --- mesonbuild/backend/ninjabackend.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 2522b62..d0c63f2 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1908,8 +1908,13 @@ class NinjaBackend(backends.Backend): # specify `extern CRATE_NAME=OUTPUT_FILE` for each Rust # dependency, so that collisions with libraries in rustc's # sysroot don't cause ambiguity - args += ['--extern', '{}={}'.format(d.name, os.path.join(d.subdir, d.filename))] - project_deps.append(RustDep(d.name, self.rust_crates[d.name].order)) + # + # Also convert crate names with dashes to underscores like + # cargo does as dashes can't be used as parts of identifiers + # in Rust + d_name = d.name.replace('-', '_') + args += ['--extern', '{}={}'.format(d_name, os.path.join(d.subdir, d.filename))] + project_deps.append(RustDep(d_name, self.rust_crates[d.name].order)) elif d.typename == 'static library': # Rustc doesn't follow Meson's convention that static libraries # are called .a, and import libraries are .lib, so we have to @@ -1946,8 +1951,13 @@ class NinjaBackend(backends.Backend): # specify `extern CRATE_NAME=OUTPUT_FILE` for each Rust # dependency, so that collisions with libraries in rustc's # sysroot don't cause ambiguity - args += ['--extern', '{}={}'.format(d.name, os.path.join(d.subdir, d.filename))] - project_deps.append(RustDep(d.name, self.rust_crates[d.name].order)) + # + # Also convert crate names with dashes to underscores like + # cargo does as dashes can't be used as parts of identifiers + # in Rust + d_name = d.name.replace('-', '_') + args += ['--extern', '{}={}'.format(d_name, os.path.join(d.subdir, d.filename))] + project_deps.append(RustDep(d_name, self.rust_crates[d.name].order)) else: if rustc.linker.id in {'link', 'lld-link'}: if verbatim: -- cgit v1.1