Bug 1278990 - configure sccache for taskcluster ec2 builders; r=glandium
authorRob Thijssen <rthijssen@mozilla.com>
Tue, 05 Jul 2016 16:09:13 +0100
changeset 344054 cf971ca7f132471feca4f62b4cdd523358f4507a
parent 344053 b623b64073ccb5c49a023ff60797bf162fa3ad5e
child 344055 d37a9c4dd98f450fd59e696d41c1ce3506365d76
push id6389
push userraliiev@mozilla.com
push dateMon, 19 Sep 2016 13:38:22 +0000
treeherdermozilla-beta@01d67bfe6c81 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersglandium
bugs1278990
milestone50.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1278990 - configure sccache for taskcluster ec2 builders; r=glandium MozReview-Commit-ID: GiPGAaFjZ5t
build/mozconfig.cache
--- a/build/mozconfig.cache
+++ b/build/mozconfig.cache
@@ -2,16 +2,18 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # Setup for build cache
 
 # Avoid duplication if the file happens to be included twice.
 if test -z "$bucket" -a -z "$NO_CACHE"; then
 
+# buildbot (or builders that use buildprops.json):
+if [ -f $topsrcdir/../buildprops.json ]; then
 read branch platform master <<EOF
 $(python2.7 -c 'import json; p = json.loads(open("'"$topsrcdir"'/../buildprops.json").read())["properties"]; print p["branch"], p["platform"], p["master"]' 2> /dev/null)
 EOF
 
 bucket=
 if test -z "$SCCACHE_DISABLE" -a -z "$no_sccache" -a -z "$MOZ_PGO_IS_SET" -a -z "$MOZ_PGO"; then
     case "${branch}" in
     try)
@@ -35,30 +37,70 @@ if test -z "$SCCACHE_DISABLE" -a -z "$no
         *usw2.mozilla.com*)
             bucket=mozilla-releng-s3-cache-us-west-2-prod
             ;;
         esac
         ;;
     esac
 fi
 
+# taskcluster:
+else
+    # timeout after 1 second, and don't retry (failure indicates instance is not in ec2 or wget, network issue)
+    # availability_zone is of the form <region><letter> where region is e.g. us-west-2, and az is us-west-2a
+    availability_zone=$(wget -T 1 -t 1 -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone)
+    # region is az with last letter trimmed
+    region=${availability_zone%?}
+    if test -z "$SCCACHE_DISABLE" -a -z "$no_sccache" -a -z "$MOZ_PGO_IS_SET" -a -z "$MOZ_PGO"; then
+        # set S3 bucket according to tree (level)
+        case "${GECKO_HEAD_REPOSITORY}" in
+        *hg.mozilla.org/try*)
+            bucket=taskcluster-level-1-sccache-${region}
+            ;;
+        *hg.mozilla.org/integration/mozilla-inbound*|*hg.mozilla.org/integration/fx-team*)
+            bucket=taskcluster-level-3-sccache-${region}
+            ;;
+        esac
+    fi
+
+    # set a dummy master
+    case "${region}" in
+    us-east-1)
+        master=dummy.use1.mozilla.com
+        ;;
+    us-west-1)
+        master=dummy.usw1.mozilla.com
+        ;;
+    us-west-2)
+        master=dummy.usw2.mozilla.com
+        ;;
+    esac
+
+    # set platform based on the SYSTEMROOT env var
+    case "${SYSTEMROOT}" in
+    *Windows)
+        platform=windows
+        ;;
+    esac
+fi
+
 if test -z "$bucket"; then
     case "$platform" in
     win*) : ;;
     *)
         ac_add_options --with-ccache
     esac
 else
     if ! test -e $topsrcdir/sccache/sccache.py; then
         echo "Sccache missing in the tooltool manifest" >&2
         exit 1
     fi
     mk_add_options "export SCCACHE_BUCKET=$bucket"
     case "$master" in
-    *use1.mozilla.com*|*usw2.mozilla.com*)
+    *us[ew][12].mozilla.com*)
         mk_add_options "export SCCACHE_NAMESERVER=169.254.169.253"
         ;;
     esac
     ac_add_options "--with-compiler-wrapper=python2.7 $topsrcdir/sccache/sccache.py"
     mk_add_options MOZ_PREFLIGHT_ALL+=build/sccache.mk
     mk_add_options MOZ_POSTFLIGHT_ALL+=build/sccache.mk
     mk_add_options "UPLOAD_EXTRA_FILES+=sccache.log.gz"
     case "$platform" in