Bug 1465800: Create a skeleton MinGW-Clang Browser Build job r?froydnj draft
authorJacek Caban <jacek@codeweavers.com>
Fri, 22 Jun 2018 21:03:42 +0200
changeset 812158 1b079d31ca8f5ed5812469460b615c87c4f78db3
parent 812157 7688b03c8c676cb235231eff17cec2633f0ae729
child 812159 8bbee95274f4bf79e403a4f644dd727d15568129
child 812167 9e1bf9de9165be5bb478913c99abfa0729b1a35b
child 815647 9b403e2205359f1347e2f3d90eb8903e9c06f0ca
push id114464
push userbmo:jacek@codeweavers.com
push dateThu, 28 Jun 2018 16:53:46 +0000
reviewersfroydnj
bugs1465800
milestone60.1.0
Bug 1465800: Create a skeleton MinGW-Clang Browser Build job r?froydnj MozReview-Commit-ID: HMOaU8IxN6h
browser/config/mozconfigs/win64/mingwclang
browser/config/mozconfigs/win64/mingwclang-debug
taskcluster/ci/build/windows.yml
taskcluster/ci/config.yml
testing/mozharness/configs/builds/releng_sub_windows_configs/64_mingwclang.py
testing/mozharness/configs/builds/releng_sub_windows_configs/64_mingwclang_debug.py
new file mode 100755
--- /dev/null
+++ b/browser/config/mozconfigs/win64/mingwclang
@@ -0,0 +1,78 @@
+# Sets:
+#    MOZ_AUTOMATION flags
+#    SOCORRO_SYMBOL_UPLOAD_TOKEN_FILE - shouldn't be used?
+#    TOOLTOOL_DIR
+#    MAKECAB - shouldn't be used?
+. "$topsrcdir/build/mozconfig.win-common"
+
+# MinGW does not have (or need) makecab
+unset MAKECAB
+
+# Sets:
+#  build/mozconfig.common
+#    AUTOCLOBBER=1
+#    --enable-crashreporter
+#    --enable-release
+#    LLVM_CONFIG
+#    MOZ_ADDON_SIGNING
+#    MOZ_REQUIRE_SIGNING
+#    --enable-js-shell
+#  build/mozconfig.automation
+#    MOZ_AUTOMATION_ flags
+#  build/mozconfig.rust
+#    TOOLTOOL_DIR
+#    RUSTC
+#    CARGO
+. "$topsrcdir/browser/config/mozconfigs/common"
+
+# MinGW Stuff
+ac_add_options --target=x86_64-w64-mingw32
+ac_add_options --with-toolchain-prefix=x86_64-w64-mingw32-
+
+ac_add_options --disable-warnings-as-errors
+
+# Temporary config settings until we get these working on mingw
+ac_add_options --disable-accessibility # https://sourceforge.net/p/mingw-w64/bugs/648/
+
+ac_add_options --disable-stylo # Bug 1390583
+
+# For now, we'll disable the sandbox, until we get get Bug 1461421 figured out
+ac_add_options --disable-sandbox
+
+# These aren't supported on mingw at this time
+ac_add_options --disable-webrtc # Bug 1393901
+ac_add_options --disable-maintenance-service
+
+# Find our toolchain
+HOST_CC="$TOOLTOOL_DIR/clang/bin/clang"
+HOST_CXX="$TOOLTOOL_DIR/clang/bin/clang++"
+CC="$TOOLTOOL_DIR/clang/bin/x86_64-w64-mingw32-clang"
+CXX="$TOOLTOOL_DIR/clang/bin/x86_64-w64-mingw32-clang++"
+CPP="$TOOLTOOL_DIR/clang/bin/x86_64-w64-mingw32-clang -E"
+AR=llvm-ar
+RANLIB=llvm-ranlib
+
+# Since we use windres from binutils without the rest of tools (like cpp), we need to
+# explicitly specify clang as a preprocessor.
+WINDRES="x86_64-w64-mingw32-windres --preprocessor=\"$CPP -xc\" -DRC_INVOKED"
+
+# Disable stripping binaries and let lld strip them instead.
+# Binutils corrupt clang-built binaries when stripping.
+# This works around the problem until we have a better solution.
+OBJCOPY=/bin/true
+STRIP=/bin/true
+LDFLAGS="-Wl,-s"
+
+# We want to make sure we use binutils and other binaries in the tooltool
+# package.
+mk_add_options "export PATH=$TOOLTOOL_DIR/clang/bin:$TOOLTOOL_DIR/mingw32/bin:$TOOLTOOL_DIR/wine/bin:$TOOLTOOL_DIR/upx/bin:$TOOLTOOL_DIR/fxc2/bin:$PATH"
+
+LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOOLTOOL_DIR/mingw32/lib64:$TOOLTOOL_DIR/clang/lib
+mk_add_options "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
+
+# Do not include the visual studio related mozconfigs of course
+
+ac_add_options --with-branding=browser/branding/nightly
+
+. "$topsrcdir/build/mozconfig.common.override"
+. "$topsrcdir/build/mozconfig.cache"
new file mode 100755
--- /dev/null
+++ b/browser/config/mozconfigs/win64/mingwclang-debug
@@ -0,0 +1,4 @@
+. "$topsrcdir/browser/config/mozconfigs/win64/mingwclang"
+
+ac_add_options --enable-debug
+ac_add_options --disable-optimize
\ No newline at end of file
--- a/taskcluster/ci/build/windows.yml
+++ b/taskcluster/ci/build/windows.yml
@@ -763,8 +763,75 @@ win64-mingw32/debug:
     toolchains:
         - mingw32-rust
         - linux64-upx
         - linux64-wine
         - linux64-sccache
         - linux64-mingw32-gcc-x64
         - linux64-mingw32-nsis
         - linux64-mingw32-fxc2
