github.com/influxdata/telegraf@v1.30.3/scripts/installgo_mac.sh (about) 1 #!/bin/sh 2 3 set -eux 4 5 ARCH=$(uname -m) 6 GO_VERSION="1.22.3" 7 GO_VERSION_SHA_arm64="02abeab3f4b8981232237ebd88f0a9bad933bc9621791cd7720a9ca29eacbe9d" # from https://golang.org/dl 8 GO_VERSION_SHA_amd64="610e48c1df4d2f852de8bc2e7fd2dc1521aac216f0c0026625db12f67f192024" # from https://golang.org/dl 9 10 if [ "$ARCH" = 'arm64' ]; then 11 GO_ARCH="darwin-arm64" 12 GO_VERSION_SHA=${GO_VERSION_SHA_arm64} 13 elif [ "$ARCH" = 'x86_64' ]; then 14 GO_ARCH="darwin-amd64" 15 GO_VERSION_SHA=${GO_VERSION_SHA_amd64} 16 fi 17 18 # This path is cacheable. (Saving in /usr/local/ would cause issues restoring the cache.) 19 path="/usr/local/Cellar" 20 sudo mkdir -p ${path} 21 22 # Download Go and verify Go tarball. (Note: we aren't using brew because 23 # it is slow to update and we can't pull specific minor versions.) 24 setup_go () { 25 echo "installing go" 26 curl -L "https://golang.org/dl/go${GO_VERSION}.${GO_ARCH}.tar.gz" --output "go${GO_VERSION}.${GO_ARCH}.tar.gz" 27 if ! echo "${GO_VERSION_SHA} go${GO_VERSION}.${GO_ARCH}.tar.gz" | shasum --algorithm 256 --check -; then 28 echo "Checksum failed" >&2 29 exit 1 30 fi 31 32 sudo rm -rf "${path}/go" 33 sudo tar -C "$path" -xzf "go${GO_VERSION}.${GO_ARCH}.tar.gz" 34 sudo mkdir -p /usr/local/bin 35 sudo ln -sf "${path}/go/bin/go" /usr/local/bin/go 36 sudo ln -sf "${path}/go/bin/gofmt" /usr/local/bin/gofmt 37 } 38 39 if command -v go >/dev/null 2>&1; then 40 echo "Go is already installed" 41 cd 42 v=$(go version | { read -r _ _ v _; echo "${v#go}"; }) 43 echo "$v is installed, required version is ${GO_VERSION}" 44 if [ "$v" != ${GO_VERSION} ]; then 45 setup_go 46 fi 47 else 48 setup_go 49 fi 50 51 echo "$PATH" 52 command -v go 53 go version