diff options
Diffstat (limited to 'taskcluster/kinds/diffoscope')
-rw-r--r-- | taskcluster/kinds/diffoscope/artifacts.yml | 56 | ||||
-rw-r--r-- | taskcluster/kinds/diffoscope/kind.yml | 61 | ||||
-rw-r--r-- | taskcluster/kinds/diffoscope/reproducible.yml | 29 |
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 |