| #!/usr/bin/env bash |
| # Change the version numbers in the toolvers file and then run this |
| # script to update the hashes |
| |
| ARCHIVES=archives |
| GNU_MIRROR=https://mirrors.kernel.org/gnu |
| TOOLVERS_FILE="toolvers" |
| . "$TOOLVERS_FILE" |
| |
| function verify_sig() { |
| SIGFILE="$1" |
| ARCHIVE="$2" |
| |
| if ! gpg -q --verify "$SIGFILE" "$ARCHIVE"; then |
| echo "Failed to verify $ARCHIVE, aborting" |
| exit 1 |
| fi |
| } |
| |
| function fetch_and_verify() { |
| PKG_URI_DIR="$1" |
| FILENAME="$2" |
| |
| if [ ! -f "$ARCHIVES/$FILENAME" ]; then |
| wget -P "$ARCHIVES" -N "$PKG_URI_DIR/$FILENAME" |
| fi |
| if [ ! -f "$ARCHIVES/$FILENAME.sig" ]; then |
| wget -P "$ARCHIVES" -N "$PKG_URI_DIR/$FILENAME.sig" |
| fi |
| |
| verify_sig "$ARCHIVES/$FILENAME.sig" "$ARCHIVES/$FILENAME" |
| } |
| |
| |
| fetch_and_verify "$GNU_MIRROR/binutils/" "binutils-$BINUTILS_VER.tar.bz2" |
| fetch_and_verify "$GNU_MIRROR/gcc/gcc-$GCC_VER/" "gcc-$GCC_VER.tar.bz2" |
| fetch_and_verify "$GNU_MIRROR/gdb/" "gdb-$GDB_VER.tar.xz" |
| fetch_and_verify "$GNU_MIRROR/mpfr/" "mpfr-$MPFR_VER.tar.bz2" |
| fetch_and_verify "$GNU_MIRROR/mpc/" "mpc-$MPC_VER.tar.gz" |
| fetch_and_verify "$GNU_MIRROR/gmp/" "gmp-$GMP_VER.tar.bz2" |
| |
| BINUTILS_HASH=$(shasum -a 256 -b "$ARCHIVES/binutils-$BINUTILS_VER.tar.bz2" | cut -f1 -d' ') |
| GCC_HASH=$(shasum -a 256 -b "$ARCHIVES/gcc-$GCC_VER.tar.bz2" | cut -f1 -d' ') |
| GDB_HASH=$(shasum -a 256 -b "$ARCHIVES/gdb-$GDB_VER.tar.xz" | cut -f1 -d' ') |
| MPFR_HASH=$(shasum -a 256 -b "$ARCHIVES/mpfr-$MPFR_VER.tar.bz2" | cut -f1 -d' ') |
| MPC_HASH=$(shasum -a 256 -b "$ARCHIVES/mpc-$MPC_VER.tar.gz" | cut -f1 -d' ') |
| GMP_HASH=$(shasum -a 256 -b "$ARCHIVES/gmp-$GMP_VER.tar.bz2" | cut -f1 -d' ') |
| |
| tmp=$(mktemp) |
| echo "# Rerun updatetoolvers after modifying this file" > "$tmp" |
| echo "GCC_VER=$GCC_VER" >> "$tmp" |
| echo "BINUTILS_VER=$BINUTILS_VER" >> "$tmp" |
| echo "GDB_VER=$GDB_VER" >> "$tmp" |
| echo "GMP_VER=$GMP_VER" >> "$tmp" |
| echo "MPC_VER=$MPC_VER" >> "$tmp" |
| echo "MPFR_VER=$MPFR_VER" >> "$tmp" |
| |
| echo "# Below is autogenerated by updatetoolvers" >> "$tmp" |
| echo "GCC_HASH=$GCC_HASH" >> "$tmp" |
| echo "BINUTILS_HASH=$BINUTILS_HASH" >> "$tmp" |
| echo "GDB_HASH=$GDB_HASH" >> "$tmp" |
| echo "GMP_HASH=$GMP_HASH" >> "$tmp" |
| echo "MPC_HASH=$MPC_HASH" >> "$tmp" |
| echo "MPFR_HASH=$MPFR_HASH" >> "$tmp" |
| mv "$tmp" "$TOOLVERS_FILE" |