1*105f6285SAndroid Build Coastguard Worker#!/bin/bash 2*105f6285SAndroid Build Coastguard Worker 3*105f6285SAndroid Build Coastguard Worker# Copyright 2020 Google LLC 4*105f6285SAndroid Build Coastguard Worker# 5*105f6285SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 6*105f6285SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*105f6285SAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*105f6285SAndroid Build Coastguard Worker# 9*105f6285SAndroid Build Coastguard Worker# https://www.apache.org/licenses/LICENSE-2.0 10*105f6285SAndroid Build Coastguard Worker# 11*105f6285SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*105f6285SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 13*105f6285SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*105f6285SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*105f6285SAndroid Build Coastguard Worker# limitations under the License. 16*105f6285SAndroid Build Coastguard Worker 17*105f6285SAndroid Build Coastguard Workerreadonly ANDROID_TARGET=$1 18*105f6285SAndroid Build Coastguard Workerreadonly BUILD_DIR=$2 19*105f6285SAndroid Build Coastguard Workershift 20*105f6285SAndroid Build Coastguard Workershift 21*105f6285SAndroid Build Coastguard Workerreadonly BUILD_COMMAND="$@" 22*105f6285SAndroid Build Coastguard Worker 23*105f6285SAndroid Build Coastguard Workerif [[ -z "${ANDROID_TARGET}" ]]; then 24*105f6285SAndroid Build Coastguard Worker echo "error: Android target not set" 25*105f6285SAndroid Build Coastguard Worker exit 1 26*105f6285SAndroid Build Coastguard Workerfi 27*105f6285SAndroid Build Coastguard Worker 28*105f6285SAndroid Build Coastguard Workerif [[ -z "${BUILD_DIR}" ]]; then 29*105f6285SAndroid Build Coastguard Worker echo "error: Build directory not set" 30*105f6285SAndroid Build Coastguard Worker exit 1 31*105f6285SAndroid Build Coastguard Workerfi 32*105f6285SAndroid Build Coastguard Worker 33*105f6285SAndroid Build Coastguard Workerif [[ -z "${BUILD_COMMAND}" ]]; then 34*105f6285SAndroid Build Coastguard Worker echo "error: Build command not set" 35*105f6285SAndroid Build Coastguard Worker exit 1 36*105f6285SAndroid Build Coastguard Workerfi 37*105f6285SAndroid Build Coastguard Worker 38*105f6285SAndroid Build Coastguard Worker# If there is an error, exit right away instead of continuing. For example, 39*105f6285SAndroid Build Coastguard Worker# lunch could fail. If so, there is no point in continuing the build. 40*105f6285SAndroid Build Coastguard Worker 41*105f6285SAndroid Build Coastguard Workerset -e 42*105f6285SAndroid Build Coastguard Worker 43*105f6285SAndroid Build Coastguard WorkerBUILD_COMMAND_ARRAY=($BUILD_COMMAND) 44*105f6285SAndroid Build Coastguard Workerfor i in ${BUILD_COMMAND_ARRAY[@]}; 45*105f6285SAndroid Build Coastguard Workerdo 46*105f6285SAndroid Build Coastguard Worker if [[ $i =~ ^[A-Z_][A-Z0-9_]*= ]]; 47*105f6285SAndroid Build Coastguard Worker then 48*105f6285SAndroid Build Coastguard Worker echo "build_android_target.sh: export $i"; 49*105f6285SAndroid Build Coastguard Worker export $i; 50*105f6285SAndroid Build Coastguard Worker fi; 51*105f6285SAndroid Build Coastguard Workerdone; 52*105f6285SAndroid Build Coastguard Worker 53*105f6285SAndroid Build Coastguard Workerecho "build_android_target.sh: source build/envsetup.sh" 54*105f6285SAndroid Build Coastguard Workersource build/envsetup.sh 55*105f6285SAndroid Build Coastguard Workerecho "build_android_target.sh: lunch $ANDROID_TARGET" 56*105f6285SAndroid Build Coastguard Workerlunch "$ANDROID_TARGET" 57*105f6285SAndroid Build Coastguard Workerecho "build_android_target.sh: cd $BUILD_DIR" 58*105f6285SAndroid Build Coastguard Workercd "$BUILD_DIR" 59*105f6285SAndroid Build Coastguard Worker 60*105f6285SAndroid Build Coastguard Worker# However, the build command itself cannot use set -e. I haven't figured this 61*105f6285SAndroid Build Coastguard Worker# out yet, but something in the build command causes early exit for some 62*105f6285SAndroid Build Coastguard Worker# targets. 63*105f6285SAndroid Build Coastguard Worker 64*105f6285SAndroid Build Coastguard Workerset +e 65*105f6285SAndroid Build Coastguard Worker 66*105f6285SAndroid Build Coastguard Workerecho "build_android_target.sh: $BUILD_COMMAND" 67*105f6285SAndroid Build Coastguard Workereval $BUILD_COMMAND 68*105f6285SAndroid Build Coastguard WorkerBUILD_COMMAND_EXIT_VALUE=$? 69*105f6285SAndroid Build Coastguard Worker 70*105f6285SAndroid Build Coastguard Worker# Collect RBE metrics if enabled 71*105f6285SAndroid Build Coastguard Workerif [[ -n "${USE_RBE}" && -n "${RBE_DIR}" ]]; then 72*105f6285SAndroid Build Coastguard Worker echo "build_android_target.sh: $RBE_DIR/dumpstats" 73*105f6285SAndroid Build Coastguard Worker $RBE_DIR/dumpstats 74*105f6285SAndroid Build Coastguard Workerfi 75*105f6285SAndroid Build Coastguard Worker 76*105f6285SAndroid Build Coastguard Workerexit $BUILD_COMMAND_EXIT_VALUE 77