# Copyright (C) 2012 The Android Open Source Project
#
# 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.
function bb_webview_set_lunch_type() {
case "$1" in
clank-webview)
LUNCH_TYPE="nakasi-eng"
;;
clank-webview-tot)
LUNCH_TYPE="nakasi-eng"
;;
*)
LUNCH_TYPE=""
echo "Unable to determine lunch type from: ${BUILDBOT_BUILDERNAME}"
echo "@@@STEP_FAILURE@@@"
exit 2
;;
esac
echo "Using lunch type: $LUNCH_TYPE"
}
function bb_webview_build_android() {
echo "@@@BUILD_STEP Compile Android@@@"
local MAKE_COMMAND="make"
if [ "$USE_GOMA" -eq 1 ]; then
echo "Building using GOMA"
MAKE_COMMAND="${GOMA_DIR}/goma-android-make"
fi
MAKE_TARGET="webviewchromium"
bb_run_step $MAKE_COMMAND $MAKE_PARAMS showcommands $MAKE_TARGET
if [ "$USE_GOMA" -eq 1 ]; then
bb_stop_goma_internal
fi
}
function bb_webview_goma_setup() {
# Set to 0 to disable goma in case of problems.
USE_GOMA=1
if [ -z "$GOMA_DIR" ]; then
export GOMA_DIR=/b/build/goma
fi
if [ ! -d $GOMA_DIR ]; then
USE_GOMA=0
fi
if [ "$USE_GOMA" -eq 1 ]; then
MAKE_PARAMS="-j150 -l20"
else
MAKE_PARAMS="-j16"
fi
bb_setup_goma_internal
}
# Basic setup for all bots to run after a source tree checkout.
# Args:
# $1: Android source root.
function bb_webview_baseline_setup {
SRC_ROOT="$1"
cd $SRC_ROOT
echo "@@@BUILD_STEP Environment setup@@@"
. build/envsetup.sh
bb_webview_set_lunch_type $BUILDBOT_BUILDERNAME
lunch $LUNCH_TYPE
if [[ $BUILDBOT_CLOBBER ]]; then
echo "@@@BUILD_STEP Clobber@@@"
rm -rf ${ANDROID_PRODUCT_OUT}
rm -rf ${ANDROID_HOST_OUT}
fi
# Add the upstream build/android folder to the Python path.
# This is required since we don't want to check out the clank scripts into a
# subfolder of the upstream chromium_org checkout (that would make repo think
# those are uncommited changes and cause potential issues).
export PYTHONPATH="$PYTHONPATH:${BB_DIR}/../"
# The CTS bot runs using repo only.
export CHECKOUT="repo"
bb_webview_goma_setup
}
function bb_webview_smart_sync {
echo "@@@BUILD_STEP Smart Sync (sync -s) @@@"
bb_run_step repo sync -s -j8 -df
# We always want to roll with the latest code in this project, regardless of
# what smartsync thinks.
echo "@@@BUILD_STEP Sync frameworks/webview@@@"
repo sync frameworks/webview
}
function bb_webview_remove_chromium_org {
echo "@@@BUILD_STEP Removing chromium_org project@@@"
# This generates a local manifest that will exclude any projects from the
# external/chromium_org folder.
bb_run_step python ${WEBVIEW_TOOLS_DIR}/generate_local_manifest.py \
${ANDROID_SRC_ROOT} external/chromium_org
bb_webview_smart_sync
}
function bb_webview_sync_upstream_chromium {
echo "@@@BUILD_STEP Sync upstream chromium@@@"
local CHROMIUM_TOT_DIR=${ANDROID_SRC_ROOT}/external/chromium_tot
local CHROMIUM_ORG_DIR=${ANDROID_SRC_ROOT}/external/chromium_org
if [ ! -e ${CHROMIUM_TOT_DIR} ]; then
echo "No chromium_tot checkout detected. Creating new one.."
mkdir -p ${CHROMIUM_TOT_DIR}
cd ${CHROMIUM_TOT_DIR}
if [ ! -e ${CHROMIUM_ORG_DIR} ]; then
echo "Symlinking chromium_org to chromium_tot/src"
ln -s ${CHROMIUM_TOT_DIR}/src ${CHROMIUM_ORG_DIR}
else
echo "${CHROMIUM_ORG_DIR} should have been removed by local manifest."
echo "@@@STEP_FAILURE@@@"
exit 2
fi
# Prevent Android make recursing into this folder since we're
# exposing the src folder via a symlink.
touch ${CHROMIUM_TOT_DIR}/Android.mk
echo "Cloning chromium_tot"
git clone --template=${DEPOT_TOOLS_DIR}/git-templates \
https://chromium.googlesource.com/chromium/src.git
cd ${CHROMIUM_TOT_DIR}/src
git config target.os android
fi
cd ${CHROMIUM_TOT_DIR}/src
echo "Updating"
git crup -j8
echo "@@@BUILD_STEP Print checked out chromium revision@@@"
git log -1
cd ${ANDROID_SRC_ROOT}
}
function bb_webview_gyp {
echo "@@@BUILD_STEP Run gyp_webview@@@"
cd ${ANDROID_SRC_ROOT}/external/chromium_org
bb_run_step "./android_webview/tools/gyp_webview"
cd ${ANDROID_SRC_ROOT}
}