| # Copyright 2018 The Bazel 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. |
| #!/usr/bin/env bash |
| # Note: Written on a mac please make it compatible with linux if needed. |
| set -o errexit |
| |
| # The script assumes that the bazel source code is checked out in the GOPATH |
| : ${BAZEL_SOURCE:=${GOPATH?GOPATH not set}/src/github.com/bazelbuild/bazel} |
| # The version of the jdk to use target javabase. The path of the jdk is set as the JAVA_HOME |
| : ${JAVA_BASE_VERSION:="1.8"} |
| # The version of the jdk to use as the host_javabase. The path of the jdk is Passed as a startup flag. |
| : ${HOST_JAVA_BASE_VERSION:="9"} |
| |
| SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" |
| WORKSPACE_DIR=$(dirname ${SCRIPT_DIR}) |
| BAZEL_RC=${WORKSPACE_DIR}/.bazelrc |
| |
| function _exit { echo $1; exit 1; } |
| function _jdk_path { /usr/libexec/java_home -v $1; } |
| |
| function _head_bazel { |
| local head_bazel=${BAZEL_SOURCE}/bazel-bin/src/bazel |
| if [ ! -f ${head_bazel} ]; then _exit "bazel binary not found at ${head_bazel} run ${0} _build"; fi |
| |
| local hjb="$(_jdk_path ${HOST_JAVA_BASE_VERSION})" |
| export JAVA_HOME="$(_jdk_path ${JAVA_BASE_VERSION})" |
| |
| ${head_bazel}\ |
| --host_javabase=${hjb}\ |
| --bazelrc=${BAZEL_RC}\ |
| --max_idle_secs=600\ |
| ${1} $2 |
| } |
| |
| function _build_head_bazel { |
| pushd ${BAZEL_SOURCE} |
| bazel build //src:bazel |
| if [ $? -ne 0 ]; then _exit "could not build bazel"; fi |
| bazel shutdown |
| } |
| |
| function _main { |
| if [ ! -d ${BAZEL_SOURCE} ]; then _exit "bazel source directory does not exist ${BAZEL_SOURCE}"; fi |
| |
| local CMD=$1 |
| shift 1 |
| |
| case ${CMD} in |
| # compile bazel from head |
| _build) |
| _build_head_bazel |
| ;; |
| _cd) |
| cd ${BAZEL_SOURCE} |
| ;; |
| _pull) |
| pushd ${BAZEL_SOURCE} |
| git fetch |
| git pull origin master |
| ;; |
| *) |
| _head_bazel ${CMD} $@ |
| ;; |
| esac |
| } |
| |
| _main $@ |