12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #!/bin/bash
- # Copyright 2019 The gRPC Authors
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- # Keeping up with Bazel's breaking changes is currently difficult.
- # This script wraps calling bazel by downloading the currently
- # supported version, and then calling it. This way, we can make sure
- # that running bazel will always get meaningful results, at least
- # until Bazel 1.0 is released.
- # NOTE: This script relies on bazel's feature where //tools/bazel
- # script can be used to hijack "bazel" invocations in given workspace.
- set -e
- # DISABLE_BAZEL_WRAPPER can be set to eliminate the wrapper logic
- if [ "${DISABLE_BAZEL_WRAPPER}" != "" ] && [ "${OVERRIDE_BAZEL_VERSION}" == "" ]
- then
- if [ "${BAZEL_REAL}" != "" ]
- then
- # use BAZEL_REAL as set by
- # https://github.com/bazelbuild/bazel/blob/master/scripts/packages/bazel.sh
- # that originally invoked this script (this is what happens when you
- # run "bazel" in our workspace)
- exec -a "$0" "${BAZEL_REAL}" "$@"
- else
- # if BAZEL_REAL is not set, just invoke the default system bazel
- exec bazel "$@"
- fi
- fi
- # IMPORTANT: if you update the version here, other parts of infrastructure might needs updating as well
- # (e.g. sanity checks, bazel toolchains etc.)
- VERSION=${OVERRIDE_BAZEL_VERSION:-4.2.1}
- echo "INFO: Running bazel wrapper (see //tools/bazel for details), bazel version $VERSION will be used instead of system-wide bazel installation." >&2
- # update tools/update_mirror.sh to populate the mirror with new bazel archives
- BASEURL_MIRROR="https://storage.googleapis.com/grpc-bazel-mirror/github.com/bazelbuild/bazel/releases/download"
- BASEURL="https://github.com/bazelbuild/bazel/releases/download"
- pushd "$(dirname "$0")" >/dev/null
- # bazel binary will be downloaded to GRPC_REPO_ROOT/tools directory by default
- DOWNLOAD_DIR=${OVERRIDE_BAZEL_WRAPPER_DOWNLOAD_DIR:-$(pwd)}
- case $(uname -sm) in
- "Linux x86_64")
- suffix=linux-x86_64
- ;;
- "Linux aarch64")
- suffix=linux-arm64
- ;;
- "Darwin x86_64")
- suffix=darwin-x86_64
- ;;
- "MINGW"* | "MSYS_NT"*)
- suffix=windows-x86_64.exe
- ;;
- *)
- echo "Unsupported architecture: $(uname -sm)" >&2
- exit 1
- ;;
- esac
- filename="bazel-$VERSION-$suffix"
- filename_abs="${DOWNLOAD_DIR}/${filename}"
- if [ ! -x "${filename_abs}" ] ; then
- # first try to download using mirror, fallback to download from github
- echo "Downloading bazel, will try URLs: ${BASEURL_MIRROR}/${VERSION}/${filename} ${BASEURL}/${VERSION}/${filename}" >&2
- curl --fail -L --output "${filename_abs}" "${BASEURL_MIRROR}/${VERSION}/${filename}" || curl --fail -L --output "${filename_abs}" "${BASEURL}/${VERSION}/${filename}"
- chmod a+x "${filename_abs}"
- fi
- popd >/dev/null
- exec "${filename_abs}" "$@"
|