53 lines
1.5 KiB
Bash
53 lines
1.5 KiB
Bash
|
#!/usr/bin/env nix-shell
|
||
|
#!nix-shell --pure -i bash -p wget -p gnupg -p cacert -p nix
|
||
|
|
||
|
# 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"
|
||
|
DIR=$(dirname "$0")
|
||
|
VERSION_CONDENSED="$(echo "$VERSION" | sed -es/\\.//g)"
|
||
|
PATCH_LIST="$DIR/$PROJECT-$VERSION-patches.nix"
|
||
|
|
||
|
set -e
|
||
|
|
||
|
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 {001..100}
|
||
|
do
|
||
|
wget -P "$DIR" "ftp.gnu.org/gnu/$PROJECT/$PROJECT-$VERSION-patches/$PROJECT$VERSION_CONDENSED-$i" || break
|
||
|
wget -P "$DIR" "ftp.gnu.org/gnu/$PROJECT/$PROJECT-$VERSION-patches/$PROJECT$VERSION_CONDENSED-$i.sig"
|
||
|
gpg --verify "$DIR/$PROJECT$VERSION_CONDENSED-$i.sig"
|
||
|
hash=$(nix-hash --flat --type sha256 --base32 "$DIR/$PROJECT$VERSION_CONDENSED-$i")
|
||
|
echo "(patch \"$i\" \"$hash\")" \
|
||
|
>> "$PATCH_LIST"
|
||
|
|
||
|
rm -f "$DIR/$PROJECT$VERSION_CONDENSED-$i"{,.sig}
|
||
|
done
|
||
|
|
||
|
echo "]" >> "$PATCH_LIST"
|
||
|
|
||
|
# bash interprets numbers starting with 0 as octals
|
||
|
echo "Got $((10#$i - 1)) patches."
|
||
|
echo "Patch list has been written to \`$PATCH_LIST'."
|