summary refs log tree commit diff
path: root/pkgs/build-support/nuke-references/nuke-refs.sh
diff options
context:
space:
mode:
authorAndrew Childs <lorne@cons.org.nz>2021-02-15 14:56:21 +0900
committerAndrew Childs <lorne@cons.org.nz>2021-05-17 00:27:03 +0900
commit79e34294bd678f615bf4a3511c0d875891fc8b0b (patch)
tree64ba766d9cb861eb164f4dd73c190747a1631487 /pkgs/build-support/nuke-references/nuke-refs.sh
parentf067102afec850febd148fef827acdc6e759a59d (diff)
downloadnixpkgs-79e34294bd678f615bf4a3511c0d875891fc8b0b.tar
nixpkgs-79e34294bd678f615bf4a3511c0d875891fc8b0b.tar.gz
nixpkgs-79e34294bd678f615bf4a3511c0d875891fc8b0b.tar.bz2
nixpkgs-79e34294bd678f615bf4a3511c0d875891fc8b0b.tar.lz
nixpkgs-79e34294bd678f615bf4a3511c0d875891fc8b0b.tar.xz
nixpkgs-79e34294bd678f615bf4a3511c0d875891fc8b0b.tar.zst
nixpkgs-79e34294bd678f615bf4a3511c0d875891fc8b0b.zip
nukeReferences: fix code signatures on aarch64-darwin
Diffstat (limited to 'pkgs/build-support/nuke-references/nuke-refs.sh')
-rw-r--r--pkgs/build-support/nuke-references/nuke-refs.sh33
1 files changed, 33 insertions, 0 deletions
diff --git a/pkgs/build-support/nuke-references/nuke-refs.sh b/pkgs/build-support/nuke-references/nuke-refs.sh
new file mode 100644
index 00000000000..21eb855cbad
--- /dev/null
+++ b/pkgs/build-support/nuke-references/nuke-refs.sh
@@ -0,0 +1,33 @@
+#! @shell@
+
+fixupHooks=()
+
+if [ -e @out@/nix-support/setup-hooks.sh ]; then
+    source @out@/nix-support/setup-hooks.sh
+fi
+
+excludes=""
+while getopts e: o; do
+    case "$o" in
+        e) storeId=$(echo "$OPTARG" | @perl@/bin/perl -ne "print \"\$1\" if m|^\Q@storeDir@\E/([a-z0-9]{32})-.*|")
+           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|\Q@storeDir@\E/$excludes[a-z0-9]{32}-|@storeDir@/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-|g" > "$i.tmp"
+        if test -x "$i"; then chmod +x "$i.tmp"; fi
+        mv "$i.tmp" "$i"
+
+        for hook in "${fixupHooks[@]}"; do
+            eval "$hook" "$i"
+        done
+    fi
+done