1# This Source Code Form is subject to the terms of the Mozilla Public
2# License, v. 2.0. If a copy of the MPL was not distributed with this
3# file, You can obtain one at http://mozilla.org/MPL/2.0/.
4---
5loader: gecko_taskgraph.loader.transform:loader
6
7kind-dependencies:
8    - build
9    - toolchain
10
11transforms:
12    - gecko_taskgraph.transforms.diffoscope:transforms
13    - gecko_taskgraph.transforms.job:transforms
14    - gecko_taskgraph.transforms.task:transforms
15
16# Note: --exclude-command .--line-numbers is because of
17# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=879003
18# That skips `objdump --disassemble --line-numbers` and falls back to
19# `objdump --disassemble`
20# Note: the .chk excludes are for files that are known to differ between
21# builds because they are signed with an ephemeral private key that is
22# generated for each build.
23job-defaults:
24    tier: 2
25    args: >-
26        --output-empty
27        --no-default-limits
28        --max-page-size 100000000
29        --max-page-diff-block-lines 10000
30        --exclude-directory-metadata=yes
31        --exclude-command .--line-numbers
32
33jobs:
34    artifact-win64-aarch64-eme-validation:
35        symbol: DWE
36        new: build-win64-aarch64-eme/opt
37        original: build-win64-aarch64/opt
38        unpack: true
39        fail-on-diff: true
40        pre-diff-commands:
41            # The EME version has extra files under i686/.
42            - rm -rf b/firefox/i686
43            # The i686/ files appear in precomplete, so after removing those references,
44            # we expect the same content as the non-EME build.
45            - sed -i '/i686\//d' b/firefox/precomplete
46            # Remove noise from differences in line numbers in preprocessor output
47            # due to #if/#else branches.
48            - sed -i '/^\/\/@line /d' {a,b}/firefox/browser/defaults/preferences/firefox.js
49            # Removing media.gmp-widevinecdm.* preferences, and setting
50            # browser.eme.ui.enabled to false should give us the same preferences as
51            # the non-EME build.
52            - sed -i '/browser\.eme\.ui\.enabled/s/true/false/;/media\.gmp-widevinecdm\./d' b/firefox/browser/defaults/preferences/firefox.js
53        # Extra diffoscope arguments to account for:
54        # - about:buildconfig being expectedly different.
55        # - There are some differences in PE metadata in helper.exe because
56        #   it's (re)built in the EME build, and that part of the build is
57        #   not reproducible.
58        extra-args: >-
59            --exclude-directory-metadata=recursive
60            --exclude b/firefox/chrome/toolkit/content/global/buildconfig.html
61            --exclude b/firefox/uninstall/helper.exe
62        # This is necessary to avoid building `build-win64-aarch64` on every push on autoland
63        # A more robust fix for this is https://bugzilla.mozilla.org/show_bug.cgi?id=1643346
64        optimization:
65            skip-unless-expanded: null
66
67    reproducible-linux32:
68        symbol: Linux32
69        new: build-linux-reproduced/opt
70        original: build-linux-shippable/opt
71        fail-on-diff: true
72        run-on-projects: ['mozilla-central']  # Do not run linux32 on autoland, Bug 1599197
73
74    reproducible-linux32-generated-files:
75        symbol: Linux32g
76        artifact: target.generated-files.tar.gz
77        new: build-linux-reproduced/opt
78        original: build-linux-shippable/opt
79        fail-on-diff: true
80        run-on-projects: ['mozilla-central']  # Do not run linux32 on autoland, Bug 1599197
81
82    reproducible-linux64:
83        symbol: Linux64
84        new: build-linux64-reproduced/opt
85        original: build-linux64-shippable/opt
86        fail-on-diff: true
87        run-on-projects: ['mozilla-central']
88
89    reproducible-linux64-generated-files:
90        symbol: Linux64g
91        artifact: target.generated-files.tar.gz
92        new: build-linux64-reproduced/opt
93        original: build-linux64-shippable/opt
94        fail-on-diff: true
95        run-on-projects: ['mozilla-central']
96
97# Make a task for each diff we might want. The following are just examples,
98# Both original and new can point to builds from the full set of tasks or
99# from other sets through an index-search. Other kinds than `build` can be
100# compared (for example, static-analysis), provided you adjust the
101# kind-dependencies above.
102#     android-build-vs-previous-try:
103#         symbol: A
104#         new: build-android-arm/opt
105#         original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.mobile.android-arm-opt}
106#     linux64-build-vs-previous-try:
107#         symbol: L
108#         new: build-linux64/opt
109#         original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.firefox.linux64-opt}
110#         extra-args: >-
111#             --exclude-command .--hex-dump=.gnu_debuglink
112#     macosx-build-vs-previous-try:
113#         symbol: M
114#         new: build-macosx64/opt
115#         original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.firefox.macosx64-opt}
116#     win32-build-vs-previous-try:
117#         symbol: W
118#         new: build-win32/opt
119#         original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.firefox.win32-opt}
120