summaryrefslogtreecommitdiffstats
path: root/build/mozconfig.cache
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--build/mozconfig.cache84
1 files changed, 84 insertions, 0 deletions
diff --git a/build/mozconfig.cache b/build/mozconfig.cache
new file mode 100644
index 0000000000..1bd202b17d
--- /dev/null
+++ b/build/mozconfig.cache
@@ -0,0 +1,84 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# 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
+
+# Thunderbird builds will have this set prior to including this file
+aws_prefix=${aws_prefix:-taskcluster}
+
+# builds where buildprops didn't have the data (eg: taskcluster) and without sccache disabled:
+if test -z "$bucket" -a -z "$SCCACHE_DISABLE"; then
+
+ # prevent rerun if az is set, or wget is not available
+ if test -z "$availability_zone" -a -x "$(command -v wget)"; then
+ if test -n "$TASKCLUSTER_WORKER_LOCATION" -a -x "$(command -v jq)"; then
+ cloud=$(echo $TASKCLUSTER_WORKER_LOCATION | jq .cloud | tr -d \")
+ case $cloud in
+ aws|google)
+ availability_zone=$(echo $TASKCLUSTER_WORKER_LOCATION | jq .availabilityZone | tr -d \")
+ region=$(echo $TASKCLUSTER_WORKER_LOCATION | jq .region | tr -d \")
+ ;;
+ esac
+ fi
+ if test -z "$availability_zone" -o -z "$region"; then
+ if test -n "${TASKCLUSTER_WORKER_GROUP}"; then
+ # TASKCLUSTER_WORKER_GROUP is just the region now, so
+ # stick an extra character on to make the already-convoluted logic
+ # here simpler.
+ availability_zone="${TASKCLUSTER_WORKER_GROUP}x"
+ elif [ -n "${SCCACHE_GCS_KEY_PATH}" ]; then
+ # gcp availability_zone is of the form <region>-<letter> where region is e.g. us-west2, and az is us-west2-a
+ gcp_zone=$(wget -T 1 -t 1 -q -O - http://169.254.169.254/computeMetadata/v1beta1/instance/zone || true)
+ availability_zone=${gcp_zone##*/}
+ else
+ # timeout after 1 second, and don't retry (failure indicates instance is not in ec2 or network issue)
+ # ec2 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 || true)
+ fi
+ fi
+ if test -z "$availability_zone" -o "$availability_zone" = "not-ec2"; then
+ availability_zone=not-ec2
+ elif test -n "$cloud"; then
+ case $cloud in
+ google)
+ bucket=sccache-l${MOZ_SCM_LEVEL}-${region}
+ ;;
+ aws)
+ bucket=${aws_prefix}-level-${MOZ_SCM_LEVEL}-sccache-${region}
+ ;;
+ esac
+ elif [ -n "${SCCACHE_GCS_KEY_PATH}" ]; then
+ # gcp region is az with last two letters trimmed
+ if test -z "$region"; then
+ region=${availability_zone::${#availability_zone}-2}
+ fi
+ bucket=${aws_prefix}-level-${MOZ_SCM_LEVEL}-sccache-${region}
+ else
+ # ec2 region is az with last letter trimmed
+ if test -z "$region"; then
+ region=${availability_zone%?}
+ fi
+ bucket=${aws_prefix}-level-${MOZ_SCM_LEVEL}-sccache-${region}
+ fi
+ fi
+fi
+
+if test -n "$bucket"; then
+ if test "$cloud" = "google"; then
+ mk_add_options "export SCCACHE_GCS_BUCKET=$bucket"
+ mk_add_options "export SCCACHE_GCS_RW_MODE=READ_WRITE"
+ mk_add_options "export SCCACHE_GCS_CREDENTIALS_URL=http://taskcluster/auth/v1/gcp/credentials/$SCCACHE_GCS_PROJECT/${bucket}@$SCCACHE_GCS_PROJECT.iam.gserviceaccount.com"
+ elif [ -n "${SCCACHE_GCS_KEY_PATH}" ]; then
+ mk_add_options "export SCCACHE_GCS_BUCKET=$bucket"
+ else
+ mk_add_options "export SCCACHE_BUCKET=$bucket"
+ # instruct sccache to fetch the credentials from the Auth service's awsS3Credentials endpoint, via the Taskcluster proxy.
+ mk_add_options "export AWS_IAM_CREDENTIALS_URL=http://taskcluster/auth/v1/aws/s3/read-write/${bucket}/?format=iam-role-compat"
+ fi
+ export CCACHE="sccache"
+ export SCCACHE_VERBOSE_STATS=1
+ # Workaround for https://github.com/mozilla/sccache/issues/459#issuecomment-618756635
+ mk_add_options "export SCCACHE_MAX_FRAME_LENGTH=50000000"
+ mk_add_options MOZBUILD_MANAGE_SCCACHE_DAEMON=${MOZ_FETCHES_DIR}/sccache/sccache
+fi