diff options
| author | Jakub Jirutka <jakub@jirutka.cz> | 2017-04-13 00:23:56 +0200 |
|---|---|---|
| committer | Jakub Jirutka <jakub@jirutka.cz> | 2017-04-13 00:29:51 +0200 |
| commit | f1119f039453b5ce6fa03ea7d1b8b13e04db2633 (patch) | |
| tree | b1368cbc5c35e81082e0f0700a200c3773afe501 /testing/rust/force-rpath-on-prefer-dynamic.patch | |
| parent | 0c9c5f8c93e636078d89eb27abc68b45306a16ce (diff) | |
| download | aports-f1119f039453b5ce6fa03ea7d1b8b13e04db2633.tar.bz2 aports-f1119f039453b5ce6fa03ea7d1b8b13e04db2633.tar.xz | |
testing/rust: force rpath on prefer-dynamic
Diffstat (limited to 'testing/rust/force-rpath-on-prefer-dynamic.patch')
| -rw-r--r-- | testing/rust/force-rpath-on-prefer-dynamic.patch | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/testing/rust/force-rpath-on-prefer-dynamic.patch b/testing/rust/force-rpath-on-prefer-dynamic.patch new file mode 100644 index 0000000000..3c3aced9bd --- /dev/null +++ b/testing/rust/force-rpath-on-prefer-dynamic.patch @@ -0,0 +1,36 @@ +From: Shiz <hi@shiz.me> +From: Jakub Jirutka <jakub@jirutka.cz> +Date: Wed, 12 Apr 2017 23:28:09 +0200 +Subject: [PATCH] Force rpath on prefer-dynamic + +When you build a dynamic binary with `-C prefer-dynamic`, rustc links +dynamically even Rust libraries, built as shared objects. These are +installed in /usr/lib/rustlib/<TARGET>/lib/, the location that is not +on standard LD path, at least on Alpine. + +Therefore such binary would be unusable when not built with `-C rpath` +(or manually specifying LD_LIBRARY_PATH). For that reason we implicitly +enable rpath when `prefer-dynamic` is enabled. + +Also note that Rust normally installs identical copy of *.so files from +/usr/lib/rustlib/<TARGET>/lib/, where <TARGET> equals host triple, to +/usr/lib. That's why such fully dynamic binary may work on other +systems even without rpath or having rustlib on the LD path. However, +since these *.so libraries don't keep stable ABI, they should not be on +LD path, and thus we do not install them here (see +change-rpath-to-rustlib.patch). + +--- a/src/librustc/session/config.rs ++++ b/src/librustc/session/config.rs +@@ -1368,6 +1368,11 @@ + + let mut cg = build_codegen_options(matches, error_format); + ++ // Force rpath addition on prefer-dynamic output. ++ if cg.prefer_dynamic { ++ cg.rpath = true; ++ } ++ + // Issue #30063: if user requests llvm-related output to one + // particular path, disable codegen-units. + if matches.opt_present("o") && cg.codegen_units != 1 { |
