Bug 1418141: Combine taskcluster win32 mozharness configs. draft
authorTom Prince <mozilla@hocat.ca>
Tue, 31 Oct 2017 17:17:23 -0600
changeset 703807 428d28569f4177a7ddd1aa68605d76e3e80b2e31
parent 703806 5ade8401ba5f4498be42b8a2a9cf6973ab07adec
child 703808 a2c3dc56bbd60e91962de7175ae9dcd9f533c4ba
push id90981
push userbmo:mozilla@hocat.ca
push dateMon, 27 Nov 2017 20:23:23 +0000
bugs1418141
milestone59.0a1
Bug 1418141: Combine taskcluster win32 mozharness configs. MozReview-Commit-ID: ICMryQvdHCz
taskcluster/ci/build/windows.yml
taskcluster/ci/static-analysis/kind.yml
testing/mozharness/configs/builds/taskcluster_base_win32.py
testing/mozharness/configs/builds/taskcluster_firefox_win32_clang.py
testing/mozharness/configs/builds/taskcluster_firefox_win32_clang_debug.py
testing/mozharness/configs/builds/taskcluster_firefox_win32_noopt_debug.py
testing/mozharness/configs/builds/taskcluster_firefox_win32_rusttests_opt.py
testing/mozharness/configs/builds/taskcluster_firefox_windows_32_addondevel.py
testing/mozharness/configs/builds/taskcluster_firefox_windows_32_debug.py
testing/mozharness/configs/builds/taskcluster_firefox_windows_32_opt.py
testing/mozharness/configs/builds/taskcluster_sub_win32/addondevel.py
testing/mozharness/configs/builds/taskcluster_sub_win32/clang.py
testing/mozharness/configs/builds/taskcluster_sub_win32/clang_debug.py
testing/mozharness/configs/builds/taskcluster_sub_win32/debug.py
testing/mozharness/configs/builds/taskcluster_sub_win32/noopt_debug.py
testing/mozharness/configs/builds/taskcluster_sub_win32/opt.py
testing/mozharness/configs/builds/taskcluster_sub_win32/rusttests_opt.py
testing/mozharness/mozharness/base/config.py
--- a/taskcluster/ci/build/windows.yml
+++ b/taskcluster/ci/build/windows.yml
@@ -9,20 +9,22 @@ win32/debug:
         tier: 1
     worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
     worker:
         max-run-time: 7200
         env:
             TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
     run:
         using: mozharness
+        options: [append-env-variables-from-configs]
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/releng_base_firefox.py
-            - builds/taskcluster_firefox_windows_32_debug.py
+            - builds/taskcluster_base_win32.py
+            - builds/taskcluster_sub_win32/debug.py
     toolchains:
         - win32-clang-cl
         - win32-rust
         - win64-sccache
 
 win32/opt:
     description: "Win32 Opt"
     index:
@@ -34,20 +36,22 @@ win32/opt:
         tier: 1
     worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
     worker:
         max-run-time: 7200
         env:
             TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
     run:
         using: mozharness
+        options: [append-env-variables-from-configs]
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/releng_base_firefox.py
-            - builds/taskcluster_firefox_windows_32_opt.py
+            - builds/taskcluster_base_win32.py
+            - builds/taskcluster_sub_win32/opt.py
     toolchains:
         - win32-clang-cl
         - win32-rust
         - win64-sccache
 
 win32-dmd/opt:
     description: "Win32 DMD Opt"
     index:
@@ -59,20 +63,22 @@ win32-dmd/opt:
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
     worker:
         max-run-time: 7200
         env:
             TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
     run:
         using: mozharness
+        options: [append-env-variables-from-configs]
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/releng_base_firefox.py
-            - builds/taskcluster_firefox_windows_32_opt.py
+            - builds/taskcluster_base_win32.py
+            - builds/taskcluster_sub_win32/opt.py
         custom-build-variant-cfg: dmd
     run-on-projects: []
     toolchains:
         - win32-clang-cl
         - win32-rust
         - win64-sccache
 
 win32/pgo:
@@ -86,21 +92,22 @@ win32/pgo:
         tier: 1
     worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
     worker:
         max-run-time: 9000
         env:
             TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
     run:
         using: mozharness
-        options: [enable-pgo]
+        options: [enable-pgo, append-env-variables-from-configs]
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/releng_base_firefox.py
-            - builds/taskcluster_firefox_windows_32_opt.py
+            - builds/taskcluster_base_win32.py
+            - builds/taskcluster_sub_win32/opt.py
     toolchains:
         - win32-clang-cl
         - win32-rust
         - win64-sccache
 
 win64/debug:
     description: "Win64 Debug"
     index:
@@ -193,20 +200,22 @@ win32-nightly/opt:
     worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
     worker:
         max-run-time: 7200
         env:
             TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
     run:
         using: mozharness
         actions: [clone-tools, build, check-test, update]
