From 3332f3364901ac282c545e1a463618e86e70cdf9 Mon Sep 17 00:00:00 2001 From: "Adam C. Foltzer" Date: Wed, 21 Feb 2018 10:22:18 -0800 Subject: Fix Rust compiler-private library ambiguity When building a Rust target with Rust library dependencies, an `--extern` argument is now specified to avoid ambiguity between the dependency library, and any crates of the same name in `rustc`'s private sysroot. Includes an illustrative test case. --- test cases/rust/7 private crate collision/installed_files.txt | 2 ++ test cases/rust/7 private crate collision/meson.build | 5 +++++ test cases/rust/7 private crate collision/prog.rs | 3 +++ test cases/rust/7 private crate collision/rand.rs | 4 ++++ 4 files changed, 14 insertions(+) create mode 100644 test cases/rust/7 private crate collision/installed_files.txt create mode 100644 test cases/rust/7 private crate collision/meson.build create mode 100644 test cases/rust/7 private crate collision/prog.rs create mode 100644 test cases/rust/7 private crate collision/rand.rs (limited to 'test cases/rust') diff --git a/test cases/rust/7 private crate collision/installed_files.txt b/test cases/rust/7 private crate collision/installed_files.txt new file mode 100644 index 000000000..06ebd77ea --- /dev/null +++ b/test cases/rust/7 private crate collision/installed_files.txt @@ -0,0 +1,2 @@ +usr/bin/prog?exe +usr/lib/librand.rlib diff --git a/test cases/rust/7 private crate collision/meson.build b/test cases/rust/7 private crate collision/meson.build new file mode 100644 index 000000000..81b6aabfa --- /dev/null +++ b/test cases/rust/7 private crate collision/meson.build @@ -0,0 +1,5 @@ +project('rust private crate collision', 'rust') + +l = static_library('rand', 'rand.rs', install : true) +e = executable('prog', 'prog.rs', link_with : l, install : true) +test('linktest', e) diff --git a/test cases/rust/7 private crate collision/prog.rs b/test cases/rust/7 private crate collision/prog.rs new file mode 100644 index 000000000..b9a30f180 --- /dev/null +++ b/test cases/rust/7 private crate collision/prog.rs @@ -0,0 +1,3 @@ +extern crate rand; + +fn main() { println!("printing: {}", rand::explore()); } diff --git a/test cases/rust/7 private crate collision/rand.rs b/test cases/rust/7 private crate collision/rand.rs new file mode 100644 index 000000000..8a3d427b2 --- /dev/null +++ b/test cases/rust/7 private crate collision/rand.rs @@ -0,0 +1,4 @@ +// use a name that collides with one of the rustc_private libraries +#![crate_name = "rand"] + +pub fn explore() -> &'static str { "librarystring" } -- cgit v1.2.3