about summary refs log tree commit diff
path: root/pkgs/shells/bash/update-patch-set.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/shells/bash/update-patch-set.sh')
-rw-r--r--pkgs/shells/bash/update-patch-set.sh47
1 files changed, 47 insertions, 0 deletions
diff --git a/pkgs/shells/bash/update-patch-set.sh b/pkgs/shells/bash/update-patch-set.sh
new file mode 100644
index 0000000000000..ded684571b0a0
--- /dev/null
+++ b/pkgs/shells/bash/update-patch-set.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+# Update patch set for GNU Bash or Readline.
+
+if [ $# -ne 2 ]
+then
+    echo "Usage: $(basename $0) PROJECT VERSION"
+    echo ""
+    echo "Update the patch set for PROJECT (one of \`bash' or \`readline') for"
+    echo "the given version (e.g., \`4.0').  Produce \`PROJECT-patches.nix'."
+    exit 1
+fi
+
+PROJECT="$1"
+VERSION="$2"
+VERSION_CONDENSED="$(echo $VERSION | sed -es/\\.//g)"
+
+GPG="$(if $(type -P gpg2 > /dev/null); then echo gpg2; else echo gpg; fi)"
+PATCH_LIST="$PROJECT-patches.nix"
+
+set -e
+
+start=1
+end=100 # must be > 99 for correct padding
+
+rm -vf "$PATCH_LIST"
+
+( echo "# Automatically generated by \`$(basename $0)'; do not edit." ;	\
+  echo "" ;								\
+  echo "patch: [" )							\
+>> "$PATCH_LIST"
+
+for i in `seq -w $start $end`
+do
+    wget ftp.gnu.org/gnu/$PROJECT/$PROJECT-$VERSION-patches/$PROJECT$VERSION_CONDENSED-$i || break
+    wget ftp.gnu.org/gnu/$PROJECT/$PROJECT-$VERSION-patches/$PROJECT$VERSION_CONDENSED-$i.sig
+    "$GPG" --verify $PROJECT$VERSION_CONDENSED-$i.sig
+    echo "(patch \"$i\" \"$(nix-hash --flat --type sha256 --base32 $PROJECT$VERSION_CONDENSED-$i)\")"	\
+    >> "$PATCH_LIST"
+
+    rm -f $PROJECT$VERSION_CONDENSED-$i{,.sig}
+done
+
+echo "]" >> "$PATCH_LIST"
+
+echo "Got $(expr $i - 1) patches."
+echo "Patch list has been written to \`$PATCH_LIST'."