1#!/usr/bin/env nix-shell
2#!nix-shell --pure -i bash -p wget -p gnupg -p cacert
3
4# Update patch set for GNU Bash or Readline.
5
6if [ $# -ne 2 ]
7then
8 echo "Usage: $(basename $0) PROJECT VERSION"
9 echo ""
10 echo "Update the patch set for PROJECT (one of \`bash' or \`readline') for"
11 echo "the given version (e.g., \`4.0'). Produce \`PROJECT-patches.nix'."
12 exit 1
13fi
14
15PROJECT="$1"
16VERSION="$2"
17VERSION_CONDENSED="$(echo $VERSION | sed -es/\\.//g)"
18PATCH_LIST="$PROJECT-$VERSION-patches.nix"
19
20set -e
21
22start=1
23end=100 # must be > 99 for correct padding
24
25rm -vf "$PATCH_LIST"
26
27wget "https://tiswww.case.edu/php/chet/gpgkey.asc"
28echo "4ef5051ce7200241e65d29c11eb57df8 gpgkey.asc" > gpgkey.asc.md5
29md5sum -c gpgkey.asc.md5
30gpg --import ./gpgkey.asc
31rm gpgkey.asc{,.md5}
32
33( echo "# Automatically generated by \`$(basename $0)'; do not edit." ; \
34 echo "" ; \
35 echo "patch: [" ) \
36>> "$PATCH_LIST"
37
38for i in `seq -w $start $end`
39do
40 wget ftp.gnu.org/gnu/$PROJECT/$PROJECT-$VERSION-patches/$PROJECT$VERSION_CONDENSED-$i || break
41 wget ftp.gnu.org/gnu/$PROJECT/$PROJECT-$VERSION-patches/$PROJECT$VERSION_CONDENSED-$i.sig
42 gpg --verify $PROJECT$VERSION_CONDENSED-$i.sig
43 echo "(patch \"$i\" \"$(nix-hash --flat --type sha256 --base32 $PROJECT$VERSION_CONDENSED-$i)\")" \
44 >> "$PATCH_LIST"
45
46 rm -f $PROJECT$VERSION_CONDENSED-$i{,.sig}
47done
48
49echo "]" >> "$PATCH_LIST"
50
51echo "Got $(expr $i - 1) patches."
52echo "Patch list has been written to \`$PATCH_LIST'."