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 524799 0806b72566051e6cd9267731c15369bf51cab9d1
parent 524798 2382b92cba1ef6ad62b732179e7be14deecaa6b6
child 524800 2f4101ab87c7acf678c1fbe3b06fb48f7c6c6480
push id2032
push userffxbld-merge
push dateMon, 13 May 2019 09:36:57 +0000
treeherdermozilla-release@455c1065dcbe [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}