+
+win64-mingwclang/opt:
+    description: "Win64 MinGW-Clang Opt"
+    index:
+        product: firefox
+        job-name: win64-mingwclang-opt
+    treeherder:
+        platform: windows-mingw32/all
+        symbol: WMC64(Bo)
+        tier: 2
+    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+    worker:
+        docker-image: {in-tree: mingw32-build}
+        max-run-time: 7200
+        env:
+            PERFHERDER_EXTRA_OPTIONS: "opt 64 clang"
+    run:
+        using: mozharness
+        actions: [build]
+        script: mozharness/scripts/fx_desktop_build.py
+        config:
+            - builds/releng_base_firefox.py
+            - builds/releng_base_windows_64_mingw_builds.py
+            - builds/releng_sub_windows_configs/64_mingwclang.py
+        need-xvfb: false
+    toolchains:
+        - mingw32-rust
+        - linux64-upx
+        - linux64-wine
+        - linux64-sccache
+        - linux64-clang-7-mingw
+        - linux64-mingw32-nsis
+        - linux64-mingw32-fxc2
+
+win64-mingwclang/debug:
+    description: "Win64 MinGW-Clang Debug"
+    index:
+        product: firefox
+        job-name: win64-mingwclang-debug
+    treeherder:
+        platform: windows-mingw32/all
+        symbol: WMC64(Bd)
+        tier: 2
+    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+    worker:
+        docker-image: {in-tree: mingw32-build}
+        max-run-time: 72000
+        env:
+            PERFHERDER_EXTRA_OPTIONS: "debug 64 clang"
+    run:
+        using: mozharness
+        actions: [build]
+        script: mozharness/scripts/fx_desktop_build.py
+        config:
+            - builds/releng_base_firefox.py
+            - builds/releng_base_windows_64_mingw_builds.py
+            - builds/releng_sub_windows_configs/64_mingwclang.py
+            - builds/releng_sub_windows_configs/64_mingwclang_debug.py
+        need-xvfb: false
+    toolchains:
+        - mingw32-rust
+        - linux64-upx
+        - linux64-wine
+        - linux64-sccache
+        - linux64-clang-7-mingw
+        - linux64-mingw32-nsis
+        - linux64-mingw32-fxc2
--- a/taskcluster/ci/config.yml
+++ b/taskcluster/ci/config.yml
@@ -46,16 +46,17 @@ treeherder:
         'I': 'Docker Image Builds'
         'TL': 'Toolchain builds for Linux 64-bits'
         'TM': 'Toolchain builds for OSX'
         'TMW': 'Toolchain builds for Windows MinGW'
         'TW32': 'Toolchain builds for Windows 32-bits'
         'TW64': 'Toolchain builds for Windows 64-bits'
         'WM32': 'MinGW builds for Windows 32-bits'
         'WM64': 'MinGW builds for Windows 64-bits'
+        'WMC64': 'MinGW-Clang builds for Windows 64-bits'
         'Searchfox': 'Searchfox builds'
         'SM': 'Spidermonkey builds'
         'pub': 'APK publishing'
         'p': 'Partial generation'
         'ps': 'Partials signing'
         'Rel': 'Release promotion'
         'Snap': 'Snap image generation'
         'langpack': 'Langpack sigatures and uploads'
new file mode 100755
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/64_mingwclang.py
@@ -0,0 +1,7 @@
+config = {
+    'base_name': 'WINNT_5.2_MINGWCLANG_%(branch)s',
+    'platform': 'win64-mingwclang',
+    'stage_platform': 'win64-mingwclang',
+    'mozconfig_platform': 'win64',
+    'mozconfig_variant': 'mingwclang',
+}
new file mode 100755
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/64_mingwclang_debug.py
@@ -0,0 +1,3 @@
+config = {
+    'mozconfig_variant': 'mingwclang-debug',
+}