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