auto merge of #16505 : dotdash/rust/extern_realpath, r=alexcrichton
Crates that are resolved normally have their path canonicalized and all symlinks resolved. This does currently not happen for paths specified using the --extern option to rustc, which can lead to rustc thinking that it encountered two different versions of a crate, when it's actually the same version found through different paths. Fixes #16496
This commit is contained in:
commit
17bcc1b08c
6 changed files with 67 additions and 3 deletions
16
src/test/run-make/symlinked-extern/Makefile
Normal file
16
src/test/run-make/symlinked-extern/Makefile
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
-include ../tools.mk
|
||||
|
||||
# ignore windows: `ln` is actually `cp` on msys.
|
||||
ifndef IS_WINDOWS
|
||||
|
||||
all:
|
||||
$(RUSTC) foo.rs
|
||||
mkdir -p $(TMPDIR)/other
|
||||
ln -nsf $(TMPDIR)/libfoo.rlib $(TMPDIR)/other
|
||||
$(RUSTC) bar.rs -L $(TMPDIR)
|
||||
$(RUSTC) baz.rs --extern foo=$(TMPDIR)/other/libfoo.rlib -L $(TMPDIR)
|
||||
|
||||
else
|
||||
all:
|
||||
|
||||
endif
|
||||
16
src/test/run-make/symlinked-extern/bar.rs
Normal file
16
src/test/run-make/symlinked-extern/bar.rs
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![crate_type = "rlib"]
|
||||
|
||||
extern crate foo;
|
||||
|
||||
pub fn bar(_s: foo::S) {
|
||||
}
|
||||
16
src/test/run-make/symlinked-extern/baz.rs
Normal file
16
src/test/run-make/symlinked-extern/baz.rs
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
extern crate bar;
|
||||
extern crate foo;
|
||||
|
||||
fn main() {
|
||||
bar::bar(foo::foo());
|
||||
}
|
||||
15
src/test/run-make/symlinked-extern/foo.rs
Normal file
15
src/test/run-make/symlinked-extern/foo.rs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![crate_type = "rlib"]
|
||||
|
||||
pub struct S;
|
||||
|
||||
pub fn foo() -> S { S }
|
||||
Loading…
Add table
Add a link
Reference in a new issue