#!/bin/bash
#
# Build chromium LKGR and skia ToT on the telemetry master instance and then
# push it to Google storage for the workers to consume.
#
# 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)

if [ $# -ne 5 ]; then
  echo
  echo "Usage: `basename $0` a1234b c5678d rmistry@google.com 1001 /tmp/logfile"
  echo
  echo "The first argument is the Chromium commit hash."
  echo "The second argument is the Skia commit hash."
  echo "The third argument is the email address of the requester."
  echo "The fourth argument is the key of the appengine admin task."
  echo "The fifth argument is location of the log file that should be emailed."
  echo
  exit 1
fi

CHROMIUM_COMMIT_HASH=$1
SKIA_COMMIT_HASH=$2
REQUESTER_EMAIL=$3
APPENGINE_KEY=$4
LOG_FILE_LOCATION=$5

# Update buildbot.
gclient sync

CHROMIUM_BUILD_DIR_BASE=/b/storage/chromium-builds/base
mkdir -p $CHROMIUM_BUILD_DIR_BASE
SYNC_SKIA_IN_CHROME_CMD="PYTHONPATH=/b/skia-repo/buildbot/third_party/chromium_buildbot/site_config/:/b/skia-repo/buildbot/site_config/:/b/skia-repo/buildbot/third_party/chromium_buildbot/scripts/:/b/skia-repo/buildbot/common/ python sync_skia_in_chrome.py --destination=$CHROMIUM_BUILD_DIR_BASE --chrome_revision=$CHROMIUM_COMMIT_HASH --skia_revision=$SKIA_COMMIT_HASH"
eval $SYNC_SKIA_IN_CHROME_CMD


if [ $? -ne 0 ]
then
  echo "There was an error. Deleting base directory and trying again..."
  rm -rf $CHROMIUM_BUILD_DIR_BASE
  eval $SYNC_SKIA_IN_CHROME_CMD
fi

if [ $? -ne 0 ]
then
  echo "There was an error checking out chromium $CHROMIUM_COMMIT_HASH + skia $SKIA_COMMIT_HASH"
  SUBJECT_FAILURE_SUFFIX=" with checkout failures"
  CHROMIUM_REV_DATE="0"
else
  # Construct directory name from chromium and skia's truncated commit hashes.
  DIR_NAME=${CHROMIUM_COMMIT_HASH:0:7}-${SKIA_COMMIT_HASH:0:7}
  # This is the directory that will be uploaded to google storage.
  CHROMIUM_BUILD_DIR=/b/storage/chromium-builds/$DIR_NAME
  mkdir -p $CHROMIUM_BUILD_DIR
  cp -R ${CHROMIUM_BUILD_DIR_BASE}/* ${CHROMIUM_BUILD_DIR}/
  cd $CHROMIUM_BUILD_DIR/src/

  # Find when the requested Chromium revision was submitted to display in the
  # appengine web app.
  CHROMIUM_REV_DATE=`git log --pretty=format:"%at" -1`

  # Build chromium.
  GYP_GENERATORS='ninja' ./build/gyp_chromium
  /b/depot_tools/ninja -C out/Release chrome

  # Copy to Google Storage only if chromium successfully built.
  if [ $? -ne 0 ]
  then
    echo "There was an error building chromium $CHROMIUM_COMMIT_HASH + skia $SKIA_COMMIT_HASH"
    SUBJECT_FAILURE_SUFFIX=" with build failures"
  else
    # cd into the Release directory.
    cd $CHROMIUM_BUILD_DIR/src/out/Release
    # Delete the large subdirectories not needed to run the binary.
    rm -rf gen obj

    # 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}/
    # Create a TIMESTAMP file and copy it to Google Storage.
    TIMESTAMP=`date +%s`
    echo $TIMESTAMP > /tmp/$TIMESTAMP
    gsutil cp /tmp/$TIMESTAMP gs://chromium-skia-gm/telemetry/chromium-builds/${DIR_NAME}/TIMESTAMP
    rm /tmp/$TIMESTAMP
  fi
fi

# Copy the log file to Google Storage.
gsutil cp -a public-read $LOG_FILE_LOCATION \
  gs://chromium-skia-gm/telemetry/admin-task-outputs/$REQUESTER_EMAIL-$APPENGINE_KEY-chromium.txt
rm $LOG_FILE_LOCATION

OUTPUT_LINK=https://storage.cloud.google.com/chromium-skia-gm/telemetry/admin-task-outputs/$REQUESTER_EMAIL-$APPENGINE_KEY-chromium.txt
BOUNDARY=`date +%s|md5sum`
BOUNDARY=${BOUNDARY:0:32}
sendmail $REQUESTER_EMAIL <<EOF
subject:Your Chrome Build has completed${SUBJECT_FAILURE_SUFFIX}!
to:$REQUESTER_EMAIL
Content-Type: multipart/mixed; boundary=\"$BOUNDARY\";

This is a MIME-encapsulated message

--$BOUNDARY
Content-Type: text/html

<html>
  <head/>
  <body>
  You had requested a build with the Chromium commit hash <a href='https://chromium.googlesource.com/chromium/src/+/${CHROMIUM_COMMIT_HASH}'>${CHROMIUM_COMMIT_HASH:0:7}</a> and the Skia commit hash <a href='https://skia.googlesource.com/skia/+/${SKIA_COMMIT_HASH}'>${SKIA_COMMIT_HASH:0:7}</a>.<br/>
  The build log is available <a href='$OUTPUT_LINK'>here</a>.<br/>
  You can schedule more runs <a href='https://skia-tree-status.appspot.com/skia-telemetry/chromium_builds'>here</a>.<br/><br/>
  Thanks!
  </body>
</html>

--$BOUNDARY--

EOF

# Mark this task as completed on AppEngine.
PASSWORD=`cat /b/skia-repo/buildbot/cluster_telemetry/telemetry_master_scripts/appengine_password.txt`
wget --post-data "key=$APPENGINE_KEY&password=$PASSWORD&chromium_rev_date=$CHROMIUM_REV_DATE&build_log_link=$OUTPUT_LINK" "https://skia-tree-status.appspot.com/skia-telemetry/update_chromium_build_tasks" -O /dev/null

