diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2023-04-13 20:38:32 +0300 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2023-05-24 02:02:52 +0530 |
commit | 960ae14c41d8bbe12c4736df11f78deea6c86c1a (patch) | |
tree | c7085b1cd889427a594cf53991fe459b6fd4e7ba | |
parent | cb75ce50d99680320dcb527db91706162df6fbc1 (diff) | |
download | meson-960ae14c41d8bbe12c4736df11f78deea6c86c1a.zip meson-960ae14c41d8bbe12c4736df11f78deea6c86c1a.tar.gz meson-960ae14c41d8bbe12c4736df11f78deea6c86c1a.tar.bz2 |
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.
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 2918bbf..55bd130 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: |