about summary refs log tree commit diff
path: root/nixpkgs/pkgs/shells/bash/update-patch-set.sh
blob: cb4f372f5433b72268d2306ddca47abdaa50b445 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/env nix-shell
#!nix-shell --pure -i bash -p wget -p gnupg -p cacert

# 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)"
PATCH_LIST="$PROJECT-$VERSION-patches.nix"

set -e

start=1
end=100 # must be > 99 for correct padding

rm -vf "$PATCH_LIST"

wget "https://tiswww.case.edu/php/chet/gpgkey.asc"
echo "4ef5051ce7200241e65d29c11eb57df8  gpgkey.asc" > gpgkey.asc.md5
md5sum -c gpgkey.asc.md5
gpg --import ./gpgkey.asc
rm gpgkey.asc{,.md5}

( 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'."