ceremonyclient/go-libp2p/scripts/download-protoc.sh
Cassandra Heart dbd95bd9e9
v2.1.0 (#439)
* v2.1.0 [omit consensus and adjacent] - this commit will be amended with the full release after the file copy is complete

* 2.1.0 main node rollup
2025-09-30 02:48:15 -05:00

73 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eou pipefail
# Specify the protobuf release version
PROTOBUF_VERSION="29.2"
# Determine the platform
OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
ARCH="$(uname -m)"
[[ "${ARCH}" == "arm64" ]] && ARCH="aarch64"
PLATFORM="${OS}-${ARCH}"
# Set the download URL based on the platform
case "${PLATFORM}" in
linux-x86_64)
PROTOC_ZIP="protoc-${PROTOBUF_VERSION}-linux-x86_64.zip"
EXPECTED_SHA256="52e9e7ece55c7e30e7e8bbd254b4b21b408a5309bca826763c7124b696a132e9"
;;
linux-aarch64)
PROTOC_ZIP="protoc-${PROTOBUF_VERSION}-linux-aarch64.zip"
EXPECTED_SHA256="0019dfc4b32d63c1392aa264aed2253c1e0c2fb09216f8e2cc269bbfb8bb49b5"
;;
darwin-aarch64)
PROTOC_ZIP="protoc-${PROTOBUF_VERSION}-osx-aarch_64.zip"
EXPECTED_SHA256="0e153a38d6da19594c980e7f7cd3ea0ddd52c9da1068c03c0d8533369fbfeb20"
;;
*)
echo "Unsupported platform: ${PLATFORM}" >&2
exit 1
;;
esac
# Download the specified version of protobuf
DOWNLOAD_URL="https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOBUF_VERSION}/${PROTOC_ZIP}"
echo "Downloading from: ${DOWNLOAD_URL}" >&2
curl -LO "${DOWNLOAD_URL}"
# Verify checksum
if command -v shasum >/dev/null 2>&1; then
ACTUAL_SHA256=$(shasum -a 256 "${PROTOC_ZIP}" | cut -d' ' -f1)
else
ACTUAL_SHA256=$(sha256sum "${PROTOC_ZIP}" | cut -d' ' -f1)
fi
if [[ "${ACTUAL_SHA256}" != "${EXPECTED_SHA256}" ]]; then
echo "Checksum verification failed!" >&2
echo "Expected: ${EXPECTED_SHA256}" >&2
echo "Got: ${ACTUAL_SHA256}" >&2
rm "${PROTOC_ZIP}"
exit 1
fi
echo "Checksum verified successfully" >&2
# Create a directory for extraction
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
INSTALL_DIR="$SCRIPT_DIR/protobuf-bin/protoc-${PROTOBUF_VERSION}"
mkdir -p "${INSTALL_DIR}"
# Unzip the downloaded file
unzip -q -o "${PROTOC_ZIP}" -d "${INSTALL_DIR}"
# Clean up the zip file
rm "${PROTOC_ZIP}"
# Return a new PATH with the protobuf binary
PROTOC_BIN="${INSTALL_DIR}/bin"
echo "Installed protoc ${PROTOBUF_VERSION} to ${INSTALL_DIR}" >&2
# Return the protoc bin path to stdout
printf "${PROTOC_BIN}"