summary refs log tree commit diff
path: root/pkgs/development/tools/misc/patchelf
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2014-06-27 11:15:28 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-08-09 12:44:49 +0200
commit83a41771abbfcfc027270671be55eb3ed1606a46 (patch)
tree88edc307d9adc91a0f6d91ddefec6a9044a5b173 /pkgs/development/tools/misc/patchelf
parentb23dbb1a5dffbfa3abb47fcd0f1579ac2e6f29fc (diff)
downloadnixpkgs-83a41771abbfcfc027270671be55eb3ed1606a46.tar
nixpkgs-83a41771abbfcfc027270671be55eb3ed1606a46.tar.gz
nixpkgs-83a41771abbfcfc027270671be55eb3ed1606a46.tar.bz2
nixpkgs-83a41771abbfcfc027270671be55eb3ed1606a46.tar.lz
nixpkgs-83a41771abbfcfc027270671be55eb3ed1606a46.tar.xz
nixpkgs-83a41771abbfcfc027270671be55eb3ed1606a46.tar.zst
nixpkgs-83a41771abbfcfc027270671be55eb3ed1606a46.zip
Move RPATH shrinking from stdenv to a setup hook provided by patchelf
Diffstat (limited to 'pkgs/development/tools/misc/patchelf')
-rw-r--r--pkgs/development/tools/misc/patchelf/default.nix2
-rw-r--r--pkgs/development/tools/misc/patchelf/setup-hook.sh18
2 files changed, 20 insertions, 0 deletions
diff --git a/pkgs/development/tools/misc/patchelf/default.nix b/pkgs/development/tools/misc/patchelf/default.nix
index 06b5c2ef516..5aa81e46bed 100644
--- a/pkgs/development/tools/misc/patchelf/default.nix
+++ b/pkgs/development/tools/misc/patchelf/default.nix
@@ -8,6 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "c99f84d124347340c36707089ec8f70530abd56e7827c54d506eb4cc097a17e7";
   };
 
+  setupHook = [ ./setup-hook.sh ];
+
   meta = {
     homepage = http://nixos.org/patchelf.html;
     license = "GPL";
diff --git a/pkgs/development/tools/misc/patchelf/setup-hook.sh b/pkgs/development/tools/misc/patchelf/setup-hook.sh
new file mode 100644
index 00000000000..e27d1ed5b00
--- /dev/null
+++ b/pkgs/development/tools/misc/patchelf/setup-hook.sh
@@ -0,0 +1,18 @@
+# This setup hook calls patchelf to automatically remove unneeded
+# directories from the RPATH of every library or executable in every
+# output.
+
+if [ -z "$dontPatchELF" ]; then
+    addHook fixupOutput 'patchELF "$prefix"'
+fi
+
+patchELF() {
+    header "patching ELF executables and libraries in $prefix"
+    if [ -e "$prefix" ]; then
+        find "$prefix" \( \
+            \( -type f -a -name "*.so*" \) -o \
+            \( -type f -a -perm +0100 \) \
+            \) -print -exec patchelf --shrink-rpath '{}' \;
+    fi
+    stopNest
+}