github.com/argoproj/argo-cd/v3@v3.2.1/hack/installers/install-protoc.sh (about) 1 #!/bin/bash 2 set -eux -o pipefail 3 4 PROJECT_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../..; pwd) 5 DIST_PATH="${PROJECT_ROOT}/dist" 6 PATH="${DIST_PATH}:${PATH}" 7 8 . "$(dirname "$0")"/../tool-versions.sh 9 10 OS=$(go env GOOS) 11 case $OS in 12 darwin) 13 # For macOS, the x86_64 binary is used even on Apple Silicon (it is run through rosetta), so 14 # we download and install the x86_64 version. See: https://github.com/protocolbuffers/protobuf/pull/8557 15 protoc_os=osx 16 protoc_arch=x86_64 17 ;; 18 *) 19 protoc_os=linux 20 case $ARCHITECTURE in 21 arm64|arm) 22 protoc_arch=aarch_64 23 ;; 24 s390x) 25 protoc_arch=s390_64 26 ;; 27 ppc64le) 28 protoc_arch=ppcle_64 29 ;; 30 *) 31 protoc_arch=x86_64 32 ;; 33 esac 34 ;; 35 esac 36 37 export TARGET_FILE="protoc-${protoc_version}-${protoc_os}-${protoc_arch}.zip" 38 url="https://github.com/protocolbuffers/protobuf/releases/download/v${protoc_version}/protoc-${protoc_version}-${protoc_os}-${protoc_arch}.zip" 39 [ -e "$DOWNLOADS/${TARGET_FILE}" ] || curl -sLf --retry 3 -o "$DOWNLOADS/${TARGET_FILE}" "${url}" 40 "$(dirname "$0")"/compare-chksum.sh 41 mkdir -p "/tmp/protoc-${protoc_version}" 42 unzip -o "$DOWNLOADS/${TARGET_FILE}" -d "/tmp/protoc-${protoc_version}" 43 mkdir -p "${DIST_PATH}/protoc-include" 44 sudo install -m 0755 "/tmp/protoc-${protoc_version}/bin/protoc" "${DIST_PATH}/protoc" 45 ( 46 cd "/tmp/protoc-${protoc_version}/include/" 47 find -- * -type d -exec install -m 0755 -d "${DIST_PATH}/protoc-include/{}" \; 48 ) 49 ( 50 cd "/tmp/protoc-${protoc_version}/include/" 51 find -- * -type f -exec install -m 0644 "/tmp/protoc-${protoc_version}/include/{}" "${DIST_PATH}/protoc-include/{}" \; 52 ) 53 protoc --version