mirror of
https://github.com/rust-lang/rust
synced 2024-10-14 04:23:37 +00:00
fixes #67108 by using the external crate
This commit is contained in:
parent
3014f23ddd
commit
4b6a0278fe
|
@ -2142,6 +2142,12 @@ dependencies = [
|
|||
"winapi 0.3.8",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pathdiff"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "877630b3de15c0b64cc52f659345724fbf6bdad9bd9566699fc53688f3c34a34"
|
||||
|
||||
[[package]]
|
||||
name = "percent-encoding"
|
||||
version = "1.0.1"
|
||||
|
@ -3318,6 +3324,7 @@ dependencies = [
|
|||
"log",
|
||||
"memmap",
|
||||
"num_cpus",
|
||||
"pathdiff",
|
||||
"rustc_apfloat",
|
||||
"rustc_ast",
|
||||
"rustc_attr",
|
||||
|
|
|
@ -18,6 +18,7 @@ log = "0.4.5"
|
|||
libc = "0.2.50"
|
||||
jobserver = "0.1.11"
|
||||
tempfile = "3.1"
|
||||
pathdiff = "0.2.0"
|
||||
|
||||
rustc_serialize = { path = "../librustc_serialize" }
|
||||
rustc_ast = { path = "../librustc_ast" }
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
use std::env;
|
||||
use std::fs;
|
||||
use std::path::{Path, PathBuf};
|
||||
use pathdiff::diff_paths;
|
||||
|
||||
use rustc_hir::def_id::CrateNum;
|
||||
use rustc_middle::middle::cstore::LibSource;
|
||||
|
@ -109,37 +110,7 @@ fn get_rpath_relative_to_output(config: &mut RPathConfig<'_>, lib: &Path) -> Str
|
|||
// In particular, this handles the case on unix where both paths are
|
||||
// absolute but with only the root as the common directory.
|
||||
fn path_relative_from(path: &Path, base: &Path) -> Option<PathBuf> {
|
||||
use std::path::Component;
|
||||
|
||||
if path.is_absolute() != base.is_absolute() {
|
||||
path.is_absolute().then(|| PathBuf::from(path))
|
||||
} else {
|
||||
let mut ita = path.components();
|
||||
let mut itb = base.components();
|
||||
let mut comps: Vec<Component<'_>> = vec![];
|
||||
loop {
|
||||
match (ita.next(), itb.next()) {
|
||||
(None, None) => break,
|
||||
(Some(a), None) => {
|
||||
comps.push(a);
|
||||
comps.extend(ita.by_ref());
|
||||
break;
|
||||
}
|
||||
(None, _) => comps.push(Component::ParentDir),
|
||||
(Some(a), Some(b)) if comps.is_empty() && a == b => (),
|
||||
(Some(a), Some(b)) if b == Component::CurDir => comps.push(a),
|
||||
(Some(_), Some(b)) if b == Component::ParentDir => return None,
|
||||
(Some(a), Some(_)) => {
|
||||
comps.push(Component::ParentDir);
|
||||
comps.extend(itb.map(|_| Component::ParentDir));
|
||||
comps.push(a);
|
||||
comps.extend(ita.by_ref());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Some(comps.iter().map(|c| c.as_os_str()).collect())
|
||||
}
|
||||
diff_paths(path, base)
|
||||
}
|
||||
|
||||
fn get_install_prefix_rpath(config: &mut RPathConfig<'_>) -> String {
|
||||
|
|
Loading…
Reference in a new issue