nimbus-eth2/scripts/geth_binaries.sh

118 lines
3.7 KiB
Bash

# beacon_chain
# Copyright (c) 2023-2024 Status Research & Development GmbH
# Licensed and distributed under either of
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
# at your option. This file may not be copied, modified, or distributed except according to those terms.
if [ -z "${GETH_BINARIES_SOURCED:-}" ]; then
GETH_BINARIES_SOURCED=1
SCRIPTS_DIR="$(dirname "${BASH_SOURCE[0]}")"
BUILD_DIR="$(cd "$SCRIPTS_DIR/../build"; pwd)"
source "${SCRIPTS_DIR}/detect_platform.sh"
source "${SCRIPTS_DIR}/bash_utils.sh"
: ${CURL_BINARY:="curl"}
: ${STABLE_GETH_BINARY:="${BUILD_DIR}/downloads/geth$EXE_EXTENSION"}
: ${GETH_CAPELLA_BINARY:="$STABLE_GETH_BINARY"}
: ${GETH_DENEB_BINARY:="$STABLE_GETH_BINARY"}
download_geth_stable() {
if [[ ! -e "${STABLE_GETH_BINARY}" ]]; then
GETH_VERSION="1.14.4-5550d839" # https://geth.ethereum.org/downloads
GETH_URL="https://gethstore.blob.core.windows.net/builds/"
case "${OS}-${ARCH}" in
linux-amd64|linux-x86_64)
GETH_TARBALL="geth-linux-amd64-${GETH_VERSION}.tar.gz"
;;
linux-arm64|linux-aarch64)
GETH_TARBALL="geth-linux-arm64-${GETH_VERSION}.tar.gz"
;;
macos-amd64|macos-x86_64)
GETH_TARBALL="geth-darwin-amd64-${GETH_VERSION}.tar.gz"
;;
macos-arm64|macos-aarch64)
GETH_TARBALL="geth-darwin-arm64-${GETH_VERSION}.tar.gz"
;;
windows-amd64|windows-x86_64)
GETH_TARBALL="geth-windows-amd64-${GETH_VERSION}.zip"
;;
*)
echo "No Geth binaries available for platform: ${OS}-${ARCH}"
exit 1
;;
esac
log "Downloading Geth binary"
"$CURL_BINARY" -sSLO "$GETH_URL/$GETH_TARBALL"
local tmp_extract_dir
tmp_extract_dir=$(mktemp -d geth-stable-tarball-XXX)
CLEANUP_DIRS+=("$tmp_extract_dir")
tar -xzf "$GETH_TARBALL" -C "$tmp_extract_dir" --strip-components=1
mkdir -p "$(dirname "$STABLE_GETH_BINARY")"
mv "$tmp_extract_dir/geth$EXE_EXTENSION" "$STABLE_GETH_BINARY"
chmod +x "$STABLE_GETH_BINARY"
patchelf_when_on_nixos "$STABLE_GETH_BINARY"
fi
}
download_status_geth_binary() {
BINARY_NAME="$1"
BINARY_FS_PATH="$2"
if [[ ! -e "${BINARY_FS_PATH}" ]]; then
case "${OS}-${ARCH}" in
linux-amd64|linux-x86_64)
GETH_PLATFORM=linux-amd64
;;
linux-arm64|linux-aarch64)
GETH_PLATFORM=linux-arm64
;;
macos-amd64|macos-x86_64)
GETH_PLATFORM=macos-amd64
;;
macos-arm64|macos-aarch64)
GETH_PLATFORM=macos-arm64
;;
windows-amd64|windows-x86_64)
GETH_PLATFORM=windows-amd64
;;
*)
echo "No Status Geth binaries available for platform: ${OS}-${ARCH}"
exit 1
;;
esac
log "Downloading Status geth binary ($1)"
GETH_TARBALL_NAME="geth-binaries-${GETH_PLATFORM}.tar.gz"
GETH_TARBALL_URL="https://github.com/status-im/nimbus-simulation-binaries/releases/download/latest/${GETH_TARBALL_NAME}"
GETH_BINARY_IN_TARBALL="geth/${BINARY_NAME}/geth$EXE_EXTENSION"
"$CURL_BINARY" -o "$GETH_TARBALL_NAME" -sSL "$GETH_TARBALL_URL"
local tmp_extract_dir
tmp_extract_dir=$(mktemp -d geth-status-tarball-XXX)
CLEANUP_DIRS+=("$tmp_extract_dir")
tar -xzf "$GETH_TARBALL_NAME" -C "$tmp_extract_dir" --strip-components 2 \
"$GETH_BINARY_IN_TARBALL"
mkdir -p "$(dirname "$BINARY_FS_PATH")"
mv "$tmp_extract_dir/geth$EXE_EXTENSION" "$BINARY_FS_PATH"
chmod +x "$BINARY_FS_PATH"
patchelf_when_on_nixos "$BINARY_FS_PATH"
fi
}
download_geth_capella() {
download_geth_stable
}
download_geth_deneb() {
download_geth_stable
}
fi