Bug 1534522 - Add a build type for EME-enabled win64-aarch64. r=dmajor
authorMike Hommey <mh+mozilla@glandium.org>
Wed, 13 Mar 2019 23:08:19 +0000
changeset 521801 0806b7256605
parent 521800 2382b92cba1e
child 521802 2f4101ab87c7
push id10867
push userdvarga@mozilla.com
push dateThu, 14 Mar 2019 15:20:45 +0000
treeherdermozilla-beta@abad13547875 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdmajor
bugs1534522
milestone67.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1534522 - Add a build type for EME-enabled win64-aarch64. r=dmajor Depends on D23101 Differential Revision: https://phabricator.services.mozilla.com/D23102
browser/config/mozconfigs/win64-aarch64/common-opt
taskcluster/ci/build/windows.yml
taskcluster/ci/diffoscope/kind.yml
--- a/browser/config/mozconfigs/win64-aarch64/common-opt
+++ b/browser/config/mozconfigs/win64-aarch64/common-opt
@@ -15,8 +15,12 @@ ac_add_options --with-mozilla-api-keyfil
 export MOZILLA_OFFICIAL=1
 
 export MOZ_TELEMETRY_REPORTING=1
 
 . $topsrcdir/build/win64-aarch64/mozconfig.vs-latest
 
 # Package js shell.
 export MOZ_PACKAGE_JSSHELL=1
+
+if test -n "$MOZ_ARTIFACT_TASK_WIN32_OPT"; then
+  ac_add_options --enable-eme=widevine
+fi
--- a/taskcluster/ci/build/windows.yml
+++ b/taskcluster/ci/build/windows.yml
@@ -1039,16 +1039,52 @@ win64-aarch64/opt:
     toolchains:
         - win64-clang-cl
         - win64-aarch64-rust
         - win64-cbindgen
         - win64-sccache
         - win64-nasm
         - win64-node
 
+win64-aarch64-eme/opt:
+    description: "AArch64 Win64 Opt w/ EME"
+    index:
+        product: firefox
+        job-name: win64-aarch64-eme-opt
+    treeherder:
+        platform: windows2012-aarch64/opt
+        symbol: Be
+        tier: 1
+    worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
+    worker:
+        max-run-time: 7200
+        env:
+            TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win64/aarch64.manifest"
+            PERFHERDER_EXTRA_OPTIONS: aarch64-eme
+            MOZ_ARTIFACT_TASK: {task-reference: '<win64-aarch64-opt>'}
+            MOZ_ARTIFACT_TASK_WIN32_OPT: {task-reference: '<win32-opt>'}
+            USE_ARTIFACT: '1'
+    run:
+        actions: [get-secrets, build]
+        options: [append-env-variables-from-configs]
+        script: mozharness/scripts/fx_desktop_build.py
+        secrets: true
+        config:
+            - builds/releng_base_firefox.py
+            - builds/taskcluster_base_windows.py
+            - builds/taskcluster_base_win64.py
+        extra-config:
+            stage_platform: win64-aarch64
+            mozconfig_platform: win64-aarch64
+    dependencies:
+        win32-opt: build-win32/opt
+        win64-aarch64-opt: build-win64-aarch64/opt
+    toolchains:
+        - win64-node
+
 win64-aarch64-nightly/opt:
     description: "AArch64 Win64 Nightly"
     index:
         product: firefox
         job-name: win64-aarch64-opt
         type: nightly
     attributes:
         nightly: true
--- a/taskcluster/ci/diffoscope/kind.yml
+++ b/taskcluster/ci/diffoscope/kind.yml
@@ -27,23 +27,52 @@ job-defaults:
     --max-page-size 100000000
     --max-page-diff-block-lines 10000
     --exclude-directory-metadata
     --exclude-command .--line-numbers
     --exclude **/*freeblpriv3.chk
     --exclude **/*nssdbm3.chk
     --exclude **/*softokn3.chk
 
+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
+
+
 # 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-api-16/opt
 #     original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.mobile.android-api-16-opt}
 #   linux64-build-vs-previous-try:
 #     symbol: L
 #     new: build-linux64/opt
 #     original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.firefox.linux64-opt}