# 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} }