+        options: [append-env-variables-from-configs]
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/releng_base_firefox.py
-            - builds/taskcluster_firefox_windows_32_opt.py
+            - builds/taskcluster_base_win32.py
+            - builds/taskcluster_sub_win32/opt.py
             - disable_signing.py
             - taskcluster_nightly.py
     toolchains:
         - win32-clang-cl
         - win32-rust
         - win64-sccache
 
 win64-nightly/opt:
@@ -277,20 +286,22 @@ win32-add-on-devel/opt:
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
     worker:
         max-run-time: 10800
         env:
             TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
     run:
         using: mozharness
+        options: [append-env-variables-from-configs]
         script: "mozharness/scripts/fx_desktop_build.py"
         config:
             - builds/releng_base_firefox.py
-            - builds/taskcluster_firefox_windows_32_addondevel.py
+            - builds/taskcluster_base_win32.py
+            - builds/taskcluster_sub_win32/addondevel.py
             - balrog/production.py
     run-on-projects: ['mozilla-beta', 'mozilla-release', 'mozilla-esr45']
     toolchains:
         - win32-clang-cl
         - win32-rust
         - win64-sccache
 
 win64-add-on-devel/opt:
@@ -357,20 +368,22 @@ win32-noopt/debug:
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
     worker:
         max-run-time: 7200
         env:
             TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
     run:
         using: mozharness
+        options: [append-env-variables-from-configs]
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/releng_base_firefox.py
-            - builds/taskcluster_firefox_win32_noopt_debug.py
+            - builds/taskcluster_base_win32.py
+            - builds/taskcluster_sub_win32/noopt_debug.py
     run-on-projects: ['trunk', 'try']
     toolchains:
         - win32-clang-cl
         - win32-rust
         - win64-sccache
 
 win32-rusttests/opt:
     description: "Win32 Opt Rust tests"
@@ -383,20 +396,22 @@ win32-rusttests/opt:
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
     worker:
         max-run-time: 7200
         env:
             TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
     run:
         using: mozharness
+        options: [append-env-variables-from-configs]
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/releng_base_firefox.py
-            - builds/taskcluster_firefox_win32_rusttests_opt.py
+            - builds/taskcluster_base_win32.py
+            - builds/taskcluster_sub_win32/rusttests_opt.py
     run-on-projects: ['trunk', 'try']
     toolchains:
         - win32-clang-cl
         - win32-rust
         - win64-sccache
 
 win64-rusttests/opt:
     description: "Win64 Opt Rust tests"
@@ -519,19 +534,21 @@ win32-devedition-nightly/opt:
     worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
     worker:
         max-run-time: 7200
         env:
             TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
     run:
         using: mozharness
         script: mozharness/scripts/fx_desktop_build.py
+        options: [enable-pgo, append-env-variables-from-configs]
         config:
             - builds/releng_base_firefox.py
-            - builds/taskcluster_firefox_windows_32_opt.py
+            - builds/taskcluster_base_win32.py
+            - builds/taskcluster_sub_win32/opt.py
             - disable_signing.py
             - taskcluster_nightly.py
         custom-build-variant-cfg: devedition
     run-on-projects: ['mozilla-beta']
     toolchains:
         - win32-clang-cl
         - win32-rust
         - win64-sccache
--- a/taskcluster/ci/static-analysis/kind.yml
+++ b/taskcluster/ci/static-analysis/kind.yml
@@ -87,20 +87,22 @@ jobs:
             tier: 1
         worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
         worker:
             max-run-time: 7200
             env:
                 TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
         run:
             using: mozharness
+            options: [append-env-variables-from-configs]
             script: mozharness/scripts/fx_desktop_build.py
             config:
                 - builds/releng_base_firefox.py
-                - builds/taskcluster_firefox_win32_clang_debug.py
+                - builds/taskcluster_base_win32.py
+                - builds/taskcluster_sub_win32/clang_debug.py
         toolchains:
             - win32-clang-cl
             - win32-rust
             - win64-sccache
 
     win32-st-an/opt:
         description: "Win32 Static Analysis Opt (clang-cl)"
         index:
@@ -112,20 +114,22 @@ jobs:
             tier: 1
         worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
         worker:
             max-run-time: 7200
             env:
                 TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
         run:
             using: mozharness
+            options: [append-env-variables-from-configs]
             script: mozharness/scripts/fx_desktop_build.py
             config:
                 - builds/releng_base_firefox.py
