Bug 1508828 - Add a task to run standalone WebRender CI scripts on Windows. r=glandium,jrmuizel
authorKartikaya Gupta <kgupta@mozilla.com>
Tue, 08 Jan 2019 14:15:30 +0000
changeset 510017 507fae6b3eb45429cbd3ea034d1d0477b63b39ca
parent 510016 2cd349b2685c6a570742af2af578971dbe5bc044
child 510018 e1faf5fa77a67493a392649b3e4158570331f652
push id10547
push userffxbld-merge
push dateMon, 21 Jan 2019 13:03:58 +0000
treeherdermozilla-beta@24ec1916bffe [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersglandium, jrmuizel
bugs1508828
milestone66.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 1508828 - Add a task to run standalone WebRender CI scripts on Windows. r=glandium,jrmuizel Differential Revision: https://phabricator.services.mozilla.com/D15412
browser/config/tooltool-manifests/win64/webrender.manifest
taskcluster/ci/webrender/kind.yml
taskcluster/scripts/misc/wrench-windows-tests.sh
new file mode 100644
--- /dev/null
+++ b/browser/config/tooltool-manifests/win64/webrender.manifest
@@ -0,0 +1,26 @@
+[
+  {
+    "version": "Visual Studio 2017 15.8.4 / SDK 10.0.17134.0",
+    "digest": "ecf1e03f6f98f86775059a43f9e7dc7e326f6643d7c08962d9f614e4f5a65b1ca63fa1cfeb0f1a3c2474bf0d4318dda960b378beb2a44ecf8a91111207f4ece5",
+    "size": 349626009,
+    "algorithm": "sha512",
+    "filename": "vs2017_15.8.4.zip",
+    "unpack": true
+  },
+  {
+    "version": "CMake 3.6.2 repack",
+    "size": 19832889,
+    "digest": "39b0508b60f655969d1b54c76753b14b5b2e92dab58613c835aed798a6aeb9077a7df78aebc011c2c753661fdc15007d3353c0c8773a53148380e2ec02afb629",
+    "algorithm": "sha512",
+    "filename": "cmake362.zip",
+    "unpack": true
+  },
+  {
+    "version": "Ninja 1.7.1",
+    "size": 184821,
+    "digest": "e4f9a1ae624a2630e75264ba37d396d9c7407d6e6aea3763056210ba6e1387908bd31cf4037a6a3661a418e86c4d2761e0c333e6a3bd0d66549d2b0d72d3f43b",
+    "algorithm": "sha512",
+    "filename": "ninja171.zip",
+    "unpack": true
+  }
+]
--- a/taskcluster/ci/webrender/kind.yml
+++ b/taskcluster/ci/webrender/kind.yml
@@ -14,40 +14,43 @@ transforms:
 
 job-defaults:
     run-on-projects: ['mozilla-beta', 'trunk', 'try']
     treeherder:
         tier: 2
         kind: other
     worker:
         max-run-time: 1800
-        docker-image: {in-tree: webrender}
         env:
             RUST_BACKTRACE: 'full'
             RUSTFLAGS: '--deny warnings'
 
 jobs:
     lint-tidy:
         description: Runs linting checks on WebRender code
         worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+        worker:
+            docker-image: {in-tree: webrender}
         run:
             using: run-task
             command: >-
                 cd $HOME/checkouts/gecko/gfx/wr &&
                 servo-tidy
         treeherder:
             platform: linux64-qr/opt
             symbol: WR(tidy)
         when:
             files-changed:
                 - 'gfx/wr/**'
 
     linux-release:
         description: Runs release-mode WebRender CI tests on a Linux worker
         worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+        worker:
+            docker-image: {in-tree: webrender}
         toolchains:
             - linux64-rust
             - wrench-deps
         run:
             using: run-task
             command: >-
                 cd $HOME/workspace &&
                 $HOME/checkouts/gecko/mach artifact toolchain -v $MOZ_TOOLCHAINS &&
@@ -61,16 +64,18 @@ jobs:
             kind: other
         when:
             files-changed:
                 - 'gfx/wr/**'
 
     linux-debug:
         description: Runs debug-mode WebRender CI tests on a Linux worker
         worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+        worker:
+            docker-image: {in-tree: webrender}
         toolchains:
             - linux64-rust
             - wrench-deps
         run:
             using: run-task
             command: >-
                 cd $HOME/workspace &&
                 $HOME/checkouts/gecko/mach artifact toolchain -v $MOZ_TOOLCHAINS &&
@@ -80,8 +85,32 @@ jobs:
                 CARGOFLAGS="--verbose --frozen" ci-scripts/linux-debug-tests.sh
         treeherder:
             platform: linux64-qr/debug
             symbol: WR(wrench)
             kind: other
         when:
             files-changed:
                 - 'gfx/wr/**'
+
+    windows:
+        description: Runs WebRender CI tests on a Windows worker
+        worker-type: aws-provisioner-v1/gecko-t-win10-64
+        worker:
+            max-run-time: 5400
+            env:
+                TOOLTOOL_MANIFEST: 'browser/config/tooltool-manifests/win64/webrender.manifest'
+        toolchains:
+            - win64-rust
+            - wrench-deps
+        run:
+            using: run-task
+            command: '$GECKO_PATH/taskcluster/scripts/misc/wrench-windows-tests.sh'
+        treeherder:
+            platform: windows10-64-qr/release
+            symbol: WR(wrench)
+        when:
+            files-changed:
+                - 'build/win64/mozconfig.vs2017'
+                - 'browser/config/tooltool-manifests/win64/webrender.manifest'
+                - 'gfx/wr/**'
+                - 'taskcluster/scripts/misc/tooltool-download.sh'
+                - 'taskcluster/scripts/misc/wrench-windows-tests.sh'
new file mode 100644
--- /dev/null
+++ b/taskcluster/scripts/misc/wrench-windows-tests.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+set -x -e -v
+
+# This script runs the windows CI scripts for standalone WebRender. The CI
+# scripts build WebRender in various "standalone" (without Gecko)
+# configurations and also run WebRender's reftest suite using the `wrench`
+# tool in the WebRender repository.
+# The builds involved require a number of dependencies to be available,
+# which is all handled below.
+
+cd $GECKO_PATH
+
+# This will download the rustc, cmake, ninja, MSVC, and wrench-deps artifacts.
+WORKSPACE="$PWD/../../" taskcluster/scripts/misc/tooltool-download.sh
+export PATH=$PATH:$PWD/rustc/bin:$PWD/cmake/bin:$PWD/ninja/bin
+
+# We will be sourcing mozconfig files, which end up calling mk_add_options with
+# various settings. We only need the variable settings they create along the
+# way. Define mk_add_options as empty so the variables are defined but nothing
+# else happens.
+# This is adapted from the start of js/src/devtools/automation/winbuildenv.sh
+# which does a similar thing.
+mk_add_options() {
+    :
+}
+
+export topsrcdir=$PWD
+. $topsrcdir/build/win64/mozconfig.vs2017
+
+# In the msys bash that we're running in, environment variables containing paths
+# will *sometimes* get converted to windows format on their own, but it doesn't
+# happen consistently. See bug 1508828 around comment 9 onwards for some details.
+# To ensure we consistently convert the INCLUDE and LIB variables that MSVC
+# needs for building stuff, we do it here explicitly.
+
+convert_path_to_win() {
+    echo $1 |
+    sed -e 's#:#\n#g' |           # split path components into separate lines
+    sed -e 's#^/\(.\)/#\1:/#' |   # replace first path component (if one letter) with equivalent drive letter
+    sed -e 's#/#\\#g' |           # convert all forward slashes to backslashes
+    paste -s -d ';'               # glue the lines back together
+}
+
+export INCLUDE=$(convert_path_to_win "$INCLUDE")
+export LIB=$(convert_path_to_win "$LIB")
+
+# Move the wrench-deps vendored crates into place
+mv wrench-deps/{vendor,.cargo} gfx/wr
+cd gfx/wr
+
+# This is needed for the WebRender standalone reftests
+powershell.exe 'iex (Get-Content -Raw ci-scripts\set-screenresolution.ps1); Set-ScreenResolution 1920 1080'
+
+# Run the CI scripts
+export CARGOFLAGS='--verbose --frozen'
+export FREETYPE_CMAKE_GENERATOR=Ninja
+cmd.exe /c 'ci-scripts\windows-tests.cmd'
+cmd.exe /c 'ci-scripts\windows-pathfinder.cmd'