blob: 483b61dd3c15c545c571f505178639f21eeb68ed [file] [log] [blame]
#!/bin/bash
#
# Utility functions for the telemetry master scripts.
#
# The script should be run from the cluster-telemetry-master GCE instance's
# /b/skia-repo/buildbot/cluster_telemetry/telemetry_master_scripts
# directory.
#
# Copyright 2013 Google Inc. All Rights Reserved.
# Author: rmistry@google.com (Ravi Mistry)
function get_current_work_on_slave() {
slave=$1
current_work=`ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no \
-o StrictHostKeyChecking=no \
-A -q -p 22 build${slave}-m5 -- "ls /b/storage/current_work"`
echo $current_work
}
function is_slave_currently_executing() {
slave=$1
work_of_interest=$2
activities=$(get_current_work_on_slave $slave)
arr=($activities)
for work in ${arr[@]}; do
if [[ $work_of_interest == $work ]]; then
echo true
exit 0
fi
done
echo false
}
function build_chrome_shell_apk {
cd $CHROMIUM_BUILD_DIR_BASE
echo "{ 'GYP_DEFINES': 'OS=android', }" > chromium.gyp_env
cd src
. build/android/envsetup.sh
GYP_GENERATORS='ninja' ./build/gyp_chromium
/b/depot_tools/ninja -C out/Release chrome_shell_apk
if [ $? -ne 0 ]
then
echo "There was an error building chrome_shell_apk $CHROMIUM_COMMIT_HASH + skia $SKIA_COMMIT_HASH"
copy_build_log_to_gs
exit 1
fi
}
function build_content_shell {
GYP_GENERATORS='ninja' ./build/gyp_chromium
/b/depot_tools/ninja -C out/Release content_shell
if [ $? -ne 0 ]
then
echo "There was an error building content_shell $CHROMIUM_COMMIT_HASH + skia $SKIA_COMMIT_HASH"
copy_build_log_to_gs
exit 1
fi
}
function build_chromium {
if [ $USE_AURA -eq 1 ]
then
AURA_GYP_DEFINES="use_aura=1"
echo "== Building with aura =="
else
AURA_GYP_DEFINES=""
echo "== Not building with aura =="
fi
GYP_DEFINES=$AURA_GYP_DEFINES GYP_GENERATORS='ninja' ./build/gyp_chromium
/b/depot_tools/ninja -C out/Release chrome
if [ $? -ne 0 ]
then
echo "There was an error building chromium $CHROMIUM_COMMIT_HASH + skia $SKIA_COMMIT_HASH"
copy_build_log_to_gs
exit 1
fi
}
function copy_build_to_google_storage {
dir_name=$1
chromium_build_dir=$2
# cd into the Release directory.
cd $chromium_build_dir/src/out/Release
if [ "$TARGET_PLATFORM" == "Android" ]; then
# For android builds only need to copy the apks directory to Google Storage.
gsutil cp -r apks gs://chromium-skia-gm/telemetry/chromium-builds/$dir_name/
else
# Move the not needed large directories.
mv gen /tmp/
mv obj /tmp/
# Clean the directory in Google Storage.
gsutil rm -R gs://chromium-skia-gm/telemetry/chromium-builds/$dir_name/*
# Copy the newly built chrome binary into Google Storage.
gsutil -m cp -r * gs://chromium-skia-gm/telemetry/chromium-builds/$dir_name/
# Move the large directories back.
mv /tmp/gen .
mv /tmp/obj .
fi
}
function apply_patch {
patch_location=$1
patch_filesize=$(stat -c%s $patch_location)
if [ $patch_filesize -gt 1 ]; then
git apply --index -p1 --verbose --ignore-whitespace --ignore-space-change $patch_location
if [ $? -ne 0 ]; then
echo "== $patch_location Patch failed to apply. Exiting. =="
git reset --hard origin/master
copy_build_log_to_gs
exit 1
fi
echo "== Applied $patch_location patch successfully =="
else
echo "== Empty $patch_location patch specified =="
fi
}
function reset_chromium_checkout {
# TODO(rmistry): Investigate using gclient recurse to revert changes in all
# checkouts.
reset_cmd="git reset --hard HEAD; git clean -f -d"
# Reset Skia.
cd third_party/skia
eval $reset_cmd
# Reset Blink.
cd ../WebKit
eval $reset_cmd
# Reset Chromium.
cd ../..
eval $reset_cmd
}