| #!/usr/bin/env bash |
| # Copyright 2020 The TensorFlow Authors. All Rights Reserved. |
| # |
| # 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. |
| # ============================================================================== |
| # External `common.sh` |
| |
| # Keep in sync with tensorflow core and configure.py. |
| # TODO(b/158448780): Guard bazel version with IfChangeThenChange. |
| LATEST_BAZEL_VERSION=3.1.0 |
| |
| # Run flaky functions with retries. |
| # run_with_retry cmd |
| function run_with_retry { |
| eval "$1" |
| # If the command fails retry again in 60 seconds. |
| if [[ $? -ne 0 ]]; then |
| sleep 60 |
| eval "$1" |
| fi |
| } |
| |
| function die() { |
| echo "$@" 1>&2 ; exit 1; |
| } |
| |
| # A small utility to run the command and only print logs if the command fails. |
| # On success, all logs are hidden. |
| function readable_run { |
| # Disable debug mode to avoid printing of variables here. |
| set +x |
| result=$("$@" 2>&1) || die "$result" |
| echo "$@" |
| echo "Command completed successfully at $(date)" |
| set -x |
| } |
| |
| # TODO(b/158448780): Guard bazel installation with IfChangeThenChange. |
| function set_bazel_outdir { |
| mkdir -p /tmpfs/bazel_output |
| export TEST_TMPDIR=/tmpfs/bazel_output |
| } |
| |
| # Downloads bazelisk to ~/bin as `bazel`. |
| function install_bazelisk { |
| date |
| case "$(uname -s)" in |
| Darwin) local name=bazelisk-darwin-amd64 ;; |
| Linux) local name=bazelisk-linux-amd64 ;; |
| *) die "Unknown OS: $(uname -s)" ;; |
| esac |
| mkdir -p "$HOME/bin" |
| wget --no-verbose -O "$HOME/bin/bazel" \ |
| "https://github.com/bazelbuild/bazelisk/releases/download/v1.3.0/$name" |
| chmod u+x "$HOME/bin/bazel" |
| if [[ ! ":$PATH:" =~ :"$HOME"/bin/?: ]]; then |
| PATH="$HOME/bin:$PATH" |
| fi |
| set_bazel_outdir |
| which bazel |
| bazel version |
| date |
| } |
| |
| # Install the given bazel version on linux |
| function update_bazel_linux { |
| if [[ -z "$1" ]]; then |
| BAZEL_VERSION=${LATEST_BAZEL_VERSION} |
| else |
| BAZEL_VERSION=$1 |
| fi |
| rm -rf ~/bazel |
| mkdir ~/bazel |
| |
| pushd ~/bazel |
| readable_run wget https://github.com/bazelbuild/bazel/releases/download/"${BAZEL_VERSION}"/bazel-"${BAZEL_VERSION}"-installer-linux-x86_64.sh |
| chmod +x bazel-*.sh |
| ./bazel-"${BAZEL_VERSION}"-installer-linux-x86_64.sh --user |
| rm bazel-"${BAZEL_VERSION}"-installer-linux-x86_64.sh |
| popd |
| |
| PATH="/home/kbuilder/bin:$PATH" |
| set_bazel_outdir |
| which bazel |
| bazel version |
| } |