summaryrefslogtreecommitdiffstats
path: root/build/android
diff options
context:
space:
mode:
authorilevy@chromium.org <ilevy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-06 22:00:17 +0000
committerilevy@chromium.org <ilevy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-06 22:00:17 +0000
commitaf212e31f166001f83c6e4d269bb3c87f1aaaa78 (patch)
tree9287f923f25ed71446898e4b7d2d3254c43f0b05 /build/android
parentfd79a01f4d21f9df3ccaa2f988d27d0d63c32cec (diff)
downloadchromium_src-af212e31f166001f83c6e4d269bb3c87f1aaaa78.zip
chromium_src-af212e31f166001f83c6e4d269bb3c87f1aaaa78.tar.gz
chromium_src-af212e31f166001f83c6e4d269bb3c87f1aaaa78.tar.bz2
Copy android buildbot files in preparation for
pointing buildbot configs to new folder git-svn-id: svn://svn.chromium.org/chrome/trunk/src@155253 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'build/android')
-rwxr-xr-xbuild/android/buildbot/bb_fyi_builder.sh20
-rwxr-xr-xbuild/android/buildbot/bb_fyi_tester.sh19
-rwxr-xr-xbuild/android/buildbot/bb_main_builder.sh19
-rwxr-xr-xbuild/android/buildbot/bb_main_tester.sh19
-rwxr-xr-xbuild/android/buildbot/bb_try_builder.sh19
-rwxr-xr-xbuild/android/buildbot/bb_try_compile.sh17
-rwxr-xr-xbuild/android/buildbot/bb_try_compile_test.sh19
-rwxr-xr-xbuild/android/buildbot/bb_try_tester.sh19
-rwxr-xr-xbuild/android/buildbot/bb_webkit_latest_builder.sh18
-rwxr-xr-xbuild/android/buildbot/bb_webkit_latest_tester.sh19
-rwxr-xr-xbuild/android/buildbot/buildbot_functions.sh359
11 files changed, 547 insertions, 0 deletions
diff --git a/build/android/buildbot/bb_fyi_builder.sh b/build/android/buildbot/bb_fyi_builder.sh
new file mode 100755
index 0000000..3fa3c7f
--- /dev/null
+++ b/build/android/buildbot/bb_fyi_builder.sh
@@ -0,0 +1,20 @@
+#!/bin/bash -ex
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Buildbot annotator script for the FYI waterfall builder.
+# Compiler and zip the build.
+
+# SHERIFF: there should be no need to disable this bot.
+# The FYI waterfall does not close the tree.
+
+
+BB_SRC_ROOT="$(cd "$(dirname $0)/../.."; pwd)"
+. "${BB_SRC_ROOT}/build/android/buildbot_functions.sh"
+
+bb_baseline_setup "$BB_SRC_ROOT" "$@"
+bb_check_webview_licenses
+bb_compile
+bb_compile_experimental
+bb_zip_build
diff --git a/build/android/buildbot/bb_fyi_tester.sh b/build/android/buildbot/bb_fyi_tester.sh
new file mode 100755
index 0000000..9d123af
--- /dev/null
+++ b/build/android/buildbot/bb_fyi_tester.sh
@@ -0,0 +1,19 @@
+#!/bin/bash -ex
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Buildbot annotator script for a FYI waterfall tester.
+# Downloads and extracts a build from the builder and runs tests.
+
+# SHERIFF: there should be no need to disable this bot.
+# The FYI waterfall does not close the tree.
+
+BB_SRC_ROOT="$(cd "$(dirname $0)/../.."; pwd)"
+. "${BB_SRC_ROOT}/build/android/buildbot_functions.sh"
+
+bb_baseline_setup "$BB_SRC_ROOT" "$@"
+bb_extract_build
+bb_reboot_phones
+bb_run_unit_tests
+bb_run_instrumentation_tests
diff --git a/build/android/buildbot/bb_main_builder.sh b/build/android/buildbot/bb_main_builder.sh
new file mode 100755
index 0000000..5df5b24
--- /dev/null
+++ b/build/android/buildbot/bb_main_builder.sh
@@ -0,0 +1,19 @@
+#!/bin/bash -ex
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Buildbot annotator script for the main waterfall. Compile only.
+
+BB_SRC_ROOT="$(cd "$(dirname $0)/../.."; pwd)"
+. "${BB_SRC_ROOT}/build/android/buildbot_functions.sh"
+
+# SHERIFF: if you need to quickly turn the main waterfall android bots
+# green (preventing tree closures), uncomment the next line (and send
+# appropriate email out):
+## bb_force_bot_green_and_exit
+
+bb_baseline_setup "$BB_SRC_ROOT" "$@"
+bb_compile
+bb_zip_build
+
diff --git a/build/android/buildbot/bb_main_tester.sh b/build/android/buildbot/bb_main_tester.sh
new file mode 100755
index 0000000..0593b15
--- /dev/null
+++ b/build/android/buildbot/bb_main_tester.sh
@@ -0,0 +1,19 @@
+#!/bin/bash -ex
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Buildbot annotator script for the main waterfall. Tester only.
+
+BB_SRC_ROOT="$(cd "$(dirname $0)/../.."; pwd)"
+. "${BB_SRC_ROOT}/build/android/buildbot_functions.sh"
+
+# SHERIFF: if you need to quickly turn the main waterfall android bots
+# green (preventing tree closures), uncomment the next line (and send
+# appropriate email out):
+## bb_force_bot_green_and_exit
+
+bb_baseline_setup "$BB_SRC_ROOT" "$@"
+bb_extract_build
+bb_reboot_phones
+bb_run_unit_tests
diff --git a/build/android/buildbot/bb_try_builder.sh b/build/android/buildbot/bb_try_builder.sh
new file mode 100755
index 0000000..c68c456
--- /dev/null
+++ b/build/android/buildbot/bb_try_builder.sh
@@ -0,0 +1,19 @@
+#!/bin/bash -ex
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Buildbot annotator script for trybots. Compile only.
+
+BB_SRC_ROOT="$(cd "$(dirname $0)/../.."; pwd)"
+. "${BB_SRC_ROOT}/build/android/buildbot_functions.sh"
+
+# SHERIFF: if you need to quickly turn "android" trybots green,
+# uncomment the next line (and send appropriate email out):
+## bb_force_bot_green_and_exit
+# You will also need to change buildbot_try_tester.sh
+
+bb_baseline_setup "$BB_SRC_ROOT" "$@"
+bb_check_webview_licenses
+bb_compile
+bb_zip_build
diff --git a/build/android/buildbot/bb_try_compile.sh b/build/android/buildbot/bb_try_compile.sh
new file mode 100755
index 0000000..0e78beb
--- /dev/null
+++ b/build/android/buildbot/bb_try_compile.sh
@@ -0,0 +1,17 @@
+#!/bin/bash -ex
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Buildbot annotator script for trybots. Compile only.
+
+BB_SRC_ROOT="$(cd "$(dirname $0)/../.."; pwd)"
+. "${BB_SRC_ROOT}/build/android/buildbot_functions.sh"
+
+# SHERIFF: if you need to quickly turn "android" trybots green,
+# uncomment the next line (and send appropriate email out):
+## bb_force_bot_green_and_exit
+
+bb_baseline_setup "$BB_SRC_ROOT" "$@"
+bb_check_webview_licenses
+bb_compile
diff --git a/build/android/buildbot/bb_try_compile_test.sh b/build/android/buildbot/bb_try_compile_test.sh
new file mode 100755
index 0000000..1247d92
--- /dev/null
+++ b/build/android/buildbot/bb_try_compile_test.sh
@@ -0,0 +1,19 @@
+#!/bin/bash -ex
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Buildbot annotator script for trybots. Compile and test.
+
+BB_SRC_ROOT="$(cd "$(dirname $0)/../.."; pwd)"
+. "${BB_SRC_ROOT}/build/android/buildbot_functions.sh"
+
+# SHERIFF: if you need to quickly turn "android_test" trybots green,
+# uncomment the next line (and send appropriate email out):
+## bb_force_bot_green_and_exit
+
+bb_baseline_setup "$BB_SRC_ROOT" "$@"
+bb_compile
+bb_reboot_phones
+bb_run_unit_tests
+bb_run_instrumentation_tests
diff --git a/build/android/buildbot/bb_try_tester.sh b/build/android/buildbot/bb_try_tester.sh
new file mode 100755
index 0000000..da476dd
--- /dev/null
+++ b/build/android/buildbot/bb_try_tester.sh
@@ -0,0 +1,19 @@
+#!/bin/bash -ex
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Buildbot annotator script for tester half of android trybots
+BB_SRC_ROOT="$(cd "$(dirname $0)/../.."; pwd)"
+. "${BB_SRC_ROOT}/build/android/buildbot_functions.sh"
+
+# SHERIFF: if you need to quickly turn "android" trybots green,
+# uncomment the next line (and send appropriate email out):
+## bb_force_bot_green_and_exit
+# You will also need to change buildbot_try_builder.sh
+
+bb_baseline_setup "$BB_SRC_ROOT" "$@"
+bb_extract_build
+bb_reboot_phones
+bb_run_unit_tests
+bb_run_instrumentation_tests
diff --git a/build/android/buildbot/bb_webkit_latest_builder.sh b/build/android/buildbot/bb_webkit_latest_builder.sh
new file mode 100755
index 0000000..cfd7ed5
--- /dev/null
+++ b/build/android/buildbot/bb_webkit_latest_builder.sh
@@ -0,0 +1,18 @@
+#!/bin/bash -ex
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Buildbot annotator script for the WebKit builder on the Canary waterfall.
+
+BB_SRC_ROOT="$(cd "$(dirname $0)/../.."; pwd)"
+. "${BB_SRC_ROOT}/build/android/buildbot_functions.sh"
+
+# SHERIFF: if you need to quickly turn the main waterfall android bots
+# green (preventing tree closures), uncomment the next line (and send
+# appropriate email out):
+## bb_force_bot_green_and_exit
+
+bb_baseline_setup "$BB_SRC_ROOT" "$@"
+bb_compile
+bb_zip_build
diff --git a/build/android/buildbot/bb_webkit_latest_tester.sh b/build/android/buildbot/bb_webkit_latest_tester.sh
new file mode 100755
index 0000000..07f688e
--- /dev/null
+++ b/build/android/buildbot/bb_webkit_latest_tester.sh
@@ -0,0 +1,19 @@
+#!/bin/bash -ex
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Buildbot annotator script for the WebKit tester on the Canary waterfall.
+
+BB_SRC_ROOT="$(cd "$(dirname $0)/../.."; pwd)"
+. "${BB_SRC_ROOT}/build/android/buildbot_functions.sh"
+
+# SHERIFF: if you need to quickly turn the main waterfall android bots
+# green (preventing tree closures), uncomment the next line (and send
+# appropriate email out):
+## bb_force_bot_green_and_exit
+
+bb_baseline_setup "$BB_SRC_ROOT" "$@"
+bb_extract_build
+bb_reboot_phones
+bb_run_unit_tests
diff --git a/build/android/buildbot/buildbot_functions.sh b/build/android/buildbot/buildbot_functions.sh
new file mode 100755
index 0000000..9d3d74a
--- /dev/null
+++ b/build/android/buildbot/buildbot_functions.sh
@@ -0,0 +1,359 @@
+#!/bin/bash
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Bash functions used by buildbot annotator scripts for the android
+# build of chromium. Executing this script should not perform actions
+# other than setting variables and defining of functions.
+
+# Number of jobs on the compile line; e.g. make -j"${JOBS}"
+JOBS="${JOBS:-4}"
+
+# Clobber build? Overridden by bots with BUILDBOT_CLOBBER.
+NEED_CLOBBER="${NEED_CLOBBER:-0}"
+
+
+# Parse named arguments passed into the annotator script
+# and assign them global variable names.
+function bb_parse_args {
+ while [[ $1 ]]; do
+ case "$1" in
+ --factory-properties=*)
+ FACTORY_PROPERTIES="$(echo "$1" | sed 's/^[^=]*=//')"
+ BUILDTYPE=$(bb_get_json_prop "$FACTORY_PROPERTIES" target)
+ ;;
+ --build-properties=*)
+ BUILD_PROPERTIES="$(echo "$1" | sed 's/^[^=]*=//')"
+ ;;
+ *)
+ echo "@@@STEP_WARNINGS@@@"
+ echo "Warning, unparsed input argument: '$1'"
+ ;;
+ esac
+ shift
+ done
+}
+
+# Function to force-green a bot.
+function bb_force_bot_green_and_exit {
+ echo "@@@BUILD_STEP Bot forced green.@@@"
+ exit 0
+}
+
+function bb_run_gclient_hooks {
+ gclient runhooks
+}
+
+# Basic setup for all bots to run after a source tree checkout.
+# Args:
+# $1: source root.
+# $2 and beyond: key value pairs which are parsed by bb_parse_args.
+function bb_baseline_setup {
+ echo "@@@BUILD_STEP Environment setup@@@"
+ SRC_ROOT="$1"
+ # Remove SRC_ROOT param
+ shift
+
+ bb_parse_args "$@"
+
+ if [ ! -d "${SRC_ROOT}" ] ; then
+ echo "Please specify a valid source root directory as an arg"
+ echo '@@@STEP_FAILURE@@@'
+ return 1
+ fi
+ cd $SRC_ROOT
+
+ if [ ! -f build/android/envsetup.sh ] ; then
+ echo "No envsetup.sh"
+ echo "@@@STEP_FAILURE@@@"
+ return 1
+ fi
+
+ for mandatory_directory in $(dirname "${ANDROID_SDK_ROOT}") \
+ $(dirname "${ANDROID_NDK_ROOT}") ; do
+ if [[ ! -d "${mandatory_directory}" ]]; then
+ echo "Directory ${mandatory_directory} does not exist."
+ echo "Build cannot continue."
+ echo "@@@STEP_FAILURE@@@"
+ return 1
+ fi
+ done
+
+ if [ ! "$BUILDBOT_CLOBBER" = "" ]; then
+ NEED_CLOBBER=1
+ fi
+
+ local BUILDTOOL=$(bb_get_json_prop "$FACTORY_PROPERTIES" buildtool)
+ if [ $BUILDTOOL = "ninja" ]; then
+ export GYP_GENERATORS=ninja
+ fi
+
+ . build/android/envsetup.sh
+
+ if [ "$NEED_CLOBBER" -eq 1 ]; then
+ echo "@@@BUILD_STEP Clobber@@@"
+ # Sdk key expires, delete android folder.
+ # crbug.com/145860
+ rm -rf ~/.android
+ rm -rf "${SRC_ROOT}"/out
+ if [ -e "${SRC_ROOT}"/out ] ; then
+ echo "Clobber appeared to fail? ${SRC_ROOT}/out still exists."
+ echo "@@@STEP_WARNINGS@@@"
+ fi
+ fi
+
+ # Should be called only after envsetup is done.
+ bb_run_gclient_hooks
+}
+
+
+# Setup goma. Used internally to buildbot_functions.sh.
+function bb_setup_goma_internal {
+
+ # Quick bail if I messed things up and can't wait for the CQ to
+ # flush out.
+ # TODO(jrg): remove this condition when things are
+ # proven stable (4/1/12 or so).
+ if [ -f /usr/local/google/DISABLE_GOMA ]; then
+ echo "@@@STEP_WARNINGS@@@"
+ echo "Goma disabled with a local file"
+ return
+ fi
+
+ goma_dir=${goma_dir:-/b/build/goma}
+ if [ -f ${goma_dir}/goma.key ]; then
+ export GOMA_API_KEY_FILE=${goma_dir}/goma.key
+ fi
+ local goma_ctl=$(which goma_ctl.sh)
+ if [ "${goma_ctl}" != "" ]; then
+ local goma_dir=$(dirname ${goma_ctl})
+ fi
+
+ if [ ! -f ${goma_dir}/goma_ctl.sh ]; then
+ echo "@@@STEP_WARNINGS@@@"
+ echo "Goma not found on this machine; defaulting to make"
+ return
+ fi
+ export GOMA_DIR=${goma_dir}
+ echo "GOMA_DIR: " $GOMA_DIR
+
+ export GOMA_COMPILER_PROXY_DAEMON_MODE=true
+ export GOMA_COMPILER_PROXY_RPC_TIMEOUT_SECS=300
+ export PATH=$GOMA_DIR:$PATH
+
+ echo "Starting goma"
+ if [ "$NEED_CLOBBER" -eq 1 ]; then
+ ${GOMA_DIR}/goma_ctl.sh restart
+ else
+ ${GOMA_DIR}/goma_ctl.sh ensure_start
+ fi
+ trap bb_stop_goma_internal SIGHUP SIGINT SIGTERM
+}
+
+# Stop goma.
+function bb_stop_goma_internal {
+ echo "Stopping goma"
+ ${GOMA_DIR}/goma_ctl.sh stop
+}
+
+# $@: make args.
+# Use goma if possible; degrades to non-Goma if needed.
+function bb_goma_make {
+ if [ "${GOMA_DIR}" = "" ]; then
+ make -j${JOBS} "$@"
+ return
+ fi
+
+ HOST_CC=$GOMA_DIR/gcc
+ HOST_CXX=$GOMA_DIR/g++
+ TARGET_CC=$(/bin/ls $ANDROID_TOOLCHAIN/*-gcc | head -n1)
+ TARGET_CXX=$(/bin/ls $ANDROID_TOOLCHAIN/*-g++ | head -n1)
+ TARGET_CC="$GOMA_DIR/gomacc $TARGET_CC"
+ TARGET_CXX="$GOMA_DIR/gomacc $TARGET_CXX"
+ COMMON_JAVAC="$GOMA_DIR/gomacc /usr/bin/javac -J-Xmx512M \
+ -target 1.5 -Xmaxerrs 9999999"
+
+ command make \
+ -j100 \
+ -l20 \
+ HOST_CC="$HOST_CC" \
+ HOST_CXX="$HOST_CXX" \
+ TARGET_CC="$TARGET_CC" \
+ TARGET_CXX="$TARGET_CXX" \
+ CC.host="$HOST_CC" \
+ CXX.host="$HOST_CXX" \
+ CC.target="$TARGET_CC" \
+ CXX.target="$TARGET_CXX" \
+ LINK.target="$TARGET_CXX" \
+ COMMON_JAVAC="$COMMON_JAVAC" \
+ BUILDTYPE="$BUILDTYPE" \
+ "$@"
+
+ local make_exit_code=$?
+ return $make_exit_code
+}
+
+# Build using ninja.
+function bb_goma_ninja {
+ echo "Using ninja to build."
+ local TARGET=$1
+ ninja -C out/$BUILDTYPE -j16 -l16 $TARGET
+}
+
+# Compile step
+function bb_compile {
+ # This must be named 'compile', not 'Compile', for CQ interaction.
+ # Talk to maruel for details.
+ echo "@@@BUILD_STEP compile@@@"
+
+ bb_setup_goma_internal
+
+ BUILDTOOL=$(bb_get_json_prop "$FACTORY_PROPERTIES" buildtool)
+ if [ $BUILDTOOL = "ninja" ]; then
+ bb_goma_ninja All
+ else
+ bb_goma_make
+ fi
+
+ bb_stop_goma_internal
+}
+
+# Experimental compile step; does not turn the tree red if it fails.
+function bb_compile_experimental {
+ # Linking DumpRenderTree appears to hang forever?
+ EXPERIMENTAL_TARGETS="android_experimental"
+ for target in ${EXPERIMENTAL_TARGETS} ; do
+ echo "@@@BUILD_STEP Experimental Compile $target @@@"
+ set +e
+ if [ $BUILDTOOL = "ninja" ]; then
+ bb_goma_ninja "${target}"
+ else
+ bb_goma_make -k "${target}"
+ fi
+ if [ $? -ne 0 ] ; then
+ echo "@@@STEP_WARNINGS@@@"
+ fi
+ set -e
+ done
+}
+
+# Run tests on an emulator.
+function bb_run_tests_emulator {
+ echo "@@@BUILD_STEP Run Tests on an Emulator@@@"
+ build/android/run_tests.py -e --xvfb --verbose
+}
+
+# Run tests on an actual device. (Better have one plugged in!)
+function bb_run_unit_tests {
+ python build/android/device_status_check.py
+ local LOGCAT_DUMP_DIR="$CHROME_SRC/out/logcat"
+ rm -rf "$LOGCAT_DUMP_DIR"
+ python build/android/adb_logcat_monitor.py "$LOGCAT_DUMP_DIR" &
+
+ build/android/run_tests.py --xvfb --verbose
+
+ echo "@@@BUILD_STEP Logcat dump@@@"
+ python build/android/adb_logcat_printer.py "$LOGCAT_DUMP_DIR"
+}
+
+# Run instrumentation test.
+# Args:
+# $1: TEST_APK.
+# $2: EXTRA_FLAGS to be passed to run_instrumentation_tests.py.
+function bb_run_instrumentation_test {
+ local TEST_APK=${1}
+ local EXTRA_FLAGS=${2}
+ local INSTRUMENTATION_FLAGS="-vvv"
+ INSTRUMENTATION_FLAGS+=" --test-apk ${TEST_APK}"
+ INSTRUMENTATION_FLAGS+=" ${EXTRA_FLAGS}"
+ build/android/run_instrumentation_tests.py ${INSTRUMENTATION_FLAGS}
+}
+
+# Run content shell instrumentation test on device.
+function bb_run_instrumentation_tests {
+ build/android/adb_install_content_shell
+ local TEST_APK="content_shell_test/ContentShellTest-debug"
+ # Use -I to install the test apk only on the first run.
+ # TODO(bulach): remove the second once we have a Smoke test.
+ bb_run_instrumentation_test ${TEST_APK} "-I -A Smoke"
+ bb_run_instrumentation_test ${TEST_APK} "-I -A SmallTest"
+ bb_run_instrumentation_test ${TEST_APK} "-A MediumTest"
+ bb_run_instrumentation_test ${TEST_APK} "-A LargeTest"
+}
+
+# Zip and archive a build.
+function bb_zip_build {
+ echo "@@@BUILD_STEP Zip build@@@"
+ python ../../../../scripts/slave/zip_build.py \
+ --src-dir "$SRC_ROOT" \
+ --exclude-files "lib.target" \
+ --factory-properties "$FACTORY_PROPERTIES" \
+ --build-properties "$BUILD_PROPERTIES"
+}
+
+# Download and extract a build.
+function bb_extract_build {
+ echo "@@@BUILD_STEP Download and extract build@@@"
+ if [[ -z $FACTORY_PROPERTIES || -z $BUILD_PROPERTIES ]]; then
+ return 1
+ fi
+
+ # When extract_build.py downloads an unversioned build it
+ # issues a warning by exiting with large numbered return code
+ # When it fails to download it build, it exits with return
+ # code 1. We disable halt on error mode and return normally
+ # unless the python tool returns 1.
+ (
+ set +e
+ python ../../../../scripts/slave/extract_build.py \
+ --build-dir "$SRC_ROOT" \
+ --build-output-dir "out" \
+ --factory-properties "$FACTORY_PROPERTIES" \
+ --build-properties "$BUILD_PROPERTIES"
+ local extract_exit_code=$?
+ if (( $extract_exit_code > 1 )); then
+ echo "@@@STEP_WARNINGS@@@"
+ return
+ fi
+ return $extract_exit_code
+ )
+}
+
+# Reboot all phones and wait for them to start back up
+# Does not break build if a phone fails to restart
+function bb_reboot_phones {
+ echo "@@@BUILD_STEP Rebooting phones@@@"
+ (
+ set +e
+ cd $CHROME_SRC/build/android/pylib;
+ for DEVICE in $(adb_get_devices); do
+ python -c "import android_commands;\
+ android_commands.AndroidCommands(device='$DEVICE').Reboot(True)" &
+ done
+ wait
+ )
+}
+
+# Runs the license checker for the WebView build.
+function bb_check_webview_licenses {
+ echo "@@@BUILD_STEP Check licenses for WebView@@@"
+ (
+ set +e
+ cd "${SRC_ROOT}"
+ python android_webview/tools/webview_licenses.py scan
+ local license_exit_code=$?
+ if [[ license_exit_code -ne 0 ]]; then
+ echo "@@@STEP_FAILURE@@@"
+ fi
+ return $license_exit_code
+ )
+}
+
+# Retrieve a packed json property using python
+function bb_get_json_prop {
+ local JSON="$1"
+ local PROP="$2"
+
+ python -c "import json; print json.loads('$JSON').get('$PROP')"
+}