summaryrefslogtreecommitdiffstats
path: root/taskcluster/kinds/diffoscope
diff options
context:
space:
mode:
Diffstat (limited to 'taskcluster/kinds/diffoscope')
-rw-r--r--taskcluster/kinds/diffoscope/artifacts.yml56
-rw-r--r--taskcluster/kinds/diffoscope/kind.yml61
-rw-r--r--taskcluster/kinds/diffoscope/reproducible.yml29
3 files changed, 146 insertions, 0 deletions
diff --git a/taskcluster/kinds/diffoscope/artifacts.yml b/taskcluster/kinds/diffoscope/artifacts.yml
new file mode 100644
index 0000000000..a89dfcbfee
--- /dev/null
+++ b/taskcluster/kinds/diffoscope/artifacts.yml
@@ -0,0 +1,56 @@
+# 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/.
+---
+job-defaults:
+ # Artifact builds always build with nightly branding, so these checks don't
+ # work on non-trunk branches.
+ run-on-projects: ['trunk']
+ unpack: true
+ fail-on-diff: true
+ pre-diff-commands:
+ # jogfile.json is only created in artifact builds.
+ - rm b/"$RESOURCE_DIR"/jogfile.json
+ # Remove noise from differences in line numbers in preprocessor output
+ # due to #if/#else branches.
+ - sed -i '/^\/\/@line /d' {a,b}/"$RESOURCE_DIR"/browser/defaults/preferences/firefox.js
+ # bug 1825141 - telemetry.fog.artifact_build isn't stable between
+ # artifact and not-artifact builds, so remove its line if present.
+ - sed -i '/telemetry\.fog\.artifact\_build/d' b/"$RESOURCE_DIR"/browser/defaults/preferences/firefox.js
+ # non-macOS artifact builds are not fed with accepted-mar-channel-ids.
+ - if [ -f a/"$RESOURCE_DIR"/update-settings.ini ]; then sed -i '/ACCEPTED_MAR_CHANNEL_IDS/d' {a,b}/"$RESOURCE_DIR"/update-settings.ini; fi
+ # macOS artifact builds have local update configurations, not Nightly
+ # update configurations.
+ - rm -f {a,b}/"$RESOURCE_DIR"/../Frameworks/ChannelPrefs.framework/ChannelPrefs
+ - rm -f {a,b}/"$RESOURCE_DIR"/../MacOS/updater.app/Contents/Frameworks/UpdateSettings.framework/UpdateSettings
+ # Extra diffoscope arguments to account for:
+ # - about:buildconfig being expectedly different.
+ extra-args: >-
+ --exclude b/"$RESOURCE_DIR"/chrome/toolkit/content/global/buildconfig.html
+ # This is necessary to avoid building the dependencies 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
+
+artifact-linux64-validation:
+ symbol: Linux64a
+ new: artifact-build-linux64-artifact/opt
+ original: build-linux64/opt
+
+artifact-macosx64-validation:
+ symbol: Macosx64a
+ new: artifact-build-macosx64-artifact/opt
+ original: build-macosx64/opt
+
+artifact-win64-validation:
+ symbol: Win64a
+ new: artifact-build-win64-artifact/opt
+ original: build-win64/opt
+ # 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 b/"$RESOURCE_DIR"/chrome/toolkit/content/global/buildconfig.html
+ --exclude b/firefox/uninstall/helper.exe
diff --git a/taskcluster/kinds/diffoscope/kind.yml b/taskcluster/kinds/diffoscope/kind.yml
new file mode 100644
index 0000000000..89b38fc665
--- /dev/null
+++ b/taskcluster/kinds/diffoscope/kind.yml
@@ -0,0 +1,61 @@
+# 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:
+ - artifact-build
+ - 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-from:
+ - artifacts.yml
+ - reproducible.yml
+
+# 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.
+# jobs:
+# 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}
diff --git a/taskcluster/kinds/diffoscope/reproducible.yml b/taskcluster/kinds/diffoscope/reproducible.yml
new file mode 100644
index 0000000000..4f89bfca4e
--- /dev/null
+++ b/taskcluster/kinds/diffoscope/reproducible.yml
@@ -0,0 +1,29 @@
+# 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/.
+---
+job-defaults:
+ fail-on-diff: true
+ run-on-projects: ['mozilla-central']
+
+reproducible-linux32:
+ symbol: Linux32
+ new: build-linux-reproduced/opt
+ original: build-linux-shippable/opt
+
+reproducible-linux32-generated-files:
+ symbol: Linux32g
+ artifact: target.generated-files.tar.gz
+ new: build-linux-reproduced/opt
+ original: build-linux-shippable/opt
+
+reproducible-linux64:
+ symbol: Linux64
+ new: build-linux64-reproduced/opt
+ original: build-linux64-shippable/opt
+
+reproducible-linux64-generated-files:
+ symbol: Linux64g
+ artifact: target.generated-files.tar.gz
+ new: build-linux64-reproduced/opt
+ original: build-linux64-shippable/opt