Browse Source

contrib/verifybinaries: allow filtering by platform

Downloading all the binaries of all platforms can take quite long,
especially for slow connections, which may deter people from using
this script and, therefore, to disregard security altogether.

This change introduces the new possibility of specifying the
platform along with the version number, so that only the binaries
that contain the platform name are downloaded.
0.15
Andres G. Aragoneses 8 years ago
parent
commit
8d4dafd774
  1. 8
      contrib/verifybinaries/README.md
  2. 43
      contrib/verifybinaries/verify.sh

8
contrib/verifybinaries/README.md

@ -26,6 +26,14 @@ The script returns 0 if everything passes the checks. It returns 1 if either the
./verify.sh bitcoin-core-0.13.0-rc3 ./verify.sh bitcoin-core-0.13.0-rc3
``` ```
If you only want to download the binaries of certain platform, add the corresponding suffix, e.g.:
```sh
./verify.sh bitcoin-core-0.11.2-osx
./verify.sh 0.12.0-linux
./verify.sh bitcoin-core-0.13.0-rc3-win64
```
If you do not want to keep the downloaded binaries, specify anything as the second parameter. If you do not want to keep the downloaded binaries, specify anything as the second parameter.
```sh ```sh

43
contrib/verifybinaries/verify.sh

@ -42,13 +42,36 @@ if [ -n "$1" ]; then
VERSION="$VERSIONPREFIX$1" VERSION="$VERSIONPREFIX$1"
fi fi
#now let's see if the version string contains "rc", and strip it off if it does STRIPPEDLAST="${VERSION%-*}"
# and simultaneously add RCSUBDIR to BASEDIR, where we will look for SIGNATUREFILENAME
if [[ $VERSION == *"$RCVERSIONSTRING"* ]]; then #now let's see if the version string contains "rc" or a platform name (e.g. "osx")
BASEDIR="$BASEDIR${VERSION/%-$RCVERSIONSTRING*}/" if [[ "$STRIPPEDLAST-" == "$VERSIONPREFIX" ]]; then
BASEDIR="$BASEDIR$RCSUBDIR.$RCVERSIONSTRING${VERSION: -1}/" BASEDIR="$BASEDIR$VERSION/"
else
# let's examine the last part to see if it's rc and/or platform name
STRIPPEDNEXTTOLAST="${STRIPPEDLAST%-*}"
if [[ "$STRIPPEDNEXTTOLAST-" == "$VERSIONPREFIX" ]]; then
LASTSUFFIX="${VERSION##*-}"
VERSION="$STRIPPEDLAST"
if [[ $LASTSUFFIX == *"$RCVERSIONSTRING"* ]]; then
RCVERSION="$LASTSUFFIX"
else
PLATFORM="$LASTSUFFIX"
fi
else else
RCVERSION="${STRIPPEDLAST##*-}"
PLATFORM="${VERSION##*-}"
VERSION="$STRIPPEDNEXTTOLAST"
fi
BASEDIR="$BASEDIR$VERSION/" BASEDIR="$BASEDIR$VERSION/"
if [[ $RCVERSION == *"$RCVERSIONSTRING"* ]]; then
BASEDIR="$BASEDIR$RCSUBDIR.$RCVERSION/"
fi
fi fi
SIGNATUREFILE="$BASEDIR$SIGNATUREFILENAME" SIGNATUREFILE="$BASEDIR$SIGNATUREFILENAME"
@ -92,12 +115,22 @@ if [ $RET -ne 0 ]; then
exit "$RET" exit "$RET"
fi fi
if [ -n "$PLATFORM" ]; then
grep $PLATFORM $TMPFILE > "$TMPFILE-plat"
TMPFILESIZE=$(stat -c%s "$TMPFILE-plat")
if [ $TMPFILESIZE -eq 0 ]; then
echo "error: no files matched the platform specified" && exit 3
fi
mv "$TMPFILE-plat" $TMPFILE
fi
#here we extract the filenames from the signature file #here we extract the filenames from the signature file
FILES=$(awk '{print $2}' "$TMPFILE") FILES=$(awk '{print $2}' "$TMPFILE")
#and download these one by one #and download these one by one
for file in $FILES for file in $FILES
do do
echo "Downloading $file"
wget --quiet -N "$BASEDIR$file" wget --quiet -N "$BASEDIR$file"
done done

Loading…
Cancel
Save