1151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# Copyright (C) 2012 The Android Open Source Project 2151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# 3151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# Licensed under the Apache License, Version 2.0 (the "License"); 4151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# you may not use this file except in compliance with the License. 5151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# You may obtain a copy of the License at 6151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# 7151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# http://www.apache.org/licenses/LICENSE-2.0 8151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# 9151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# Unless required by applicable law or agreed to in writing, software 10151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# distributed under the License is distributed on an "AS IS" BASIS, 11151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# See the License for the specific language governing permissions and 13151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# limitations under the License. 14151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 15151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandrafunction bb_webview_set_lunch_type() { 16151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra case "$1" in 17151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra clank-webview) 18151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra LUNCH_TYPE="nakasi-eng" 19151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra ;; 20151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra clank-webview-tot) 21151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra LUNCH_TYPE="nakasi-eng" 22151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra ;; 23151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra *) 24151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra LUNCH_TYPE="" 25151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra echo "Unable to determine lunch type from: ${BUILDBOT_BUILDERNAME}" 26151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra echo "@@@STEP_FAILURE@@@" 279533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba exit 2 28151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra ;; 29151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra esac 30151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra echo "Using lunch type: $LUNCH_TYPE" 31151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra} 32151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 33151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandrafunction bb_webview_build_android() { 34151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra echo "@@@BUILD_STEP Compile Android@@@" 35151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 36151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra local MAKE_COMMAND="make" 37151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra if [ "$USE_GOMA" -eq 1 ]; then 38151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra echo "Building using GOMA" 39151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra MAKE_COMMAND="${GOMA_DIR}/goma-android-make" 40151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra fi 41151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 429533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba MAKE_TARGET="webviewchromium" 439533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba 449533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba bb_run_step $MAKE_COMMAND $MAKE_PARAMS showcommands $MAKE_TARGET 45151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 46151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra if [ "$USE_GOMA" -eq 1 ]; then 47151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra bb_stop_goma_internal 48151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra fi 49151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra} 50151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 51151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandrafunction bb_webview_goma_setup() { 52151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra # Set to 0 to disable goma in case of problems. 53151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra USE_GOMA=1 54151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra if [ -z "$GOMA_DIR" ]; then 55151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra export GOMA_DIR=/b/build/goma 56151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra fi 57151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra if [ ! -d $GOMA_DIR ]; then 58151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra USE_GOMA=0 59151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra fi 60906c63fedd69124511a31d3b54cabf147e739dbcBo Liu 61151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra if [ "$USE_GOMA" -eq 1 ]; then 62151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra MAKE_PARAMS="-j150 -l20" 63151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra else 64151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra MAKE_PARAMS="-j16" 65151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra fi 66151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 67151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra bb_setup_goma_internal 68151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra} 69151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 70151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# Basic setup for all bots to run after a source tree checkout. 71151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# Args: 72151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra# $1: Android source root. 73151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandrafunction bb_webview_baseline_setup { 74151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra SRC_ROOT="$1" 75151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra cd $SRC_ROOT 76151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 77151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra echo "@@@BUILD_STEP Environment setup@@@" 78151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra . build/envsetup.sh 79151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 80151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra bb_webview_set_lunch_type $BUILDBOT_BUILDERNAME 81151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra lunch $LUNCH_TYPE 82151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 83151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra if [[ $BUILDBOT_CLOBBER ]]; then 84151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra echo "@@@BUILD_STEP Clobber@@@" 85151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 86151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra rm -rf ${ANDROID_PRODUCT_OUT} 87151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra rm -rf ${ANDROID_HOST_OUT} 88151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra fi 89151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 90151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra # Add the upstream build/android folder to the Python path. 91151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra # This is required since we don't want to check out the clank scripts into a 92151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra # subfolder of the upstream chromium_org checkout (that would make repo think 93151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra # those are uncommited changes and cause potential issues). 94151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra export PYTHONPATH="$PYTHONPATH:${BB_DIR}/../" 95151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 96151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra # The CTS bot runs using repo only. 97151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra export CHECKOUT="repo" 98151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 99151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra bb_webview_goma_setup 100151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra} 101151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 102d24d0bb5a8823918dcab4d40f21a3e49fe2e56e5Bo Liufunction bb_webview_smart_sync { 10323f362e96b2c4d63cefbdc3119e5658f9cf1f2baBo Liu echo "@@@BUILD_STEP Smart Sync (sync -s) @@@" 10423f362e96b2c4d63cefbdc3119e5658f9cf1f2baBo Liu bb_run_step repo sync -s -j8 -df 1059533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba 1069533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba # We always want to roll with the latest code in this project, regardless of 1079533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba # what smartsync thinks. 1089533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba echo "@@@BUILD_STEP Sync frameworks/webview@@@" 1099533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba repo sync frameworks/webview 1109533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba} 1119533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba 1129533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosibafunction bb_webview_remove_chromium_org { 1139533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba echo "@@@BUILD_STEP Removing chromium_org project@@@" 1149533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba # This generates a local manifest that will exclude any projects from the 1159533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba # external/chromium_org folder. 1169533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba bb_run_step python ${WEBVIEW_TOOLS_DIR}/generate_local_manifest.py \ 1179533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba ${ANDROID_SRC_ROOT} external/chromium_org 1189533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba bb_webview_smart_sync 119d24d0bb5a8823918dcab4d40f21a3e49fe2e56e5Bo Liu} 120d24d0bb5a8823918dcab4d40f21a3e49fe2e56e5Bo Liu 1219533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosibafunction bb_webview_sync_upstream_chromium { 1229533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba echo "@@@BUILD_STEP Sync upstream chromium@@@" 1239533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba local CHROMIUM_TOT_DIR=${ANDROID_SRC_ROOT}/external/chromium_tot 1249533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba local CHROMIUM_ORG_DIR=${ANDROID_SRC_ROOT}/external/chromium_org 1259533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba if [ ! -e ${CHROMIUM_TOT_DIR} ]; then 1269533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba echo "No chromium_tot checkout detected. Creating new one.." 1279533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba mkdir -p ${CHROMIUM_TOT_DIR} 1289533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba cd ${CHROMIUM_TOT_DIR} 1299533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba 1309533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba if [ ! -e ${CHROMIUM_ORG_DIR} ]; then 1319533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba echo "Symlinking chromium_org to chromium_tot/src" 1329533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba ln -s ${CHROMIUM_TOT_DIR}/src ${CHROMIUM_ORG_DIR} 1339533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba else 1349533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba echo "${CHROMIUM_ORG_DIR} should have been removed by local manifest." 1359533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba echo "@@@STEP_FAILURE@@@" 1369533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba exit 2 1379533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba fi 1389533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba 1399533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba # Prevent Android make recursing into this folder since we're 1409533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba # exposing the src folder via a symlink. 1419533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba touch ${CHROMIUM_TOT_DIR}/Android.mk 1429533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba 1439533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba echo "Cloning chromium_tot" 1449533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba git clone --template=${DEPOT_TOOLS_DIR}/git-templates \ 1459533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba https://chromium.googlesource.com/chromium/src.git 1469533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba cd ${CHROMIUM_TOT_DIR}/src 1479533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba git config target.os android 1489533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba fi 149151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 1509533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba cd ${CHROMIUM_TOT_DIR}/src 1519533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba echo "Updating" 152159e17dc3f086ade558a728838ffaa33a9515d88Bo Liu git crup -j8 1539533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba 154f043671dc25b5046a94a604b1549cda2cf66a2aeMarcin Kosiba echo "@@@BUILD_STEP Print checked out chromium revision@@@" 155f043671dc25b5046a94a604b1549cda2cf66a2aeMarcin Kosiba git log -1 156f043671dc25b5046a94a604b1549cda2cf66a2aeMarcin Kosiba 1579533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba cd ${ANDROID_SRC_ROOT} 1589533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba} 159151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra 1609533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosibafunction bb_webview_gyp { 1619533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba echo "@@@BUILD_STEP Run gyp_webview@@@" 1629533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba cd ${ANDROID_SRC_ROOT}/external/chromium_org 1639533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba bb_run_step "./android_webview/tools/gyp_webview" 1649533e41b4f869b9aff2402d73fcdaa34afa7f576Marcin Kosiba cd ${ANDROID_SRC_ROOT} 165151d96785dabd743c5e168c765bd4f13331f0b7fSiva Chandra} 166