summaryrefslogtreecommitdiffstats
path: root/build/mozconfig.cache
blob: be740e293f60bd58ee48bccff769448801728110 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# 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" -a -z "$no_sccache" -a -z "$MOZ_PGO_IS_SET" -a -z "$MOZ_PGO"; 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

# builds without buildprops (eg: taskcluster or non-buildbot) and without ccache env config and without sccache disabled:
elif test -z "$CCACHE_DIR" -a -z "$SCCACHE_DISABLE" -a -z "$no_sccache" -a -z "$MOZ_PGO_IS_SET" -a -z "$MOZ_PGO"; then

    # prevent rerun if az is set, or wget is not available
    if test -z "$availability_zone" -a -x "$(command -v wget)"; then
        # 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)
        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
        ;;
    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
    *us[ew][12].mozilla.com*|*euc1.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
    win*)
        # sccache supports a special flag to create depfiles.
        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