diff options
author | Jakub Jirutka <jakub@jirutka.cz> | 2017-05-01 00:43:19 +0200 |
---|---|---|
committer | Jakub Jirutka <jakub@jirutka.cz> | 2017-05-01 00:43:19 +0200 |
commit | 41489596392977197d046ca034685664a3f4afa4 (patch) | |
tree | ef791ac83fd7635db59db40e12beb20a66ada3bd /testing/rust/minimize-rpath.patch | |
parent | abfa07f26ff2837922903586b15e137b67b43219 (diff) | |
download | aports-41489596392977197d046ca034685664a3f4afa4.tar.bz2 aports-41489596392977197d046ca034685664a3f4afa4.tar.xz |
community/rust: move from testing
Diffstat (limited to 'testing/rust/minimize-rpath.patch')
-rw-r--r-- | testing/rust/minimize-rpath.patch | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/testing/rust/minimize-rpath.patch b/testing/rust/minimize-rpath.patch deleted file mode 100644 index 1fc0e1b722..0000000000 --- a/testing/rust/minimize-rpath.patch +++ /dev/null @@ -1,102 +0,0 @@ -From: Shiz <hi@shiz.me> -Date: Thu, 20 Aug 2017 01:44:12 +0200 -Subject: [PATCH] Minimize generated RPATH in end products - -By default, RPATH generation adds both the install prefix and the generated -relative path to the install prefix. This is unnecessary, so we add the install -prefix to a list of absolute paths to omit in the relative path generation, -and skip it there. - ---- a/src/librustc_trans/back/rpath.rs -+++ b/src/librustc_trans/back/rpath.rs -@@ -69,14 +69,15 @@ - debug!(" {:?}", libpath.display()); - } - -+ // The backup rpath is the global library location. -+ // We also omit this path from the relative rpaths. -+ let fallback_rpaths = vec![get_install_prefix_rpath(config)]; -+ - // Use relative paths to the libraries. Binaries can be moved - // as long as they maintain the relative relationship to the - // crates they depend on. -- let rel_rpaths = get_rpaths_relative_to_output(config, libs); -+ let rel_rpaths = get_rpaths_relative_to_output(config, libs, &fallback_rpaths); - -- // And a final backup rpath to the global library location. -- let fallback_rpaths = vec![get_install_prefix_rpath(config)]; -- - fn log_rpaths(desc: &str, rpaths: &[String]) { - debug!("{} rpaths:", desc); - for rpath in rpaths { -@@ -96,11 +97,13 @@ - } - - fn get_rpaths_relative_to_output(config: &mut RPathConfig, -- libs: &[PathBuf]) -> Vec<String> { -- libs.iter().map(|a| get_rpath_relative_to_output(config, a)).collect() -+ libs: &[PathBuf], -+ omit: &Vec<String>) -> Vec<String> { -+ libs.iter().filter_map(|a| get_rpath_relative_to_output(config, a, omit)).collect() - } - --fn get_rpath_relative_to_output(config: &mut RPathConfig, lib: &Path) -> String { -+fn get_rpath_relative_to_output(config: &mut RPathConfig, lib: &Path, -+ omit: &Vec<String>) -> Option<String> { - // Mac doesn't appear to support $ORIGIN - let prefix = if config.is_like_osx { - "@loader_path" -@@ -114,11 +117,18 @@ - let mut output = cwd.join(&config.out_filename); - output.pop(); - let output = fs::canonicalize(&output).unwrap_or(output); -- let relative = path_relative_from(&lib, &output) -- .expect(&format!("couldn't create relative path from {:?} to {:?}", output, lib)); -+ - // FIXME (#9639): This needs to handle non-utf8 paths -- format!("{}/{}", prefix, -- relative.to_str().expect("non-utf8 component in path")) -+ let libpath = lib.to_str().expect("non-utf8 component in path").to_string(); -+ if omit.contains(&libpath) { -+ None -+ } else { -+ let relative = path_relative_from(&lib, &output) -+ .expect(&format!("couldn't create relative path from {:?} to {:?}", output, lib)); -+ // FIXME (#9639): This needs to handle non-utf8 paths -+ Some(format!("{}/{}", prefix, -+ relative.to_str().expect("non-utf8 component in path"))) -+ } - } - - // This routine is adapted from the *old* Path's `path_relative_from` -@@ -239,6 +249,7 @@ - #[test] - fn test_rpath_relative() { - if cfg!(target_os = "macos") { -+ let omit = Vec::new(); - let config = &mut RPathConfig { - used_crates: Vec::new(), - has_rpath: true, -@@ -248,9 +259,11 @@ - get_install_prefix_lib_path: &mut || panic!(), - }; - let res = get_rpath_relative_to_output(config, -- Path::new("lib/libstd.so")); -+ Path::new("lib/libstd.so"), -+ &omit); - assert_eq!(res, "@loader_path/../lib"); - } else { -+ let omit = Vec::new(); - let config = &mut RPathConfig { - used_crates: Vec::new(), - out_filename: PathBuf::from("bin/rustc"), -@@ -260,7 +273,8 @@ - linker_is_gnu: true, - }; - let res = get_rpath_relative_to_output(config, -- Path::new("lib/libstd.so")); -+ Path::new("lib/libstd.so"), -+ &omit); - assert_eq!(res, "$ORIGIN/../lib"); - } - } |