build/mozconfig.cache
author arthur.iakab <aiakab@mozilla.com>
Tue, 01 May 2018 01:39:08 +0300
changeset 472470 8ba36d8d99231b963a57c086550b4b371d2d9724
parent 451615 ba9e7b6956191e8212e5eb3dcbdc3301db10a27f
child 477638 dab1fa529286ca14ac6da1a8c0c0f94dcf3f43cd
permissions -rw-r--r--
Backed out 4 changesets (bug 1372381) for artifact build bustages Backed out changeset 56c7ffeaa9fd (bug 1372381) Backed out changeset 4e0f7fe818d0 (bug 1372381) Backed out changeset 92a96d6b599b (bug 1372381) Backed out changeset 620bdfafd42f (bug 1372381)

# 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

# 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"; then
    case "${branch}" in
    try)
        case "${master}" in
        *scl1.mozilla.com*|*.scl3.mozilla.com*)
            bucket=mozilla-releng-s3-cache-us-west-1-try
            ;;
        *use1.mozilla.com*)
            bucket=mozilla-releng-s3-cache-us-east-1-try
            ;;
        *usw2.mozilla.com*)
            bucket=mozilla-releng-s3-cache-us-west-2-try
            ;;
        esac
        ;;
    autoland|mozilla-inbound)
        case "${master}" in
        *use1.mozilla.com*)
            bucket=mozilla-releng-s3-cache-us-east-1-prod
            ;;
        *usw2.mozilla.com*)
            bucket=mozilla-releng-s3-cache-us-west-2-prod
            ;;
        esac
        ;;
    esac
fi
fi

# builds where buildprops didn't have the data (eg: taskcluster or non-buildbot) 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_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"
        else
            # timeout after 1 second, and don't retry (failure indicates instance is not in ec2 or 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 || true)
        fi
        if test -z "$availability_zone" -o "$availability_zone" = "not-ec2"; then
            availability_zone=not-ec2
        else
            # region is az with last letter trimmed
            region=${availability_zone%?}
            # 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/autoland*|*hg.mozilla.org/integration/mozilla-inbound*)
                bucket=taskcluster-level-3-sccache-${region}
                ;;
            esac

            # set a dummy master
            case "${region}" in
            eu-central-1)
                master=dummy.euc1.mozilla.com
                ;;
            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
        fi
    fi
fi

# if platform hasn't been determined from buildprops, and we're on windows,
# it must be set to prevent adding ac_add_options --with-ccache below
if test -z "$platform"; then
    # set platform based on the SYSTEMROOT env var
    case "${SYSTEMROOT}" in
    *Windows)
        platform=windows
        suffix=.exe
        ;;
    esac
fi

if test -n "$bucket"; then
    mk_add_options "export SCCACHE_BUCKET=$bucket"
    case "$master" in
    *us[ew][12].mozilla.com*|*euc1.mozilla.com*)
        mk_add_options "export SCCACHE_NAMESERVER=169.254.169.253"
        ;;
    esac
    export CCACHE="$topsrcdir/sccache2/sccache${suffix}"
    export SCCACHE_VERBOSE_STATS=1
    mk_add_options MOZBUILD_MANAGE_SCCACHE_DAEMON=${topsrcdir}/sccache2/sccache
    mk_add_options "UPLOAD_EXTRA_FILES+=sccache.log.gz"
    case "$platform" in
    win*)
        # sccache supports a special flag to create depfiles.
        #TODO: bug 1318370 - move this all into toolchain.configure
        export _DEPEND_CFLAGS='-deps$(MDDEPDIR)/$(@F).pp'
        # Windows builds have a default wrapper that needs to be overridden
        mk_add_options "export CC_WRAPPER="
        mk_add_options "export CXX_WRAPPER="
        # For now, sccache doesn't support separate PDBs so force debug info to be
        # in object files.
        mk_add_options "export COMPILE_PDB_FLAG="
        mk_add_options "export HOST_PDB_FLAG="
        mk_add_options "export MOZ_DEBUG_FLAGS=-Z7"
        ;;
    esac
fi

fi