prysm.sh download only option (#5628)

* format srcipt
* download only option
This commit is contained in:
Victor Farazdagi
2020-04-26 21:25:48 +03:00
committed by GitHub
parent 0806807d61
commit d0f3bea8d2

View File

@@ -3,9 +3,11 @@
set -eu
# Use this script to download the latest Prysm release binary.
# Usage: ./prysm.sh PROCESS FLAGS
# Usage: ./prysm.sh PROCESS [--download-only] FLAGS
# PROCESS can be one of beacon-chain or validator.
# FLAGS are the flags or arguments passed to the PROCESS.
# If --download-only flag is passed, binaries are checked for updates,
# downloaded if necessary, no process is started.
# Downloaded binaries are saved to ./dist.
# Use USE_PRYSM_VERSION to specify a specific release version.
# Example: USE_PRYSM_VERSION=v0.3.3 ./prysm.sh beacon-chain
@@ -25,7 +27,7 @@ function color() {
function get_realpath() {
if [ "$(uname -s)" == "Darwin" ]; then
local queue="$1"
if [[ "${queue}" != /* ]] ; then
if [[ "${queue}" != /* ]]; then
# Make sure we start with an absolute path.
queue="${PWD}/${queue}"
fi
@@ -36,7 +38,7 @@ function get_realpath() {
# Pull the first path segment off of queue.
local segment="${queue%%/*}"
# If this is the last segment.
if [[ "${queue}" != */* ]] ; then
if [[ "${queue}" != */* ]]; then
segment="${queue}"
queue=""
else
@@ -44,10 +46,10 @@ function get_realpath() {
queue="${queue#*/}"
fi
local link="${current}/${segment}"
if [ -h "${link}" ] ; then
if [ -h "${link}" ]; then
link="$(readlink "${link}")"
queue="${link}/${queue}"
if [[ "${link}" == /* ]] ; then
if [[ "${link}" == /* ]]; then
current=""
fi
else
@@ -64,11 +66,11 @@ function get_realpath() {
# Complain if no arguments were provided.
if [ "$#" -lt 1 ]; then
color "31" "Usage: ./prysm.sh PROCESS FLAGS."
color "31" " ./prysm.sh PROCESS --download-only."
color "31" "PROCESS can be beacon-chain, validator, or slasher."
exit 1
fi
readonly wrapper_dir="$(dirname "$(get_realpath "${BASH_SOURCE[0]}")")/dist"
arch=$(uname -m)
arch=${arch/x86_64/amd64}
@@ -77,11 +79,11 @@ readonly os_arch_suffix="$(uname -s | tr '[:upper:]' '[:lower:]')-$arch"
system=""
case "$OSTYPE" in
darwin*) system="darwin" ;;
linux*) system="linux" ;;
msys*) system="windows" ;;
cygwin*) system="windows" ;;
*) exit 1 ;;
darwin*) system="darwin" ;;
linux*) system="linux" ;;
msys*) system="windows" ;;
cygwin*) system="windows" ;;
*) exit 1 ;;
esac
readonly system
@@ -118,20 +120,33 @@ function verify() {
return 0
fi
hash shasum 2>/dev/null || { echo >&2 "shasum is not available. Either install it or run with PRYSM_ALLOW_UNVERIFIED_BINARIES=1."; exit 1; }
hash gpg 2>/dev/null || { echo >&2 "gpg is not available. Either install it or run with PRYSM_ALLOW_UNVERIFIED_BINARIES=1."; exit 1; }
hash shasum 2>/dev/null || {
echo >&2 "shasum is not available. Either install it or run with PRYSM_ALLOW_UNVERIFIED_BINARIES=1."
exit 1
}
hash gpg 2>/dev/null || {
echo >&2 "gpg is not available. Either install it or run with PRYSM_ALLOW_UNVERIFIED_BINARIES=1."
exit 1
}
color "37" "Verifying binary integrity."
gpg --list-keys $PRYLABS_SIGNING_KEY >/dev/null 2>&1 || curl --silent https://prysmaticlabs.com/releases/pgp_keys.asc | gpg --import
(cd $wrapper_dir; shasum -a 256 -c "${file}.sha256" || failed_verification)
(cd $wrapper_dir; gpg -u $PRYLABS_SIGNING_KEY --verify "${file}.sig" $file || failed_verification)
(
cd $wrapper_dir
shasum -a 256 -c "${file}.sha256" || failed_verification
)
(
cd $wrapper_dir
gpg -u $PRYLABS_SIGNING_KEY --verify "${file}.sig" $file || failed_verification
)
color "32;1" "Verified ${file} has been signed by Prysmatic Labs."
}
function failed_verification() {
MSG=$(cat <<-END
MSG=$(
cat <<-END
Failed to verify Prysm binary. Please erase downloads in the
dist directory and run this script again. Alternatively, you can use a
A prior version by specifying environment variable USE_PRYSM_VERSION
@@ -139,7 +154,7 @@ with the specific version, as desired. Example: USE_PRYSM_VERSION=v1.0.0-alpha.5
If you must wish to continue running an unverified binary, specific the
environment variable PRYSM_ALLOW_UNVERIFIED_BINARIES=1
END
)
)
color "31" "$MSG"
exit 1
}
@@ -194,25 +209,31 @@ if [[ $1 == slasher ]]; then
fi
case $1 in
beacon-chain)
beacon-chain)
readonly process=$BEACON_CHAIN_REAL
;;
validator)
validator)
readonly process=$VALIDATOR_REAL
;;
slasher)
slasher)
readonly process=$SLASHER_REAL
;;
*)
*)
color "31" "Usage: ./prysm.sh PROCESS FLAGS."
color "31" " ./prysm.sh PROCESS --download-only."
color "31" "PROCESS can be beacon-chain, validator, or slasher."
;;
esac
verify $process
if [[ $2 == --download-only ]]; then
color "37" "Only download operation is requested, done."
exit 0
fi
color "36" "Starting Prysm $1 ${*:2}"
exec -a "$0" "${process}" "${@:2}"