summaryrefslogtreecommitdiffstats
path: root/taskcluster/ci/diffoscope/kind.yml
blob: 43abcebf9d929fd65ece102f0a4ff9b44623dfd5 (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
# 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/.
---
loader: gecko_taskgraph.loader.transform:loader

kind-dependencies:
    - build
    - toolchain

transforms:
    - gecko_taskgraph.transforms.diffoscope:transforms
    - gecko_taskgraph.transforms.job:transforms
    - gecko_taskgraph.transforms.task:transforms

# Note: --exclude-command .--line-numbers is because of
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=879003
# That skips `objdump --disassemble --line-numbers` and falls back to
# `objdump --disassemble`
# Note: the .chk excludes are for files that are known to differ between
# builds because they are signed with an ephemeral private key that is
# generated for each build.
job-defaults:
    tier: 2
    args: >-
        --output-empty
        --no-default-limits
        --max-page-size 100000000
        --max-page-diff-block-lines 10000
        --exclude-directory-metadata=yes
        --exclude-command .--line-numbers

jobs:
    artifact-win64-aarch64-eme-validation:
        symbol: DWE
        new: build-win64-aarch64-eme/opt
        original: build-win64-aarch64/opt
        unpack: true
        fail-on-diff: true
        pre-diff-commands:
            # The EME version has extra files under i686/.
            - rm -rf b/firefox/i686
            # The i686/ files appear in precomplete, so after removing those references,
            # we expect the same content as the non-EME build.
            - sed -i '/i686\//d' b/firefox/precomplete
            # Remove noise from differences in line numbers in preprocessor output
            # due to #if/#else branches.
            - sed -i '/^\/\/@line /d' {a,b}/firefox/browser/defaults/preferences/firefox.js
            # Removing media.gmp-widevinecdm.* preferences, and setting
            # browser.eme.ui.enabled to false should give us the same preferences as
            # the non-EME build.
            - sed -i '/browser\.eme\.ui\.enabled/s/true/false/;/media\.gmp-widevinecdm\./d' b/firefox/browser/defaults/preferences/firefox.js
        # Extra diffoscope arguments to account for:
        # - about:buildconfig being expectedly different.
        # - There are some differences in PE metadata in helper.exe because
        #   it's (re)built in the EME build, and that part of the build is
        #   not reproducible.
        extra-args: >-
            --exclude-directory-metadata=recursive
            --exclude b/firefox/chrome/toolkit/content/global/buildconfig.html
            --exclude b/firefox/uninstall/helper.exe
        # This is necessary to avoid building `build-win64-aarch64` on every push on autoland
        # A more robust fix for this is https://bugzilla.mozilla.org/show_bug.cgi?id=1643346
        optimization:
            skip-unless-expanded: null

    reproducible-linux32:
        symbol: Linux32
        new: build-linux-reproduced/opt
        original: build-linux-shippable/opt
        fail-on-diff: true
        run-on-projects: ['mozilla-central']  # Do not run linux32 on autoland, Bug 1599197

    reproducible-linux32-generated-files:
        symbol: Linux32g
        artifact: target.generated-files.tar.gz
        new: build-linux-reproduced/opt
        original: build-linux-shippable/opt
        fail-on-diff: true
        run-on-projects: ['mozilla-central']  # Do not run linux32 on autoland, Bug 1599197

    reproducible-linux64:
        symbol: Linux64
        new: build-linux64-reproduced/opt
        original: build-linux64-shippable/opt
        fail-on-diff: true
        run-on-projects: ['mozilla-central']

    reproducible-linux64-generated-files:
        symbol: Linux64g
        artifact: target.generated-files.tar.gz
        new: build-linux64-reproduced/opt
        original: build-linux64-shippable/opt
        fail-on-diff: true
        run-on-projects: ['mozilla-central']

# Make a task for each diff we might want. The following are just examples,
# Both original and new can point to builds from the full set of tasks or
# from other sets through an index-search. Other kinds than `build` can be
# compared (for example, static-analysis), provided you adjust the
# kind-dependencies above.
#     android-build-vs-previous-try:
#         symbol: A
#         new: build-android-arm/opt
#         original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.mobile.android-arm-opt}
#     linux64-build-vs-previous-try:
#         symbol: L
#         new: build-linux64/opt
#         original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.firefox.linux64-opt}
#         extra-args: >-
#             --exclude-command .--hex-dump=.gnu_debuglink
#     macosx-build-vs-previous-try:
#         symbol: M
#         new: build-macosx64/opt
#         original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.firefox.macosx64-opt}
#     win32-build-vs-previous-try:
#         symbol: W
#         new: build-win32/opt
#         original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.firefox.win32-opt}