Remove get_install_prefix_lib_path completely
It was broken anyway for rustup installs and nobody seems to have noticed.
This commit is contained in:
parent
a3205a6698
commit
6b45d59caa
3 changed files with 4 additions and 34 deletions
|
@ -1569,21 +1569,12 @@ fn add_rpath_args(
|
||||||
// where extern libraries might live, based on the
|
// where extern libraries might live, based on the
|
||||||
// add_lib_search_paths
|
// add_lib_search_paths
|
||||||
if sess.opts.cg.rpath {
|
if sess.opts.cg.rpath {
|
||||||
let target_triple = sess.opts.target_triple.triple();
|
|
||||||
let mut get_install_prefix_lib_path = || {
|
|
||||||
let tlib = rustc_target::target_rustlib_path(&sess.sysroot, target_triple).join("lib");
|
|
||||||
let mut path = PathBuf::from(&sess.sysroot);
|
|
||||||
path.push(&tlib);
|
|
||||||
|
|
||||||
path
|
|
||||||
};
|
|
||||||
let mut rpath_config = RPathConfig {
|
let mut rpath_config = RPathConfig {
|
||||||
used_crates: &codegen_results.crate_info.used_crates_dynamic,
|
used_crates: &codegen_results.crate_info.used_crates_dynamic,
|
||||||
out_filename: out_filename.to_path_buf(),
|
out_filename: out_filename.to_path_buf(),
|
||||||
has_rpath: sess.target.has_rpath,
|
has_rpath: sess.target.has_rpath,
|
||||||
is_like_osx: sess.target.is_like_osx,
|
is_like_osx: sess.target.is_like_osx,
|
||||||
linker_is_gnu: sess.target.linker_is_gnu,
|
linker_is_gnu: sess.target.linker_is_gnu,
|
||||||
get_install_prefix_lib_path: &mut get_install_prefix_lib_path,
|
|
||||||
};
|
};
|
||||||
cmd.args(&rpath::get_rpath_flags(&mut rpath_config));
|
cmd.args(&rpath::get_rpath_flags(&mut rpath_config));
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,6 @@ pub struct RPathConfig<'a> {
|
||||||
pub is_like_osx: bool,
|
pub is_like_osx: bool,
|
||||||
pub has_rpath: bool,
|
pub has_rpath: bool,
|
||||||
pub linker_is_gnu: bool,
|
pub linker_is_gnu: bool,
|
||||||
pub get_install_prefix_lib_path: &'a mut dyn FnMut() -> PathBuf,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_rpath_flags(config: &mut RPathConfig<'_>) -> Vec<String> {
|
pub fn get_rpath_flags(config: &mut RPathConfig<'_>) -> Vec<String> {
|
||||||
|
@ -63,24 +62,13 @@ fn get_rpaths(config: &mut RPathConfig<'_>, libs: &[PathBuf]) -> Vec<String> {
|
||||||
// Use relative paths to the libraries. Binaries can be moved
|
// Use relative paths to the libraries. Binaries can be moved
|
||||||
// as long as they maintain the relative relationship to the
|
// as long as they maintain the relative relationship to the
|
||||||
// crates they depend on.
|
// crates they depend on.
|
||||||
let rel_rpaths = get_rpaths_relative_to_output(config, libs);
|
let rpaths = get_rpaths_relative_to_output(config, libs);
|
||||||
|
|
||||||
// And a final backup rpath to the global library location.
|
debug!("rpaths:");
|
||||||
let fallback_rpaths = vec![get_install_prefix_rpath(config)];
|
for rpath in &rpaths {
|
||||||
|
debug!(" {}", rpath);
|
||||||
fn log_rpaths(desc: &str, rpaths: &[String]) {
|
|
||||||
debug!("{} rpaths:", desc);
|
|
||||||
for rpath in rpaths {
|
|
||||||
debug!(" {}", *rpath);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log_rpaths("relative", &rel_rpaths);
|
|
||||||
log_rpaths("fallback", &fallback_rpaths);
|
|
||||||
|
|
||||||
let mut rpaths = rel_rpaths;
|
|
||||||
rpaths.extend_from_slice(&fallback_rpaths);
|
|
||||||
|
|
||||||
// Remove duplicates
|
// Remove duplicates
|
||||||
minimize_rpaths(&rpaths)
|
minimize_rpaths(&rpaths)
|
||||||
}
|
}
|
||||||
|
@ -113,13 +101,6 @@ fn path_relative_from(path: &Path, base: &Path) -> Option<PathBuf> {
|
||||||
diff_paths(path, base)
|
diff_paths(path, base)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_install_prefix_rpath(config: &mut RPathConfig<'_>) -> String {
|
|
||||||
let path = (config.get_install_prefix_lib_path)();
|
|
||||||
let path = env::current_dir().unwrap().join(&path);
|
|
||||||
// FIXME (#9639): This needs to handle non-utf8 paths
|
|
||||||
path.to_str().expect("non-utf8 component in rpath").to_owned()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn minimize_rpaths(rpaths: &[String]) -> Vec<String> {
|
fn minimize_rpaths(rpaths: &[String]) -> Vec<String> {
|
||||||
let mut set = FxHashSet::default();
|
let mut set = FxHashSet::default();
|
||||||
let mut minimized = Vec::new();
|
let mut minimized = Vec::new();
|
||||||
|
|
|
@ -40,7 +40,6 @@ fn test_rpath_relative() {
|
||||||
is_like_osx: true,
|
is_like_osx: true,
|
||||||
linker_is_gnu: false,
|
linker_is_gnu: false,
|
||||||
out_filename: PathBuf::from("bin/rustc"),
|
out_filename: PathBuf::from("bin/rustc"),
|
||||||
get_install_prefix_lib_path: &mut || panic!(),
|
|
||||||
};
|
};
|
||||||
let res = get_rpath_relative_to_output(config, Path::new("lib/libstd.so"));
|
let res = get_rpath_relative_to_output(config, Path::new("lib/libstd.so"));
|
||||||
assert_eq!(res, "@loader_path/../lib");
|
assert_eq!(res, "@loader_path/../lib");
|
||||||
|
@ -48,7 +47,6 @@ fn test_rpath_relative() {
|
||||||
let config = &mut RPathConfig {
|
let config = &mut RPathConfig {
|
||||||
used_crates: &[],
|
used_crates: &[],
|
||||||
out_filename: PathBuf::from("bin/rustc"),
|
out_filename: PathBuf::from("bin/rustc"),
|
||||||
get_install_prefix_lib_path: &mut || panic!(),
|
|
||||||
has_rpath: true,
|
has_rpath: true,
|
||||||
is_like_osx: false,
|
is_like_osx: false,
|
||||||
linker_is_gnu: true,
|
linker_is_gnu: true,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue