summary refs log tree commit diff
path: root/pkgs/build-support/nuke-references
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2015-10-18 17:53:29 +0300
committerNikolay Amiantov <ab@fmap.me>2015-10-18 18:41:11 +0300
commit3c7871a1c027da0b22c8b280944e374273f2874b (patch)
treeee8b0bb42b8820ed7078ca42513bf4205bc14e04 /pkgs/build-support/nuke-references
parentc81fb457c9f505c8093000f522df24b7482d0cb7 (diff)
downloadnixpkgs-3c7871a1c027da0b22c8b280944e374273f2874b.tar
nixpkgs-3c7871a1c027da0b22c8b280944e374273f2874b.tar.gz
nixpkgs-3c7871a1c027da0b22c8b280944e374273f2874b.tar.bz2
nixpkgs-3c7871a1c027da0b22c8b280944e374273f2874b.tar.lz
nixpkgs-3c7871a1c027da0b22c8b280944e374273f2874b.tar.xz
nixpkgs-3c7871a1c027da0b22c8b280944e374273f2874b.tar.zst
nixpkgs-3c7871a1c027da0b22c8b280944e374273f2874b.zip
nuke-references: support -e option
Diffstat (limited to 'pkgs/build-support/nuke-references')
-rw-r--r--pkgs/build-support/nuke-references/builder.sh25
-rw-r--r--pkgs/build-support/nuke-references/default.nix5
2 files changed, 23 insertions, 7 deletions
diff --git a/pkgs/build-support/nuke-references/builder.sh b/pkgs/build-support/nuke-references/builder.sh
index 9e8c464d828..02eac664d43 100644
--- a/pkgs/build-support/nuke-references/builder.sh
+++ b/pkgs/build-support/nuke-references/builder.sh
@@ -3,11 +3,26 @@ source $stdenv/setup
 mkdir -p $out/bin
 cat > $out/bin/nuke-refs <<EOF
 #! $SHELL -e
-for i in \$*; do
-    if test ! -L \$i -a -f \$i; then
-        cat \$i | sed "s|$NIX_STORE/[a-z0-9]*-|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-|g" > \$i.tmp
-        if test -x \$i; then chmod +x \$i.tmp; fi
-        mv \$i.tmp \$i
+
+excludes=""
+while getopts e: o; do
+    case "\$o" in
+        e) storeId=\$(echo "\$OPTARG" | sed -n "s|^$NIX_STORE/\\([a-z0-9]\{32\}\\)-.*|\1|p")
+           if [ -z "\$storeId" ]; then
+               echo "-e argument must be a Nix store path"
+               exit 1
+           fi
+           excludes="\$excludes(?!\$storeId)"
+        ;;
+    esac
+done
+shift \$((\$OPTIND-1))
+
+for i in "\$@"; do
+    if test ! -L "\$i" -a -f "\$i"; then
+        cat "\$i" | $perl/bin/perl -pe "s|$NIX_STORE/\$excludes[a-z0-9]{32}-|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-|g" > "\$i.tmp"
+        if test -x "\$i"; then chmod +x "\$i.tmp"; fi
+        mv "\$i.tmp" "\$i"
     fi
 done
 EOF
diff --git a/pkgs/build-support/nuke-references/default.nix b/pkgs/build-support/nuke-references/default.nix
index d672184553f..8f976ad462c 100644
--- a/pkgs/build-support/nuke-references/default.nix
+++ b/pkgs/build-support/nuke-references/default.nix
@@ -3,9 +3,10 @@
 # path (/nix/store/eeee...).  This is useful for getting rid of
 # dependencies that you know are not actually needed at runtime.
 
-{stdenv}:
+{ stdenv, perl }:
 
 stdenv.mkDerivation {
   name = "nuke-references";
   builder = ./builder.sh;
-}
\ No newline at end of file
+  inherit perl;
+}