diff --git a/pkgs/build-support/nuke-references/builder.sh b/pkgs/build-support/nuke-references/builder.sh index 9e8c464d8288..02eac664d437 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 < \$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 d672184553f6..8f976ad462cc 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; +}