about summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2015-11-10 16:41:34 +0300
committerNikolay Amiantov <ab@fmap.me>2015-11-10 16:41:34 +0300
commitd4c27381dc3fff79a4c7aa54b35d4df7169b71bd (patch)
tree53e49975f0cc49fe9a17f52d5e40949514e98bf1 /pkgs/build-support
parenta8a58faedb23b3e250831de983f9ed196936d642 (diff)
parent12fcfe39db2a1f7df7c72dade591d497b153bbf8 (diff)
downloadnixlib-d4c27381dc3fff79a4c7aa54b35d4df7169b71bd.tar
nixlib-d4c27381dc3fff79a4c7aa54b35d4df7169b71bd.tar.gz
nixlib-d4c27381dc3fff79a4c7aa54b35d4df7169b71bd.tar.bz2
nixlib-d4c27381dc3fff79a4c7aa54b35d4df7169b71bd.tar.lz
nixlib-d4c27381dc3fff79a4c7aa54b35d4df7169b71bd.tar.xz
nixlib-d4c27381dc3fff79a4c7aa54b35d4df7169b71bd.tar.zst
nixlib-d4c27381dc3fff79a4c7aa54b35d4df7169b71bd.zip
Merge pull request #10460 from abbradar/remote-askpass
Support network in initrd and entering LUKS passphrase via SSH
Diffstat (limited to 'pkgs/build-support')
-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 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 <<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 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;
+}