You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.5 KiB
130 lines
3.5 KiB
#!/bin/bash |
|
# |
|
# Copyright 2016 Google Inc. All Rights Reserved. |
|
# |
|
# This is the test setup script for generating an Android image based off the |
|
# current working build tree. make is called to relink the object files and |
|
# generate the new Android image to be flashed. The device is then rebooted into |
|
# bootloader mode and fastboot is used to flash the new image. The device is |
|
# then rebooted so the user's test script can run. |
|
# |
|
# This script is intended to be used by binary_search_state.py, as |
|
# part of the binary search triage on the Android source tree. It should |
|
# return '0' if the setup succeeds; and '1' if the setup fails (the image |
|
# could not build or be flashed). |
|
# |
|
|
|
source android/common.sh |
|
|
|
manual_flash() |
|
{ |
|
echo |
|
echo "Please manually flash the built image to your device." |
|
echo "To do so follow these steps:" |
|
echo " 1. Boot your device into fastboot mode." |
|
echo " 2. cd to '${BISECT_ANDROID_SRC}'" |
|
echo " 2. Run 'source build/envsetup.sh'" |
|
echo " 3. Run 'lunch'" |
|
echo " 4. Run '${ADB_DEVICE}fastboot flashall -w'" |
|
echo "Or see the following link for more in depth steps:" |
|
echo "https://source.android.com/source/running.html" |
|
echo |
|
while true; do |
|
sleep 1 |
|
read -p "Was the flashing of the image successful? " choice |
|
case $choice in |
|
[Yy]*) return 0;; |
|
[Nn]*) return 1;; |
|
*) echo "Please answer y or n.";; |
|
esac |
|
done |
|
} |
|
|
|
auto_flash() |
|
{ |
|
echo |
|
echo "Please ensure your Android device is on and in fastboot mode so" |
|
echo "fastboot flash may run." |
|
echo |
|
sleep 1 |
|
read -p $'Press enter to continue and retry the flashing' notused |
|
|
|
echo " ${ADB_DEVICE}fastboot flashall -w" |
|
fastboot flashall -w |
|
} |
|
|
|
flash() |
|
{ |
|
echo |
|
echo "FLASHING" |
|
echo "Rebooting device into fastboot mode." |
|
echo " ${ADB_DEVICE}adb reboot bootloader" |
|
adb reboot bootloader |
|
|
|
echo |
|
echo "Waiting for device to reach fastboot mode." |
|
echo "(will timeout after 60 seconds)" |
|
# fastboot will block indefinitely until device comes online. |
|
# Grab random variable to test if device is online. |
|
# If takes >60s then we error out and ask the user for help. |
|
timeout 60 fastboot getvar 0 2>/dev/null |
|
fastboot_flash_status=$? |
|
|
|
if [[ ${fastboot_flash_status} -eq 0 ]]; then |
|
echo |
|
echo "Flashing image." |
|
echo " ${ADB_DEVICE}fastboot flashall -w" |
|
fastboot flashall -w |
|
fastboot_flash_status=$? |
|
fi |
|
|
|
while [[ ${fastboot_flash_status} -ne 0 ]] ; do |
|
echo |
|
echo "fastboot flash has failed! From here you can:" |
|
echo "1. Debug and/or flash manually" |
|
echo "2. Retry flashing automatically" |
|
echo "3. Abort this installation and skip this image" |
|
echo "4. Abort this installation and mark test as failed" |
|
sleep 1 |
|
read -p "Which method would you like to do? " choice |
|
case $choice in |
|
1) manual_flash && break;; |
|
2) auto_flash && break;; |
|
3) return 125;; |
|
4) return 1;; |
|
*) echo "Please answer 1, 2, 3, or 4.";; |
|
esac |
|
done |
|
} |
|
|
|
# Number of jobs make will use. Can be customized and played with. |
|
MAKE_JOBS=${BISECT_NUM_JOBS} |
|
|
|
# Set ADB_DEVICE to "ANDROID_SERIAL=${ANDROID_SERIAL}" or "" if device id not |
|
# set. This is used for debugging info so users can confirm which device |
|
# commands are being sent to. |
|
ADB_DEVICE=${ANDROID_SERIAL:+"ANDROID_SERIAL=${ANDROID_SERIAL} "} |
|
|
|
echo |
|
echo "INSTALLATION BEGIN" |
|
echo |
|
|
|
cd ${BISECT_ANDROID_SRC} |
|
|
|
echo "BUILDING IMAGE" |
|
|
|
make -j ${MAKE_JOBS} |
|
make_status=$? |
|
|
|
exit_val=0 |
|
if [[ ${make_status} -eq 0 ]]; then |
|
flash |
|
exit_val=$? |
|
else |
|
echo "ERROR:" |
|
echo "make returned a non-zero status: ${make_status}. Skipping image..." |
|
exit_val=1 |
|
fi |
|
|
|
|
|
exit ${exit_val}
|
|
|