-                - builds/taskcluster_firefox_win32_clang.py
+                - builds/taskcluster_base_win32.py
+                - builds/taskcluster_sub_win32/clang.py
         toolchains:
             - win32-clang-cl
             - win32-rust
             - win64-sccache
 
     win64-st-an/debug:
         description: "Win64 Static Analysis Debug (clang-cl)"
         index:
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_base_win32.py
@@ -0,0 +1,49 @@
+import os
+import sys
+
+config = {
+    'default_actions': [
+        'clone-tools',
+        'build',
+        'check-test',
+    ],
+    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
+    # decides whether we want to use moz_sign_cmd in env
+    'enable_signing': True,
+    'vcs_share_base': os.path.join('y:', os.sep, 'hg-shared'),
+    'tooltool_script': [
+      sys.executable,
+      os.path.join(os.environ['MOZILLABUILD'], 'tooltool.py')
+    ],
+    'tooltool_bootstrap': 'setup.sh',
+    'enable_count_ctors': False,
+    'max_build_output_timeout': 60 * 80,
+
+    ###### 32 bit specific ######
+    'base_name': 'WINNT_5.2_%(branch)s',
+    'platform': 'win32',
+    'publish_nightly_en_US_routes': True,
+    'env': {
+        'BINSCOPE': os.path.join(
+            os.environ['ProgramFiles(x86)'], 'Microsoft', 'SDL BinScope', 'BinScope.exe'
+        ),
+        'HG_SHARE_BASE_DIR': os.path.join('y:', os.sep, 'hg-shared'),
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'MOZ_OBJDIR': '%(abs_obj_dir)s',
+        'PDBSTR_PATH': 'C:/Program Files (x86)/Windows Kits/10/Debuggers/x86/srcsrv/pdbstr.exe',
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': 'c:/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/c/builds',
+        'MSYSTEM': 'MINGW32',
+    },
+    'upload_env': {
+        'UPLOAD_HOST': 'localhost',
+        'UPLOAD_PATH': os.path.join(os.getcwd(), 'public', 'build'),
+    },
+    "check_test_env": {
+        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s\\breakpad\\win32\\minidump_stackwalk.exe',
+        'MINIDUMP_SAVE_PATH': os.path.join(os.getcwd(), 'public', 'build'),
+    },
+    'mozconfig_platform': 'win32',
+}
deleted file mode 100644
--- a/testing/mozharness/configs/builds/taskcluster_firefox_win32_clang.py
+++ /dev/null
@@ -1,71 +0,0 @@
-import os
-import sys
-
-config = {
-    #########################################################################
-    ######## WINDOWS GENERIC CONFIG KEYS/VAlUES
-    # if you are updating this with custom 32 bit keys/values please add them
-    # below under the '32 bit specific' code block otherwise, update in this
-    # code block and also make sure this is synced between:
-    # - taskcluster_firefox_win32_debug
-    # - taskcluster_firefox_win32_opt
-    # - taskcluster_firefox_win64_debug
-    # - taskcluster_firefox_win64_opt
-    # - taskcluster_firefox_win32_clang
-    # - taskcluster_firefox_win32_clang_debug
-    # - taskcluster_firefox_win64_clang
-    # - taskcluster_firefox_win64_clang_debug
-
-    'default_actions': [
-        'clone-tools',
-        'build',
-        'check-test',
-    ],
-    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
-    # decides whether we want to use moz_sign_cmd in env
-    'enable_signing': True,
-    'vcs_share_base': os.path.join('y:', os.sep, 'hg-shared'),
-    'tooltool_script': [
-      sys.executable,
-      os.path.join(os.environ['MOZILLABUILD'], 'tooltool.py')
-    ],
-    'tooltool_bootstrap': 'setup.sh',
-    'enable_count_ctors': False,
-    'max_build_output_timeout': 60 * 80,
-    'perfherder_extra_options': ['static-analysis'],
-    #########################################################################
-
-
-     #########################################################################
-     ###### 32 bit specific ######
-    'base_name': 'WINNT_5.2_%(branch)s',
-    'platform': 'win32',
-    'stage_platform': 'win32-st-an',
-    'publish_nightly_en_US_routes': True,
-    'env': {
-        'BINSCOPE': os.path.join(
-            os.environ['ProgramFiles(x86)'], 'Microsoft', 'SDL BinScope', 'BinScope.exe'
-        ),
-        'HG_SHARE_BASE_DIR': os.path.join('y:', os.sep, 'hg-shared'),
-        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
-        'MOZ_CRASHREPORTER_NO_REPORT': '1',
-        'MOZ_OBJDIR': '%(abs_obj_dir)s',
-        'PDBSTR_PATH': 'C:/Program Files (x86)/Windows Kits/10/Debuggers/x86/srcsrv/pdbstr.exe',
-        'TINDERBOX_OUTPUT': '1',
-        'TOOLTOOL_CACHE': 'c:/builds/tooltool_cache',
-        'TOOLTOOL_HOME': '/c/builds',
-        'MSYSTEM': 'MINGW32',
-    },
-    'upload_env': {
-        'UPLOAD_HOST': 'localhost',
-        'UPLOAD_PATH': os.path.join(os.getcwd(), 'public', 'build'),
-    },
-    "check_test_env": {
-        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s\\breakpad\\win32\\minidump_stackwalk.exe',
-        'MINIDUMP_SAVE_PATH': os.path.join(os.getcwd(), 'public', 'build'),
-    },
-    'mozconfig_platform': 'win32',
-    'mozconfig_variant': 'clang',
-    'artifact_flag_build_variant_in_try': None,
-    #########################################################################
-}
deleted file mode 100644
--- a/testing/mozharness/configs/builds/taskcluster_firefox_win32_clang_debug.py
+++ /dev/null
@@ -1,73 +0,0 @@
-import os
-import sys
-
-config = {
-    #########################################################################
-    ######## WINDOWS GENERIC CONFIG KEYS/VAlUES
-    # if you are updating this with custom 32 bit keys/values please add them
-    # below under the '32 bit specific' code block otherwise, update in this
-    # code block and also make sure this is synced between:
-    # - taskcluster_firefox_win32_debug
-    # - taskcluster_firefox_win32_opt
-    # - taskcluster_firefox_win64_debug
-    # - taskcluster_firefox_win64_opt
-    # - taskcluster_firefox_win32_clang
-    # - taskcluster_firefox_win32_clang_debug
-    # - taskcluster_firefox_win64_clang
-    # - taskcluster_firefox_win64_clang_debug
-
-    'default_actions': [
-        'clone-tools',
-        'build',
-        'check-test',
-    ],
-    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
-    # decides whether we want to use moz_sign_cmd in env
-    'enable_signing': True,
-    'vcs_share_base': os.path.join('y:', os.sep, 'hg-shared'),
-    'tooltool_script': [
-      sys.executable,
-      os.path.join(os.environ['MOZILLABUILD'], 'tooltool.py')
-    ],
-    'tooltool_bootstrap': 'setup.sh',
-    'enable_count_ctors': False,
-    'max_build_output_timeout': 60 * 80,
-    'perfherder_extra_options': ['static-analysis'],
-    #########################################################################
-
-
-     #########################################################################
-     ###### 32 bit specific ######
-    'base_name': 'WINNT_5.2_%(branch)s',
-    'platform': 'win32',
-    'stage_platform': 'win32-st-an-debug',
-    'debug_build': True,
-    'publish_nightly_en_US_routes': True,
-    'env': {
-        'BINSCOPE': os.path.join(
-            os.environ['ProgramFiles(x86)'], 'Microsoft', 'SDL BinScope', 'BinScope.exe'
-        ),
-        'HG_SHARE_BASE_DIR': os.path.join('y:', os.sep, 'hg-shared'),
-        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
-        'MOZ_CRASHREPORTER_NO_REPORT': '1',
-        'MOZ_OBJDIR': '%(abs_obj_dir)s',
-        'PDBSTR_PATH': 'C:/Program Files (x86)/Windows Kits/10/Debuggers/x86/srcsrv/pdbstr.exe',
-        'TINDERBOX_OUTPUT': '1',
-        'TOOLTOOL_CACHE': 'c:/builds/tooltool_cache',
-        'TOOLTOOL_HOME': '/c/builds',
-        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
-        'MSYSTEM': 'MINGW32',
-    },
-    'upload_env': {
-        'UPLOAD_HOST': 'localhost',
-        'UPLOAD_PATH': os.path.join(os.getcwd(), 'public', 'build'),
-    },
-    "check_test_env": {
-        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s\\breakpad\\win32\\minidump_stackwalk.exe',
-        'MINIDUMP_SAVE_PATH': os.path.join(os.getcwd(), 'public', 'build'),
-    },
-    'mozconfig_platform': 'win32',
-    'mozconfig_variant': 'clang-debug',
-    'artifact_flag_build_variant_in_try': None,
-    #########################################################################
-}
deleted file mode 100644
--- a/testing/mozharness/configs/builds/taskcluster_firefox_win32_noopt_debug.py
+++ /dev/null
@@ -1,74 +0,0 @@
-import os
-import sys
-
-config = {
-    #########################################################################
-    ######## WINDOWS GENERIC CONFIG KEYS/VAlUES
-    # if you are updating this with custom 32 bit keys/values please add them
-    # below under the '32 bit specific' code block otherwise, update in this
-    # code block and also make sure this is synced between:
-    # - taskcluster_firefox_win32_debug
-    # - taskcluster_firefox_win32_opt
-    # - taskcluster_firefox_win64_debug
-    # - taskcluster_firefox_win64_opt
-    # - taskcluster_firefox_win32_clang
-    # - taskcluster_firefox_win32_clang_debug
-    # - taskcluster_firefox_win64_clang
-    # - taskcluster_firefox_win64_clang_debug
-    # - taskcluster_firefox_win32_noopt_debug
-    # - taskcluster_firefox_win64_noopt_debug
-
-    'default_actions': [
-        'clone-tools',
-        'build',
-        'check-test',
-    ],
-    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
-    # decides whether we want to use moz_sign_cmd in env
-    'enable_signing': True,
-    'vcs_share_base': os.path.join('y:', os.sep, 'hg-shared'),
-    'tooltool_script': [
-      sys.executable,
-      os.path.join(os.environ['MOZILLABUILD'], 'tooltool.py')
-    ],
-    'tooltool_bootstrap': 'setup.sh',
-    'enable_count_ctors': False,
-    'max_build_output_timeout': 60 * 80,
-    #########################################################################
-
-
-     #########################################################################
-     ###### 32 bit specific ######
-    'base_name': 'WINNT_5.2_%(branch)s',
-    'platform': 'win32',
-    'stage_platform': 'win32-noopt-debug',
-    'debug_build': True,
-    'publish_nightly_en_US_routes': True,
-    'env': {
-        'BINSCOPE': os.path.join(
-            os.environ['ProgramFiles(x86)'], 'Microsoft', 'SDL BinScope', 'BinScope.exe'
-        ),
-        'HG_SHARE_BASE_DIR': os.path.join('y:', os.sep, 'hg-shared'),
-        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
-        'MOZ_CRASHREPORTER_NO_REPORT': '1',
-        'MOZ_OBJDIR': '%(abs_obj_dir)s',
-        'PDBSTR_PATH': 'C:/Program Files (x86)/Windows Kits/10/Debuggers/x86/srcsrv/pdbstr.exe',
-        'TINDERBOX_OUTPUT': '1',
-        'TOOLTOOL_CACHE': 'c:/builds/tooltool_cache',
-        'TOOLTOOL_HOME': '/c/builds',
-        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
-        'MSYSTEM': 'MINGW32',
-    },
-    'upload_env': {
-        'UPLOAD_HOST': 'localhost',
-        'UPLOAD_PATH': os.path.join(os.getcwd(), 'public', 'build'),
-    },
-    "check_test_env": {
-        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s\\breakpad\\win32\\minidump_stackwalk.exe',
-        'MINIDUMP_SAVE_PATH': os.path.join(os.getcwd(), 'public', 'build'),
-    },
-    'mozconfig_platform': 'win32',
-    'mozconfig_variant': 'noopt-debug',
-    'artifact_flag_build_variant_in_try': None,
-    #########################################################################
-}
deleted file mode 100644
--- a/testing/mozharness/configs/builds/taskcluster_firefox_win32_rusttests_opt.py
+++ /dev/null
@@ -1,70 +0,0 @@
-import os
-import sys
-
-config = {
-    #########################################################################
-    ######## WINDOWS GENERIC CONFIG KEYS/VAlUES
-    # if you are updating this with custom 32 bit keys/values please add them
-    # below under the '32 bit specific' code block otherwise, update in this
-    # code block and also make sure this is synced between:
-    # - taskcluster_firefox_win32_debug
-    # - taskcluster_firefox_win32_opt
-    # - taskcluster_firefox_win64_debug
-    # - taskcluster_firefox_win64_opt
-    # - taskcluster_firefox_win32_clang
-    # - taskcluster_firefox_win32_clang_debug
-    # - taskcluster_firefox_win64_clang
-    # - taskcluster_firefox_win64_clang_debug
-
-    'default_actions': [
-        'clone-tools',
-        'build',
-        'check-test',
-    ],
-    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
-    # decides whether we want to use moz_sign_cmd in env
-    'enable_signing': True,
-    'vcs_share_base': os.path.join('y:', os.sep, 'hg-shared'),
-    'tooltool_script': [
-      sys.executable,
-      os.path.join(os.environ['MOZILLABUILD'], 'tooltool.py')
-    ],
-    'tooltool_bootstrap': 'setup.sh',
-    'enable_count_ctors': False,
-    'max_build_output_timeout': 60 * 80,
-    #########################################################################
-
-
-     #########################################################################
-     ###### 32 bit specific ######
-    'base_name': 'WINNT_5.2_%(branch)s',
-    'platform': 'win32',
-    'stage_platform': 'win32-rusttests',
-    'publish_nightly_en_US_routes': True,
-    'env': {
-        'BINSCOPE': os.path.join(
-            os.environ['ProgramFiles(x86)'], 'Microsoft', 'SDL BinScope', 'BinScope.exe'
-        ),
-        'HG_SHARE_BASE_DIR': os.path.join('y:', os.sep, 'hg-shared'),
-        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
-        'MOZ_CRASHREPORTER_NO_REPORT': '1',
-        'MOZ_OBJDIR': '%(abs_obj_dir)s',
-        'PDBSTR_PATH': 'C:/Program Files (x86)/Windows Kits/10/Debuggers/x86/srcsrv/pdbstr.exe',
-        'TINDERBOX_OUTPUT': '1',
-        'TOOLTOOL_CACHE': 'c:/builds/tooltool_cache',
-        'TOOLTOOL_HOME': '/c/builds',
-        'MSYSTEM': 'MINGW32',
-    },
-    'upload_env': {
-        'UPLOAD_HOST': 'localhost',
-        'UPLOAD_PATH': os.path.join(os.getcwd(), 'public', 'build'),
-    },
-    "check_test_env": {
-        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s\\breakpad\\win32\\minidump_stackwalk.exe',
-        'MINIDUMP_SAVE_PATH': os.path.join(os.getcwd(), 'public', 'build'),
-    },
-    'mozconfig_platform': 'win32',
-    'mozconfig_variant': 'rusttests',
-    'artifact_flag_build_variant_in_try': None,
-    #########################################################################
-}
deleted file mode 100644
--- a/testing/mozharness/configs/builds/taskcluster_firefox_windows_32_addondevel.py
+++ /dev/null
@@ -1,69 +0,0 @@
-import os
-import sys
-
-config = {
-    #########################################################################
-    ######## WINDOWS GENERIC CONFIG KEYS/VAlUES
-    # if you are updating this with custom 32 bit keys/values please add them
-    # below under the '32 bit specific' code block otherwise, update in this
-    # code block and also make sure this is synced between:
-    # - taskcluster_firefox_win32_debug
-    # - taskcluster_firefox_win32_opt
-    # - taskcluster_firefox_win64_debug
-    # - taskcluster_firefox_win64_opt
-    # - taskcluster_firefox_win32_clang
-    # - taskcluster_firefox_win32_clang_debug
-    # - taskcluster_firefox_win64_clang
-    # - taskcluster_firefox_win64_clang_debug
-
-    'default_actions': [
-        'clone-tools',
-        'build',
-        'check-test',
-    ],
-    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
-    # decides whether we want to use moz_sign_cmd in env
-    'enable_signing': False,
-    'vcs_share_base': os.path.join('y:', os.sep, 'hg-shared'),
-    'tooltool_script': [
-      sys.executable,
-      os.path.join(os.environ['MOZILLABUILD'], 'tooltool.py')
-    ],
-    'tooltool_bootstrap': 'setup.sh',
-    'enable_count_ctors': False,
-    'max_build_output_timeout': 60 * 80,
-    #########################################################################
-
-
-     #########################################################################
-     ###### 32 bit specific ######
-    'base_name': 'WINNT 5.2 add-on-devel %(branch)s',
-    'platform': 'win32',
-    'stage_platform': 'win32-add-on-devel',
-    'publish_nightly_en_US_routes': False,
-    'env': {
-        'BINSCOPE': os.path.join(
-            os.environ['ProgramFiles(x86)'], 'Microsoft', 'SDL BinScope', 'BinScope.exe'
-        ),
-        'HG_SHARE_BASE_DIR': os.path.join('y:', os.sep, 'hg-shared'),
-        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
-        'MOZ_CRASHREPORTER_NO_REPORT': '1',
-        'MOZ_OBJDIR': '%(abs_obj_dir)s',
-        'PDBSTR_PATH': 'C:/Program Files (x86)/Windows Kits/10/Debuggers/x86/srcsrv/pdbstr.exe',
-        'TINDERBOX_OUTPUT': '1',
-        'TOOLTOOL_CACHE': 'c:/builds/tooltool_cache',
-        'TOOLTOOL_HOME': '/c/builds',
-        'MSYSTEM': 'MINGW32',
-    },
-    'upload_env': {
-        'UPLOAD_HOST': 'localhost',
-        'UPLOAD_PATH': os.path.join(os.getcwd(), 'public', 'build'),
-    },
-    "check_test_env": {
-        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s\\breakpad\\win32\\minidump_stackwalk.exe',
-        'MINIDUMP_SAVE_PATH': os.path.join(os.getcwd(), 'public', 'build'),
-    },
-    'mozconfig_platform': '32',
-    'mozconfig_variant': 'add-on-devel',
-    #########################################################################
-}
deleted file mode 100644
--- a/testing/mozharness/configs/builds/taskcluster_firefox_windows_32_debug.py
+++ /dev/null
@@ -1,71 +0,0 @@
-import os
-import sys
-
-config = {
-    #########################################################################
-    ######## WINDOWS GENERIC CONFIG KEYS/VAlUES
-    # if you are updating this with custom 32 bit keys/values please add them
-    # below under the '32 bit specific' code block otherwise, update in this
-    # code block and also make sure this is synced between:
-    # - taskcluster_firefox_win32_debug
-    # - taskcluster_firefox_win32_opt
-    # - taskcluster_firefox_win64_debug
-    # - taskcluster_firefox_win64_opt
-    # - taskcluster_firefox_win32_clang
-    # - taskcluster_firefox_win32_clang_debug
-    # - taskcluster_firefox_win64_clang
-    # - taskcluster_firefox_win64_clang_debug
-
-    'default_actions': [
-        'clone-tools',
-        'build',
-        'check-test',
-    ],
-    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
-    # decides whether we want to use moz_sign_cmd in env
-    'enable_signing': True,
-    'vcs_share_base': os.path.join('y:', os.sep, 'hg-shared'),
-    'tooltool_script': [
-      sys.executable,
-      os.path.join(os.environ['MOZILLABUILD'], 'tooltool.py')
-    ],
-    'tooltool_bootstrap': 'setup.sh',
-    'enable_count_ctors': False,
-    'max_build_output_timeout': 60 * 80,
-    #########################################################################
-
-
-     #########################################################################
-     ###### 32 bit specific ######
-    'base_name': 'WINNT_5.2_%(branch)s',
-    'platform': 'win32',
-    'stage_platform': 'win32-debug',
-    'debug_build': True,
-    'publish_nightly_en_US_routes': True,
-    'env': {
-        'BINSCOPE': os.path.join(
-            os.environ['ProgramFiles(x86)'], 'Microsoft', 'SDL BinScope', 'BinScope.exe'
-        ),
-        'HG_SHARE_BASE_DIR': os.path.join('y:', os.sep, 'hg-shared'),
-        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
-        'MOZ_CRASHREPORTER_NO_REPORT': '1',
-        'MOZ_OBJDIR': '%(abs_obj_dir)s',
-        'PDBSTR_PATH': 'C:/Program Files (x86)/Windows Kits/10/Debuggers/x86/srcsrv/pdbstr.exe',
-        'TINDERBOX_OUTPUT': '1',
-        'TOOLTOOL_CACHE': 'c:/builds/tooltool_cache',
-        'TOOLTOOL_HOME': '/c/builds',
-        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
-        'MSYSTEM': 'MINGW32',
-    },
-    'upload_env': {
-        'UPLOAD_HOST': 'localhost',
-        'UPLOAD_PATH': os.path.join(os.getcwd(), 'public', 'build'),
-    },
-    "check_test_env": {
-        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s\\breakpad\\win32\\minidump_stackwalk.exe',
-        'MINIDUMP_SAVE_PATH': os.path.join(os.getcwd(), 'public', 'build'),
-    },
-    'mozconfig_platform': 'win32',
-    'mozconfig_variant': 'debug',
-    #########################################################################
-}
deleted file mode 100644
--- a/testing/mozharness/configs/builds/taskcluster_firefox_windows_32_opt.py
+++ /dev/null
@@ -1,70 +0,0 @@
-import os
-import sys
-
-config = {
-    #########################################################################
-    ######## WINDOWS GENERIC CONFIG KEYS/VAlUES
-    # if you are updating this with custom 32 bit keys/values please add them
-    # below under the '32 bit specific' code block otherwise, update in this
-    # code block and also make sure this is synced between:
-    # - taskcluster_firefox_win32_debug
-    # - taskcluster_firefox_win32_opt
-    # - taskcluster_firefox_win64_debug
-    # - taskcluster_firefox_win64_opt
-    # - taskcluster_firefox_win32_clang
-    # - taskcluster_firefox_win32_clang_debug
-    # - taskcluster_firefox_win64_clang
-    # - taskcluster_firefox_win64_clang_debug
-
-    'default_actions': [
-        'clone-tools',
-        'build',
-        'check-test',
-        'update',
-    ],
-    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
-    # decides whether we want to use moz_sign_cmd in env
-    'enable_signing': True,
-    'vcs_share_base': os.path.join('y:', os.sep, 'hg-shared'),
-    'tooltool_script': [
-      sys.executable,
-      os.path.join(os.environ['MOZILLABUILD'], 'tooltool.py')
-    ],
-    'tooltool_bootstrap': 'setup.sh',
-    'enable_count_ctors': False,
-    'max_build_output_timeout': 60 * 80,
-    #########################################################################
-
-
-     #########################################################################
-     ###### 32 bit specific ######
-    'base_name': 'WINNT_5.2_%(branch)s',
-    'platform': 'win32',
-    'stage_platform': 'win32',
-    'publish_nightly_en_US_routes': True,
-    'env': {
-        'BINSCOPE': os.path.join(
-            os.environ['ProgramFiles(x86)'], 'Microsoft', 'SDL BinScope', 'BinScope.exe'
-        ),
-        'HG_SHARE_BASE_DIR': os.path.join('y:', os.sep, 'hg-shared'),
-        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
-        'MOZ_CRASHREPORTER_NO_REPORT': '1',
-        'MOZ_OBJDIR': '%(abs_obj_dir)s',
-        'PDBSTR_PATH': 'C:/Program Files (x86)/Windows Kits/10/Debuggers/x86/srcsrv/pdbstr.exe',
-        'TINDERBOX_OUTPUT': '1',
-        'TOOLTOOL_CACHE': 'c:/builds/tooltool_cache',
-        'TOOLTOOL_HOME': '/c/builds',
-        'MSYSTEM': 'MINGW32',
-    },
-    'upload_env': {
-        'UPLOAD_HOST': 'localhost',
-        'UPLOAD_PATH': os.path.join(os.getcwd(), 'public', 'build'),
-    },
-    "check_test_env": {
-        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s\\breakpad\\win32\\minidump_stackwalk.exe',
-        'MINIDUMP_SAVE_PATH': os.path.join(os.getcwd(), 'public', 'build'),
-    },
-    'mozconfig_platform': 'win32',
-    'mozconfig_variant': 'nightly',
-    #########################################################################
-}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win32/addondevel.py
@@ -0,0 +1,8 @@
+config = {
+    # decides whether we want to use moz_sign_cmd in en+
+    'enable_signing': False,
+    'base_name': 'WINNT 5.2 add-on-devel %(branch)s',
+    'stage_platform': 'win32-add-on-devel',
+    'publish_nightly_en_US_routes': False,
+    'mozconfig_variant': 'add-on-devel',
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win32/clang.py
@@ -0,0 +1,6 @@
+config = {
+    'perfherder_extra_options': ['static-analysis'],
+    'stage_platform': 'win32-st-an',
+    'mozconfig_variant': 'clang',
+    'artifact_flag_build_variant_in_try': None,
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win32/clang_debug.py
@@ -0,0 +1,10 @@
+config = {
+    'perfherder_extra_options': ['static-analysis'],
+    'stage_platform': 'win32-st-an-debug',
+    'debug_build': True,
+    'env': {
+        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
+    },
+    'mozconfig_variant': 'clang-debug',
+    'artifact_flag_build_variant_in_try': None,
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win32/debug.py
@@ -0,0 +1,8 @@
+config = {
+    'stage_platform': 'win32-debug',
+    'debug_build': True,
+    'env': {
+        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
+    },
+    'mozconfig_variant': 'debug',
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win32/noopt_debug.py
@@ -0,0 +1,9 @@
+config = {
+    'stage_platform': 'win32-noopt-debug',
+    'debug_build': True,
+    'env': {
+        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
+    },
+    'mozconfig_variant': 'noopt-debug',
+    'artifact_flag_build_variant_in_try': None,
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win32/opt.py
@@ -0,0 +1,10 @@
+config = {
+    'default_actions': [
+        'clone-tools',
+        'build',
+        'check-test',
+        'update',
+    ],
+    'stage_platform': 'win32',
+    'mozconfig_variant': 'nightly',
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win32/rusttests_opt.py
@@ -0,0 +1,5 @@
+config = {
+    'stage_platform': 'win32-rusttests',
+    'mozconfig_variant': 'rusttests',
+    'artifact_flag_build_variant_in_try': None,
+}
--- a/testing/mozharness/mozharness/base/config.py
+++ b/testing/mozharness/mozharness/base/config.py
@@ -303,16 +303,21 @@ class BaseConfig(object):
         self.config_parser.add_option(
             "--dump-config-hierarchy", action="store_true",
             dest="dump_config_hierarchy",
             help="Like --dump-config but will list and dump which config "
                  "files were used making up the config and specify their own "
                  "keys/values that were not overwritten by another cfg -- "
                  "held the highest hierarchy."
         )
+        self.config_parser.add_option(
+            "--append-env-variables-from-configs", action="store_true",
+            dest="append_env_variables_from_configs",
+            help="Merge environment variables from config files."
+        )
 
         # Logging
         log_option_group = OptionGroup(self.config_parser, "Logging")
         log_option_group.add_option(
             "--log-level", action="store",
             type="choice", dest="log_level", default=INFO,
             choices=[DEBUG, INFO, WARNING, ERROR, CRITICAL, FATAL],
             help="Set log level (debug|info|warning|error|critical|fatal)"
@@ -484,17 +489,18 @@ class BaseConfig(object):
             # config file name and its assoctiated dict
             # eg ('builds/branch_specifics.py', {'foo': 'bar'})
             # let's store this to self for things like --interpret-config-files
             self.all_cfg_files_and_dicts.extend(self.get_cfgs_from_files(
                 # append opt_config to allow them to overwrite previous configs
                 options.config_files + options.opt_config_files, options=options
             ))
             config = {}
-            if self.append_env_variables_from_configs:
+            if (self.append_env_variables_from_configs
+                    or options.append_env_variables_from_configs):
                 # We only append values from various configs for the 'env' entry
                 # For everything else we follow the standard behaviour
                 for i, (c_file, c_dict) in enumerate(self.all_cfg_files_and_dicts):
                     for v in c_dict.keys():
                         if v == 'env' and v in config:
                             config[v].update(c_dict[v])
                         else:
                             config[v] = c_dict[v]