aboutsummaryrefslogtreecommitdiffstats
path: root/community/rust/minimize-rpath.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/rust/minimize-rpath.patch')
-rw-r--r--community/rust/minimize-rpath.patch100
1 files changed, 0 insertions, 100 deletions
diff --git a/community/rust/minimize-rpath.patch b/community/rust/minimize-rpath.patch
deleted file mode 100644
index ccc9ccae59..0000000000
--- a/community/rust/minimize-rpath.patch
+++ /dev/null
@@ -1,100 +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_codegen_ssa/back/rpath.rs
-+++ b/src/librustc_codegen_ssa/back/rpath.rs
-@@ -59,13 +59,14 @@
- 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);
--
-- // And a final backup rpath to the global library location.
-- let fallback_rpaths = vec![get_install_prefix_rpath(config)];
-+ let rel_rpaths = get_rpaths_relative_to_output(config, libs, &fallback_rpaths);
-
- fn log_rpaths(desc: &str, rpaths: &[String]) {
- debug!("{} rpaths:", desc);
-@@ -87,11 +88,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"
-@@ -105,10 +108,16 @@
- let mut output = cwd.join(&config.out_filename);
- output.pop(); // strip filename
- let output = fs::canonicalize(&output).unwrap_or(output);
-- let relative = path_relative_from(&lib, &output).unwrap_or_else(||
-- panic!("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`
---- a/src/librustc_codegen_ssa/back/rpath/tests.rs
-+++ b/src/librustc_codegen_ssa/back/rpath/tests.rs
-@@ -50,6 +50,8 @@
-
- #[test]
- fn test_rpath_relative() {
-+ let omit = Vec::new();
-+
- if cfg!(target_os = "macos") {
- let config = &mut RPathConfig {
- used_crates: Vec::new(),
-@@ -60,7 +62,8 @@
- 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 config = &mut RPathConfig {
-@@ -72,7 +75,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");
- }
- }
-