summaryrefslogtreecommitdiffstats
path: root/testing/mozharness/configs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--testing/mozharness/configs/android/android_common.py353
-rw-r--r--testing/mozharness/configs/android/android_hw.py28
-rw-r--r--testing/mozharness/configs/android/android_pgo.py21
-rw-r--r--testing/mozharness/configs/android/androidarm_4_3.py39
-rw-r--r--testing/mozharness/configs/android/androidx86_7_0.py28
-rw-r--r--testing/mozharness/configs/android/wrench.py22
-rw-r--r--testing/mozharness/configs/awsy/linux_config.py31
-rw-r--r--testing/mozharness/configs/awsy/macosx_config.py29
-rw-r--r--testing/mozharness/configs/awsy/taskcluster_windows_config.py30
-rw-r--r--testing/mozharness/configs/balrog/production.py35
-rw-r--r--testing/mozharness/configs/balrog/staging.py18
-rw-r--r--testing/mozharness/configs/builds/build_pool_specifics.py14
-rw-r--r--testing/mozharness/configs/builds/releng_base_android_64_builds.py59
-rw-r--r--testing/mozharness/configs/builds/releng_base_firefox.py7
-rw-r--r--testing/mozharness/configs/builds/releng_base_linux_32_builds.py61
-rw-r--r--testing/mozharness/configs/builds/releng_base_linux_64_builds.py60
-rw-r--r--testing/mozharness/configs/builds/releng_base_mac_64_cross_builds.py56
-rw-r--r--testing/mozharness/configs/builds/releng_base_windows_32_mingw_builds.py54
-rw-r--r--testing/mozharness/configs/builds/releng_base_windows_64_mingw_builds.py55
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64.py8
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64_beta.py8
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64_beta_debug.py9
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64_debug.py9
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16.py8
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_beta.py8
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_beta_debug.py9
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_debug.py9
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_debug_ccov.py15
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_debug_searchfox.py12
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_gradle_dependencies.py16
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_partner_sample1.py10
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_profile_generate.py8
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_geckoview_docs.py26
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_x86.py8
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64.py8
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_beta.py8
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_beta_debug.py9
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_debug.py9
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_fuzzing_asan.py8
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_beta.py8
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_beta_debug.py9
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_debug.py9
-rw-r--r--testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_fuzzing_debug.py9
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/32_debug.py27
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/32_rusttests.py29
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/32_rusttests_debug.py29
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_add-on-devel.py25
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan.py31
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_and_debug.py32
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_reporter_tc.py28
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_tc.py26
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_tc_and_debug.py27
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_code_coverage_debug.py26
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_code_coverage_opt.py26
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_debug.py27
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_fuzzing_asan_tc.py28
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_fuzzing_debug.py28
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_fuzzing_tsan_tc.py26
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_noopt_debug.py25
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_rusttests.py28
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_rusttests_debug.py27
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_searchfox_and_debug.py41
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_source.py15
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_stat_and_debug.py38
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_tsan_tc.py26
-rw-r--r--testing/mozharness/configs/builds/releng_sub_linux_configs/64_valgrind.py31
-rw-r--r--testing/mozharness/configs/builds/releng_sub_mac_configs/64_add-on-devel.py26
-rw-r--r--testing/mozharness/configs/builds/releng_sub_mac_configs/64_code_coverage_debug.py27
-rw-r--r--testing/mozharness/configs/builds/releng_sub_mac_configs/64_code_coverage_opt.py26
-rw-r--r--testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug.py27
-rw-r--r--testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug_searchfox.py34
-rw-r--r--testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_fuzzing_asan.py28
-rw-r--r--testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_fuzzing_debug.py29
-rw-r--r--testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_noopt_debug.py27
-rw-r--r--testing/mozharness/configs/builds/releng_sub_mac_configs/64_debug.py33
-rw-r--r--testing/mozharness/configs/builds/releng_sub_mac_configs/64_stat_and_debug.py34
-rw-r--r--testing/mozharness/configs/builds/releng_sub_windows_configs/32_add-on-devel.py29
-rw-r--r--testing/mozharness/configs/builds/releng_sub_windows_configs/32_debug.py30
-rw-r--r--testing/mozharness/configs/builds/releng_sub_windows_configs/32_mingwclang.py9
-rw-r--r--testing/mozharness/configs/builds/releng_sub_windows_configs/32_stat_and_debug.py31
-rw-r--r--testing/mozharness/configs/builds/releng_sub_windows_configs/64_add-on-devel.py28
-rw-r--r--testing/mozharness/configs/builds/releng_sub_windows_configs/64_debug.py29
-rw-r--r--testing/mozharness/configs/builds/releng_sub_windows_configs/64_mingwclang.py9
-rw-r--r--testing/mozharness/configs/builds/taskcluster_base_macosx.py45
-rw-r--r--testing/mozharness/configs/builds/taskcluster_base_win32.py8
-rw-r--r--testing/mozharness/configs/builds/taskcluster_base_win64.py8
-rw-r--r--testing/mozharness/configs/builds/taskcluster_base_windows.py47
-rw-r--r--testing/mozharness/configs/builds/taskcluster_sub_win32/debug.py11
-rw-r--r--testing/mozharness/configs/builds/taskcluster_sub_win32/noopt_debug.py11
-rw-r--r--testing/mozharness/configs/builds/taskcluster_sub_win64/asan_debug.py11
-rw-r--r--testing/mozharness/configs/builds/taskcluster_sub_win64/asan_reporter_opt.py8
-rw-r--r--testing/mozharness/configs/builds/taskcluster_sub_win64/ccov_opt.py10
-rw-r--r--testing/mozharness/configs/builds/taskcluster_sub_win64/debug.py11
-rw-r--r--testing/mozharness/configs/builds/taskcluster_sub_win64/noopt_debug.py11
-rw-r--r--testing/mozharness/configs/builds/taskcluster_sub_win64/plain_opt.py12
-rw-r--r--testing/mozharness/configs/builds/taskcluster_sub_win64/rusttests_opt.py15
-rw-r--r--testing/mozharness/configs/builds/taskcluster_sub_win64/searchfox_debug.py15
-rw-r--r--testing/mozharness/configs/developer_config.py45
-rw-r--r--testing/mozharness/configs/firefox_ui_tests/qa_jenkins.py13
-rw-r--r--testing/mozharness/configs/firefox_ui_tests/releng_release.py31
-rw-r--r--testing/mozharness/configs/firefox_ui_tests/taskcluster.py11
-rw-r--r--testing/mozharness/configs/firefox_ui_tests/taskcluster_mac.py8
-rw-r--r--testing/mozharness/configs/firefox_ui_tests/taskcluster_windows.py19
-rw-r--r--testing/mozharness/configs/l10n_bumper/jamun.py84
-rw-r--r--testing/mozharness/configs/l10n_bumper/mozilla-beta.py88
-rw-r--r--testing/mozharness/configs/l10n_bumper/mozilla-central.py89
-rw-r--r--testing/mozharness/configs/l10n_bumper/mozilla-esr68.py47
-rw-r--r--testing/mozharness/configs/marionette/mac_taskcluster_config.py39
-rw-r--r--testing/mozharness/configs/marionette/prod_config.py68
-rw-r--r--testing/mozharness/configs/marionette/test_config.py29
-rw-r--r--testing/mozharness/configs/marionette/windows_config.py38
-rw-r--r--testing/mozharness/configs/marionette/windows_taskcluster_config.py138
-rw-r--r--testing/mozharness/configs/merge_day/beta_to_release.py33
-rw-r--r--testing/mozharness/configs/merge_day/bump_central.py32
-rw-r--r--testing/mozharness/configs/merge_day/bump_esr.py22
-rw-r--r--testing/mozharness/configs/merge_day/central_to_beta.py56
-rw-r--r--testing/mozharness/configs/merge_day/early_to_late_beta.py11
-rw-r--r--testing/mozharness/configs/merge_day/release_to_esr.py39
-rw-r--r--testing/mozharness/configs/merge_day/staging_beta_migration.py22
-rw-r--r--testing/mozharness/configs/multi_locale/android-mozharness-build.json11
-rw-r--r--testing/mozharness/configs/openh264/linux32.py33
-rw-r--r--testing/mozharness/configs/openh264/linux64.py33
-rw-r--r--testing/mozharness/configs/openh264/macosx64-aarch64.py43
-rw-r--r--testing/mozharness/configs/openh264/macosx64.py43
-rw-r--r--testing/mozharness/configs/openh264/tooltool-manifests/osx.manifest10
-rw-r--r--testing/mozharness/configs/openh264/tooltool-manifests/win.manifest10
-rw-r--r--testing/mozharness/configs/openh264/tooltool-manifests/win64-aarch64.manifest11
-rw-r--r--testing/mozharness/configs/openh264/win32.py52
-rw-r--r--testing/mozharness/configs/openh264/win64-aarch64.py54
-rw-r--r--testing/mozharness/configs/openh264/win64.py52
-rw-r--r--testing/mozharness/configs/partner_repacks/release_mozilla-release_desktop.py19
-rw-r--r--testing/mozharness/configs/partner_repacks/release_mozilla-release_desktop_EME-free.py19
-rw-r--r--testing/mozharness/configs/partner_repacks/staging_release_mozilla-release_desktop.py19
-rw-r--r--testing/mozharness/configs/raptor/android_hw_config.py28
-rw-r--r--testing/mozharness/configs/raptor/linux64_config_taskcluster.py33
-rw-r--r--testing/mozharness/configs/raptor/linux_config.py25
-rw-r--r--testing/mozharness/configs/raptor/mac_config.py28
-rw-r--r--testing/mozharness/configs/raptor/windows_config.py58
-rw-r--r--testing/mozharness/configs/raptor/windows_vm_config.py54
-rw-r--r--testing/mozharness/configs/releases/bouncer_firefox_beta.py120
-rw-r--r--testing/mozharness/configs/releases/bouncer_firefox_devedition.py120
-rw-r--r--testing/mozharness/configs/releases/bouncer_firefox_esr.py134
-rw-r--r--testing/mozharness/configs/releases/bouncer_firefox_nightly.py79
-rw-r--r--testing/mozharness/configs/releases/bouncer_firefox_release.py143
-rw-r--r--testing/mozharness/configs/releases/dev_postrelease_fennec_beta.py24
-rw-r--r--testing/mozharness/configs/releases/dev_postrelease_fennec_release.py26
-rw-r--r--testing/mozharness/configs/releases/dev_postrelease_firefox_beta.py24
-rw-r--r--testing/mozharness/configs/releases/dev_postrelease_firefox_release.py26
-rw-r--r--testing/mozharness/configs/releases/dev_postrelease_firefox_release_birch.py26
-rw-r--r--testing/mozharness/configs/releases/dev_updates_firefox_beta.py42
-rw-r--r--testing/mozharness/configs/releases/dev_updates_firefox_devedition.py45
-rw-r--r--testing/mozharness/configs/releases/dev_updates_firefox_release.py55
-rw-r--r--testing/mozharness/configs/releases/dev_updates_firefox_release_birch.py55
-rw-r--r--testing/mozharness/configs/releases/updates_firefox_beta.py38
-rw-r--r--testing/mozharness/configs/releases/updates_firefox_devedition.py42
-rw-r--r--testing/mozharness/configs/releases/updates_firefox_release.py52
-rw-r--r--testing/mozharness/configs/remove_executables.py9
-rw-r--r--testing/mozharness/configs/repackage/base.py14
-rw-r--r--testing/mozharness/configs/repackage/linux32_signed.py15
-rw-r--r--testing/mozharness/configs/repackage/linux64_signed.py15
-rw-r--r--testing/mozharness/configs/repackage/osx_partner.py13
-rw-r--r--testing/mozharness/configs/repackage/osx_signed.py13
-rw-r--r--testing/mozharness/configs/repackage/win32_partner.py16
-rw-r--r--testing/mozharness/configs/repackage/win32_sfx_stub.py7
-rw-r--r--testing/mozharness/configs/repackage/win32_signed.py16
-rw-r--r--testing/mozharness/configs/repackage/win64-aarch64_sfx_stub.py7
-rw-r--r--testing/mozharness/configs/repackage/win64_partner.py16
-rw-r--r--testing/mozharness/configs/repackage/win64_signed.py16
-rw-r--r--testing/mozharness/configs/servo/mac.py7
-rw-r--r--testing/mozharness/configs/single_locale/devedition.py9
-rw-r--r--testing/mozharness/configs/single_locale/firefox.py9
-rw-r--r--testing/mozharness/configs/single_locale/linux32.py11
-rw-r--r--testing/mozharness/configs/single_locale/linux64.py10
-rw-r--r--testing/mozharness/configs/single_locale/macosx64.py12
-rw-r--r--testing/mozharness/configs/single_locale/tc_android-api-16.py35
-rw-r--r--testing/mozharness/configs/single_locale/tc_common.py11
-rw-r--r--testing/mozharness/configs/single_locale/tc_linux32.py17
-rw-r--r--testing/mozharness/configs/single_locale/tc_linux_common.py17
-rw-r--r--testing/mozharness/configs/single_locale/tc_macosx64.py17
-rw-r--r--testing/mozharness/configs/single_locale/tc_win32.py19
-rw-r--r--testing/mozharness/configs/single_locale/tc_win64.py19
-rw-r--r--testing/mozharness/configs/single_locale/win32.py10
-rw-r--r--testing/mozharness/configs/single_locale/win64-aarch64.py9
-rw-r--r--testing/mozharness/configs/single_locale/win64.py9
-rw-r--r--testing/mozharness/configs/talos/linux64_config_taskcluster.py33
-rw-r--r--testing/mozharness/configs/talos/linux_config.py24
-rw-r--r--testing/mozharness/configs/talos/mac_config.py27
-rw-r--r--testing/mozharness/configs/talos/windows_config.py36
-rw-r--r--testing/mozharness/configs/talos/windows_taskcluster_config.py30
-rw-r--r--testing/mozharness/configs/talos/windows_vm_config.py32
-rw-r--r--testing/mozharness/configs/taskcluster_nightly.py8
-rw-r--r--testing/mozharness/configs/test/example_config1.json5
-rw-r--r--testing/mozharness/configs/test/example_config2.py5
-rw-r--r--testing/mozharness/configs/test/test.illegal_suffix20
-rw-r--r--testing/mozharness/configs/test/test.json20
-rw-r--r--testing/mozharness/configs/test/test.py13
-rw-r--r--testing/mozharness/configs/test/test_malformed.json20
-rw-r--r--testing/mozharness/configs/test/test_malformed.py22
-rw-r--r--testing/mozharness/configs/test/test_optional.py4
-rw-r--r--testing/mozharness/configs/test/test_override.py7
-rw-r--r--testing/mozharness/configs/test/test_override2.py6
-rw-r--r--testing/mozharness/configs/unittests/linux_unittest.py284
-rw-r--r--testing/mozharness/configs/unittests/mac_unittest.py231
-rw-r--r--testing/mozharness/configs/unittests/win_unittest.py323
-rw-r--r--testing/mozharness/configs/web_platform_tests/prod_config.py51
-rw-r--r--testing/mozharness/configs/web_platform_tests/prod_config_android.py26
-rw-r--r--testing/mozharness/configs/web_platform_tests/prod_config_mac.py51
-rw-r--r--testing/mozharness/configs/web_platform_tests/prod_config_windows.py59
-rw-r--r--testing/mozharness/configs/web_platform_tests/prod_config_windows_taskcluster.py124
-rw-r--r--testing/mozharness/configs/web_platform_tests/test_config.py24
-rw-r--r--testing/mozharness/configs/web_platform_tests/test_config_windows.py31
211 files changed, 7107 insertions, 0 deletions
diff --git a/testing/mozharness/configs/android/android_common.py b/testing/mozharness/configs/android/android_common.py
new file mode 100644
index 0000000000..d84282ad58
--- /dev/null
+++ b/testing/mozharness/configs/android/android_common.py
@@ -0,0 +1,353 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Shared/common mozharness configuration for Android unit tests.
+#
+# This configuration should be combined with platform-specific mozharness
+# configuration such as androidx86_7_0.py, android_hw, or similar.
+
+from __future__ import absolute_import
+import os
+
+
+NODEJS_PATH = None
+if "MOZ_FETCHES_DIR" in os.environ:
+ NODEJS_PATH = os.path.join(os.environ["MOZ_FETCHES_DIR"], "node/bin/node")
+
+
+def WebglSuite(name):
+ return {
+ "run_filename": "runtestsremote.py",
+ "testsdir": "mochitest",
+ "options": [
+ "--app=%(app)s",
+ "--remote-webserver=%(remote_webserver)s",
+ "--xre-path=%(xre_path)s",
+ "--utility-path=%(utility_path)s",
+ "--http-port=%(http_port)s",
+ "--ssl-port=%(ssl_port)s",
+ "--certificate-path=%(certs_path)s",
+ "--symbols-path=%(symbols_path)s",
+ "--quiet",
+ "--log-raw=%(raw_log_file)s",
+ "--log-raw-level=%(log_raw_level)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--log-tbpl-level=%(log_tbpl_level)s",
+ "--screenshot-on-fail",
+ "--subsuite=" + name,
+ "--deviceSerial=%(device_serial)s",
+ ],
+ }
+
+
+config = {
+ "default_actions": [
+ "clobber",
+ "setup-avds",
+ "download-and-extract",
+ "create-virtualenv",
+ "start-emulator",
+ "verify-device",
+ "install",
+ "run-tests",
+ ],
+ "tooltool_cache": os.environ.get("TOOLTOOL_CACHE"),
+ "hostutils_manifest_path": "testing/config/tooltool-manifests/linux64/hostutils.manifest",
+ # "log_format": "%(levelname)8s - %(message)s",
+ "log_tbpl_level": "info",
+ "log_raw_level": "info",
+ # To take device screenshots at timed intervals (each time in seconds, relative
+ # to the start of the run-tests step) specify screenshot_times. For example, to
+ # take 4 screenshots at one minute intervals you could specify:
+ # "screenshot_times": [60, 120, 180, 240],
+ "nodejs_path": NODEJS_PATH,
+ "suite_definitions": {
+ "mochitest-plain": {
+ "run_filename": "runtestsremote.py",
+ "testsdir": "mochitest",
+ "options": [
+ "--app=%(app)s",
+ "--remote-webserver=%(remote_webserver)s",
+ "--xre-path=%(xre_path)s",
+ "--utility-path=%(utility_path)s",
+ "--http-port=%(http_port)s",
+ "--ssl-port=%(ssl_port)s",
+ "--certificate-path=%(certs_path)s",
+ "--symbols-path=%(symbols_path)s",
+ "--quiet",
+ "--log-raw=%(raw_log_file)s",
+ "--log-raw-level=%(log_raw_level)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--log-tbpl-level=%(log_tbpl_level)s",
+ "--extra-profile-file=fonts",
+ "--extra-profile-file=hyphenation",
+ "--screenshot-on-fail",
+ "--deviceSerial=%(device_serial)s",
+ ],
+ },
+ "mochitest-webgl1-core": WebglSuite("webgl1-core"),
+ "mochitest-webgl2-core": WebglSuite("webgl2-core"),
+ "mochitest-webgl1-ext": WebglSuite("webgl1-ext"),
+ "mochitest-webgl2-ext": WebglSuite("webgl2-ext"),
+ "mochitest-webgl2-deqp": WebglSuite("webgl2-deqp"),
+ "mochitest-webgpu": WebglSuite("webgpu"),
+ "mochitest-plain-gpu": {
+ "run_filename": "runtestsremote.py",
+ "testsdir": "mochitest",
+ "options": [
+ "--app=%(app)s",
+ "--remote-webserver=%(remote_webserver)s",
+ "--xre-path=%(xre_path)s",
+ "--utility-path=%(utility_path)s",
+ "--http-port=%(http_port)s",
+ "--ssl-port=%(ssl_port)s",
+ "--certificate-path=%(certs_path)s",
+ "--symbols-path=%(symbols_path)s",
+ "--quiet",
+ "--log-raw=%(raw_log_file)s",
+ "--log-raw-level=%(log_raw_level)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--log-tbpl-level=%(log_tbpl_level)s",
+ "--screenshot-on-fail",
+ "--subsuite=gpu",
+ "--deviceSerial=%(device_serial)s",
+ ],
+ },
+ "mochitest-media": {
+ "run_filename": "runtestsremote.py",
+ "testsdir": "mochitest",
+ "options": [
+ "--app=%(app)s",
+ "--remote-webserver=%(remote_webserver)s",
+ "--xre-path=%(xre_path)s",
+ "--utility-path=%(utility_path)s",
+ "--http-port=%(http_port)s",
+ "--ssl-port=%(ssl_port)s",
+ "--certificate-path=%(certs_path)s",
+ "--symbols-path=%(symbols_path)s",
+ "--quiet",
+ "--log-raw=%(raw_log_file)s",
+ "--log-raw-level=%(log_raw_level)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--log-tbpl-level=%(log_tbpl_level)s",
+ "--screenshot-on-fail",
+ "--chunk-by-runtime",
+ "--subsuite=media",
+ "--deviceSerial=%(device_serial)s",
+ ],
+ },
+ "reftest": {
+ "run_filename": "remotereftest.py",
+ "testsdir": "reftest",
+ "options": [
+ "--app=%(app)s",
+ "--ignore-window-size",
+ "--remote-webserver=%(remote_webserver)s",
+ "--xre-path=%(xre_path)s",
+ "--utility-path=%(utility_path)s",
+ "--http-port=%(http_port)s",
+ "--ssl-port=%(ssl_port)s",
+ "--httpd-path",
+ "%(modules_dir)s",
+ "--symbols-path=%(symbols_path)s",
+ "--extra-profile-file=fonts",
+ "--extra-profile-file=hyphenation",
+ "--suite=reftest",
+ "--log-raw=%(raw_log_file)s",
+ "--log-raw-level=%(log_raw_level)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--log-tbpl-level=%(log_tbpl_level)s",
+ "--deviceSerial=%(device_serial)s",
+ "--topsrcdir=tests",
+ ],
+ "tests": [
+ "tests/layout/reftests/reftest.list",
+ ],
+ },
+ "reftest-qr": {
+ "run_filename": "remotereftest.py",
+ "testsdir": "reftest",
+ "options": [
+ "--app=%(app)s",
+ "--ignore-window-size",
+ "--remote-webserver=%(remote_webserver)s",
+ "--xre-path=%(xre_path)s",
+ "--utility-path=%(utility_path)s",
+ "--http-port=%(http_port)s",
+ "--ssl-port=%(ssl_port)s",
+ "--httpd-path",
+ "%(modules_dir)s",
+ "--symbols-path=%(symbols_path)s",
+ "--extra-profile-file=fonts",
+ "--extra-profile-file=hyphenation",
+ "--suite=reftest",
+ "--log-raw=%(raw_log_file)s",
+ "--log-raw-level=%(log_raw_level)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--log-tbpl-level=%(log_tbpl_level)s",
+ "--deviceSerial=%(device_serial)s",
+ "--topsrcdir=tests",
+ ],
+ "tests": [
+ "tests/layout/reftests/reftest-qr.list",
+ ],
+ },
+ "crashtest": {
+ "run_filename": "remotereftest.py",
+ "testsdir": "reftest",
+ "options": [
+ "--app=%(app)s",
+ "--ignore-window-size",
+ "--remote-webserver=%(remote_webserver)s",
+ "--xre-path=%(xre_path)s",
+ "--utility-path=%(utility_path)s",
+ "--http-port=%(http_port)s",
+ "--ssl-port=%(ssl_port)s",
+ "--httpd-path",
+ "%(modules_dir)s",
+ "--symbols-path=%(symbols_path)s",
+ "--suite=crashtest",
+ "--log-raw=%(raw_log_file)s",
+ "--log-raw-level=%(log_raw_level)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--log-tbpl-level=%(log_tbpl_level)s",
+ "--deviceSerial=%(device_serial)s",
+ "--topsrcdir=tests",
+ ],
+ "tests": [
+ "tests/testing/crashtest/crashtests.list",
+ ],
+ },
+ "crashtest-qr": {
+ "run_filename": "remotereftest.py",
+ "testsdir": "reftest",
+ "options": [
+ "--app=%(app)s",
+ "--ignore-window-size",
+ "--remote-webserver=%(remote_webserver)s",
+ "--xre-path=%(xre_path)s",
+ "--utility-path=%(utility_path)s",
+ "--http-port=%(http_port)s",
+ "--ssl-port=%(ssl_port)s",
+ "--httpd-path",
+ "%(modules_dir)s",
+ "--symbols-path=%(symbols_path)s",
+ "--suite=crashtest",
+ "--log-raw=%(raw_log_file)s",
+ "--log-raw-level=%(log_raw_level)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--log-tbpl-level=%(log_tbpl_level)s",
+ "--deviceSerial=%(device_serial)s",
+ "--topsrcdir=tests",
+ ],
+ "tests": [
+ "tests/testing/crashtest/crashtests-qr.list",
+ ],
+ },
+ "jittest": {
+ "run_filename": "jit_test.py",
+ "testsdir": "jit-test/jit-test",
+ "options": [
+ "../../bin/js",
+ "--remote",
+ "-j",
+ "1",
+ "--localLib=../../bin",
+ "--no-slow",
+ "--no-progress",
+ "--format=automation",
+ "--jitflags=all",
+ "--deviceSerial=%(device_serial)s",
+ ],
+ },
+ "jsreftest": {
+ "run_filename": "remotereftest.py",
+ "testsdir": "reftest",
+ "options": [
+ "--app=%(app)s",
+ "--ignore-window-size",
+ "--remote-webserver=%(remote_webserver)s",
+ "--xre-path=%(xre_path)s",
+ "--utility-path=%(utility_path)s",
+ "--http-port=%(http_port)s",
+ "--ssl-port=%(ssl_port)s",
+ "--httpd-path",
+ "%(modules_dir)s",
+ "--symbols-path=%(symbols_path)s",
+ "--extra-profile-file=jsreftest/tests/js/src/tests/user.js",
+ "--suite=jstestbrowser",
+ "--log-raw=%(raw_log_file)s",
+ "--log-raw-level=%(log_raw_level)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--log-tbpl-level=%(log_tbpl_level)s",
+ "--deviceSerial=%(device_serial)s",
+ "--topsrcdir=../jsreftest/tests",
+ ],
+ "tests": [
+ "../jsreftest/tests/js/src/tests/jstests.list",
+ ],
+ },
+ "xpcshell": {
+ "run_filename": "remotexpcshelltests.py",
+ "testsdir": "xpcshell",
+ "install": False,
+ "options": [
+ "--xre-path=%(xre_path)s",
+ "--testing-modules-dir=%(modules_dir)s",
+ "--apk=%(installer_path)s",
+ "--no-logfiles",
+ "--symbols-path=%(symbols_path)s",
+ "--manifest=tests/xpcshell.ini",
+ "--log-raw=%(raw_log_file)s",
+ "--log-raw-level=%(log_raw_level)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--log-tbpl-level=%(log_tbpl_level)s",
+ "--test-plugin-path=none",
+ "--deviceSerial=%(device_serial)s",
+ "%(xpcshell_extra)s",
+ ],
+ },
+ "cppunittest": {
+ "run_filename": "remotecppunittests.py",
+ "testsdir": "cppunittest",
+ "install": False,
+ "options": [
+ "--symbols-path=%(symbols_path)s",
+ "--xre-path=%(xre_path)s",
+ "--localBinDir=../bin",
+ "--apk=%(installer_path)s",
+ ".",
+ "--deviceSerial=%(device_serial)s",
+ "--log-raw=%(raw_log_file)s",
+ "--log-raw-level=%(log_raw_level)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ ],
+ },
+ "geckoview-junit": {
+ "run_filename": "runjunit.py",
+ "testsdir": "mochitest",
+ "options": [
+ "--certificate-path=%(certs_path)s",
+ "--remote-webserver=%(remote_webserver)s",
+ "--symbols-path=%(symbols_path)s",
+ "--utility-path=%(utility_path)s",
+ "--deviceSerial=%(device_serial)s",
+ "--log-raw=%(raw_log_file)s",
+ "--log-raw-level=%(log_raw_level)s",
+ ],
+ },
+ "gtest": {
+ "run_filename": "remotegtests.py",
+ "testsdir": "gtest",
+ "install": True,
+ "options": [
+ "--symbols-path=%(symbols_path)s",
+ "--tests-path=%(gtest_dir)s",
+ "--libxul=%(gtest_dir)s/gtest_bin/gtest/libxul.so",
+ "--package=%(app)s",
+ "--deviceSerial=%(device_serial)s",
+ ],
+ },
+ }, # end suite_definitions
+}
diff --git a/testing/mozharness/configs/android/android_hw.py b/testing/mozharness/configs/android/android_hw.py
new file mode 100644
index 0000000000..f88568b43b
--- /dev/null
+++ b/testing/mozharness/configs/android/android_hw.py
@@ -0,0 +1,28 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# mozharness configuration for Android hardware unit tests
+#
+# This configuration should be combined with suite definitions and other
+# mozharness configuration from android_common.py, or similar.
+
+config = {
+ "exes": {},
+ "env": {
+ "DISPLAY": ":0.0",
+ "PATH": "%(PATH)s",
+ },
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "create-virtualenv",
+ "verify-device",
+ "install",
+ "run-tests",
+ ],
+ "tooltool_cache": "/builds/tooltool_cache",
+ # from android_common.py
+ "download_tooltool": True,
+ "xpcshell_extra": "--remoteTestRoot=/data/local/tmp/test_root",
+}
diff --git a/testing/mozharness/configs/android/android_pgo.py b/testing/mozharness/configs/android/android_pgo.py
new file mode 100644
index 0000000000..b6d5f2d948
--- /dev/null
+++ b/testing/mozharness/configs/android/android_pgo.py
@@ -0,0 +1,21 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Mozharness configuration for Android PGO.
+#
+# This configuration should be combined with platform-specific mozharness
+# configuration such as androidarm_4_3.py, or similar.
+
+config = {
+ "default_actions": [
+ "setup-avds",
+ "download",
+ "create-virtualenv",
+ "start-emulator",
+ "verify-device",
+ "install",
+ "run-tests",
+ ],
+ "output_directory": "/sdcard/pgo_profile",
+}
diff --git a/testing/mozharness/configs/android/androidarm_4_3.py b/testing/mozharness/configs/android/androidarm_4_3.py
new file mode 100644
index 0000000000..ba2e1f19a6
--- /dev/null
+++ b/testing/mozharness/configs/android/androidarm_4_3.py
@@ -0,0 +1,39 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# mozharness configuration for Android 4.3 unit tests
+#
+# This configuration should be combined with suite definitions and other
+# mozharness configuration from android_common.py, or similar.
+
+config = {
+ "deprecated_sdk_path": True,
+ "tooltool_manifest_path": "testing/config/tooltool-manifests/androidarm_4_3/releng.manifest",
+ "emulator_manifest": """
+ [
+ {
+ "algorithm": "sha512",
+ "visibility": "internal",
+ "filename": "android-sdk_r24.0.2a-linux.tar.gz",
+ "unpack": true,
+ "digest": "9b7d4a6fcb33d80884c68e9099a3e11963a79ec0a380a5a9e1a093e630f960d0a5083392c8804121c3ad27ee8ba29ca8df785d19d5a7fdc89458c4e51ada5120",
+ "size": 38591399
+ }
+ ]""",
+ "emulator_avd_name": "test-1",
+ "emulator_process_name": "emulator64-arm",
+ "emulator_extra_args": "-show-kernel -debug init,console,gles,memcheck,adbserver,adbclient,adb,avd_config,socket",
+ "exes": {
+ "adb": "%(abs_work_dir)s/android-sdk-linux/platform-tools/adb",
+ },
+ "env": {
+ "DISPLAY": ":0.0",
+ "PATH": "%(PATH)s:%(abs_work_dir)s/android-sdk-linux/tools:%(abs_work_dir)s/android-sdk-linux/platform-tools",
+ },
+ "bogomips_minimum": 250,
+ # in support of test-verify
+ "android_version": 18,
+ "is_fennec": True,
+ "is_emulator": True,
+}
diff --git a/testing/mozharness/configs/android/androidx86_7_0.py b/testing/mozharness/configs/android/androidx86_7_0.py
new file mode 100644
index 0000000000..5208990da0
--- /dev/null
+++ b/testing/mozharness/configs/android/androidx86_7_0.py
@@ -0,0 +1,28 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# mozharness configuration for Android x86/x86_64 7.0 unit tests
+#
+# This configuration should be combined with suite definitions and other
+# mozharness configuration from android_common.py, or similar.
+
+config = {
+ "tooltool_manifest_path": "testing/config/tooltool-manifests/androidx86_7_0/releng.manifest",
+ "emulator_avd_name": "test-1",
+ "emulator_process_name": "qemu-system-x86_64",
+ "emulator_extra_args": "-gpu on -skip-adb-auth -verbose -show-kernel -ranchu -selinux permissive -memory 3072 -cores 4",
+ "exes": {
+ "adb": "%(abs_sdk_dir)s/platform-tools/adb",
+ },
+ "env": {
+ "DISPLAY": ":0.0",
+ "PATH": "%(PATH)s:%(abs_sdk_dir)s/emulator:%(abs_sdk_dir)s/tools:%(abs_sdk_dir)s/platform-tools",
+ # "LIBGL_DEBUG": "verbose"
+ },
+ "bogomips_minimum": 3000,
+ # in support of test-verify
+ "android_version": 24,
+ "is_fennec": False,
+ "is_emulator": True,
+}
diff --git a/testing/mozharness/configs/android/wrench.py b/testing/mozharness/configs/android/wrench.py
new file mode 100644
index 0000000000..b7932da0ff
--- /dev/null
+++ b/testing/mozharness/configs/android/wrench.py
@@ -0,0 +1,22 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# mozharness configuration for Android x86 7.0 wrench tests
+#
+# This configuration should be combined with suite definitions and other
+# mozharness configuration from android_common.py, or similar.
+
+config = {
+ "tooltool_manifest_path": "testing/config/tooltool-manifests/androidx86_7_0/releng.manifest",
+ "emulator_avd_name": "test-1",
+ "emulator_process_name": "emulator64-x86",
+ "emulator_extra_args": "-gpu on -skip-adb-auth -verbose -show-kernel -ranchu -selinux permissive -memory 3072 -cores 4",
+ "exes": {
+ "adb": "%(abs_sdk_dir)s/platform-tools/adb",
+ },
+ "env": {
+ "DISPLAY": ":0.0",
+ "PATH": "%(PATH)s:%(abs_sdk_dir)s/emulator:%(abs_sdk_dir)s/tools:%(abs_sdk_dir)s/platform-tools",
+ },
+}
diff --git a/testing/mozharness/configs/awsy/linux_config.py b/testing/mozharness/configs/awsy/linux_config.py
new file mode 100644
index 0000000000..325eabb4e9
--- /dev/null
+++ b/testing/mozharness/configs/awsy/linux_config.py
@@ -0,0 +1,31 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+PYTHON = "/usr/bin/env python"
+VENV_PATH = "%s/build/venv" % os.getcwd()
+ABS_WORK_DIR = os.path.join(os.getcwd(), "build")
+BINARY_PATH = os.path.join(ABS_WORK_DIR, "application", "firefox", "firefox-bin")
+INSTALLER_PATH = os.path.join(ABS_WORK_DIR, "installer.tar.bz2")
+
+config = {
+ "log_name": "awsy",
+ "binary_path": BINARY_PATH,
+ "installer_path": INSTALLER_PATH,
+ "virtualenv_path": VENV_PATH,
+ "cmd_timeout": 6500,
+ "exes": {},
+ "title": os.uname()[1].lower().split(".")[0],
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "populate-webroot",
+ "create-virtualenv",
+ "install",
+ "run-tests",
+ ],
+ "tooltool_cache": os.path.join(os.getcwd(), "tooltool_cache"),
+}
diff --git a/testing/mozharness/configs/awsy/macosx_config.py b/testing/mozharness/configs/awsy/macosx_config.py
new file mode 100644
index 0000000000..d17db7d62d
--- /dev/null
+++ b/testing/mozharness/configs/awsy/macosx_config.py
@@ -0,0 +1,29 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+PYTHON = "/usr/bin/env python"
+VENV_PATH = "%s/build/venv" % os.getcwd()
+ABS_WORK_DIR = os.path.join(os.getcwd(), "build")
+INSTALLER_PATH = os.path.join(ABS_WORK_DIR, "installer.dmg")
+
+config = {
+ "log_name": "awsy",
+ "installer_path": INSTALLER_PATH,
+ "virtualenv_path": VENV_PATH,
+ "cmd_timeout": 6500,
+ "exes": {},
+ "title": os.uname()[1].lower().split(".")[0],
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "populate-webroot",
+ "create-virtualenv",
+ "install",
+ "run-tests",
+ ],
+ "tooltool_cache": os.path.join(os.getcwd(), "tooltool_cache"),
+}
diff --git a/testing/mozharness/configs/awsy/taskcluster_windows_config.py b/testing/mozharness/configs/awsy/taskcluster_windows_config.py
new file mode 100644
index 0000000000..4e588bb877
--- /dev/null
+++ b/testing/mozharness/configs/awsy/taskcluster_windows_config.py
@@ -0,0 +1,30 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+import sys
+import mozharness
+
+external_tools_path = os.path.join(
+ os.path.abspath(os.path.dirname(os.path.dirname(mozharness.__file__))),
+ "external_tools",
+)
+
+config = {
+ "virtualenv_path": "venv",
+ "exes": {
+ "python": sys.executable,
+ "hg": os.path.join(os.environ["PROGRAMFILES"], "Mercurial", "hg"),
+ },
+ "download_symbols": "ondemand",
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "populate-webroot",
+ "create-virtualenv",
+ "install",
+ "run-tests",
+ ],
+}
diff --git a/testing/mozharness/configs/balrog/production.py b/testing/mozharness/configs/balrog/production.py
new file mode 100644
index 0000000000..fbbdf53e0e
--- /dev/null
+++ b/testing/mozharness/configs/balrog/production.py
@@ -0,0 +1,35 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "balrog_servers": [
+ {
+ "balrog_api_root": "https://aus4-admin.mozilla.org/api",
+ "ignore_failures": False,
+ "url_replacements": [
+ (
+ "http://archive.mozilla.org/pub",
+ "http://download.cdn.mozilla.net/pub",
+ ),
+ ],
+ "balrog_usernames": {
+ "firefox": "balrog-ffxbld",
+ "thunderbird": "balrog-tbirdbld",
+ "mobile": "balrog-ffxbld",
+ "Fennec": "balrog-ffxbld",
+ },
+ },
+ # Bug 1261346 - temporarily disable staging balrog submissions
+ # {
+ # 'balrog_api_root': 'https://aus4-admin-dev.allizom.org/api',
+ # 'ignore_failures': True,
+ # 'balrog_usernames': {
+ # 'firefox': 'stage-ffxbld',
+ # 'thunderbird': 'stage-tbirdbld',
+ # 'mobile': 'stage-ffxbld',
+ # 'Fennec': 'stage-ffxbld',
+ # }
+ # }
+ ]
+}
diff --git a/testing/mozharness/configs/balrog/staging.py b/testing/mozharness/configs/balrog/staging.py
new file mode 100644
index 0000000000..7329a4d128
--- /dev/null
+++ b/testing/mozharness/configs/balrog/staging.py
@@ -0,0 +1,18 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "balrog_servers": [
+ {
+ "balrog_api_root": "https://balrog-admin.stage.mozaws.net/api",
+ "ignore_failures": False,
+ "balrog_usernames": {
+ "firefox": "balrog-stage-ffxbld",
+ "thunderbird": "balrog-stage-tbirdbld",
+ "mobile": "balrog-stage-ffxbld",
+ "Fennec": "balrog-stage-ffxbld",
+ },
+ }
+ ]
+}
diff --git a/testing/mozharness/configs/builds/build_pool_specifics.py b/testing/mozharness/configs/builds/build_pool_specifics.py
new file mode 100644
index 0000000000..837060b649
--- /dev/null
+++ b/testing/mozharness/configs/builds/build_pool_specifics.py
@@ -0,0 +1,14 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# this is a dict of pool specific keys/values. As this fills up and more
+# fx build factories are ported, we might deal with this differently
+
+config = {
+ "taskcluster": {
+ "upload_env": {
+ "UPLOAD_PATH": "/builds/worker/artifacts",
+ },
+ },
+}
diff --git a/testing/mozharness/configs/builds/releng_base_android_64_builds.py b/testing/mozharness/configs/builds/releng_base_android_64_builds.py
new file mode 100644
index 0000000000..3461a3e77a
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_base_android_64_builds.py
@@ -0,0 +1,59 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ #########################################################################
+ ######## ANDROID GENERIC CONFIG KEYS/VAlUES
+ # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
+ "default_actions": [
+ "build",
+ "multi-l10n",
+ ],
+ "max_build_output_timeout": 0,
+ "secret_files": [
+ {
+ "filename": "/builds/gls-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/gls-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "/builds/sb-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/sb-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "/builds/mozilla-fennec-geoloc-api.key",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/mozilla-fennec-geoloc-api.key",
+ "min_scm_level": 2,
+ "default": "try-build-has-no-secrets",
+ },
+ ],
+ "vcs_share_base": "/builds/hg-shared",
+ "multi_locale": True,
+ #########################################################################
+ #########################################################################
+ "platform": "android",
+ "stage_platform": "android",
+ "enable_max_vsize": False,
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/worker/tooltool-cache",
+ "TOOLTOOL_HOME": "/builds",
+ "LC_ALL": "C",
+ "PATH": "/usr/local/bin:/bin:/usr/bin",
+ "SHIP_LICENSED_FONTS": "1",
+ },
+ "src_mozconfig": "mobile/android/config/mozconfigs/android/nightly",
+ # Bug 1583594: GeckoView doesn't (yet) produce have a package file
+ # from which to extract package metrics.
+ "disable_package_metrics": True,
+ #########################################################################
+}
diff --git a/testing/mozharness/configs/builds/releng_base_firefox.py b/testing/mozharness/configs/builds/releng_base_firefox.py
new file mode 100644
index 0000000000..b634aff677
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_base_firefox.py
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "app_name": "browser",
+}
diff --git a/testing/mozharness/configs/builds/releng_base_linux_32_builds.py b/testing/mozharness/configs/builds/releng_base_linux_32_builds.py
new file mode 100644
index 0000000000..b1c238fe1b
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_base_linux_32_builds.py
@@ -0,0 +1,61 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ #########################################################################
+ ######## LINUX 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 with
+ # releng_base_linux_64_builds.py
+ # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
+ "default_actions": [
+ "clobber",
+ "build",
+ ],
+ "secret_files": [
+ {
+ "filename": "/builds/gls-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/gls-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "/builds/sb-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/sb-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "/builds/mozilla-desktop-geoloc-api.key",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/mozilla-desktop-geoloc-api.key",
+ "min_scm_level": 2,
+ "default": "try-build-has-no-secrets",
+ },
+ ],
+ "vcs_share_base": "/builds/hg-shared",
+ #########################################################################
+ #########################################################################
+ ###### 32 bit specific ######
+ "platform": "linux",
+ "stage_platform": "linux",
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/worker/tooltool-cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ # 32 bit specific
+ "PATH": "/usr/local/bin:\
+/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+ "mozconfig_platform": "linux32",
+ "mozconfig_variant": "nightly",
+ #########################################################################
+}
diff --git a/testing/mozharness/configs/builds/releng_base_linux_64_builds.py b/testing/mozharness/configs/builds/releng_base_linux_64_builds.py
new file mode 100644
index 0000000000..d8a90f3617
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_base_linux_64_builds.py
@@ -0,0 +1,60 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ #########################################################################
+ ######## LINUX GENERIC CONFIG KEYS/VAlUES
+ # if you are updating this with custom 64 bit keys/values please add them
+ # below under the '64 bit specific' code block otherwise, update in this
+ # code block and also make sure this is synced with
+ # releng_base_linux_64_builds.py
+ "default_actions": [
+ "clobber",
+ "build",
+ ],
+ "secret_files": [
+ {
+ "filename": "/builds/gls-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/gls-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "/builds/sb-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/sb-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "/builds/mozilla-desktop-geoloc-api.key",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/mozilla-desktop-geoloc-api.key",
+ "min_scm_level": 2,
+ "default": "try-build-has-no-secrets",
+ },
+ ],
+ "vcs_share_base": "/builds/hg-shared",
+ #########################################################################
+ #########################################################################
+ ###### 64 bit specific ######
+ "platform": "linux64",
+ "stage_platform": "linux64",
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/worker/tooltool-cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:" "/usr/bin:/usr/local/sbin:/usr/sbin:" "/sbin"
+ ##
+ },
+ "mozconfig_platform": "linux64",
+ "mozconfig_variant": "nightly",
+ #########################################################################
+}
diff --git a/testing/mozharness/configs/builds/releng_base_mac_64_cross_builds.py b/testing/mozharness/configs/builds/releng_base_mac_64_cross_builds.py
new file mode 100644
index 0000000000..3b94391174
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_base_mac_64_cross_builds.py
@@ -0,0 +1,56 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ #########################################################################
+ ######## MACOSX CROSS GENERIC CONFIG KEYS/VAlUES
+ # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
+ "default_actions": [
+ "build",
+ ],
+ "secret_files": [
+ {
+ "filename": "/builds/gls-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/gls-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "/builds/sb-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/sb-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "/builds/mozilla-desktop-geoloc-api.key",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/mozilla-desktop-geoloc-api.key",
+ "min_scm_level": 2,
+ "default": "try-build-has-no-secrets",
+ },
+ ],
+ "enable_check_test": False,
+ "vcs_share_base": "/builds/hg-shared",
+ #########################################################################
+ #########################################################################
+ ###### 64 bit specific ######
+ "platform": "macosx64",
+ "stage_platform": "macosx64",
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/worker/tooltool-cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:" "/usr/bin:/usr/local/sbin:/usr/sbin:/sbin"
+ ##
+ },
+ "mozconfig_platform": "macosx64",
+ "mozconfig_variant": "nightly",
+ #########################################################################
+}
diff --git a/testing/mozharness/configs/builds/releng_base_windows_32_mingw_builds.py b/testing/mozharness/configs/builds/releng_base_windows_32_mingw_builds.py
new file mode 100644
index 0000000000..3f4433fc58
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_base_windows_32_mingw_builds.py
@@ -0,0 +1,54 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ #########################################################################
+ ######## LINUX 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 with
+ # releng_base_linux_64_builds.py
+ "secret_files": [
+ {
+ "filename": "/builds/gls-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/gls-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "/builds/sb-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/sb-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "/builds/mozilla-desktop-geoloc-api.key",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/mozilla-desktop-geoloc-api.key",
+ "min_scm_level": 2,
+ "default": "try-build-has-no-secrets",
+ },
+ ],
+ "vcs_share_base": "/builds/hg-shared",
+ #########################################################################
+ #########################################################################
+ ###### 32 bit specific ######
+ "platform": "win32-mingw32",
+ "stage_platform": "win32-mingw32",
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/worker/tooltool-cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ # 32 bit specific
+ "PATH": "/usr/local/bin:/bin:/usr/bin",
+ },
+ "mozconfig_platform": "win32",
+ #########################################################################
+}
diff --git a/testing/mozharness/configs/builds/releng_base_windows_64_mingw_builds.py b/testing/mozharness/configs/builds/releng_base_windows_64_mingw_builds.py
new file mode 100644
index 0000000000..26ab6cfcbc
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_base_windows_64_mingw_builds.py
@@ -0,0 +1,55 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ #########################################################################
+ ######## LINUX 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 with
+ # releng_base_linux_64_builds.py
+ "secret_files": [
+ {
+ "filename": "/builds/gls-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/gls-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "/builds/sb-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/sb-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "/builds/mozilla-desktop-geoloc-api.key",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/mozilla-desktop-geoloc-api.key",
+ "min_scm_level": 2,
+ "default": "try-build-has-no-secrets",
+ },
+ ],
+ "vcs_share_base": "/builds/hg-shared",
+ #########################################################################
+ #########################################################################
+ ###### 64 bit specific ######
+ "platform": "win64-mingw32",
+ "stage_platform": "win64-mingw32",
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/worker/tooltool-cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ # 32 bit specific
+ "PATH": "/usr/local/bin:/bin:/usr/bin",
+ },
+ "mozconfig_platform": "win64",
+ "mozconfig_variant": "mingw32",
+ #########################################################################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64.py
new file mode 100644
index 0000000000..77879cae1b
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-aarch64",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-aarch64/nightly",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64_beta.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64_beta.py
new file mode 100644
index 0000000000..e340422568
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64_beta.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-aarch64",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-aarch64/beta",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64_beta_debug.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64_beta_debug.py
new file mode 100644
index 0000000000..42462096cc
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64_beta_debug.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-aarch64-debug",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-aarch64/debug-beta",
+ "debug_build": True,
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64_debug.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64_debug.py
new file mode 100644
index 0000000000..21ccc11cf8
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_aarch64_debug.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-aarch64-debug",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-aarch64/debug",
+ "debug_build": True,
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16.py
new file mode 100644
index 0000000000..0cfda6d679
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-api-16",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-api-16/nightly",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_beta.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_beta.py
new file mode 100644
index 0000000000..4fc089feea
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_beta.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-api-16",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-api-16/beta",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_beta_debug.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_beta_debug.py
new file mode 100644
index 0000000000..2445f5d2f7
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_beta_debug.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-api-16-debug",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-api-16/debug-beta",
+ "debug_build": True,
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_debug.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_debug.py
new file mode 100644
index 0000000000..0711f8c783
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_debug.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-api-16-debug",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-api-16/debug",
+ "debug_build": True,
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_debug_ccov.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_debug_ccov.py
new file mode 100644
index 0000000000..a2fcd00cfd
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_debug_ccov.py
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-api-16-debug-ccov",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-api-16/debug-ccov",
+ "debug_build": True,
+ "postflight_build_mach_commands": [
+ [
+ "android",
+ "archive-coverage-artifacts",
+ ],
+ ],
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_debug_searchfox.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_debug_searchfox.py
new file mode 100644
index 0000000000..7c5ae88e33
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_debug_searchfox.py
@@ -0,0 +1,12 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-api-16-debug",
+ "env": {
+ "SCCACHE_DISABLE": "1",
+ },
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-api-16/debug-searchfox",
+ "debug_build": True,
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_gradle_dependencies.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_gradle_dependencies.py
new file mode 100644
index 0000000000..950d520261
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_gradle_dependencies.py
@@ -0,0 +1,16 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-api-16-gradle-dependencies",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-api-16-gradle-dependencies/nightly",
+ # gradle-dependencies doesn't produce a package. So don't collect package metrics.
+ "postflight_build_mach_commands": [
+ [
+ "android",
+ "gradle-dependencies",
+ ],
+ ],
+ "max_build_output_timeout": 0,
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_partner_sample1.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_partner_sample1.py
new file mode 100644
index 0000000000..a703cf9f87
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_partner_sample1.py
@@ -0,0 +1,10 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-api-16-partner-sample1",
+ "src_mozconfig": None, # use manifest to determine mozconfig src
+ "src_mozconfig_manifest": "partner/mozconfigs/mozconfig1.json",
+ "tooltool_manifest_src": "mobile/android/config/tooltool-manifests/android/releng.manifest",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_profile_generate.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_profile_generate.py
new file mode 100644
index 0000000000..e87f6730a0
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_profile_generate.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-api-16",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-api-16/profile-generate",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_geckoview_docs.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_geckoview_docs.py
new file mode 100644
index 0000000000..136a8cfead
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_geckoview_docs.py
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-geckoview-docs",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-api-16/nightly-android-lints",
+ # geckoview-docs doesn't produce a package. So don't collect package metrics.
+ "disable_package_metrics": True,
+ "postflight_build_mach_commands": [
+ [
+ "android",
+ "geckoview-docs",
+ "--archive",
+ "--upload",
+ "mozilla/geckoview",
+ "--upload-branch",
+ "gh-pages",
+ "--javadoc-path",
+ "javadoc/{project}",
+ "--upload-message",
+ "Update {project} documentation to rev {revision}",
+ ],
+ ],
+ "max_build_output_timeout": 0,
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86.py
new file mode 100644
index 0000000000..01fda10b32
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-x86",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-x86/nightly",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64.py
new file mode 100644
index 0000000000..839779f71f
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-x86_64",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-x86_64/nightly",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_beta.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_beta.py
new file mode 100644
index 0000000000..838c76ec70
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_beta.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-x86_64",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-x86_64/beta",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_beta_debug.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_beta_debug.py
new file mode 100644
index 0000000000..4a345506b5
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_beta_debug.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-x86_64-debug",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-x86_64/debug-beta",
+ "debug_build": True,
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_debug.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_debug.py
new file mode 100644
index 0000000000..3cc64c7257
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_debug.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-x86_64-debug",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-x86_64/debug",
+ "debug_build": True,
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_fuzzing_asan.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_fuzzing_asan.py
new file mode 100644
index 0000000000..1095c18c68
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_64_fuzzing_asan.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-x86_64-asan-fuzzing",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-x86_64/nightly-fuzzing-asan",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_beta.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_beta.py
new file mode 100644
index 0000000000..1bf5078885
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_beta.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-x86",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-x86/beta",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_beta_debug.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_beta_debug.py
new file mode 100644
index 0000000000..50cb83c454
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_beta_debug.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-x86-debug",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-x86/debug-beta",
+ "debug_build": True,
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_debug.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_debug.py
new file mode 100644
index 0000000000..eaa4c09ed0
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_debug.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-x86-debug",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-x86/debug",
+ "debug_build": True,
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_fuzzing_debug.py b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_fuzzing_debug.py
new file mode 100644
index 0000000000..5d892c313f
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86_fuzzing_debug.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "android-x86-fuzzing-debug",
+ "src_mozconfig": "mobile/android/config/mozconfigs/android-x86/debug-fuzzing",
+ "debug_build": True,
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/32_debug.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/32_debug.py
new file mode 100644
index 0000000000..9ee5508d45
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/32_debug.py
@@ -0,0 +1,27 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "debug_build": True,
+ "stage_platform": "linux-debug",
+ #### 32 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ # 32 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:",
+ "LD_LIBRARY_PATH": "%(abs_obj_dir)s/dist/bin",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ "TINDERBOX_OUTPUT": "1",
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/32_rusttests.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/32_rusttests.py
new file mode 100644
index 0000000000..c33908220f
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/32_rusttests.py
@@ -0,0 +1,29 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux-rusttests",
+ #### 32 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ # 32 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ "LD_LIBRARY_PATH": "%(abs_obj_dir)s/dist/bin",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ "TINDERBOX_OUTPUT": "1",
+ },
+ "build_targets": ["pre-export", "export", "recurse_rusttests"],
+ "mozconfig_variant": "rusttests",
+ "disable_package_metrics": True,
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/32_rusttests_debug.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/32_rusttests_debug.py
new file mode 100644
index 0000000000..399f5ad7c2
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/32_rusttests_debug.py
@@ -0,0 +1,29 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "debug_build": True,
+ "stage_platform": "linux-rusttests-debug",
+ #### 32 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ # 32 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ "LD_LIBRARY_PATH": "%(abs_obj_dir)s/dist/bin",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ "TINDERBOX_OUTPUT": "1",
+ },
+ "build_targets": ["pre-export", "export", "recurse_rusttests"],
+ "disable_package_metrics": True,
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_add-on-devel.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_add-on-devel.py
new file mode 100644
index 0000000000..419c0f0764
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_add-on-devel.py
@@ -0,0 +1,25 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux64-add-on-devel",
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/builds/worker/workspace/build/src/gcc/bin:/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan.py
new file mode 100644
index 0000000000..53c7ccb7e8
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan.py
@@ -0,0 +1,31 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "default_actions": [
+ "clobber",
+ "build",
+ ],
+ "stage_platform": "linux64-asan",
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+ "mozconfig_variant": "nightly-asan",
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_and_debug.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_and_debug.py
new file mode 100644
index 0000000000..514f8abdea
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_and_debug.py
@@ -0,0 +1,32 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "default_actions": [
+ "clobber",
+ "build",
+ ],
+ "stage_platform": "linux64-asan-debug",
+ "debug_build": True,
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+ "mozconfig_variant": "debug-asan",
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_reporter_tc.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_reporter_tc.py
new file mode 100644
index 0000000000..d1cf3a0c7b
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_reporter_tc.py
@@ -0,0 +1,28 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux64-asan-reporter",
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "MOZ_AUTOMATION": "1",
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ "ASAN_OPTIONS": "detect_leaks=0",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_tc.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_tc.py
new file mode 100644
index 0000000000..eea28a0bb8
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_tc.py
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux64-asan",
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_tc_and_debug.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_tc_and_debug.py
new file mode 100644
index 0000000000..617b3a471c
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_tc_and_debug.py
@@ -0,0 +1,27 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux64-asan-debug",
+ "debug_build": True,
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_code_coverage_debug.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_code_coverage_debug.py
new file mode 100644
index 0000000000..74bc6b0712
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_code_coverage_debug.py
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux64-ccov",
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_code_coverage_opt.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_code_coverage_opt.py
new file mode 100644
index 0000000000..74bc6b0712
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_code_coverage_opt.py
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux64-ccov",
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_debug.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_debug.py
new file mode 100644
index 0000000000..b546ccfcc6
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_debug.py
@@ -0,0 +1,27 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux64-debug",
+ "debug_build": True,
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ # 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ "LD_LIBRARY_PATH": "%(abs_obj_dir)s/dist/bin",
+ "TINDERBOX_OUTPUT": "1",
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_fuzzing_asan_tc.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_fuzzing_asan_tc.py
new file mode 100644
index 0000000000..1c5e7404d8
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_fuzzing_asan_tc.py
@@ -0,0 +1,28 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux64-fuzzing-asan",
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "MOZ_AUTOMATION": "1",
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ "ASAN_OPTIONS": "detect_leaks=0",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_fuzzing_debug.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_fuzzing_debug.py
new file mode 100644
index 0000000000..89bd1bc69b
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_fuzzing_debug.py
@@ -0,0 +1,28 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux64-fuzzing-debug",
+ "debug_build": True,
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "MOZ_AUTOMATION": "1",
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ # 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ "LD_LIBRARY_PATH": "%(abs_obj_dir)s/dist/bin",
+ "TINDERBOX_OUTPUT": "1",
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_fuzzing_tsan_tc.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_fuzzing_tsan_tc.py
new file mode 100644
index 0000000000..22f5f87a28
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_fuzzing_tsan_tc.py
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux64-fuzzing-tsan",
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_noopt_debug.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_noopt_debug.py
new file mode 100644
index 0000000000..0422cea052
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_noopt_debug.py
@@ -0,0 +1,25 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux64-noopt-debug",
+ "debug_build": True,
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ # 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ "LD_LIBRARY_PATH": "%(abs_obj_dir)s/dist/bin",
+ "TINDERBOX_OUTPUT": "1",
+ },
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_rusttests.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_rusttests.py
new file mode 100644
index 0000000000..6b53167f0f
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_rusttests.py
@@ -0,0 +1,28 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux64-rusttests",
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": ":/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+ "build_targets": ["pre-export", "export", "recurse_rusttests"],
+ "disable_package_metrics": True,
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_rusttests_debug.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_rusttests_debug.py
new file mode 100644
index 0000000000..95cfe4ac8b
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_rusttests_debug.py
@@ -0,0 +1,27 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux64-rusttests-debug",
+ "debug_build": True,
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ # 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ "LD_LIBRARY_PATH": "%(abs_obj_dir)s/dist/bin",
+ "TINDERBOX_OUTPUT": "1",
+ },
+ "build_targets": ["pre-export", "export", "recurse_rusttests"],
+ "disable_package_metrics": True,
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_searchfox_and_debug.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_searchfox_and_debug.py
new file mode 100644
index 0000000000..e136291be3
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_searchfox_and_debug.py
@@ -0,0 +1,41 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
+ "default_actions": [
+ "clobber",
+ "build",
+ ],
+ "vcs_share_base": "/builds/hg-shared",
+ #########################################################################
+ #########################################################################
+ ###### 64 bit specific ######
+ "platform": "linux64",
+ "stage_platform": "linux64-searchfox-opt",
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/worker/tooltool-cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ # Disable sccache because otherwise we won't index the files that
+ # sccache optimizes away compilation for
+ "SCCACHE_DISABLE": "1",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ ##
+ },
+ # This doesn't actually inherit from anything.
+ "mozconfig_platform": "linux64",
+ "mozconfig_variant": "debug-searchfox-clang",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_source.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_source.py
new file mode 100644
index 0000000000..d728d917a2
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_source.py
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "default_actions": ["package-source"],
+ "stage_platform": "source", # Not used, but required by the script
+ "env": {
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "TINDERBOX_OUTPUT": "1",
+ "LC_ALL": "C",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ },
+ "src_mozconfig": "browser/config/mozconfigs/linux64/source",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_stat_and_debug.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_stat_and_debug.py
new file mode 100644
index 0000000000..53ec22511c
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_stat_and_debug.py
@@ -0,0 +1,38 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
+ "default_actions": [
+ "clobber",
+ "build",
+ ],
+ "vcs_share_base": "/builds/hg-shared",
+ #########################################################################
+ #########################################################################
+ ###### 64 bit specific ######
+ "platform": "linux64",
+ "stage_platform": "linux64-st-an-opt",
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/worker/tooltool-cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ ##
+ },
+ # This doesn't actually inherit from anything.
+ "mozconfig_platform": "linux64",
+ "mozconfig_variant": "debug-static-analysis-clang",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_tsan_tc.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_tsan_tc.py
new file mode 100644
index 0000000000..27fd6beeed
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_tsan_tc.py
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "linux64-tsan",
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_valgrind.py b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_valgrind.py
new file mode 100644
index 0000000000..feb6f70c27
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_valgrind.py
@@ -0,0 +1,31 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "default_actions": [
+ "clobber",
+ "build",
+ "valgrind-test",
+ ],
+ "stage_platform": "linux64-valgrind",
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+ "mozconfig_variant": "valgrind",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_add-on-devel.py b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_add-on-devel.py
new file mode 100644
index 0000000000..f7d099c5c6
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_add-on-devel.py
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "macosx64-add-on-devel",
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/tools/python/bin:/opt/local/bin:/usr/bin:"
+ "/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin",
+ ##
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_code_coverage_debug.py b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_code_coverage_debug.py
new file mode 100644
index 0000000000..19b3efcabc
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_code_coverage_debug.py
@@ -0,0 +1,27 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "macosx64-ccov-debug",
+ "debug_build": True,
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/tools/python/bin:/opt/local/bin:/usr/bin:"
+ "/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin",
+ ##
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_code_coverage_opt.py b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_code_coverage_opt.py
new file mode 100644
index 0000000000..26830f4358
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_code_coverage_opt.py
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "macosx64-ccov-opt",
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ ## 64 bit specific
+ "PATH": "/tools/python/bin:/opt/local/bin:/usr/bin:"
+ "/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin",
+ ##
+ },
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug.py b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug.py
new file mode 100644
index 0000000000..8b5ec033be
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug.py
@@ -0,0 +1,27 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "macosx64-debug",
+ "debug_build": True,
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ ## 64 bit specific
+ "PATH": "/tools/python/bin:/opt/local/bin:/usr/bin:"
+ "/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin",
+ ##
+ },
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug_searchfox.py b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug_searchfox.py
new file mode 100644
index 0000000000..b8ba33f28e
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug_searchfox.py
@@ -0,0 +1,34 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "default_actions": [
+ "clobber",
+ "build",
+ ],
+ "stage_platform": "macosx64-searchfox-debug",
+ "debug_build": True,
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ # Disable sccache because otherwise we won't index the files that
+ # sccache optimizes away compilation for
+ "SCCACHE_DISABLE": "1",
+ # 64 bit specific
+ "PATH": "/tools/python/bin:/opt/local/bin:/usr/bin:"
+ "/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin",
+ },
+ "mozconfig_variant": "debug-searchfox",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_fuzzing_asan.py b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_fuzzing_asan.py
new file mode 100644
index 0000000000..fee50128ce
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_fuzzing_asan.py
@@ -0,0 +1,28 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "macosx64-fuzzing-asan",
+ "publish_nightly_en_US_routes": False,
+ "platform_supports_post_upload_to_latest": False,
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "DISPLAY": ":2",
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ "ASAN_OPTIONS": "detect_leaks=0",
+ ## 64 bit specific
+ "PATH": "/usr/local/bin:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin",
+ },
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_fuzzing_debug.py b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_fuzzing_debug.py
new file mode 100644
index 0000000000..c0c86ce7f4
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_fuzzing_debug.py
@@ -0,0 +1,29 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "macosx64-fuzzing-debug",
+ "debug_build": True,
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ ## 64 bit specific
+ "PATH": "/tools/python/bin:/opt/local/bin:/usr/bin:"
+ "/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin",
+ ##
+ },
+ #######################
+ "artifact_flag_build_variant_in_try": None,
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_noopt_debug.py b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_noopt_debug.py
new file mode 100644
index 0000000000..e134becf99
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_noopt_debug.py
@@ -0,0 +1,27 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "stage_platform": "macosx64-noopt-debug",
+ "debug_build": True,
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ ## 64 bit specific
+ "PATH": "/tools/python/bin:/opt/local/bin:/usr/bin:"
+ "/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin",
+ ##
+ },
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_debug.py b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_debug.py
new file mode 100644
index 0000000000..db58e9d549
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_debug.py
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "default_actions": [
+ "clobber",
+ "build",
+ ],
+ "stage_platform": "macosx64-debug",
+ "debug_build": True,
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ ## 64 bit specific
+ "PATH": "/tools/python/bin:/opt/local/bin:/usr/bin:"
+ "/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin",
+ ##
+ },
+ "mozconfig_variant": "debug",
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_stat_and_debug.py b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_stat_and_debug.py
new file mode 100644
index 0000000000..e183aa0557
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_stat_and_debug.py
@@ -0,0 +1,34 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "default_actions": [
+ "clobber",
+ "build",
+ ],
+ "debug_build": True,
+ "stage_platform": "macosx64-st-an-debug",
+ "tooltool_manifest_src": "browser/config/tooltool-manifests/macosx64/\
+clang.manifest",
+ #### 64 bit build specific #####
+ "env": {
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "HG_SHARE_BASE_DIR": "/builds/hg-shared",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/builds",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "LC_ALL": "C",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ # 64 bit specific
+ "PATH": "/tools/python/bin:/opt/local/bin:/usr/bin:"
+ "/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin",
+ },
+ "mozconfig_variant": "debug-static-analysis",
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_windows_configs/32_add-on-devel.py b/testing/mozharness/configs/builds/releng_sub_windows_configs/32_add-on-devel.py
new file mode 100644
index 0000000000..745aee83b0
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/32_add-on-devel.py
@@ -0,0 +1,29 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "default_actions": [
+ "clobber",
+ "build",
+ ],
+ "stage_platform": "win32-add-on-devel",
+ #### 32 bit build specific #####
+ "env": {
+ "HG_SHARE_BASE_DIR": "C:/builds/hg-shared",
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "PATH": "C:/mozilla-build/nsis-3.01;C:/mozilla-build/python27;"
+ "%s" % (os.environ.get("path")),
+ "TINDERBOX_OUTPUT": "1",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ "TOOLTOOL_CACHE": "c:/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/c/builds",
+ },
+ "mozconfig_variant": "add-on-devel",
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_windows_configs/32_debug.py b/testing/mozharness/configs/builds/releng_sub_windows_configs/32_debug.py
new file mode 100644
index 0000000000..5fc38a4b95
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/32_debug.py
@@ -0,0 +1,30 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "default_actions": [
+ "clobber",
+ "build",
+ ],
+ "stage_platform": "win32-debug",
+ "debug_build": True,
+ #### 32 bit build specific #####
+ "env": {
+ "HG_SHARE_BASE_DIR": "C:/builds/hg-shared",
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "PATH": "C:/mozilla-build/nsis-3.01;C:/mozilla-build/python27;"
+ "%s" % (os.environ.get("path")),
+ "TINDERBOX_OUTPUT": "1",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ "TOOLTOOL_CACHE": "c:/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/c/builds",
+ },
+ "mozconfig_variant": "debug",
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_windows_configs/32_mingwclang.py b/testing/mozharness/configs/builds/releng_sub_windows_configs/32_mingwclang.py
new file mode 100644
index 0000000000..d201b89eb1
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/32_mingwclang.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "platform": "win32-mingwclang",
+ "stage_platform": "win32-mingwclang",
+ "mozconfig_platform": "win32",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_windows_configs/32_stat_and_debug.py b/testing/mozharness/configs/builds/releng_sub_windows_configs/32_stat_and_debug.py
new file mode 100644
index 0000000000..8a385cf7b6
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/32_stat_and_debug.py
@@ -0,0 +1,31 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "default_actions": [
+ "clobber",
+ "build",
+ ],
+ "stage_platform": "win32-st-an-debug",
+ "debug_build": True,
+ "tooltool_manifest_src": "browser/config/tooltool-manifests/win32/\
+releng.manifest",
+ #### 32 bit build specific #####
+ "env": {
+ "HG_SHARE_BASE_DIR": "C:/builds/hg-shared",
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "PATH": "C:/mozilla-build/nsis-3.01;C:/mozilla-build/python27;"
+ "%s" % (os.environ.get("path")),
+ "TINDERBOX_OUTPUT": "1",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ "TOOLTOOL_CACHE": "c:/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/c/builds",
+ },
+ "mozconfig_variant": "debug-static-analysis",
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_windows_configs/64_add-on-devel.py b/testing/mozharness/configs/builds/releng_sub_windows_configs/64_add-on-devel.py
new file mode 100644
index 0000000000..367ca69037
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/64_add-on-devel.py
@@ -0,0 +1,28 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "default_actions": [
+ "clobber",
+ "build",
+ ],
+ "stage_platform": "win64-add-on-devel",
+ #### 64 bit build specific #####
+ "env": {
+ "HG_SHARE_BASE_DIR": "C:/builds/hg-shared",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "PATH": "C:/mozilla-build/nsis-3.01;C:/mozilla-build/python27;"
+ "%s" % (os.environ.get("path")),
+ "TINDERBOX_OUTPUT": "1",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ "TOOLTOOL_CACHE": "c:/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/c/builds",
+ },
+ "mozconfig_variant": "add-on-devel",
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_windows_configs/64_debug.py b/testing/mozharness/configs/builds/releng_sub_windows_configs/64_debug.py
new file mode 100644
index 0000000000..e901417ab4
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/64_debug.py
@@ -0,0 +1,29 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "default_actions": [
+ "clobber",
+ "build",
+ ],
+ "stage_platform": "win64-debug",
+ "debug_build": True,
+ #### 64 bit build specific #####
+ "env": {
+ "HG_SHARE_BASE_DIR": "C:/builds/hg-shared",
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "PATH": "C:/mozilla-build/nsis-3.01;C:/mozilla-build/python27;"
+ "%s" % (os.environ.get("path")),
+ "TINDERBOX_OUTPUT": "1",
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ "TOOLTOOL_CACHE": "c:/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/c/builds",
+ },
+ "mozconfig_variant": "debug",
+ #######################
+}
diff --git a/testing/mozharness/configs/builds/releng_sub_windows_configs/64_mingwclang.py b/testing/mozharness/configs/builds/releng_sub_windows_configs/64_mingwclang.py
new file mode 100644
index 0000000000..7f41cdb793
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/64_mingwclang.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "platform": "win64-mingwclang",
+ "stage_platform": "win64-mingwclang",
+ "mozconfig_platform": "win64",
+}
diff --git a/testing/mozharness/configs/builds/taskcluster_base_macosx.py b/testing/mozharness/configs/builds/taskcluster_base_macosx.py
new file mode 100644
index 0000000000..28c0eeafa1
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_base_macosx.py
@@ -0,0 +1,45 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "default_actions": [
+ "get-secrets",
+ "build",
+ ],
+ "vcs_share_base": os.path.join(os.getcwd(), "checkouts", "hg-shared"),
+ "max_build_output_timeout": 60 * 80,
+ "env": {
+ "HG_SHARE_BASE_DIR": os.path.join(os.getcwd(), "checkouts", "hg-shared"),
+ "MOZBUILD_STATE_PATH": os.path.join(os.getcwd(), ".mozbuild"),
+ "MOZ_CRASHREPORTER_NO_REPORT": "1",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "TINDERBOX_OUTPUT": "1",
+ "WORKSPACE": "%(base_work_dir)s",
+ "PATH": "/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin",
+ },
+ "upload_env": {
+ "UPLOAD_PATH": os.path.join(os.getcwd(), "public", "build"),
+ },
+ "secret_files": [
+ {
+ "filename": "gls-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/gls-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "sb-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/sb-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "mozilla-desktop-geoloc-api.key",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/mozilla-desktop-geoloc-api.key",
+ "min_scm_level": 2,
+ "default": "try-build-has-no-secrets",
+ },
+ ],
+}
diff --git a/testing/mozharness/configs/builds/taskcluster_base_win32.py b/testing/mozharness/configs/builds/taskcluster_base_win32.py
new file mode 100644
index 0000000000..c18d21c96c
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_base_win32.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "platform": "win32",
+ "mozconfig_platform": "win32",
+}
diff --git a/testing/mozharness/configs/builds/taskcluster_base_win64.py b/testing/mozharness/configs/builds/taskcluster_base_win64.py
new file mode 100644
index 0000000000..013bc11b62
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_base_win64.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "platform": "win64",
+ "mozconfig_platform": "win64",
+}
diff --git a/testing/mozharness/configs/builds/taskcluster_base_windows.py b/testing/mozharness/configs/builds/taskcluster_base_windows.py
new file mode 100644
index 0000000000..0f7186cd41
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_base_windows.py
@@ -0,0 +1,47 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "default_actions": [
+ "get-secrets",
+ "build",
+ ],
+ "vcs_share_base": os.path.join("y:", os.sep, "hg-shared"),
+ "max_build_output_timeout": 60 * 80,
+ "env": {
+ "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",
+ "TINDERBOX_OUTPUT": "1",
+ "TOOLTOOL_CACHE": "c:/builds/tooltool_cache",
+ "TOOLTOOL_HOME": "/c/builds",
+ "MSYSTEM": "MINGW32",
+ "WORKSPACE": "%(base_work_dir)s",
+ },
+ "upload_env": {
+ "UPLOAD_PATH": os.path.join(os.getcwd(), "public", "build"),
+ },
+ "secret_files": [
+ {
+ "filename": "gls-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/gls-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "sb-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/sb-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "mozilla-desktop-geoloc-api.key",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/mozilla-desktop-geoloc-api.key",
+ "min_scm_level": 2,
+ "default": "try-build-has-no-secrets",
+ },
+ ],
+}
diff --git a/testing/mozharness/configs/builds/taskcluster_sub_win32/debug.py b/testing/mozharness/configs/builds/taskcluster_sub_win32/debug.py
new file mode 100644
index 0000000000..dc8977dfc0
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win32/debug.py
@@ -0,0 +1,11 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "win32-debug",
+ "debug_build": True,
+ "env": {
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ },
+}
diff --git a/testing/mozharness/configs/builds/taskcluster_sub_win32/noopt_debug.py b/testing/mozharness/configs/builds/taskcluster_sub_win32/noopt_debug.py
new file mode 100644
index 0000000000..6189060639
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win32/noopt_debug.py
@@ -0,0 +1,11 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "win32-noopt-debug",
+ "debug_build": True,
+ "env": {
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ },
+}
diff --git a/testing/mozharness/configs/builds/taskcluster_sub_win64/asan_debug.py b/testing/mozharness/configs/builds/taskcluster_sub_win64/asan_debug.py
new file mode 100644
index 0000000000..da63c2724d
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win64/asan_debug.py
@@ -0,0 +1,11 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "win64-asan-debug",
+ "debug_build": True,
+ "env": {
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ },
+}
diff --git a/testing/mozharness/configs/builds/taskcluster_sub_win64/asan_reporter_opt.py b/testing/mozharness/configs/builds/taskcluster_sub_win64/asan_reporter_opt.py
new file mode 100644
index 0000000000..af47501c73
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win64/asan_reporter_opt.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "win64-asan-reporter",
+ "mozconfig_variant": "nightly-asan-reporter",
+}
diff --git a/testing/mozharness/configs/builds/taskcluster_sub_win64/ccov_opt.py b/testing/mozharness/configs/builds/taskcluster_sub_win64/ccov_opt.py
new file mode 100644
index 0000000000..c29a2d88bc
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win64/ccov_opt.py
@@ -0,0 +1,10 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "win64-ccov",
+ "env": {
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ },
+}
diff --git a/testing/mozharness/configs/builds/taskcluster_sub_win64/debug.py b/testing/mozharness/configs/builds/taskcluster_sub_win64/debug.py
new file mode 100644
index 0000000000..d40e77d7ae
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win64/debug.py
@@ -0,0 +1,11 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "win64-debug",
+ "debug_build": True,
+ "env": {
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ },
+}
diff --git a/testing/mozharness/configs/builds/taskcluster_sub_win64/noopt_debug.py b/testing/mozharness/configs/builds/taskcluster_sub_win64/noopt_debug.py
new file mode 100644
index 0000000000..1dd204a3e4
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win64/noopt_debug.py
@@ -0,0 +1,11 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "win64-noopt-debug",
+ "debug_build": True,
+ "env": {
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ },
+}
diff --git a/testing/mozharness/configs/builds/taskcluster_sub_win64/plain_opt.py b/testing/mozharness/configs/builds/taskcluster_sub_win64/plain_opt.py
new file mode 100644
index 0000000000..e567c8f123
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win64/plain_opt.py
@@ -0,0 +1,12 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "default_actions": [
+ "build",
+ ],
+ "disable_package_metrics": True,
+ "mozconfig_variant": "plain-opt",
+ "stage_platform": "win64",
+}
diff --git a/testing/mozharness/configs/builds/taskcluster_sub_win64/rusttests_opt.py b/testing/mozharness/configs/builds/taskcluster_sub_win64/rusttests_opt.py
new file mode 100644
index 0000000000..a7e15d287d
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win64/rusttests_opt.py
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "default_actions": [
+ "build",
+ ],
+ "stage_platform": "win64-rusttests",
+ "env": {
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ },
+ "build_targets": ["pre-export", "export", "recurse_rusttests"],
+ "disable_package_metrics": True,
+}
diff --git a/testing/mozharness/configs/builds/taskcluster_sub_win64/searchfox_debug.py b/testing/mozharness/configs/builds/taskcluster_sub_win64/searchfox_debug.py
new file mode 100644
index 0000000000..afcd3a696f
--- /dev/null
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win64/searchfox_debug.py
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "stage_platform": "win64-st-an-debug",
+ "debug_build": True,
+ "env": {
+ "XPCOM_DEBUG_BREAK": "stack-and-abort",
+ # Disable sccache because otherwise we won't index the files that
+ # sccache optimizes away compilation for
+ "SCCACHE_DISABLE": "1",
+ },
+ "mozconfig_variant": "debug-searchfox",
+}
diff --git a/testing/mozharness/configs/developer_config.py b/testing/mozharness/configs/developer_config.py
new file mode 100644
index 0000000000..a1f822d93e
--- /dev/null
+++ b/testing/mozharness/configs/developer_config.py
@@ -0,0 +1,45 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+"""
+This config file can be appended to any other mozharness job
+running under treeherder. The purpose of this config is to
+override values that are specific to Release Engineering machines
+that can reach specific hosts within their network.
+In other words, this config allows you to run any job
+outside of the Release Engineering network
+
+Using this config file should be accompanied with using
+--test-url and --installer-url where appropiate
+"""
+
+from __future__ import absolute_import
+import os
+
+LOCAL_WORKDIR = os.path.expanduser("~/.mozilla/releng")
+
+config = {
+ # Developer mode values
+ "developer_mode": True,
+ "local_workdir": LOCAL_WORKDIR,
+ "replace_urls": [
+ ("http://pvtbuilds.pvt.build", "https://pvtbuilds"),
+ ],
+ # General local variable overwrite
+ "exes": {
+ "gittool.py": os.path.join(LOCAL_WORKDIR, "gittool.py"),
+ },
+ # Talos related
+ "python_webserver": True,
+ "virtualenv_path": "%s/build/venv" % os.getcwd(),
+ "preflight_run_cmd_suites": [],
+ "postflight_run_cmd_suites": [],
+ # Tooltool related
+ "tooltool_cache": os.path.join(LOCAL_WORKDIR, "builds/tooltool_cache"),
+ "tooltool_cache_path": os.path.join(LOCAL_WORKDIR, "builds/tooltool_cache"),
+ # VCS tools
+ "gittool.py": "http://hg.mozilla.org/build/puppet/raw-file/faaf5abd792e/modules/packages/files/gittool.py",
+ # Android related
+ "host_utils_url": "https://tooltool.mozilla-releng.net/sha512/372c89f9dccaf5ee3b9d35fd1cfeb089e1e5db3ff1c04e35aa3adc8800bc61a2ae10e321f37ae7bab20b56e60941f91bb003bcb22035902a73d70872e7bd3282",
+}
diff --git a/testing/mozharness/configs/firefox_ui_tests/qa_jenkins.py b/testing/mozharness/configs/firefox_ui_tests/qa_jenkins.py
new file mode 100644
index 0000000000..5e605bd0a0
--- /dev/null
+++ b/testing/mozharness/configs/firefox_ui_tests/qa_jenkins.py
@@ -0,0 +1,13 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Default configuration as used by Mozmill CI (Jenkins)
+
+
+config = {
+ # Tests run in mozmill-ci do not use RelEng infra
+ "developer_mode": True,
+ # mozcrash support
+ "download_symbols": "ondemand",
+}
diff --git a/testing/mozharness/configs/firefox_ui_tests/releng_release.py b/testing/mozharness/configs/firefox_ui_tests/releng_release.py
new file mode 100644
index 0000000000..56b452518a
--- /dev/null
+++ b/testing/mozharness/configs/firefox_ui_tests/releng_release.py
@@ -0,0 +1,31 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Default configuration as used by Release Engineering for testing release/beta builds
+
+from __future__ import absolute_import
+import os
+import sys
+
+import mozharness
+
+
+external_tools_path = os.path.join(
+ os.path.abspath(os.path.dirname(os.path.dirname(mozharness.__file__))),
+ "external_tools",
+)
+
+
+config = {
+ # General local variable overwrite
+ "exes": {
+ "gittool.py": [
+ # Bug 1227079 - Python executable eeded to get it executed on Windows
+ sys.executable,
+ os.path.join(external_tools_path, "gittool.py"),
+ ],
+ },
+ # mozcrash support
+ "download_symbols": "ondemand",
+}
diff --git a/testing/mozharness/configs/firefox_ui_tests/taskcluster.py b/testing/mozharness/configs/firefox_ui_tests/taskcluster.py
new file mode 100644
index 0000000000..72cd3d78dd
--- /dev/null
+++ b/testing/mozharness/configs/firefox_ui_tests/taskcluster.py
@@ -0,0 +1,11 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Config file for firefox ui tests run via TaskCluster.
+
+
+config = {
+ "vcs_share_base": "/builds/hg-shared",
+ "tooltool_cache": "/builds/worker/tooltool-cache",
+}
diff --git a/testing/mozharness/configs/firefox_ui_tests/taskcluster_mac.py b/testing/mozharness/configs/firefox_ui_tests/taskcluster_mac.py
new file mode 100644
index 0000000000..163e133ed5
--- /dev/null
+++ b/testing/mozharness/configs/firefox_ui_tests/taskcluster_mac.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Configuration over-rides for taskcluter.py, for osx
+config = {
+ "tooltool_cache": "/builds/tooltool_cache",
+}
diff --git a/testing/mozharness/configs/firefox_ui_tests/taskcluster_windows.py b/testing/mozharness/configs/firefox_ui_tests/taskcluster_windows.py
new file mode 100644
index 0000000000..318f26e97f
--- /dev/null
+++ b/testing/mozharness/configs/firefox_ui_tests/taskcluster_windows.py
@@ -0,0 +1,19 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Config file for firefox ui tests run via TaskCluster.
+
+from __future__ import absolute_import
+import os
+import sys
+
+
+config = {
+ "virtualenv_path": "venv",
+ "exes": {
+ "python": sys.executable,
+ "hg": os.path.join(os.environ["PROGRAMFILES"], "Mercurial", "hg"),
+ },
+ "download_symbols": "ondemand",
+}
diff --git a/testing/mozharness/configs/l10n_bumper/jamun.py b/testing/mozharness/configs/l10n_bumper/jamun.py
new file mode 100644
index 0000000000..fdc054b51c
--- /dev/null
+++ b/testing/mozharness/configs/l10n_bumper/jamun.py
@@ -0,0 +1,84 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import sys
+
+MULTI_REPO = "projects/jamun"
+EXES = {}
+if sys.platform.startswith("linux"):
+ EXES = {
+ # Get around the https warnings
+ "hg": [
+ "/usr/local/bin/hg",
+ "--config",
+ "web.cacerts=/etc/pki/tls/certs/ca-bundle.crt",
+ ],
+ "hgtool.py": ["/usr/local/bin/hgtool.py"],
+ }
+
+
+config = {
+ "log_name": "l10n_bumper",
+ "log_type": "multi",
+ "exes": EXES,
+ "gecko_pull_url": "https://hg.mozilla.org/{}".format(MULTI_REPO),
+ "gecko_push_url": "ssh://hg.mozilla.org/{}".format(MULTI_REPO),
+ "hg_user": "L10n Bumper Bot <release+l10nbumper@mozilla.com>",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "ssh_user": "ffxbld",
+ "vcs_share_base": "/builds/hg-shared",
+ "version_path": "browser/config/version.txt",
+ "status_path": ".l10n_bumper_status",
+ "bump_configs": [
+ {
+ "path": "mobile/locales/l10n-changesets.json",
+ "format": "json",
+ "name": "Fennec l10n changesets",
+ "revision_url": "https://l10n.mozilla.org/shipping/l10n-changesets?av=fennec%(MAJOR_VERSION)s",
+ "platform_configs": [
+ {
+ "platforms": ["android-api-16", "android"],
+ "path": "mobile/android/locales/all-locales",
+ },
+ {
+ "platforms": ["android-multilocale"],
+ "path": "mobile/android/locales/maemo-locales",
+ },
+ ],
+ },
+ {
+ "path": "browser/locales/l10n-changesets.json",
+ "format": "json",
+ "name": "Firefox l10n changesets",
+ "revision_url": "https://l10n.mozilla.org/shipping/l10n-changesets?av=fx%(MAJOR_VERSION)s",
+ "ignore_config": {
+ "ja": ["macosx64"],
+ "ja-JP-mac": ["linux", "linux64", "win32", "win64"],
+ },
+ "platform_configs": [
+ {
+ "platforms": ["linux64", "linux", "macosx64", "win32", "win64"],
+ "path": "browser/locales/shipped-locales",
+ "format": "shipped-locales",
+ }
+ ],
+ },
+ {
+ "path": "browser/locales/central-changesets.json",
+ "format": "json",
+ "name": "Firefox l10n changesets",
+ "ignore_config": {
+ "ja": ["macosx64"],
+ "ja-JP-mac": ["linux", "linux64", "win32", "win64"],
+ },
+ "platform_configs": [
+ {
+ "platforms": ["linux64", "linux", "macosx64", "win32", "win64"],
+ "path": "browser/locales/all-locales",
+ }
+ ],
+ },
+ ],
+}
diff --git a/testing/mozharness/configs/l10n_bumper/mozilla-beta.py b/testing/mozharness/configs/l10n_bumper/mozilla-beta.py
new file mode 100644
index 0000000000..6dd7f6950a
--- /dev/null
+++ b/testing/mozharness/configs/l10n_bumper/mozilla-beta.py
@@ -0,0 +1,88 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import sys
+
+MULTI_REPO = "releases/mozilla-beta"
+EXES = {}
+if sys.platform.startswith("linux"):
+ EXES = {
+ # Get around the https warnings
+ "hg": [
+ "/usr/local/bin/hg",
+ "--config",
+ "web.cacerts=/etc/pki/tls/certs/ca-bundle.crt",
+ ],
+ "hgtool.py": ["/usr/local/bin/hgtool.py"],
+ }
+
+config = {
+ "log_name": "l10n_bumper",
+ "log_type": "multi",
+ "exes": EXES,
+ "gecko_pull_url": "https://hg.mozilla.org/{}".format(MULTI_REPO),
+ "gecko_push_url": "ssh://hg.mozilla.org/{}".format(MULTI_REPO),
+ "hg_user": "L10n Bumper Bot <release+l10nbumper@mozilla.com>",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "ssh_user": "ffxbld",
+ "vcs_share_base": "/builds/hg-shared",
+ "version_path": "browser/config/version.txt",
+ "status_path": ".l10n_bumper_status",
+ "bump_configs": [
+ {
+ "path": "mobile/locales/l10n-changesets.json",
+ "format": "json",
+ "name": "Fennec l10n changesets",
+ "revision_url": "https://l10n.mozilla.org/shipping/l10n-changesets?av=fennec%(MAJOR_VERSION)s",
+ "platform_configs": [
+ {
+ "platforms": ["android-multilocale"],
+ "path": "mobile/android/locales/maemo-locales",
+ }
+ ],
+ },
+ {
+ "path": "browser/locales/l10n-changesets.json",
+ "format": "json",
+ "name": "Firefox l10n changesets",
+ "revision_url": "https://l10n.mozilla.org/shipping/l10n-changesets?av=fx%(MAJOR_VERSION)s",
+ "ignore_config": {
+ "ja": ["macosx64", "macosx64-devedition"],
+ "ja-JP-mac": [
+ "linux",
+ "linux-devedition",
+ "linux64",
+ "linux64-devedition",
+ "win32",
+ "win32-devedition",
+ "win64",
+ "win64-devedition",
+ "win64-aarch64",
+ "win64-aarch64-devedition",
+ ],
+ },
+ "platform_configs": [
+ {
+ "platforms": [
+ "linux",
+ "linux-devedition",
+ "linux64",
+ "linux64-devedition",
+ "macosx64",
+ "macosx64-devedition",
+ "win32",
+ "win32-devedition",
+ "win64",
+ "win64-devedition",
+ "win64-aarch64",
+ "win64-aarch64-devedition",
+ ],
+ "path": "browser/locales/shipped-locales",
+ "format": "shipped-locales",
+ }
+ ],
+ },
+ ],
+}
diff --git a/testing/mozharness/configs/l10n_bumper/mozilla-central.py b/testing/mozharness/configs/l10n_bumper/mozilla-central.py
new file mode 100644
index 0000000000..d033ec6bb2
--- /dev/null
+++ b/testing/mozharness/configs/l10n_bumper/mozilla-central.py
@@ -0,0 +1,89 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import sys
+
+MULTI_REPO = "mozilla-central"
+EXES = {}
+if sys.platform.startswith("linux"):
+ EXES = {
+ # Get around the https warnings
+ "hg": [
+ "/usr/local/bin/hg",
+ "--config",
+ "web.cacerts=/etc/pki/tls/certs/ca-bundle.crt",
+ ],
+ "hgtool.py": ["/usr/local/bin/hgtool.py"],
+ }
+
+config = {
+ "log_name": "l10n_bumper",
+ "log_type": "multi",
+ "exes": EXES,
+ "gecko_pull_url": "https://hg.mozilla.org/{}".format(MULTI_REPO),
+ "gecko_push_url": "ssh://hg.mozilla.org/{}".format(MULTI_REPO),
+ "hg_user": "L10n Bumper Bot <release+l10nbumper@mozilla.com>",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "ssh_user": "ffxbld",
+ "vcs_share_base": "/builds/hg-shared",
+ "version_path": "browser/config/version.txt",
+ "status_path": ".l10n_bumper_status",
+ "bump_configs": [
+ {
+ "path": "mobile/locales/l10n-changesets.json",
+ "format": "json",
+ "name": "Fennec l10n changesets",
+ "platform_configs": [
+ {
+ "platforms": ["android-api-16", "android"],
+ "path": "mobile/android/locales/all-locales",
+ },
+ {
+ "platforms": ["android-multilocale"],
+ "path": "mobile/android/locales/maemo-locales",
+ },
+ ],
+ },
+ {
+ "path": "browser/locales/l10n-changesets.json",
+ "format": "json",
+ "name": "Firefox l10n changesets",
+ "ignore_config": {
+ "ja": ["macosx64", "macosx64-devedition"],
+ "ja-JP-mac": [
+ "linux",
+ "linux-devedition",
+ "linux64",
+ "linux64-devedition",
+ "win32",
+ "win32-devedition",
+ "win64",
+ "win64-devedition",
+ "win64-aarch64",
+ "win64-aarch64-devedition",
+ ],
+ },
+ "platform_configs": [
+ {
+ "platforms": [
+ "linux",
+ "linux-devedition",
+ "linux64",
+ "linux64-devedition",
+ "macosx64",
+ "macosx64-devedition",
+ "win32",
+ "win32-devedition",
+ "win64",
+ "win64-devedition",
+ "win64-aarch64",
+ "win64-aarch64-devedition",
+ ],
+ "path": "browser/locales/all-locales",
+ }
+ ],
+ },
+ ],
+}
diff --git a/testing/mozharness/configs/l10n_bumper/mozilla-esr68.py b/testing/mozharness/configs/l10n_bumper/mozilla-esr68.py
new file mode 100644
index 0000000000..4b3c28be54
--- /dev/null
+++ b/testing/mozharness/configs/l10n_bumper/mozilla-esr68.py
@@ -0,0 +1,47 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import sys
+
+MULTI_REPO = "releases/mozilla-esr68"
+EXES = {}
+if sys.platform.startswith("linux"):
+ EXES = {
+ # Get around the https warnings
+ "hg": [
+ "/usr/local/bin/hg",
+ "--config",
+ "web.cacerts=/etc/pki/tls/certs/ca-bundle.crt",
+ ],
+ "hgtool.py": ["/usr/local/bin/hgtool.py"],
+ }
+
+config = {
+ "log_name": "l10n_bumper",
+ "log_type": "multi",
+ "exes": EXES,
+ "gecko_pull_url": "https://hg.mozilla.org/{}".format(MULTI_REPO),
+ "gecko_push_url": "ssh://hg.mozilla.org/{}".format(MULTI_REPO),
+ "hg_user": "L10n Bumper Bot <release+l10nbumper@mozilla.com>",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "ssh_user": "ffxbld",
+ "vcs_share_base": "/builds/hg-shared",
+ "version_path": "mobile/android/config/version-files/release/version.txt",
+ "status_path": ".l10n_bumper_status",
+ "bump_configs": [
+ {
+ "path": "mobile/locales/l10n-changesets.json",
+ "format": "json",
+ "name": "Fennec l10n changesets",
+ "revision_url": "https://l10n.mozilla.org/shipping/l10n-changesets?av=fennec%(COMBINED_MAJOR_VERSION)s",
+ "platform_configs": [
+ {
+ "platforms": ["android-multilocale"],
+ "path": "mobile/android/locales/maemo-locales",
+ }
+ ],
+ }
+ ],
+}
diff --git a/testing/mozharness/configs/marionette/mac_taskcluster_config.py b/testing/mozharness/configs/marionette/mac_taskcluster_config.py
new file mode 100644
index 0000000000..2ae326512e
--- /dev/null
+++ b/testing/mozharness/configs/marionette/mac_taskcluster_config.py
@@ -0,0 +1,39 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Configuration over-rides for prod_config.py, for osx
+
+# OS Specifics
+DISABLE_SCREEN_SAVER = False
+ADJUST_MOUSE_AND_SCREEN = False
+
+#####
+config = {
+ "tooltool_cache": "/builds/tooltool_cache",
+ "run_cmd_checks_enabled": True,
+ "preflight_run_cmd_suites": [
+ # NOTE 'enabled' is only here while we have unconsolidated configs
+ {
+ "name": "disable_screen_saver",
+ "cmd": ["xset", "s", "off", "s", "reset"],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": False,
+ "enabled": DISABLE_SCREEN_SAVER,
+ },
+ {
+ "name": "run mouse & screen adjustment script",
+ "cmd": [
+ # when configs are consolidated this python path will only show
+ # for windows.
+ "python",
+ "../scripts/external_tools/mouse_and_screen_resolution.py",
+ "--configuration-file",
+ "../scripts/external_tools/machine-configuration.json",
+ ],
+ "architectures": ["32bit"],
+ "halt_on_failure": True,
+ "enabled": ADJUST_MOUSE_AND_SCREEN,
+ },
+ ],
+}
diff --git a/testing/mozharness/configs/marionette/prod_config.py b/testing/mozharness/configs/marionette/prod_config.py
new file mode 100644
index 0000000000..200106061b
--- /dev/null
+++ b/testing/mozharness/configs/marionette/prod_config.py
@@ -0,0 +1,68 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# This is a template config file for marionette production.
+HG_SHARE_BASE_DIR = "/builds/hg-shared"
+
+# OS Specifics
+DISABLE_SCREEN_SAVER = True
+ADJUST_MOUSE_AND_SCREEN = False
+
+#####
+config = {
+ # marionette options
+ "marionette_address": "localhost:2828",
+ "test_manifest": "unit-tests.ini",
+ "vcs_share_base": HG_SHARE_BASE_DIR,
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "create-virtualenv",
+ "install",
+ "run-tests",
+ ],
+ "download_symbols": "ondemand",
+ "tooltool_cache": "/builds/worker/tooltool-cache",
+ "suite_definitions": {
+ "marionette_desktop": {
+ "options": [
+ "-vv",
+ "--log-raw=%(raw_log_file)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--log-html=%(html_report_file)s",
+ "--binary=%(binary)s",
+ "--address=%(address)s",
+ "--symbols-path=%(symbols_path)s",
+ ],
+ "run_filename": "",
+ "testsdir": "marionette",
+ }
+ },
+ "run_cmd_checks_enabled": True,
+ "preflight_run_cmd_suites": [
+ # NOTE 'enabled' is only here while we have unconsolidated configs
+ {
+ "name": "disable_screen_saver",
+ "cmd": ["xset", "s", "off", "s", "reset"],
+ "halt_on_failure": False,
+ "architectures": ["32bit", "64bit"],
+ "enabled": DISABLE_SCREEN_SAVER,
+ },
+ {
+ "name": "run mouse & screen adjustment script",
+ "cmd": [
+ # when configs are consolidated this python path will only show
+ # for windows.
+ "python",
+ "../scripts/external_tools/mouse_and_screen_resolution.py",
+ "--configuration-file",
+ "../scripts/external_tools/machine-configuration.json",
+ ],
+ "architectures": ["32bit"],
+ "halt_on_failure": True,
+ "enabled": ADJUST_MOUSE_AND_SCREEN,
+ },
+ ],
+ "structured_output": True,
+}
diff --git a/testing/mozharness/configs/marionette/test_config.py b/testing/mozharness/configs/marionette/test_config.py
new file mode 100644
index 0000000000..a41fd5a68f
--- /dev/null
+++ b/testing/mozharness/configs/marionette/test_config.py
@@ -0,0 +1,29 @@
+# This is a template config file for marionette test.
+
+config = {
+ # marionette options
+ "marionette_address": "localhost:2828",
+ "test_manifest": "unit-tests.ini",
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "create-virtualenv",
+ "install",
+ "run-tests",
+ ],
+ "suite_definitions": {
+ "marionette_desktop": {
+ "options": [
+ "-vv",
+ "--log-raw=%(raw_log_file)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--log-html=%(html_report_file)s",
+ "--binary=%(binary)s",
+ "--address=%(address)s",
+ "--symbols-path=%(symbols_path)s",
+ ],
+ "run_filename": "",
+ "testsdir": "marionette",
+ },
+ },
+}
diff --git a/testing/mozharness/configs/marionette/windows_config.py b/testing/mozharness/configs/marionette/windows_config.py
new file mode 100644
index 0000000000..9101d67a5b
--- /dev/null
+++ b/testing/mozharness/configs/marionette/windows_config.py
@@ -0,0 +1,38 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# This is a template config file for marionette production on Windows.
+config = {
+ # marionette options
+ "marionette_address": "localhost:2828",
+ "test_manifest": "unit-tests.ini",
+ "virtualenv_path": "venv",
+ "exes": {
+ "python": "c:/mozilla-build/python27/python",
+ "hg": "c:/mozilla-build/hg/hg",
+ },
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "create-virtualenv",
+ "install",
+ "run-tests",
+ ],
+ "download_symbols": "ondemand",
+ "suite_definitions": {
+ "marionette_desktop": {
+ "options": [
+ "-vv",
+ "--log-raw=%(raw_log_file)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--log-html=%(html_report_file)s",
+ "--binary=%(binary)s",
+ "--address=%(address)s",
+ "--symbols-path=%(symbols_path)s",
+ ],
+ "run_filename": "",
+ "testsdir": "marionette",
+ },
+ },
+}
diff --git a/testing/mozharness/configs/marionette/windows_taskcluster_config.py b/testing/mozharness/configs/marionette/windows_taskcluster_config.py
new file mode 100644
index 0000000000..95d3f388f3
--- /dev/null
+++ b/testing/mozharness/configs/marionette/windows_taskcluster_config.py
@@ -0,0 +1,138 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# This is a template config file for marionette production on Windows.
+from __future__ import absolute_import
+import os
+import platform
+import sys
+
+# OS Specifics
+DISABLE_SCREEN_SAVER = False
+ADJUST_MOUSE_AND_SCREEN = True
+DESKTOP_VISUALFX_THEME = {
+ "Let Windows choose": 0,
+ "Best appearance": 1,
+ "Best performance": 2,
+ "Custom": 3,
+}.get("Best appearance")
+TASKBAR_AUTOHIDE_REG_PATH = {
+ "Windows 7": "HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2",
+ "Windows 10": "HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3",
+}.get("{} {}".format(platform.system(), platform.release()))
+
+#####
+config = {
+ # marionette options
+ "marionette_address": "localhost:2828",
+ "test_manifest": "unit-tests.ini",
+ "virtualenv_path": "venv",
+ "exes": {
+ "python": sys.executable,
+ "hg": os.path.join(os.environ["PROGRAMFILES"], "Mercurial", "hg"),
+ },
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "create-virtualenv",
+ "install",
+ "run-tests",
+ ],
+ "download_symbols": "ondemand",
+ "suite_definitions": {
+ "marionette_desktop": {
+ "options": [
+ "-vv",
+ "--log-raw=%(raw_log_file)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--log-html=%(html_report_file)s",
+ "--binary=%(binary)s",
+ "--address=%(address)s",
+ "--symbols-path=%(symbols_path)s",
+ ],
+ "run_filename": "",
+ "testsdir": "marionette",
+ },
+ },
+ "run_cmd_checks_enabled": True,
+ "preflight_run_cmd_suites": [
+ {
+ "name": "disable_screen_saver",
+ "cmd": ["xset", "s", "off", "s", "reset"],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": False,
+ "enabled": DISABLE_SCREEN_SAVER,
+ },
+ {
+ "name": "run mouse & screen adjustment script",
+ "cmd": [
+ sys.executable,
+ os.path.join(
+ os.getcwd(),
+ "mozharness",
+ "external_tools",
+ "mouse_and_screen_resolution.py",
+ ),
+ "--configuration-file",
+ os.path.join(
+ os.getcwd(),
+ "mozharness",
+ "external_tools",
+ "machine-configuration.json",
+ ),
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": ADJUST_MOUSE_AND_SCREEN,
+ },
+ {
+ "name": "disable windows security and maintenance notifications",
+ "cmd": [
+ "powershell",
+ "-command",
+ r"\"&{$p='HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings\Windows.SystemToast.SecurityAndMaintenance';if(!(Test-Path -Path $p)){&New-Item -Path $p -Force}&Set-ItemProperty -Path $p -Name Enabled -Value 0}\"", # noqa
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": (platform.release() == 10),
+ },
+ {
+ "name": "set windows VisualFX",
+ "cmd": [
+ "powershell",
+ "-command",
+ "\"&{{&Set-ItemProperty -Path 'HKCU:Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects' -Name VisualFXSetting -Value {}}}\"".format(
+ DESKTOP_VISUALFX_THEME
+ ),
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": True,
+ },
+ {
+ "name": "hide windows taskbar",
+ "cmd": [
+ "powershell",
+ "-command",
+ "\"&{{$p='{}';$v=(Get-ItemProperty -Path $p).Settings;$v[8]=3;&Set-ItemProperty -Path $p -Name Settings -Value $v}}\"".format(
+ TASKBAR_AUTOHIDE_REG_PATH
+ ),
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": True,
+ },
+ {
+ "name": "restart windows explorer",
+ "cmd": [
+ "powershell",
+ "-command",
+ '"&{&Stop-Process -ProcessName explorer}"',
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": True,
+ },
+ ],
+}
diff --git a/testing/mozharness/configs/merge_day/beta_to_release.py b/testing/mozharness/configs/merge_day/beta_to_release.py
new file mode 100644
index 0000000000..51a1f7617f
--- /dev/null
+++ b/testing/mozharness/configs/merge_day/beta_to_release.py
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+ABS_WORK_DIR = os.path.join(os.getcwd(), "build")
+
+config = {
+ "log_name": "beta_to_release",
+ "copy_files": [
+ {
+ "src": "browser/config/version.txt",
+ "dst": "browser/config/version_display.txt",
+ },
+ ],
+ "replacements": [
+ # File, from, to
+ ],
+ "vcs_share_base": os.path.join(ABS_WORK_DIR, "hg-shared"),
+ # "hg_share_base": None,
+ "from_repo_url": "https://hg.mozilla.org/releases/mozilla-beta",
+ "to_repo_url": "https://hg.mozilla.org/releases/mozilla-release",
+ "base_tag": "FIREFOX_RELEASE_%(major_version)s_BASE",
+ "end_tag": "FIREFOX_RELEASE_%(major_version)s_END",
+ "migration_behavior": "beta_to_release",
+ "require_remove_locales": False,
+ "pull_all_branches": True,
+ "virtualenv_modules": [
+ "requests==2.8.1",
+ ],
+}
diff --git a/testing/mozharness/configs/merge_day/bump_central.py b/testing/mozharness/configs/merge_day/bump_central.py
new file mode 100644
index 0000000000..55b86858e3
--- /dev/null
+++ b/testing/mozharness/configs/merge_day/bump_central.py
@@ -0,0 +1,32 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+ABS_WORK_DIR = os.path.join(os.getcwd(), "build")
+
+config = {
+ "log_name": "bump_central",
+ "version_files": [
+ {"file": "browser/config/version.txt", "suffix": ""},
+ {"file": "browser/config/version_display.txt", "suffix": "b1"},
+ {"file": "config/milestone.txt", "suffix": ""},
+ ],
+ "vcs_share_base": os.path.join(ABS_WORK_DIR, "hg-shared"),
+ "to_repo_url": "https://hg.mozilla.org/mozilla-central",
+ "end_tag": "FIREFOX_NIGHTLY_%(major_version)s_END",
+ "virtualenv_modules": [
+ "requests==2.8.1",
+ ],
+ "require_remove_locales": False,
+ "requires_head_merge": False,
+ "migration_behavior": "bump_and_tag_central", # like esr_bump.py, needed for key validation
+ "default_actions": [
+ "clean-repos",
+ "pull",
+ "set_push_to_ssh",
+ "bump_and_tag_central",
+ ],
+}
diff --git a/testing/mozharness/configs/merge_day/bump_esr.py b/testing/mozharness/configs/merge_day/bump_esr.py
new file mode 100644
index 0000000000..cfcda871d2
--- /dev/null
+++ b/testing/mozharness/configs/merge_day/bump_esr.py
@@ -0,0 +1,22 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+ABS_WORK_DIR = os.path.join(os.getcwd(), "build")
+config = {
+ "vcs_share_base": os.path.join(ABS_WORK_DIR, "hg-shared"),
+ "log_name": "bump_esr",
+ "version_files": [
+ {"file": "browser/config/version.txt", "suffix": ""},
+ {"file": "browser/config/version_display.txt", "suffix": ""},
+ {"file": "config/milestone.txt", "suffix": ""},
+ ],
+ "to_repo_url": "https://hg.mozilla.org/releases/mozilla-esr60",
+ "migration_behavior": "bump_second_digit",
+ "require_remove_locales": False,
+ "requires_head_merge": False,
+ "default_actions": ["clean-repos", "pull", "set_push_to_ssh", "bump_second_digit"],
+}
diff --git a/testing/mozharness/configs/merge_day/central_to_beta.py b/testing/mozharness/configs/merge_day/central_to_beta.py
new file mode 100644
index 0000000000..7dfd1ad535
--- /dev/null
+++ b/testing/mozharness/configs/merge_day/central_to_beta.py
@@ -0,0 +1,56 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+ABS_WORK_DIR = os.path.join(os.getcwd(), "build")
+
+config = {
+ "log_name": "central_to_beta",
+ "version_files": [
+ {"file": "browser/config/version.txt", "suffix": ""},
+ {"file": "browser/config/version_display.txt", "suffix": "b1"},
+ {"file": "config/milestone.txt", "suffix": ""},
+ ],
+ "replacements": [
+ # File, from, to
+ (
+ f,
+ "ac_add_options --with-branding=browser/branding/nightly",
+ "ac_add_options --enable-official-branding",
+ )
+ for f in [
+ "browser/config/mozconfigs/linux32/l10n-mozconfig",
+ "browser/config/mozconfigs/linux64/l10n-mozconfig",
+ "browser/config/mozconfigs/win32/l10n-mozconfig",
+ "browser/config/mozconfigs/win64/l10n-mozconfig",
+ "browser/config/mozconfigs/win64-aarch64/l10n-mozconfig",
+ "browser/config/mozconfigs/macosx64/l10n-mozconfig",
+ ]
+ ]
+ + [
+ # File, from, to
+ (
+ "build/mozconfig.common",
+ "MOZ_REQUIRE_SIGNING=${MOZ_REQUIRE_SIGNING-0}",
+ "MOZ_REQUIRE_SIGNING=${MOZ_REQUIRE_SIGNING-1}",
+ ),
+ (
+ "build/mozconfig.common",
+ "# Disable enforcing that add-ons are signed by the trusted root",
+ "# Enable enforcing that add-ons are signed by the trusted root",
+ ),
+ ],
+ "vcs_share_base": os.path.join(ABS_WORK_DIR, "hg-shared"),
+ # "hg_share_base": None,
+ "from_repo_url": "https://hg.mozilla.org/mozilla-central",
+ "to_repo_url": "https://hg.mozilla.org/releases/mozilla-beta",
+ "base_tag": "FIREFOX_BETA_%(major_version)s_BASE",
+ "end_tag": "FIREFOX_BETA_%(major_version)s_END",
+ "migration_behavior": "central_to_beta",
+ "virtualenv_modules": [
+ "requests==2.8.1",
+ ],
+}
diff --git a/testing/mozharness/configs/merge_day/early_to_late_beta.py b/testing/mozharness/configs/merge_day/early_to_late_beta.py
new file mode 100644
index 0000000000..588d0c9fde
--- /dev/null
+++ b/testing/mozharness/configs/merge_day/early_to_late_beta.py
@@ -0,0 +1,11 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# This config is for `mach try release` to support beta simulations.
+
+config = {
+ "replacements": [
+ ("build/defines.sh", "EARLY_BETA_OR_EARLIER=1", "EARLY_BETA_OR_EARLIER="),
+ ],
+}
diff --git a/testing/mozharness/configs/merge_day/release_to_esr.py b/testing/mozharness/configs/merge_day/release_to_esr.py
new file mode 100644
index 0000000000..61136c88b8
--- /dev/null
+++ b/testing/mozharness/configs/merge_day/release_to_esr.py
@@ -0,0 +1,39 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+ABS_WORK_DIR = os.path.join(os.getcwd(), "build")
+NEW_ESR_REPO = "https://hg.mozilla.org/releases/mozilla-esr68"
+
+config = {
+ "log_name": "relese_to_esr",
+ "version_files": [
+ {"file": "browser/config/version_display.txt", "suffix": "esr"},
+ ],
+ "replacements": [
+ # File, from, to
+ (
+ "build/mozconfig.common",
+ "# Enable enforcing that add-ons are signed by the trusted root",
+ "# Disable enforcing that add-ons are signed by the trusted root",
+ ),
+ (
+ "build/mozconfig.common",
+ "MOZ_REQUIRE_SIGNING=${MOZ_REQUIRE_SIGNING-1}",
+ "MOZ_REQUIRE_SIGNING=${MOZ_REQUIRE_SIGNING-0}",
+ ),
+ ],
+ "vcs_share_base": os.path.join(ABS_WORK_DIR, "hg-shared"),
+ # Pull from ESR repo, since we have already branched it and have landed esr-specific patches on it
+ # We will need to manually merge mozilla-release into before runnning this.
+ "from_repo_url": NEW_ESR_REPO,
+ "to_repo_url": NEW_ESR_REPO,
+ "base_tag": "FIREFOX_ESR_%(major_version)s_BASE",
+ "migration_behavior": "release_to_esr",
+ "require_remove_locales": False,
+ "requires_head_merge": False,
+ "pull_all_branches": False,
+}
diff --git a/testing/mozharness/configs/merge_day/staging_beta_migration.py b/testing/mozharness/configs/merge_day/staging_beta_migration.py
new file mode 100644
index 0000000000..5576c4d2fa
--- /dev/null
+++ b/testing/mozharness/configs/merge_day/staging_beta_migration.py
@@ -0,0 +1,22 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Use this script in conjunction with aurora_to_beta.py.
+# mozharness/scripts/merge_day/gecko_migration.py -c \
+# mozharness/configs/merge_day/aurora_to_beta.py -c
+# mozharness/configs/merge_day/staging_beta_migration.py ...
+from __future__ import absolute_import
+import os
+
+ABS_WORK_DIR = os.path.join(os.getcwd(), "build")
+
+config = {
+ "log_name": "staging_beta",
+ "vcs_share_base": os.path.join(ABS_WORK_DIR, "hg-shared"),
+ "from_repo_url": "ssh://hg.mozilla.org/releases/mozilla-aurora",
+ "to_repo_url": "ssh://hg.mozilla.org/users/stage-ffxbld/mozilla-beta",
+ "base_tag": "FIREFOX_BETA_%(major_version)s_BASE",
+ "end_tag": "FIREFOX_BETA_%(major_version)s_END",
+ "migration_behavior": "aurora_to_beta",
+}
diff --git a/testing/mozharness/configs/multi_locale/android-mozharness-build.json b/testing/mozharness/configs/multi_locale/android-mozharness-build.json
new file mode 100644
index 0000000000..5fc7fa3794
--- /dev/null
+++ b/testing/mozharness/configs/multi_locale/android-mozharness-build.json
@@ -0,0 +1,11 @@
+{
+ "log_name": "multilocale",
+ "locales_dir": "mobile/android/locales",
+ "ignore_locales": ["en-US", "multi"],
+ "vcs_share_base": "/builds/hg-shared",
+ "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
+ "hg_l10n_tag": "default",
+ "work_dir": "build",
+ "locales_file": "mobile/locales/l10n-changesets.json",
+ "locales_platform": "android-multilocale"
+}
diff --git a/testing/mozharness/configs/openh264/linux32.py b/testing/mozharness/configs/openh264/linux32.py
new file mode 100644
index 0000000000..bb3ea624fa
--- /dev/null
+++ b/testing/mozharness/configs/openh264/linux32.py
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+import mozharness
+
+external_tools_path = os.path.join(
+ os.path.abspath(os.path.dirname(os.path.dirname(mozharness.__file__))),
+ "external_tools",
+)
+
+config = {
+ "exes": {
+ "gittool.py": [os.path.join(external_tools_path, "gittool.py")],
+ "python2.7": "python2.7",
+ },
+ "dump_syms_binary": "{}/dump_syms/dump_syms".format(os.environ["MOZ_FETCHES_DIR"]),
+ "arch": "x86",
+ "avoid_avx2": True,
+ "operating_system": "linux",
+ "partial_env": {
+ "PATH": (
+ "{MOZ_FETCHES_DIR}/clang/bin:"
+ "{MOZ_FETCHES_DIR}/binutils/bin:"
+ "{MOZ_FETCHES_DIR}/nasm:%(PATH)s".format(
+ MOZ_FETCHES_DIR=os.environ["MOZ_FETCHES_DIR"]
+ )
+ ),
+ },
+}
diff --git a/testing/mozharness/configs/openh264/linux64.py b/testing/mozharness/configs/openh264/linux64.py
new file mode 100644
index 0000000000..4b74575deb
--- /dev/null
+++ b/testing/mozharness/configs/openh264/linux64.py
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+import mozharness
+
+external_tools_path = os.path.join(
+ os.path.abspath(os.path.dirname(os.path.dirname(mozharness.__file__))),
+ "external_tools",
+)
+
+config = {
+ "exes": {
+ "gittool.py": [os.path.join(external_tools_path, "gittool.py")],
+ "python2.7": "python2.7",
+ },
+ "dump_syms_binary": "{}/dump_syms/dump_syms".format(os.environ["MOZ_FETCHES_DIR"]),
+ "arch": "x64",
+ "avoid_avx2": True,
+ "operating_system": "linux",
+ "partial_env": {
+ "PATH": (
+ "{MOZ_FETCHES_DIR}/clang/bin:"
+ "{MOZ_FETCHES_DIR}/binutils/bin:"
+ "{MOZ_FETCHES_DIR}/nasm:%(PATH)s".format(
+ MOZ_FETCHES_DIR=os.environ["MOZ_FETCHES_DIR"]
+ )
+ ),
+ },
+}
diff --git a/testing/mozharness/configs/openh264/macosx64-aarch64.py b/testing/mozharness/configs/openh264/macosx64-aarch64.py
new file mode 100644
index 0000000000..6ccce2ac7b
--- /dev/null
+++ b/testing/mozharness/configs/openh264/macosx64-aarch64.py
@@ -0,0 +1,43 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+import mozharness
+
+external_tools_path = os.path.join(
+ os.path.abspath(os.path.dirname(os.path.dirname(mozharness.__file__))),
+ "external_tools",
+)
+
+config = {
+ "exes": {
+ "gittool.py": [os.path.join(external_tools_path, "gittool.py")],
+ "python2.7": "python2.7",
+ },
+ "dump_syms_binary": "{}/dump_syms/dump_syms".format(os.environ["MOZ_FETCHES_DIR"]),
+ "arch": "aarch64",
+ "use_yasm": True,
+ "operating_system": "darwin",
+ "partial_env": {
+ "CFLAGS": (
+ "-target aarch64-apple-darwin -mcpu=apple-a12 "
+ "-isysroot {MOZ_FETCHES_DIR}/MacOSX11.0.sdk".format(
+ MOZ_FETCHES_DIR=os.environ["MOZ_FETCHES_DIR"]
+ )
+ ),
+ "LDFLAGS": (
+ "-target aarch64-apple-darwin -mcpu=apple-a12 "
+ "-isysroot {MOZ_FETCHES_DIR}/MacOSX11.0.sdk".format(
+ MOZ_FETCHES_DIR=os.environ["MOZ_FETCHES_DIR"]
+ )
+ ),
+ "PATH": (
+ "{MOZ_FETCHES_DIR}/clang/bin/:{MOZ_FETCHES_DIR}/cctools/bin/:%(PATH)s".format(
+ MOZ_FETCHES_DIR=os.environ["MOZ_FETCHES_DIR"]
+ )
+ ),
+ },
+}
diff --git a/testing/mozharness/configs/openh264/macosx64.py b/testing/mozharness/configs/openh264/macosx64.py
new file mode 100644
index 0000000000..a168d61e25
--- /dev/null
+++ b/testing/mozharness/configs/openh264/macosx64.py
@@ -0,0 +1,43 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+import mozharness
+
+external_tools_path = os.path.join(
+ os.path.abspath(os.path.dirname(os.path.dirname(mozharness.__file__))),
+ "external_tools",
+)
+
+config = {
+ "tooltool_manifest_file": "osx.manifest",
+ "tooltool_cache": "/builds/tooltool_cache",
+ "exes": {
+ "gittool.py": [os.path.join(external_tools_path, "gittool.py")],
+ "python2.7": "python2.7",
+ },
+ "dump_syms_binary": "{}/dump_syms/dump_syms".format(os.environ["MOZ_FETCHES_DIR"]),
+ "arch": "x64",
+ "use_yasm": True,
+ "operating_system": "darwin",
+ "partial_env": {
+ "CXXFLAGS": (
+ "-target x86_64-apple-darwin "
+ "-isysroot %(abs_work_dir)s/MacOSX10.11.sdk "
+ "-mmacosx-version-min=10.11"
+ ),
+ "LDFLAGS": (
+ "-target x86_64-apple-darwin "
+ "-isysroot %(abs_work_dir)s/MacOSX10.11.sdk "
+ "-mmacosx-version-min=10.11"
+ ),
+ "PATH": (
+ "{MOZ_FETCHES_DIR}/clang/bin/:{MOZ_FETCHES_DIR}/cctools/bin/:%(PATH)s".format(
+ MOZ_FETCHES_DIR=os.environ["MOZ_FETCHES_DIR"]
+ )
+ ),
+ },
+}
diff --git a/testing/mozharness/configs/openh264/tooltool-manifests/osx.manifest b/testing/mozharness/configs/openh264/tooltool-manifests/osx.manifest
new file mode 100644
index 0000000000..6433d85f3f
--- /dev/null
+++ b/testing/mozharness/configs/openh264/tooltool-manifests/osx.manifest
@@ -0,0 +1,10 @@
+[
+ {
+ "size": 34094283,
+ "visibility": "internal",
+ "digest": "8811050fe375bcc566c8b85173d86b8a87aa2148edfed93023735c2de44b66a5a28cbaa1cfd396032447fd803e03f308ed941a200c0e2a1ad9fbe16b5606ee7c",
+ "algorithm": "sha512",
+ "unpack": true,
+ "filename": "MacOSX10.11.sdk.tar.xz"
+ }
+]
diff --git a/testing/mozharness/configs/openh264/tooltool-manifests/win.manifest b/testing/mozharness/configs/openh264/tooltool-manifests/win.manifest
new file mode 100644
index 0000000000..5ec9a8377a
--- /dev/null
+++ b/testing/mozharness/configs/openh264/tooltool-manifests/win.manifest
@@ -0,0 +1,10 @@
+[
+ {
+ "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
+ }
+]
diff --git a/testing/mozharness/configs/openh264/tooltool-manifests/win64-aarch64.manifest b/testing/mozharness/configs/openh264/tooltool-manifests/win64-aarch64.manifest
new file mode 100644
index 0000000000..4989d3a4ee
--- /dev/null
+++ b/testing/mozharness/configs/openh264/tooltool-manifests/win64-aarch64.manifest
@@ -0,0 +1,11 @@
+[
+ {
+ "version": "Visual Studio 2017 15.9.6 / SDK 10.0.17134.0",
+ "size": 490015895,
+ "visibility": "internal",
+ "digest": "91d08703a8ce39f6f53ccecc7c7b6f57e1b571ddb5d1eb4dd9260e52580566c35a4bed39ad366fd60ca60ebf5c06f0f00561bba5cd631826511f2872a3d2dcd5",
+ "algorithm": "sha512",
+ "filename": "vs2017_15.9.6.zip",
+ "unpack": true
+ }
+]
diff --git a/testing/mozharness/configs/openh264/win32.py b/testing/mozharness/configs/openh264/win32.py
new file mode 100644
index 0000000000..72f1663fb9
--- /dev/null
+++ b/testing/mozharness/configs/openh264/win32.py
@@ -0,0 +1,52 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import sys
+import os
+
+import mozharness
+
+external_tools_path = os.path.join(
+ os.path.abspath(os.path.dirname(os.path.dirname(mozharness.__file__))),
+ "external_tools",
+)
+
+VSPATH = "%(abs_work_dir)s\\vs2017_15.8.4"
+config = {
+ "tooltool_manifest_file": "win.manifest",
+ "exes": {
+ "gittool.py": [sys.executable, os.path.join(external_tools_path, "gittool.py")],
+ "python2.7": "c:\\mozilla-build\\python\\python.exe",
+ },
+ "dump_syms_binary": "{}/dump_syms/dump_syms.exe".format(
+ os.environ["MOZ_FETCHES_DIR"]
+ ),
+ "arch": "x86",
+ "use_yasm": True,
+ "partial_env": {
+ "PATH": (
+ "{MOZ_FETCHES_DIR}\\clang\\bin\\;"
+ "{_VSPATH}\\VC\\bin\\Hostx64\\x64;%(PATH)s"
+ # 32-bit redist here for our dump_syms.exe
+ "{_VSPATH}/VC/redist/x86/Microsoft.VC141.CRT;"
+ "{_VSPATH}/SDK/Redist/ucrt/DLLs/x86;"
+ "{_VSPATH}/DIA SDK/bin"
+ ).format(_VSPATH=VSPATH, MOZ_FETCHES_DIR=os.environ["MOZ_FETCHES_DIR"]),
+ "INCLUDES": (
+ "-I{_VSPATH}\\VC\\include "
+ "-I{_VSPATH}\\VC\\atlmfc\\include "
+ "-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\ucrt "
+ "-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\shared "
+ "-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\um "
+ "-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\winrt "
+ ).format(_VSPATH=VSPATH),
+ "LIB": (
+ "{_VSPATH}/VC/lib/x86;"
+ "{_VSPATH}/VC/atlmfc/lib/x86;"
+ "{_VSPATH}/SDK/lib/10.0.17134.0/ucrt/x86;"
+ "{_VSPATH}/SDK/lib/10.0.17134.0/um/x86;"
+ ).format(_VSPATH=VSPATH),
+ },
+}
diff --git a/testing/mozharness/configs/openh264/win64-aarch64.py b/testing/mozharness/configs/openh264/win64-aarch64.py
new file mode 100644
index 0000000000..5f6c3c4a67
--- /dev/null
+++ b/testing/mozharness/configs/openh264/win64-aarch64.py
@@ -0,0 +1,54 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import sys
+import os
+
+import mozharness
+
+external_tools_path = os.path.join(
+ os.path.abspath(os.path.dirname(os.path.dirname(mozharness.__file__))),
+ "external_tools",
+)
+
+VSPATH = "%(abs_work_dir)s\\vs2017_15.9.6"
+config = {
+ "tooltool_manifest_file": "win64-aarch64.manifest",
+ "exes": {
+ "gittool.py": [sys.executable, os.path.join(external_tools_path, "gittool.py")],
+ "python2.7": "c:\\mozilla-build\\python\\python.exe",
+ },
+ "dump_syms_binary": "{}/dump_syms/dump_syms.exe".format(
+ os.environ["MOZ_FETCHES_DIR"]
+ ),
+ "arch": "aarch64",
+ "use_yasm": False,
+ "partial_env": {
+ "PATH": (
+ "%(abs_work_dir)s\\openh264;"
+ "{MOZ_FETCHES_DIR}\\clang\\bin\\;"
+ "{_VSPATH}\\VC\\bin\\Hostx64\\arm64;"
+ "{_VSPATH}\\VC\\bin\\Hostx64\\x64;"
+ # 32-bit redist here for our dump_syms.exe
+ "{_VSPATH}/VC/redist/x86/Microsoft.VC141.CRT;"
+ "{_VSPATH}/SDK/Redist/ucrt/DLLs/x86;"
+ "{_VSPATH}/DIA SDK/bin;%(PATH)s;"
+ ).format(_VSPATH=VSPATH, MOZ_FETCHES_DIR=os.environ["MOZ_FETCHES_DIR"]),
+ "INCLUDES": (
+ "-I{_VSPATH}\\VC\\include "
+ "-I{_VSPATH}\\VC\\atlmfc\\include "
+ "-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\ucrt "
+ "-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\shared "
+ "-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\um "
+ "-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\winrt "
+ ).format(_VSPATH=VSPATH),
+ "LIB": (
+ "{_VSPATH}/VC/lib/arm64;"
+ "{_VSPATH}/VC/atlmfc/lib/arm64;"
+ "{_VSPATH}/SDK/lib/10.0.17134.0/ucrt/arm64;"
+ "{_VSPATH}/SDK/lib/10.0.17134.0/um/arm64;"
+ ).format(_VSPATH=VSPATH),
+ },
+}
diff --git a/testing/mozharness/configs/openh264/win64.py b/testing/mozharness/configs/openh264/win64.py
new file mode 100644
index 0000000000..7beca21500
--- /dev/null
+++ b/testing/mozharness/configs/openh264/win64.py
@@ -0,0 +1,52 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import sys
+import os
+
+import mozharness
+
+external_tools_path = os.path.join(
+ os.path.abspath(os.path.dirname(os.path.dirname(mozharness.__file__))),
+ "external_tools",
+)
+
+VSPATH = "%(abs_work_dir)s\\vs2017_15.8.4"
+config = {
+ "tooltool_manifest_file": "win.manifest",
+ "exes": {
+ "gittool.py": [sys.executable, os.path.join(external_tools_path, "gittool.py")],
+ "python2.7": "c:\\mozilla-build\\python\\python.exe",
+ },
+ "dump_syms_binary": "{}/dump_syms/dump_syms.exe".format(
+ os.environ["MOZ_FETCHES_DIR"]
+ ),
+ "arch": "x64",
+ "use_yasm": True,
+ "partial_env": {
+ "PATH": (
+ "{MOZ_FETCHES_DIR}\\clang\\bin\\;"
+ "{_VSPATH}\\VC\\bin\\Hostx64\\x64;%(PATH)s;"
+ # 32-bit redist here for our dump_syms.exe
+ "{_VSPATH}/VC/redist/x86/Microsoft.VC141.CRT;"
+ "{_VSPATH}/SDK/Redist/ucrt/DLLs/x86;"
+ "{_VSPATH}/DIA SDK/bin"
+ ).format(_VSPATH=VSPATH, MOZ_FETCHES_DIR=os.environ["MOZ_FETCHES_DIR"]),
+ "INCLUDES": (
+ "-I{_VSPATH}\\VC\\include "
+ "-I{_VSPATH}\\VC\\atlmfc\\include "
+ "-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\ucrt "
+ "-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\shared "
+ "-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\um "
+ "-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\winrt "
+ ).format(_VSPATH=VSPATH),
+ "LIB": (
+ "{_VSPATH}/VC/lib/x64;"
+ "{_VSPATH}/VC/atlmfc/lib/x64;"
+ "{_VSPATH}/SDK/lib/10.0.17134.0/ucrt/x64;"
+ "{_VSPATH}/SDK/lib/10.0.17134.0/um/x64;"
+ ).format(_VSPATH=VSPATH),
+ },
+}
diff --git a/testing/mozharness/configs/partner_repacks/release_mozilla-release_desktop.py b/testing/mozharness/configs/partner_repacks/release_mozilla-release_desktop.py
new file mode 100644
index 0000000000..3391dd396c
--- /dev/null
+++ b/testing/mozharness/configs/partner_repacks/release_mozilla-release_desktop.py
@@ -0,0 +1,19 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "appName": "Firefox",
+ "log_name": "partner_repack",
+ "repack_manifests_url": "git@github.com:mozilla-partners/repack-manifests.git",
+ "repo_file": "https://raw.githubusercontent.com/mozilla/git-repo/master/repo",
+ "secret_files": [
+ {
+ "filename": "/builds/partner-github-ssh",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/partner-github-ssh",
+ "min_scm_level": 1,
+ "mode": 0o600,
+ },
+ ],
+ "ssh_key": "/builds/partner-github-ssh",
+}
diff --git a/testing/mozharness/configs/partner_repacks/release_mozilla-release_desktop_EME-free.py b/testing/mozharness/configs/partner_repacks/release_mozilla-release_desktop_EME-free.py
new file mode 100644
index 0000000000..4d2d2df418
--- /dev/null
+++ b/testing/mozharness/configs/partner_repacks/release_mozilla-release_desktop_EME-free.py
@@ -0,0 +1,19 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "appName": "Firefox",
+ "log_name": "partner_repack",
+ "repack_manifests_url": "git@github.com:mozilla-partners/mozilla-EME-free-manifest.git",
+ "repo_file": "https://raw.githubusercontent.com/mozilla/git-repo/master/repo",
+ "secret_files": [
+ {
+ "filename": "/builds/partner-github-ssh",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/partner-github-ssh",
+ "min_scm_level": 1,
+ "mode": 0o600,
+ },
+ ],
+ "ssh_key": "/builds/partner-github-ssh",
+}
diff --git a/testing/mozharness/configs/partner_repacks/staging_release_mozilla-release_desktop.py b/testing/mozharness/configs/partner_repacks/staging_release_mozilla-release_desktop.py
new file mode 100644
index 0000000000..3391dd396c
--- /dev/null
+++ b/testing/mozharness/configs/partner_repacks/staging_release_mozilla-release_desktop.py
@@ -0,0 +1,19 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "appName": "Firefox",
+ "log_name": "partner_repack",
+ "repack_manifests_url": "git@github.com:mozilla-partners/repack-manifests.git",
+ "repo_file": "https://raw.githubusercontent.com/mozilla/git-repo/master/repo",
+ "secret_files": [
+ {
+ "filename": "/builds/partner-github-ssh",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/partner-github-ssh",
+ "min_scm_level": 1,
+ "mode": 0o600,
+ },
+ ],
+ "ssh_key": "/builds/partner-github-ssh",
+}
diff --git a/testing/mozharness/configs/raptor/android_hw_config.py b/testing/mozharness/configs/raptor/android_hw_config.py
new file mode 100644
index 0000000000..848862fe9c
--- /dev/null
+++ b/testing/mozharness/configs/raptor/android_hw_config.py
@@ -0,0 +1,28 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "log_name": "raptor",
+ "title": os.uname()[1].lower().split(".")[0],
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "populate-webroot",
+ "create-virtualenv",
+ "install-chrome-android",
+ "install-chromium-distribution",
+ "install",
+ "run-tests",
+ ],
+ "tooltool_cache": "/builds/tooltool_cache",
+ "download_tooltool": True,
+ "hostutils_manifest_path": "testing/config/tooltool-manifests/linux64/hostutils.manifest",
+}
+
+# raptor will pick these up in mitmproxy.py, doesn't use the mozharness config
+os.environ["TOOLTOOLCACHE"] = config["tooltool_cache"]
+os.environ["HOSTUTILS_MANIFEST_PATH"] = config["hostutils_manifest_path"]
diff --git a/testing/mozharness/configs/raptor/linux64_config_taskcluster.py b/testing/mozharness/configs/raptor/linux64_config_taskcluster.py
new file mode 100644
index 0000000000..769f205b2c
--- /dev/null
+++ b/testing/mozharness/configs/raptor/linux64_config_taskcluster.py
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+import sys
+
+PYTHON = sys.executable
+VENV_PATH = "%s/build/venv" % os.getcwd()
+
+exes = {
+ "python": PYTHON,
+}
+ABS_WORK_DIR = os.path.join(os.getcwd(), "build")
+INSTALLER_PATH = os.path.join(ABS_WORK_DIR, "installer.tar.bz2")
+
+config = {
+ "log_name": "raptor",
+ "installer_path": INSTALLER_PATH,
+ "virtualenv_path": VENV_PATH,
+ "exes": exes,
+ "title": os.uname()[1].lower().split(".")[0],
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "populate-webroot",
+ "create-virtualenv",
+ "install",
+ "run-tests",
+ ],
+ "tooltool_cache": "/builds/worker/tooltool-cache",
+}
diff --git a/testing/mozharness/configs/raptor/linux_config.py b/testing/mozharness/configs/raptor/linux_config.py
new file mode 100644
index 0000000000..e3133e68f7
--- /dev/null
+++ b/testing/mozharness/configs/raptor/linux_config.py
@@ -0,0 +1,25 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+VENV_PATH = "%s/build/venv" % os.getcwd()
+
+config = {
+ "log_name": "raptor",
+ "installer_path": "installer.exe",
+ "virtualenv_path": VENV_PATH,
+ "title": os.uname()[1].lower().split(".")[0],
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "populate-webroot",
+ "create-virtualenv",
+ "install-chromium-distribution",
+ "install",
+ "run-tests",
+ ],
+ "tooltool_cache": "/builds/tooltool_cache",
+}
diff --git a/testing/mozharness/configs/raptor/mac_config.py b/testing/mozharness/configs/raptor/mac_config.py
new file mode 100644
index 0000000000..46467b3338
--- /dev/null
+++ b/testing/mozharness/configs/raptor/mac_config.py
@@ -0,0 +1,28 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+VENV_PATH = "%s/build/venv" % os.getcwd()
+
+config = {
+ "log_name": "raptor",
+ "installer_path": "installer.exe",
+ "virtualenv_path": VENV_PATH,
+ "title": os.uname()[1].lower().split(".")[0],
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "populate-webroot",
+ "create-virtualenv",
+ "install-chromium-distribution",
+ "install",
+ "run-tests",
+ ],
+ "run_cmd_checks_enabled": True,
+ "preflight_run_cmd_suites": [],
+ "postflight_run_cmd_suites": [],
+ "tooltool_cache": "/builds/tooltool_cache",
+}
diff --git a/testing/mozharness/configs/raptor/windows_config.py b/testing/mozharness/configs/raptor/windows_config.py
new file mode 100644
index 0000000000..4554e99190
--- /dev/null
+++ b/testing/mozharness/configs/raptor/windows_config.py
@@ -0,0 +1,58 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+import socket
+import sys
+
+PYTHON = sys.executable
+PYTHON_DLL = "c:/mozilla-build/python27/python27.dll"
+VENV_PATH = os.path.join(os.getcwd(), "build/venv")
+
+PYWIN32 = "pypiwin32==219"
+if sys.version_info > (3, 0):
+ PYWIN32 = "pywin32==300"
+
+config = {
+ "log_name": "raptor",
+ "installer_path": "installer.exe",
+ "virtualenv_path": VENV_PATH,
+ "virtualenv_modules": [PYWIN32, "raptor", "mozinstall"],
+ "exes": {
+ "python": PYTHON,
+ "easy_install": [
+ "%s/scripts/python" % VENV_PATH,
+ "%s/scripts/easy_install-2.7-script.py" % VENV_PATH,
+ ],
+ "mozinstall": [
+ "%s/scripts/python" % VENV_PATH,
+ "%s/scripts/mozinstall-script.py" % VENV_PATH,
+ ],
+ "hg": os.path.join(os.environ["PROGRAMFILES"], "Mercurial", "hg"),
+ "tooltool.py": [
+ PYTHON,
+ os.path.join(os.environ["MOZILLABUILD"], "tooltool.py"),
+ ],
+ },
+ "title": socket.gethostname().split(".")[0],
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "populate-webroot",
+ "create-virtualenv",
+ "install-chromium-distribution",
+ "install",
+ "run-tests",
+ ],
+ "tooltool_cache": os.path.join("c:\\", "build", "tooltool_cache"),
+ "python3_manifest": {
+ "win32": "python3.manifest",
+ "win64": "python3_x64.manifest",
+ },
+ "env": {
+ # python3 requires C runtime, found in firefox installation; see bug 1361732
+ "PATH": "%(PATH)s;c:\\slave\\test\\build\\application\\firefox;"
+ },
+}
diff --git a/testing/mozharness/configs/raptor/windows_vm_config.py b/testing/mozharness/configs/raptor/windows_vm_config.py
new file mode 100644
index 0000000000..b68697feed
--- /dev/null
+++ b/testing/mozharness/configs/raptor/windows_vm_config.py
@@ -0,0 +1,54 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+import socket
+import sys
+
+PYTHON = sys.executable
+PYTHON_DLL = "c:/mozilla-build/python27/python27.dll"
+VENV_PATH = os.path.join(os.getcwd(), "build/venv")
+
+PYWIN32 = "pypiwin32==219"
+if sys.version_info > (3, 0):
+ PYWIN32 = "pywin32==300"
+
+config = {
+ "log_name": "raptor",
+ "installer_path": "installer.exe",
+ "virtualenv_path": VENV_PATH,
+ "virtualenv_modules": [PYWIN32, "raptor", "mozinstall"],
+ "exes": {
+ "python": PYTHON,
+ "easy_install": [
+ "%s/scripts/python" % VENV_PATH,
+ "%s/scripts/easy_install-2.7-script.py" % VENV_PATH,
+ ],
+ "mozinstall": [
+ "%s/scripts/python" % VENV_PATH,
+ "%s/scripts/mozinstall-script.py" % VENV_PATH,
+ ],
+ "hg": os.path.join(os.environ["PROGRAMFILES"], "Mercurial", "hg"),
+ },
+ "title": socket.gethostname().split(".")[0],
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "populate-webroot",
+ "create-virtualenv",
+ "install-chromium-distribution",
+ "install",
+ "run-tests",
+ ],
+ "tooltool_cache": os.path.join("c:\\", "build", "tooltool_cache"),
+ "python3_manifest": {
+ "win32": "python3.manifest",
+ "win64": "python3_x64.manifest",
+ },
+ "env": {
+ # python3 requires C runtime, found in firefox installation; see bug 1361732
+ "PATH": "%(PATH)s;c:\\slave\\test\\build\\application\\firefox;"
+ },
+}
diff --git a/testing/mozharness/configs/releases/bouncer_firefox_beta.py b/testing/mozharness/configs/releases/bouncer_firefox_beta.py
new file mode 100644
index 0000000000..47e666b64d
--- /dev/null
+++ b/testing/mozharness/configs/releases/bouncer_firefox_beta.py
@@ -0,0 +1,120 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# lint_ignore=E501
+config = {
+ "products": {
+ # for installers, stubs, msi (ie not updates) ...
+ # products containing "latest" are for www.mozilla.org via cron-bouncer-check
+ # products using versions are for release automation via release-bouncer-check-firefox
+ "installer": {
+ "product-name": "Firefox-%(version)s",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-latest": {
+ "product-name": "Firefox-beta-latest",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-ssl": {
+ "product-name": "Firefox-%(version)s-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-latest-ssl": {
+ "product-name": "Firefox-beta-latest-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "msi": {
+ "product-name": "Firefox-%(version)s-msi-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ ],
+ },
+ "msi-latest": {
+ "product-name": "Firefox-beta-msi-latest-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ ],
+ },
+ "stub-installer": {
+ "product-name": "Firefox-%(version)s-stub",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "stub-installer-latest": {
+ "product-name": "Firefox-beta-stub",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "complete-mar": {
+ "product-name": "Firefox-%(version)s-Complete",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ },
+ "partials": {
+ "releases-dir": {
+ "product-name": "Firefox-%(version)s-Partial-%(prev_version)s",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ },
+}
diff --git a/testing/mozharness/configs/releases/bouncer_firefox_devedition.py b/testing/mozharness/configs/releases/bouncer_firefox_devedition.py
new file mode 100644
index 0000000000..9ba930b79c
--- /dev/null
+++ b/testing/mozharness/configs/releases/bouncer_firefox_devedition.py
@@ -0,0 +1,120 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# lint_ignore=E501
+config = {
+ "products": {
+ # for installers, stubs, msi (ie not updates) ...
+ # products containing "latest" are for www.mozilla.org via cron-bouncer-check
+ # products using versions are for release automation via release-bouncer-check-firefox
+ "installer": {
+ "product-name": "Devedition-%(version)s",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-latest": {
+ "product-name": "Firefox-devedition-latest",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-ssl": {
+ "product-name": "Devedition-%(version)s-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-latest-ssl": {
+ "product-name": "Firefox-devedition-latest-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "msi": {
+ "product-name": "Devedition-%(version)s-msi-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ ],
+ },
+ "msi-latest": {
+ "product-name": "Firefox-devedition-msi-latest-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ ],
+ },
+ "stub-installer": {
+ "product-name": "Devedition-%(version)s-stub",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "stub-installer-latest": {
+ "product-name": "Firefox-devedition-stub",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "complete-mar": {
+ "product-name": "Devedition-%(version)s-Complete",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ },
+ "partials": {
+ "releases-dir": {
+ "product-name": "Devedition-%(version)s-Partial-%(prev_version)s",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ },
+}
diff --git a/testing/mozharness/configs/releases/bouncer_firefox_esr.py b/testing/mozharness/configs/releases/bouncer_firefox_esr.py
new file mode 100644
index 0000000000..b146116a32
--- /dev/null
+++ b/testing/mozharness/configs/releases/bouncer_firefox_esr.py
@@ -0,0 +1,134 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# lint_ignore=E501
+config = {
+ "products": {
+ # for installers, stubs, msi (ie not updates) ...
+ # products containing "latest" are for www.mozilla.org via cron-bouncer-check
+ # products using versions are for release automation via release-bouncer-check-firefox
+ "installer": {
+ "product-name": "Firefox-%(version)s",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-latest": {
+ "product-name": "Firefox-esr-latest",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-next-latest": {
+ "product-name": "Firefox-esr-next-latest",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-ssl": {
+ "product-name": "Firefox-%(version)s-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-latest-ssl": {
+ "product-name": "Firefox-esr-latest-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-next-latest-ssl": {
+ "product-name": "Firefox-esr-next-latest-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "msi": {
+ "product-name": "Firefox-%(version)s-msi-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ ],
+ },
+ "msi-latest": {
+ "product-name": "Firefox-esr-msi-latest-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ ],
+ },
+ "msi-next-latest": {
+ "product-name": "Firefox-esr-next-msi-latest-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ ],
+ },
+ "complete-mar": {
+ "product-name": "Firefox-%(version)s-Complete",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ },
+ "partials": {
+ "releases-dir": {
+ "product-name": "Firefox-%(version)s-Partial-%(prev_version)s",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ },
+}
diff --git a/testing/mozharness/configs/releases/bouncer_firefox_nightly.py b/testing/mozharness/configs/releases/bouncer_firefox_nightly.py
new file mode 100644
index 0000000000..453792d790
--- /dev/null
+++ b/testing/mozharness/configs/releases/bouncer_firefox_nightly.py
@@ -0,0 +1,79 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# lint_ignore=E501
+config = {
+ "products": {
+ "installer-latest": {
+ "product-name": "Firefox-nightly-latest",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-latest-ssl": {
+ "product-name": "Firefox-nightly-latest-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-latest-l10n-ssl": {
+ "product-name": "Firefox-nightly-latest-l10n-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "msi-latest": {
+ "product-name": "Firefox-nightly-msi-latest-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ ],
+ },
+ "msi-latest-l10n": {
+ "product-name": "Firefox-nightly-msi-latest-l10n-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ ],
+ },
+ "stub-installer": {
+ "product-name": "Firefox-nightly-stub",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "stub-installer-l10n": {
+ "product-name": "Firefox-nightly-stub-l10n",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ },
+}
diff --git a/testing/mozharness/configs/releases/bouncer_firefox_release.py b/testing/mozharness/configs/releases/bouncer_firefox_release.py
new file mode 100644
index 0000000000..5a784ed248
--- /dev/null
+++ b/testing/mozharness/configs/releases/bouncer_firefox_release.py
@@ -0,0 +1,143 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# lint_ignore=E501
+config = {
+ "products": {
+ # for installers, stubs, msi (ie not updates) ...
+ # products containing "latest" are for www.mozilla.org via cron-bouncer-check
+ # products using versions are for release automation via release-bouncer-check-firefox
+ "installer": {
+ "product-name": "Firefox-%(version)s",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-latest": {
+ "product-name": "Firefox-latest",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-ssl": {
+ "product-name": "Firefox-%(version)s-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "installer-latest-ssl": {
+ "product-name": "Firefox-latest-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "msi": {
+ "product-name": "Firefox-%(version)s-msi-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ ],
+ },
+ "msi-latest": {
+ "product-name": "Firefox-msi-latest-SSL",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ ],
+ },
+ "stub-installer": {
+ "product-name": "Firefox-%(version)s-stub",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "stub-installer-latest": {
+ "product-name": "Firefox-stub",
+ "check_uptake": True,
+ "platforms": [
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "complete-mar": {
+ "product-name": "Firefox-%(version)s-Complete",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "complete-mar-candidates": {
+ "product-name": "Firefox-%(version)sbuild%(build_number)s-Complete",
+ "check_uptake": False,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ },
+ "partials": {
+ "releases-dir": {
+ "product-name": "Firefox-%(version)s-Partial-%(prev_version)s",
+ "check_uptake": True,
+ "platforms": [
+ "linux",
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ "candidates-dir": {
+ "product-name": "Firefox-%(version)sbuild%(build_number)s-Partial-%(prev_version)sbuild%(prev_build_number)s",
+ "check_uptake": False,
+ "platforms": [
+ "linux64",
+ "osx",
+ "win",
+ "win64",
+ "win64-aarch64",
+ ],
+ },
+ },
+}
diff --git a/testing/mozharness/configs/releases/dev_postrelease_fennec_beta.py b/testing/mozharness/configs/releases/dev_postrelease_fennec_beta.py
new file mode 100644
index 0000000000..1b0038db75
--- /dev/null
+++ b/testing/mozharness/configs/releases/dev_postrelease_fennec_beta.py
@@ -0,0 +1,24 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ # maple is used for staging mozilla-beta
+ "log_name": "bump_maple",
+ "version_files": [{"file": "browser/config/version_display.txt"}],
+ "repo": {
+ # maple is used for staging mozilla-beta
+ "repo": "https://hg.mozilla.org/projects/maple",
+ "branch": "default",
+ "dest": "maple",
+ "vcs": "hg",
+ "clone_upstream_url": "https://hg.mozilla.org/mozilla-unified",
+ },
+ # maple is used for staging mozilla-beta
+ "push_dest": "ssh://hg.mozilla.org/projects/maple",
+ "ignore_no_changes": True,
+ "ssh_user": "ffxbld",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "ship_it_root": "https://ship-it-dev.allizom.org",
+ "ship_it_username": "ship_it-stage-ffxbld",
+}
diff --git a/testing/mozharness/configs/releases/dev_postrelease_fennec_release.py b/testing/mozharness/configs/releases/dev_postrelease_fennec_release.py
new file mode 100644
index 0000000000..5205ad41cc
--- /dev/null
+++ b/testing/mozharness/configs/releases/dev_postrelease_fennec_release.py
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "log_name": "bump_release_dev",
+ "version_files": [
+ {"file": "browser/config/version.txt"},
+ {"file": "browser/config/version_display.txt"},
+ {"file": "config/milestone.txt"},
+ ],
+ "repo": {
+ # jamun is used for staging mozilla-release
+ "repo": "https://hg.mozilla.org/projects/jamun",
+ "branch": "default",
+ "dest": "jamun",
+ "vcs": "hg",
+ "clone_upstream_url": "https://hg.mozilla.org/mozilla-unified",
+ },
+ "push_dest": "ssh://hg.mozilla.org/projects/jamun",
+ "ignore_no_changes": True,
+ "ssh_user": "ffxbld",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "ship_it_root": "https://ship-it-dev.allizom.org",
+ "ship_it_username": "ship_it-stage-ffxbld",
+}
diff --git a/testing/mozharness/configs/releases/dev_postrelease_firefox_beta.py b/testing/mozharness/configs/releases/dev_postrelease_firefox_beta.py
new file mode 100644
index 0000000000..ce7ff54bd5
--- /dev/null
+++ b/testing/mozharness/configs/releases/dev_postrelease_firefox_beta.py
@@ -0,0 +1,24 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ # date is used for staging mozilla-beta
+ "log_name": "bump_date",
+ "version_files": [{"file": "browser/config/version_display.txt"}],
+ "repo": {
+ # maple is used for staging mozilla-beta
+ "repo": "https://hg.mozilla.org/projects/jamun",
+ "branch": "default",
+ "dest": "jamun",
+ "vcs": "hg",
+ "clone_upstream_url": "https://hg.mozilla.org/mozilla-unified",
+ },
+ # date is used for staging mozilla-beta
+ "push_dest": "ssh://hg.mozilla.org/projects/jamun",
+ "ignore_no_changes": True,
+ "ssh_user": "ffxbld",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "ship_it_root": "https://ship-it-dev.allizom.org",
+ "ship_it_username": "ship_it-stage-ffxbld",
+}
diff --git a/testing/mozharness/configs/releases/dev_postrelease_firefox_release.py b/testing/mozharness/configs/releases/dev_postrelease_firefox_release.py
new file mode 100644
index 0000000000..5205ad41cc
--- /dev/null
+++ b/testing/mozharness/configs/releases/dev_postrelease_firefox_release.py
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "log_name": "bump_release_dev",
+ "version_files": [
+ {"file": "browser/config/version.txt"},
+ {"file": "browser/config/version_display.txt"},
+ {"file": "config/milestone.txt"},
+ ],
+ "repo": {
+ # jamun is used for staging mozilla-release
+ "repo": "https://hg.mozilla.org/projects/jamun",
+ "branch": "default",
+ "dest": "jamun",
+ "vcs": "hg",
+ "clone_upstream_url": "https://hg.mozilla.org/mozilla-unified",
+ },
+ "push_dest": "ssh://hg.mozilla.org/projects/jamun",
+ "ignore_no_changes": True,
+ "ssh_user": "ffxbld",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "ship_it_root": "https://ship-it-dev.allizom.org",
+ "ship_it_username": "ship_it-stage-ffxbld",
+}
diff --git a/testing/mozharness/configs/releases/dev_postrelease_firefox_release_birch.py b/testing/mozharness/configs/releases/dev_postrelease_firefox_release_birch.py
new file mode 100644
index 0000000000..47593625f2
--- /dev/null
+++ b/testing/mozharness/configs/releases/dev_postrelease_firefox_release_birch.py
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "log_name": "bump_release_dev",
+ "version_files": [
+ {"file": "browser/config/version.txt"},
+ {"file": "browser/config/version_display.txt"},
+ {"file": "config/milestone.txt"},
+ ],
+ "repo": {
+ # jamun is used for staging mozilla-release
+ "repo": "https://hg.mozilla.org/projects/birch",
+ "branch": "default",
+ "dest": "birch",
+ "vcs": "hg",
+ "clone_upstream_url": "https://hg.mozilla.org/mozilla-unified",
+ },
+ "push_dest": "ssh://hg.mozilla.org/projects/birch",
+ "ignore_no_changes": True,
+ "ssh_user": "ffxbld",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "ship_it_root": "https://ship-it-dev.allizom.org",
+ "ship_it_username": "ship_it-stage-ffxbld",
+}
diff --git a/testing/mozharness/configs/releases/dev_updates_firefox_beta.py b/testing/mozharness/configs/releases/dev_updates_firefox_beta.py
new file mode 100644
index 0000000000..9c60d1e9ce
--- /dev/null
+++ b/testing/mozharness/configs/releases/dev_updates_firefox_beta.py
@@ -0,0 +1,42 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "log_name": "bump_beta_dev",
+ # TODO: use real repo
+ "repo": {
+ "repo": "https://hg.mozilla.org/users/stage-ffxbld/tools",
+ "branch": "default",
+ "dest": "tools",
+ "vcs": "hg",
+ },
+ "vcs_share_base": "/builds/hg-shared",
+ # TODO: use real repo
+ "push_dest": "ssh://hg.mozilla.org/users/stage-ffxbld/tools",
+ # jamun repo used for staging beta
+ "shipped-locales-url": "https://hg.mozilla.org/projects/jamun/raw-file/{revision}/browser/locales/shipped-locales",
+ "ignore_no_changes": True,
+ "ssh_user": "ffxbld",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "archive_domain": "ftp.stage.mozaws.net",
+ "archive_prefix": "https://ftp.stage.mozaws.net/pub",
+ "previous_archive_prefix": "https://archive.mozilla.org/pub",
+ "download_domain": "download.mozilla.org",
+ "balrog_url": "http://54.90.211.22:9090",
+ "balrog_username": "balrog-stage-ffxbld",
+ "update_channels": {
+ "beta": {
+ "version_regex": r"^(\d+\.\d+(b\d+)?)$",
+ "requires_mirrors": True,
+ # TODO - when we use a real repo, rename this file # s/MozJamun/Mozbeta/
+ "patcher_config": "mozJamun-branch-patcher2.cfg",
+ "update_verify_channel": "beta-localtest",
+ "mar_channel_ids": [],
+ "channel_names": ["beta", "beta-localtest", "beta-cdntest"],
+ "rules_to_update": ["firefox-beta-cdntest", "firefox-beta-localtest"],
+ "publish_rules": [32],
+ }
+ },
+ "balrog_use_dummy_suffix": False,
+}
diff --git a/testing/mozharness/configs/releases/dev_updates_firefox_devedition.py b/testing/mozharness/configs/releases/dev_updates_firefox_devedition.py
new file mode 100644
index 0000000000..2b2406be39
--- /dev/null
+++ b/testing/mozharness/configs/releases/dev_updates_firefox_devedition.py
@@ -0,0 +1,45 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "log_name": "updates_devedition",
+ # TODO: use real repo
+ "repo": {
+ "repo": "https://hg.mozilla.org/users/asasaki_mozilla.com/tools",
+ "branch": "default",
+ "dest": "tools",
+ "vcs": "hg",
+ },
+ "vcs_share_base": "/builds/hg-shared",
+ # TODO: use real repo
+ "push_dest": "ssh://hg.mozilla.org/users/asasaki_mozilla.com/tools",
+ # maple repo used for staging beta
+ "shipped-locales-url": "https://hg.mozilla.org/projects/maple/raw-file/{revision}/browser/locales/shipped-locales",
+ "ignore_no_changes": True,
+ "ssh_user": "ffxbld",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "archive_domain": "ftp.stage.mozaws.net",
+ "archive_prefix": "https://ftp.stage.mozaws.net/pub",
+ "previous_archive_prefix": "https://archive.mozilla.org/pub",
+ "download_domain": "download.mozilla.org",
+ "balrog_url": "https://stage.balrog.nonprod.cloudops.mozgcp.net/",
+ "balrog_username": "balrog-stage-ffxbld",
+ "update_channels": {
+ "aurora": {
+ "version_regex": r"^(\d+\.\d+(b\d+)?)$",
+ "requires_mirrors": True,
+ # TODO - when we use a real repo, rename this file # s/MozJamun/Mozbeta/
+ "patcher_config": "mozDevedition-branch-patcher2.cfg",
+ "patcher_config_product_override": "firefox",
+ "update_verify_channel": "aurora-localtest",
+ "mar_channel_ids": [],
+ "channel_names": ["aurora", "aurora-localtest", "aurora-cdntest"],
+ "rules_to_update": ["devedition-cdntest", "devedition-localtest"],
+ "publish_rules": [10],
+ }
+ },
+ "balrog_use_dummy_suffix": False,
+ "stage_product": "devedition",
+ "bouncer_product": "devedition",
+}
diff --git a/testing/mozharness/configs/releases/dev_updates_firefox_release.py b/testing/mozharness/configs/releases/dev_updates_firefox_release.py
new file mode 100644
index 0000000000..1413ae1031
--- /dev/null
+++ b/testing/mozharness/configs/releases/dev_updates_firefox_release.py
@@ -0,0 +1,55 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "log_name": "updates_release_dev",
+ # TODO: use real repo
+ "repo": {
+ "repo": "https://hg.mozilla.org/users/stage-ffxbld/tools",
+ "branch": "default",
+ "dest": "tools",
+ "vcs": "hg",
+ },
+ "vcs_share_base": "/builds/hg-shared",
+ # TODO: use real repo
+ "push_dest": "ssh://hg.mozilla.org/users/stage-ffxbld/tools",
+ # jamun repo used for staging release
+ "shipped-locales-url": "https://hg.mozilla.org/projects/jamun/raw-file/{revision}/browser/locales/shipped-locales",
+ "ignore_no_changes": True,
+ "ssh_user": "ffxbld",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "archive_domain": "ftp.stage.mozaws.net",
+ "archive_prefix": "https://ftp.stage.mozaws.net/pub",
+ "previous_archive_prefix": "https://archive.mozilla.org/pub",
+ "download_domain": "download.mozilla.org",
+ "balrog_url": "http://54.90.211.22:9090",
+ "balrog_username": "balrog-stage-ffxbld",
+ "update_channels": {
+ "beta": {
+ "version_regex": r"^(\d+\.\d+(b\d+)?)$",
+ "requires_mirrors": False,
+ "patcher_config": "mozDate-branch-patcher2.cfg",
+ "update_verify_channel": "beta-localtest",
+ "mar_channel_ids": [
+ "firefox-mozilla-beta",
+ "firefox-mozilla-release",
+ ],
+ "channel_names": ["beta", "beta-localtest", "beta-cdntest"],
+ "rules_to_update": ["firefox-beta-cdntest", "firefox-beta-localtest"],
+ "publish_rules": [32],
+ "schedule_asap": True,
+ },
+ "release": {
+ "version_regex": r"^\d+\.\d+(\.\d+)?$",
+ "requires_mirrors": True,
+ "patcher_config": "mozJamun-branch-patcher2.cfg",
+ "update_verify_channel": "release-localtest",
+ "mar_channel_ids": [],
+ "channel_names": ["release", "release-localtest", "release-cdntest"],
+ "rules_to_update": ["firefox-release-cdntest", "firefox-release-localtest"],
+ "publish_rules": [145],
+ },
+ },
+ "balrog_use_dummy_suffix": False,
+}
diff --git a/testing/mozharness/configs/releases/dev_updates_firefox_release_birch.py b/testing/mozharness/configs/releases/dev_updates_firefox_release_birch.py
new file mode 100644
index 0000000000..8ea3ebd76a
--- /dev/null
+++ b/testing/mozharness/configs/releases/dev_updates_firefox_release_birch.py
@@ -0,0 +1,55 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "log_name": "updates_release_dev",
+ # TODO: use real repo
+ "repo": {
+ "repo": "https://hg.mozilla.org/users/bhearsum_mozilla.com/tools",
+ "branch": "default",
+ "dest": "tools",
+ "vcs": "hg",
+ },
+ "vcs_share_base": "/builds/hg-shared",
+ # TODO: use real repo
+ "push_dest": "ssh://hg.mozilla.org/users/bhearsum_mozilla.com/tools",
+ # birch repo used for staging release
+ "shipped-locales-url": "https://hg.mozilla.org/projects/birch/raw-file/{revision}/browser/locales/shipped-locales",
+ "ignore_no_changes": True,
+ "ssh_user": "ffxbld",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "archive_domain": "ftp.stage.mozaws.net",
+ "archive_prefix": "https://ftp.stage.mozaws.net/pub",
+ "previous_archive_prefix": "https://archive.mozilla.org/pub",
+ "download_domain": "download.mozilla.org",
+ "balrog_url": "https://stage.balrog.nonprod.cloudops.mozgcp.net/",
+ "balrog_username": "balrog-stage-ffxbld",
+ "update_channels": {
+ "beta": {
+ "version_regex": r"^(\d+\.\d+(b\d+)?)$",
+ "requires_mirrors": False,
+ "patcher_config": "mozBeta-branch-patcher2.cfg",
+ "update_verify_channel": "beta-localtest",
+ "mar_channel_ids": [
+ "firefox-mozilla-beta",
+ "firefox-mozilla-release",
+ ],
+ "channel_names": ["beta", "beta-localtest", "beta-cdntest"],
+ "rules_to_update": ["firefox-beta-cdntest", "firefox-beta-localtest"],
+ "publish_rules": [32],
+ "schedule_asap": True,
+ },
+ "release": {
+ "version_regex": r"^\d+\.\d+(\.\d+)?$",
+ "requires_mirrors": True,
+ "patcher_config": "mozRelease-branch-patcher2.cfg",
+ "update_verify_channel": "release-localtest",
+ "mar_channel_ids": [],
+ "channel_names": ["release", "release-localtest", "release-cdntest"],
+ "rules_to_update": ["firefox-release-cdntest", "firefox-release-localtest"],
+ "publish_rules": [145],
+ },
+ },
+ "balrog_use_dummy_suffix": False,
+}
diff --git a/testing/mozharness/configs/releases/updates_firefox_beta.py b/testing/mozharness/configs/releases/updates_firefox_beta.py
new file mode 100644
index 0000000000..8e4bfa9e7d
--- /dev/null
+++ b/testing/mozharness/configs/releases/updates_firefox_beta.py
@@ -0,0 +1,38 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "log_name": "updates_beta",
+ "repo": {
+ "repo": "https://hg.mozilla.org/build/tools",
+ "branch": "default",
+ "dest": "tools",
+ "vcs": "hg",
+ },
+ "vcs_share_base": "/builds/hg-shared",
+ "push_dest": "ssh://hg.mozilla.org/build/tools",
+ "shipped-locales-url": "https://hg.mozilla.org/releases/mozilla-beta/raw-file/{revision}/browser/locales/shipped-locales",
+ "ignore_no_changes": True,
+ "ssh_user": "ffxbld",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "archive_domain": "archive.mozilla.org",
+ "archive_prefix": "https://archive.mozilla.org/pub",
+ "previous_archive_prefix": "https://archive.mozilla.org/pub",
+ "download_domain": "download.mozilla.org",
+ "balrog_url": "https://aus5.mozilla.org",
+ "balrog_username": "balrog-ffxbld",
+ "update_channels": {
+ "beta": {
+ "version_regex": r"^(\d+\.\d+(b\d+)?)$",
+ "requires_mirrors": True,
+ "patcher_config": "mozBeta-branch-patcher2.cfg",
+ "update_verify_channel": "beta-localtest",
+ "mar_channel_ids": [],
+ "channel_names": ["beta", "beta-localtest", "beta-cdntest"],
+ "rules_to_update": ["firefox-beta-cdntest", "firefox-beta-localtest"],
+ "publish_rules": [32],
+ },
+ },
+ "balrog_use_dummy_suffix": False,
+}
diff --git a/testing/mozharness/configs/releases/updates_firefox_devedition.py b/testing/mozharness/configs/releases/updates_firefox_devedition.py
new file mode 100644
index 0000000000..f09456b624
--- /dev/null
+++ b/testing/mozharness/configs/releases/updates_firefox_devedition.py
@@ -0,0 +1,42 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "log_name": "updates_devedition",
+ "repo": {
+ "repo": "https://hg.mozilla.org/build/tools",
+ "branch": "default",
+ "dest": "tools",
+ "vcs": "hg",
+ },
+ "vcs_share_base": "/builds/hg-shared",
+ "push_dest": "ssh://hg.mozilla.org/build/tools",
+ "shipped-locales-url": "https://hg.mozilla.org/releases/mozilla-beta/raw-file/{revision}/browser/locales/shipped-locales",
+ "ignore_no_changes": True,
+ "ssh_user": "ffxbld",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "archive_domain": "archive.mozilla.org",
+ "archive_prefix": "https://archive.mozilla.org/pub",
+ "previous_archive_prefix": "https://archive.mozilla.org/pub",
+ "download_domain": "download.mozilla.org",
+ "balrog_url": "https://aus5.mozilla.org",
+ "balrog_username": "balrog-ffxbld",
+ "update_channels": {
+ "aurora": {
+ "version_regex": r"^.*$",
+ "requires_mirrors": True,
+ "patcher_config": "mozDevedition-branch-patcher2.cfg",
+ # Allow to override the patcher config product name
+ "patcher_config_product_override": "firefox",
+ "update_verify_channel": "aurora-localtest",
+ "mar_channel_ids": [],
+ "channel_names": ["aurora", "aurora-localtest", "aurora-cdntest"],
+ "rules_to_update": ["devedition-cdntest", "devedition-localtest"],
+ "publish_rules": [10],
+ },
+ },
+ "balrog_use_dummy_suffix": False,
+ "stage_product": "devedition",
+ "bouncer_product": "devedition",
+}
diff --git a/testing/mozharness/configs/releases/updates_firefox_release.py b/testing/mozharness/configs/releases/updates_firefox_release.py
new file mode 100644
index 0000000000..969b4efadc
--- /dev/null
+++ b/testing/mozharness/configs/releases/updates_firefox_release.py
@@ -0,0 +1,52 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "log_name": "updates_release",
+ "repo": {
+ "repo": "https://hg.mozilla.org/build/tools",
+ "branch": "default",
+ "dest": "tools",
+ "vcs": "hg",
+ },
+ "vcs_share_base": "/builds/hg-shared",
+ "push_dest": "ssh://hg.mozilla.org/build/tools",
+ "shipped-locales-url": "https://hg.mozilla.org/releases/mozilla-release/raw-file/{revision}/browser/locales/shipped-locales",
+ "ignore_no_changes": True,
+ "ssh_user": "ffxbld",
+ "ssh_key": "~/.ssh/ffxbld_rsa",
+ "archive_domain": "archive.mozilla.org",
+ "archive_prefix": "https://archive.mozilla.org/pub",
+ "previous_archive_prefix": "https://archive.mozilla.org/pub",
+ "download_domain": "download.mozilla.org",
+ "balrog_url": "https://aus5.mozilla.org",
+ "balrog_username": "balrog-ffxbld",
+ "update_channels": {
+ "beta": {
+ "version_regex": r"^(\d+\.\d+(b\d+)?)$",
+ "requires_mirrors": False,
+ "patcher_config": "mozBeta-branch-patcher2.cfg",
+ "update_verify_channel": "beta-localtest",
+ "mar_channel_ids": [
+ "firefox-mozilla-beta",
+ "firefox-mozilla-release",
+ ],
+ "channel_names": ["beta", "beta-localtest", "beta-cdntest"],
+ "rules_to_update": ["firefox-beta-cdntest", "firefox-beta-localtest"],
+ "publish_rules": [32],
+ "schedule_asap": True,
+ },
+ "release": {
+ "version_regex": r"^\d+\.\d+(\.\d+)?$",
+ "requires_mirrors": True,
+ "patcher_config": "mozRelease-branch-patcher2.cfg",
+ "update_verify_channel": "release-localtest",
+ "mar_channel_ids": [],
+ "channel_names": ["release", "release-localtest", "release-cdntest"],
+ "rules_to_update": ["firefox-release-cdntest", "firefox-release-localtest"],
+ "publish_rules": [145],
+ },
+ },
+ "balrog_use_dummy_suffix": False,
+}
diff --git a/testing/mozharness/configs/remove_executables.py b/testing/mozharness/configs/remove_executables.py
new file mode 100644
index 0000000000..3c8876c9d3
--- /dev/null
+++ b/testing/mozharness/configs/remove_executables.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ # We bake this directly into the tester image now...
+ "nodejs_path": "/usr/local/bin/node",
+ "exes": {},
+}
diff --git a/testing/mozharness/configs/repackage/base.py b/testing/mozharness/configs/repackage/base.py
new file mode 100644
index 0000000000..fb2e06529e
--- /dev/null
+++ b/testing/mozharness/configs/repackage/base.py
@@ -0,0 +1,14 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "package-name": "firefox",
+ "installer-tag": "browser/installer/windows/app.tag",
+ "stub-installer-tag": "browser/installer/windows/stub.tag",
+ "wsx-stub": "browser/installer/windows/msi/installer.wxs",
+ "fetch-dir": os.environ.get("MOZ_FETCHES_DIR"),
+}
diff --git a/testing/mozharness/configs/repackage/linux32_signed.py b/testing/mozharness/configs/repackage/linux32_signed.py
new file mode 100644
index 0000000000..3f5262682e
--- /dev/null
+++ b/testing/mozharness/configs/repackage/linux32_signed.py
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+platform = "linux32"
+
+config = {
+ "locale": os.environ.get("LOCALE"),
+ # ToolTool
+ "tooltool_cache": os.environ.get("TOOLTOOL_CACHE"),
+ "run_configure": False,
+}
diff --git a/testing/mozharness/configs/repackage/linux64_signed.py b/testing/mozharness/configs/repackage/linux64_signed.py
new file mode 100644
index 0000000000..f21e44b5f0
--- /dev/null
+++ b/testing/mozharness/configs/repackage/linux64_signed.py
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+platform = "linux64"
+
+config = {
+ "locale": os.environ.get("LOCALE"),
+ # ToolTool
+ "tooltool_cache": os.environ.get("TOOLTOOL_CACHE"),
+ "run_configure": False,
+}
diff --git a/testing/mozharness/configs/repackage/osx_partner.py b/testing/mozharness/configs/repackage/osx_partner.py
new file mode 100644
index 0000000000..8953e4af82
--- /dev/null
+++ b/testing/mozharness/configs/repackage/osx_partner.py
@@ -0,0 +1,13 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "src_mozconfig": "browser/config/mozconfigs/macosx64/repack",
+ "repack_id": os.environ.get("REPACK_ID"),
+ # ToolTool
+ "tooltool_cache": os.environ.get("TOOLTOOL_CACHE"),
+}
diff --git a/testing/mozharness/configs/repackage/osx_signed.py b/testing/mozharness/configs/repackage/osx_signed.py
new file mode 100644
index 0000000000..680dff8e32
--- /dev/null
+++ b/testing/mozharness/configs/repackage/osx_signed.py
@@ -0,0 +1,13 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "src_mozconfig": "browser/config/mozconfigs/macosx64/repack",
+ "locale": os.environ.get("LOCALE"),
+ # ToolTool
+ "tooltool_cache": os.environ.get("TOOLTOOL_CACHE"),
+}
diff --git a/testing/mozharness/configs/repackage/win32_partner.py b/testing/mozharness/configs/repackage/win32_partner.py
new file mode 100644
index 0000000000..36c74cfa44
--- /dev/null
+++ b/testing/mozharness/configs/repackage/win32_partner.py
@@ -0,0 +1,16 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+platform = "win32"
+
+config = {
+ "repack_id": os.environ.get("REPACK_ID"),
+ "run_configure": False,
+ "env": {
+ "PATH": "%(abs_input_dir)s/upx/bin:%(PATH)s",
+ },
+}
diff --git a/testing/mozharness/configs/repackage/win32_sfx_stub.py b/testing/mozharness/configs/repackage/win32_sfx_stub.py
new file mode 100644
index 0000000000..7b098b7281
--- /dev/null
+++ b/testing/mozharness/configs/repackage/win32_sfx_stub.py
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "sfx-stub": "other-licenses/7zstub/firefox/7zSD.Win32.sfx",
+}
diff --git a/testing/mozharness/configs/repackage/win32_signed.py b/testing/mozharness/configs/repackage/win32_signed.py
new file mode 100644
index 0000000000..c66a105c39
--- /dev/null
+++ b/testing/mozharness/configs/repackage/win32_signed.py
@@ -0,0 +1,16 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+platform = "win32"
+
+config = {
+ "locale": os.environ.get("LOCALE"),
+ "run_configure": False,
+ "env": {
+ "PATH": "%(abs_input_dir)s/upx/bin:%(PATH)s",
+ },
+}
diff --git a/testing/mozharness/configs/repackage/win64-aarch64_sfx_stub.py b/testing/mozharness/configs/repackage/win64-aarch64_sfx_stub.py
new file mode 100644
index 0000000000..0d8634d3a9
--- /dev/null
+++ b/testing/mozharness/configs/repackage/win64-aarch64_sfx_stub.py
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "sfx-stub": "other-licenses/7zstub/firefox/7zSD.ARM64.sfx",
+}
diff --git a/testing/mozharness/configs/repackage/win64_partner.py b/testing/mozharness/configs/repackage/win64_partner.py
new file mode 100644
index 0000000000..053f480fe6
--- /dev/null
+++ b/testing/mozharness/configs/repackage/win64_partner.py
@@ -0,0 +1,16 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+platform = "win64"
+
+config = {
+ "repack_id": os.environ.get("REPACK_ID"),
+ "run_configure": False,
+ "env": {
+ "PATH": "%(abs_input_dir)s/upx/bin:%(PATH)s",
+ },
+}
diff --git a/testing/mozharness/configs/repackage/win64_signed.py b/testing/mozharness/configs/repackage/win64_signed.py
new file mode 100644
index 0000000000..23e7b123a7
--- /dev/null
+++ b/testing/mozharness/configs/repackage/win64_signed.py
@@ -0,0 +1,16 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+platform = "win64"
+
+config = {
+ "locale": os.environ.get("LOCALE"),
+ "run_configure": False,
+ "env": {
+ "PATH": "%(abs_input_dir)s/upx/bin:%(PATH)s",
+ },
+}
diff --git a/testing/mozharness/configs/servo/mac.py b/testing/mozharness/configs/servo/mac.py
new file mode 100644
index 0000000000..6058abdc20
--- /dev/null
+++ b/testing/mozharness/configs/servo/mac.py
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "concurrency": 6,
+}
diff --git a/testing/mozharness/configs/single_locale/devedition.py b/testing/mozharness/configs/single_locale/devedition.py
new file mode 100644
index 0000000000..aef519b9d1
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/devedition.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "app_name": "browser",
+ "mozconfig_variant": "l10n-mozconfig-devedition",
+ "locales_dir": "browser/locales",
+}
diff --git a/testing/mozharness/configs/single_locale/firefox.py b/testing/mozharness/configs/single_locale/firefox.py
new file mode 100644
index 0000000000..c679ecebba
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/firefox.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "app_name": "browser",
+ "mozconfig_variant": "l10n-mozconfig",
+ "locales_dir": "browser/locales",
+}
diff --git a/testing/mozharness/configs/single_locale/linux32.py b/testing/mozharness/configs/single_locale/linux32.py
new file mode 100644
index 0000000000..1a1d073862
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/linux32.py
@@ -0,0 +1,11 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "mozconfig_platform": "linux32",
+ "log_name": "single_locale",
+ "vcs_share_base": "/builds/hg-shared",
+ # l10n
+ "ignore_locales": ["en-US", "ja-JP-mac"],
+}
diff --git a/testing/mozharness/configs/single_locale/linux64.py b/testing/mozharness/configs/single_locale/linux64.py
new file mode 100644
index 0000000000..d54a67b857
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/linux64.py
@@ -0,0 +1,10 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "mozconfig_platform": "linux64",
+ "vcs_share_base": "/builds/hg-shared",
+ # l10n
+ "ignore_locales": ["en-US", "ja-JP-mac"],
+}
diff --git a/testing/mozharness/configs/single_locale/macosx64.py b/testing/mozharness/configs/single_locale/macosx64.py
new file mode 100644
index 0000000000..07c1f07221
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/macosx64.py
@@ -0,0 +1,12 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "mozconfig_platform": "macosx64",
+ "upload_env_extra": {
+ "MOZ_PKG_PLATFORM": "mac",
+ },
+ # l10n
+ "ignore_locales": ["en-US", "ja"],
+}
diff --git a/testing/mozharness/configs/single_locale/tc_android-api-16.py b/testing/mozharness/configs/single_locale/tc_android-api-16.py
new file mode 100644
index 0000000000..237adb9d12
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/tc_android-api-16.py
@@ -0,0 +1,35 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "locales_dir": "mobile/android/locales",
+ "ignore_locales": ["en-US"],
+ "repack_env": {
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ },
+ "vcs_share_base": "/builds/hg-shared",
+ "mozconfig": "src/mobile/android/config/mozconfigs/android-api-16/l10n-nightly",
+ "tooltool_config": {
+ "manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
+ "output_dir": "%(abs_work_dir)s/src",
+ },
+ "secret_files": [
+ {
+ "filename": "/builds/gls-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/gls-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "/builds/sb-gapi.data",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/sb-gapi.data",
+ "min_scm_level": 1,
+ },
+ {
+ "filename": "/builds/mozilla-fennec-geoloc-api.key",
+ "secret_name": "project/releng/gecko/build/level-%(scm-level)s/mozilla-fennec-geoloc-api.key",
+ "min_scm_level": 2,
+ "default": "try-build-has-no-secrets",
+ },
+ ],
+}
diff --git a/testing/mozharness/configs/single_locale/tc_common.py b/testing/mozharness/configs/single_locale/tc_common.py
new file mode 100644
index 0000000000..029283b163
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/tc_common.py
@@ -0,0 +1,11 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "simple_name_move": True,
+ "vcs_share_base": "/builds/hg-shared",
+ "upload_env": {
+ "UPLOAD_PATH": "/builds/worker/artifacts/",
+ },
+}
diff --git a/testing/mozharness/configs/single_locale/tc_linux32.py b/testing/mozharness/configs/single_locale/tc_linux32.py
new file mode 100644
index 0000000000..fc40fe997f
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/tc_linux32.py
@@ -0,0 +1,17 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "bootstrap_env": {
+ "NO_MERCURIAL_SETUP_CHECK": "1",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
+ "DIST": "%(abs_obj_dir)s",
+ "L10NBASEDIR": "../../l10n",
+ "TOOLTOOL_CACHE": os.environ.get("TOOLTOOL_CACHE"),
+ },
+}
diff --git a/testing/mozharness/configs/single_locale/tc_linux_common.py b/testing/mozharness/configs/single_locale/tc_linux_common.py
new file mode 100644
index 0000000000..fc40fe997f
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/tc_linux_common.py
@@ -0,0 +1,17 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "bootstrap_env": {
+ "NO_MERCURIAL_SETUP_CHECK": "1",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
+ "DIST": "%(abs_obj_dir)s",
+ "L10NBASEDIR": "../../l10n",
+ "TOOLTOOL_CACHE": os.environ.get("TOOLTOOL_CACHE"),
+ },
+}
diff --git a/testing/mozharness/configs/single_locale/tc_macosx64.py b/testing/mozharness/configs/single_locale/tc_macosx64.py
new file mode 100644
index 0000000000..fc40fe997f
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/tc_macosx64.py
@@ -0,0 +1,17 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "bootstrap_env": {
+ "NO_MERCURIAL_SETUP_CHECK": "1",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
+ "DIST": "%(abs_obj_dir)s",
+ "L10NBASEDIR": "../../l10n",
+ "TOOLTOOL_CACHE": os.environ.get("TOOLTOOL_CACHE"),
+ },
+}
diff --git a/testing/mozharness/configs/single_locale/tc_win32.py b/testing/mozharness/configs/single_locale/tc_win32.py
new file mode 100644
index 0000000000..26fa8d9135
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/tc_win32.py
@@ -0,0 +1,19 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "bootstrap_env": {
+ "NO_MERCURIAL_SETUP_CHECK": "1",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
+ "DIST": "%(abs_obj_dir)s",
+ "L10NBASEDIR": "../../l10n",
+ "TOOLTOOL_CACHE": os.environ.get("TOOLTOOL_CACHE"),
+ "EN_US_PACKAGE_NAME": "target.zip",
+ },
+ "tooltool_manifest_src": "browser/config/tooltool-manifests/win32/releng.manifest",
+}
diff --git a/testing/mozharness/configs/single_locale/tc_win64.py b/testing/mozharness/configs/single_locale/tc_win64.py
new file mode 100644
index 0000000000..c172ac5f41
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/tc_win64.py
@@ -0,0 +1,19 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+config = {
+ "bootstrap_env": {
+ "NO_MERCURIAL_SETUP_CHECK": "1",
+ "MOZ_OBJDIR": "%(abs_obj_dir)s",
+ "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
+ "DIST": "%(abs_obj_dir)s",
+ "L10NBASEDIR": "../../l10n",
+ "TOOLTOOL_CACHE": os.environ.get("TOOLTOOL_CACHE"),
+ "EN_US_PACKAGE_NAME": "target.zip",
+ },
+ "tooltool_manifest_src": "browser/config/tooltool-manifests/win64/releng.manifest",
+}
diff --git a/testing/mozharness/configs/single_locale/win32.py b/testing/mozharness/configs/single_locale/win32.py
new file mode 100644
index 0000000000..e00275792c
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/win32.py
@@ -0,0 +1,10 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "mozconfig_platform": "win32",
+ "log_name": "single_locale",
+ # l10n
+ "ignore_locales": ["en-US", "ja-JP-mac"],
+}
diff --git a/testing/mozharness/configs/single_locale/win64-aarch64.py b/testing/mozharness/configs/single_locale/win64-aarch64.py
new file mode 100644
index 0000000000..5846f01b89
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/win64-aarch64.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "mozconfig_platform": "win64-aarch64",
+ # l10n
+ "ignore_locales": ["en-US", "ja-JP-mac"],
+}
diff --git a/testing/mozharness/configs/single_locale/win64.py b/testing/mozharness/configs/single_locale/win64.py
new file mode 100644
index 0000000000..a3061add60
--- /dev/null
+++ b/testing/mozharness/configs/single_locale/win64.py
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "mozconfig_platform": "win64",
+ # l10n
+ "ignore_locales": ["en-US", "ja-JP-mac"],
+}
diff --git a/testing/mozharness/configs/talos/linux64_config_taskcluster.py b/testing/mozharness/configs/talos/linux64_config_taskcluster.py
new file mode 100644
index 0000000000..998ef03485
--- /dev/null
+++ b/testing/mozharness/configs/talos/linux64_config_taskcluster.py
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+import sys
+
+PYTHON = sys.executable
+VENV_PATH = "%s/build/venv" % os.getcwd()
+
+exes = {
+ "python": PYTHON,
+}
+ABS_WORK_DIR = os.path.join(os.getcwd(), "build")
+INSTALLER_PATH = os.path.join(ABS_WORK_DIR, "installer.tar.bz2")
+
+config = {
+ "log_name": "talos",
+ "installer_path": INSTALLER_PATH,
+ "virtualenv_path": VENV_PATH,
+ "exes": exes,
+ "title": os.uname()[1].lower().split(".")[0],
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "populate-webroot",
+ "create-virtualenv",
+ "install",
+ "run-tests",
+ ],
+ "tooltool_cache": "/builds/worker/tooltool-cache",
+}
diff --git a/testing/mozharness/configs/talos/linux_config.py b/testing/mozharness/configs/talos/linux_config.py
new file mode 100644
index 0000000000..51c3cc7f11
--- /dev/null
+++ b/testing/mozharness/configs/talos/linux_config.py
@@ -0,0 +1,24 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+VENV_PATH = "%s/build/venv" % os.getcwd()
+
+config = {
+ "log_name": "talos",
+ "installer_path": "installer.exe",
+ "virtualenv_path": VENV_PATH,
+ "title": os.uname()[1].lower().split(".")[0],
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "populate-webroot",
+ "create-virtualenv",
+ "install",
+ "run-tests",
+ ],
+ "tooltool_cache": "/builds/tooltool_cache",
+}
diff --git a/testing/mozharness/configs/talos/mac_config.py b/testing/mozharness/configs/talos/mac_config.py
new file mode 100644
index 0000000000..c06dc016fe
--- /dev/null
+++ b/testing/mozharness/configs/talos/mac_config.py
@@ -0,0 +1,27 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+VENV_PATH = "%s/build/venv" % os.getcwd()
+
+config = {
+ "log_name": "talos",
+ "installer_path": "installer.exe",
+ "virtualenv_path": VENV_PATH,
+ "title": os.uname()[1].lower().split(".")[0],
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "populate-webroot",
+ "create-virtualenv",
+ "install",
+ "run-tests",
+ ],
+ "run_cmd_checks_enabled": True,
+ "preflight_run_cmd_suites": [],
+ "postflight_run_cmd_suites": [],
+ "tooltool_cache": "/builds/tooltool_cache",
+}
diff --git a/testing/mozharness/configs/talos/windows_config.py b/testing/mozharness/configs/talos/windows_config.py
new file mode 100644
index 0000000000..b72f50b9d5
--- /dev/null
+++ b/testing/mozharness/configs/talos/windows_config.py
@@ -0,0 +1,36 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+import socket
+import sys
+
+PYTHON = sys.executable
+PYTHON_DLL = "c:/mozilla-build/python27/python27.dll"
+VENV_PATH = os.path.join(os.getcwd(), "build/venv")
+
+config = {
+ "log_name": "talos",
+ "installer_path": "installer.exe",
+ "virtualenv_path": VENV_PATH,
+ "exes": {
+ "python": PYTHON,
+ "hg": os.path.join(os.environ["PROGRAMFILES"], "Mercurial", "hg"),
+ "tooltool.py": [
+ PYTHON,
+ os.path.join(os.environ["MOZILLABUILD"], "tooltool.py"),
+ ],
+ },
+ "title": socket.gethostname().split(".")[0],
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "populate-webroot",
+ "create-virtualenv",
+ "install",
+ "run-tests",
+ ],
+ "tooltool_cache": os.path.join("c:\\", "build", "tooltool_cache"),
+}
diff --git a/testing/mozharness/configs/talos/windows_taskcluster_config.py b/testing/mozharness/configs/talos/windows_taskcluster_config.py
new file mode 100644
index 0000000000..ac5462ca7d
--- /dev/null
+++ b/testing/mozharness/configs/talos/windows_taskcluster_config.py
@@ -0,0 +1,30 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+import socket
+import sys
+
+PYTHON = sys.executable
+PYTHON_DLL = "c:/mozilla-build/python/python27.dll"
+VENV_PATH = os.path.join(os.getcwd(), "venv")
+
+config = {
+ "log_name": "talos",
+ "installer_path": "installer.exe",
+ "virtualenv_path": VENV_PATH,
+ "exes": {
+ "python": PYTHON,
+ "hg": os.path.join(os.environ["PROGRAMFILES"], "Mercurial", "hg"),
+ },
+ "title": socket.gethostname().split(".")[0],
+ "default_actions": [
+ "populate-webroot",
+ "create-virtualenv",
+ "install",
+ "run-tests",
+ ],
+ "tooltool_cache": os.path.join("Y:\\", "tooltool-cache"),
+}
diff --git a/testing/mozharness/configs/talos/windows_vm_config.py b/testing/mozharness/configs/talos/windows_vm_config.py
new file mode 100644
index 0000000000..61e53db2dc
--- /dev/null
+++ b/testing/mozharness/configs/talos/windows_vm_config.py
@@ -0,0 +1,32 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+import socket
+import sys
+
+PYTHON = sys.executable
+PYTHON_DLL = "c:/mozilla-build/python27/python27.dll"
+VENV_PATH = os.path.join(os.getcwd(), "build/venv")
+
+config = {
+ "log_name": "talos",
+ "installer_path": "installer.exe",
+ "virtualenv_path": VENV_PATH,
+ "exes": {
+ "python": PYTHON,
+ "hg": os.path.join(os.environ["PROGRAMFILES"], "Mercurial", "hg"),
+ },
+ "title": socket.gethostname().split(".")[0],
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "populate-webroot",
+ "create-virtualenv",
+ "install",
+ "run-tests",
+ ],
+ "tooltool_cache": os.path.join("c:\\", "build", "tooltool_cache"),
+}
diff --git a/testing/mozharness/configs/taskcluster_nightly.py b/testing/mozharness/configs/taskcluster_nightly.py
new file mode 100644
index 0000000000..596bf2f94e
--- /dev/null
+++ b/testing/mozharness/configs/taskcluster_nightly.py
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+config = {
+ "nightly_build": True,
+ "taskcluster_nightly": True,
+}
diff --git a/testing/mozharness/configs/test/example_config1.json b/testing/mozharness/configs/test/example_config1.json
new file mode 100644
index 0000000000..ca73466ba5
--- /dev/null
+++ b/testing/mozharness/configs/test/example_config1.json
@@ -0,0 +1,5 @@
+{
+ "beverage": "fizzy drink",
+ "long_sleep_time": 1800,
+ "random_config_key1": "spectacular"
+}
diff --git a/testing/mozharness/configs/test/example_config2.py b/testing/mozharness/configs/test/example_config2.py
new file mode 100644
index 0000000000..958543b60e
--- /dev/null
+++ b/testing/mozharness/configs/test/example_config2.py
@@ -0,0 +1,5 @@
+config = {
+ "beverage": "cider",
+ "long_sleep_time": 300,
+ "random_config_key2": "wunderbar",
+}
diff --git a/testing/mozharness/configs/test/test.illegal_suffix b/testing/mozharness/configs/test/test.illegal_suffix
new file mode 100644
index 0000000000..7d9a4d96d6
--- /dev/null
+++ b/testing/mozharness/configs/test/test.illegal_suffix
@@ -0,0 +1,20 @@
+{
+ "log_name": "test",
+ "log_dir": "test_logs",
+ "log_to_console": false,
+ "key1": "value1",
+ "key2": "value2",
+ "section1": {
+
+ "subsection1": {
+ "key1": "value1",
+ "key2": "value2"
+ },
+
+ "subsection2": {
+ "key1": "value1",
+ "key2": "value2"
+ }
+
+ }
+}
diff --git a/testing/mozharness/configs/test/test.json b/testing/mozharness/configs/test/test.json
new file mode 100644
index 0000000000..7d9a4d96d6
--- /dev/null
+++ b/testing/mozharness/configs/test/test.json
@@ -0,0 +1,20 @@
+{
+ "log_name": "test",
+ "log_dir": "test_logs",
+ "log_to_console": false,
+ "key1": "value1",
+ "key2": "value2",
+ "section1": {
+
+ "subsection1": {
+ "key1": "value1",
+ "key2": "value2"
+ },
+
+ "subsection2": {
+ "key1": "value1",
+ "key2": "value2"
+ }
+
+ }
+}
diff --git a/testing/mozharness/configs/test/test.py b/testing/mozharness/configs/test/test.py
new file mode 100644
index 0000000000..d06c2f130a
--- /dev/null
+++ b/testing/mozharness/configs/test/test.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+config = {
+ "log_name": "test",
+ "log_dir": "test_logs",
+ "log_to_console": False,
+ "key1": "value1",
+ "key2": "value2",
+ "section1": {
+ "subsection1": {"key1": "value1", "key2": "value2"},
+ "subsection2": {"key1": "value1", "key2": "value2"},
+ },
+ "opt_override": "some stuff",
+}
diff --git a/testing/mozharness/configs/test/test_malformed.json b/testing/mozharness/configs/test/test_malformed.json
new file mode 100644
index 0000000000..260be45b88
--- /dev/null
+++ b/testing/mozharness/configs/test/test_malformed.json
@@ -0,0 +1,20 @@
+{
+ "log_name": "test",
+ "log_dir": "test_logs",
+ "log_to_console": false,
+ "key1": "value1",
+ "key2": "value2",
+ "section1": {
+
+ "subsection1": {
+ "key1": "value1",
+ "key2": "value2"
+ },
+
+ "subsection2": {
+ "key1": "value1",
+ "key2": "value2"
+ },
+
+ }
+}
diff --git a/testing/mozharness/configs/test/test_malformed.py b/testing/mozharness/configs/test/test_malformed.py
new file mode 100644
index 0000000000..e7ccefd15f
--- /dev/null
+++ b/testing/mozharness/configs/test/test_malformed.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+config = {
+ "log_name": "test",
+ "log_dir": "test_logs",
+ "log_to_console": False,
+ "key1": "value1",
+ "key2": "value2",
+ "section1": {
+
+ "subsection1": {
+ "key1": "value1",
+ "key2": "value2"
+ },
+
+a;sldkfjas;dfkljasdf;kjasdf;ljkadsflkjsdfkweoi
+ "subsection2": {
+ "key1": "value1",
+ "key2": "value2"
+ },
+
+ },
+}
diff --git a/testing/mozharness/configs/test/test_optional.py b/testing/mozharness/configs/test/test_optional.py
new file mode 100644
index 0000000000..4eb13b3dfb
--- /dev/null
+++ b/testing/mozharness/configs/test/test_optional.py
@@ -0,0 +1,4 @@
+#!/usr/bin/env python
+config = {
+ "opt_override": "new stuff",
+}
diff --git a/testing/mozharness/configs/test/test_override.py b/testing/mozharness/configs/test/test_override.py
new file mode 100644
index 0000000000..356207d547
--- /dev/null
+++ b/testing/mozharness/configs/test/test_override.py
@@ -0,0 +1,7 @@
+#!/usr/bin/env python
+config = {
+ "override_string": "TODO",
+ "override_list": ["to", "do"],
+ "override_dict": {"to": "do"},
+ "keep_string": "don't change me",
+}
diff --git a/testing/mozharness/configs/test/test_override2.py b/testing/mozharness/configs/test/test_override2.py
new file mode 100644
index 0000000000..561a170358
--- /dev/null
+++ b/testing/mozharness/configs/test/test_override2.py
@@ -0,0 +1,6 @@
+#!/usr/bin/env python
+config = {
+ "override_string": "yay",
+ "override_list": ["yay", "worked"],
+ "override_dict": {"yay": "worked"},
+}
diff --git a/testing/mozharness/configs/unittests/linux_unittest.py b/testing/mozharness/configs/unittests/linux_unittest.py
new file mode 100644
index 0000000000..975b62fa53
--- /dev/null
+++ b/testing/mozharness/configs/unittests/linux_unittest.py
@@ -0,0 +1,284 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+import platform
+
+# OS Specifics
+ABS_WORK_DIR = os.path.join(os.getcwd(), "build")
+BINARY_PATH = os.path.join(ABS_WORK_DIR, "application", "firefox", "firefox-bin")
+INSTALLER_PATH = os.path.join(ABS_WORK_DIR, "installer.tar.bz2")
+XPCSHELL_NAME = "xpcshell"
+HTTP3SERVER_NAME = "http3server"
+EXE_SUFFIX = ""
+DISABLE_SCREEN_SAVER = True
+ADJUST_MOUSE_AND_SCREEN = False
+
+# Note: keep these Valgrind .sup file names consistent with those
+# in testing/mochitest/mochitest_options.py.
+VALGRIND_SUPP_DIR = os.path.join(os.getcwd(), "build/tests/mochitest")
+NODEJS_PATH = None
+if "MOZ_FETCHES_DIR" in os.environ:
+ NODEJS_PATH = os.path.join(os.environ["MOZ_FETCHES_DIR"], "node/bin/node")
+
+VALGRIND_SUPP_CROSS_ARCH = os.path.join(VALGRIND_SUPP_DIR, "cross-architecture.sup")
+VALGRIND_SUPP_ARCH = None
+
+if platform.architecture()[0] == "64bit":
+ VALGRIND_SUPP_ARCH = os.path.join(VALGRIND_SUPP_DIR, "x86_64-pc-linux-gnu.sup")
+else:
+ VALGRIND_SUPP_ARCH = os.path.join(VALGRIND_SUPP_DIR, "i386-pc-linux-gnu.sup")
+
+#####
+config = {
+ ###
+ "virtualenv_modules": ["six==1.13.0", "vcversioner==2.16.0.0"],
+ "installer_path": INSTALLER_PATH,
+ "binary_path": BINARY_PATH,
+ "xpcshell_name": XPCSHELL_NAME,
+ "http3server_name": HTTP3SERVER_NAME,
+ "exe_suffix": EXE_SUFFIX,
+ "run_file_names": {
+ "mochitest": "runtests.py",
+ "reftest": "runreftest.py",
+ "xpcshell": "runxpcshelltests.py",
+ "cppunittest": "runcppunittests.py",
+ "gtest": "rungtests.py",
+ "jittest": "jit_test.py",
+ },
+ "minimum_tests_zip_dirs": [
+ "bin/*",
+ "certs/*",
+ "config/*",
+ "mach",
+ "marionette/*",
+ "modules/*",
+ "mozbase/*",
+ "tools/*",
+ "mozpack/*",
+ "mozbuild/*",
+ ],
+ "suite_definitions": {
+ "cppunittest": {
+ "options": [
+ "--symbols-path=%(symbols_path)s",
+ "--utility-path=tests/bin",
+ "--xre-path=%(abs_app_dir)s",
+ ],
+ "run_filename": "runcppunittests.py",
+ "testsdir": "cppunittest",
+ },
+ "jittest": {
+ "options": [
+ "tests/bin/js",
+ "--no-slow",
+ "--no-progress",
+ "--format=automation",
+ "--jitflags=all",
+ "--timeout=970", # Keep in sync with run_timeout below.
+ ],
+ "run_filename": "jit_test.py",
+ "testsdir": "jit-test/jit-test",
+ "run_timeout": 1000, # Keep in sync with --timeout above.
+ },
+ "mochitest": {
+ "options": [
+ "--appname=%(binary_path)s",
+ "--utility-path=tests/bin",
+ "--extra-profile-file=tests/bin/plugins",
+ "--symbols-path=%(symbols_path)s",
+ "--certificate-path=tests/certs",
+ "--setpref=webgl.force-enabled=true",
+ "--quiet",
+ "--log-raw=%(raw_log_file)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--use-test-media-devices",
+ "--screenshot-on-fail",
+ "--cleanup-crashes",
+ "--marionette-startup-timeout=180",
+ "--sandbox-read-whitelist=%(abs_work_dir)s",
+ ],
+ "run_filename": "runtests.py",
+ "testsdir": "mochitest",
+ },
+ "reftest": {
+ "options": [
+ "--appname=%(binary_path)s",
+ "--utility-path=tests/bin",
+ "--extra-profile-file=tests/bin/plugins",
+ "--symbols-path=%(symbols_path)s",
+ "--log-raw=%(raw_log_file)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--cleanup-crashes",
+ "--marionette-startup-timeout=180",
+ "--sandbox-read-whitelist=%(abs_work_dir)s",
+ ],
+ "run_filename": "runreftest.py",
+ "testsdir": "reftest",
+ },
+ "xpcshell": {
+ "options": [
+ "--self-test",
+ "--symbols-path=%(symbols_path)s",
+ "--test-plugin-path=%(test_plugin_path)s",
+ "--log-raw=%(raw_log_file)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--utility-path=tests/bin",
+ ],
+ "run_filename": "runxpcshelltests.py",
+ "testsdir": "xpcshell",
+ },
+ "gtest": {
+ "options": [
+ "--xre-path=%(abs_res_dir)s",
+ "--cwd=%(gtest_dir)s",
+ "--symbols-path=%(symbols_path)s",
+ "--utility-path=tests/bin",
+ "%(binary_path)s",
+ ],
+ "run_filename": "rungtests.py",
+ },
+ },
+ # local mochi suites
+ "all_mochitest_suites": {
+ "mochitest-valgrind-plain": [
+ "--valgrind=/usr/bin/valgrind",
+ "--valgrind-supp-files="
+ + VALGRIND_SUPP_ARCH
+ + ","
+ + VALGRIND_SUPP_CROSS_ARCH,
+ "--timeout=900",
+ "--max-timeouts=50",
+ ],
+ "mochitest-plain": ["--chunk-by-dir=4"],
+ "mochitest-plain-gpu": ["--subsuite=gpu"],
+ "mochitest-plain-coverage": ["--chunk-by-dir=4", "--timeout=1200"],
+ "mochitest-media": ["--subsuite=media"],
+ "mochitest-chrome": ["--flavor=chrome", "--chunk-by-dir=4", "--disable-e10s"],
+ "mochitest-chrome-gpu": ["--flavor=chrome", "--subsuite=gpu", "--disable-e10s"],
+ "mochitest-browser-chrome": ["--flavor=browser", "--chunk-by-runtime"],
+ "mochitest-browser-chrome-coverage": [
+ "--flavor=browser",
+ "--chunk-by-runtime",
+ "--timeout=1200",
+ ],
+ "mochitest-browser-chrome-screenshots": [
+ "--flavor=browser",
+ "--subsuite=screenshots",
+ ],
+ "mochitest-webgl1-core": ["--subsuite=webgl1-core"],
+ "mochitest-webgl1-ext": ["--subsuite=webgl1-ext"],
+ "mochitest-webgl2-core": ["--subsuite=webgl2-core"],
+ "mochitest-webgl2-ext": ["--subsuite=webgl2-ext"],
+ "mochitest-webgl2-deqp": ["--subsuite=webgl2-deqp"],
+ "mochitest-webgpu": ["--subsuite=webgpu"],
+ "mochitest-devtools-chrome": [
+ "--flavor=browser",
+ "--subsuite=devtools",
+ "--chunk-by-runtime",
+ ],
+ "mochitest-devtools-chrome-coverage": [
+ "--flavor=browser",
+ "--subsuite=devtools",
+ "--chunk-by-runtime",
+ "--timeout=1200",
+ ],
+ "mochitest-a11y": ["--flavor=a11y", "--disable-e10s"],
+ "mochitest-remote": ["--flavor=browser", "--subsuite=remote"],
+ },
+ # local reftest suites
+ "all_reftest_suites": {
+ "crashtest": {
+ "options": ["--suite=crashtest", "--topsrcdir=tests/reftest/tests"],
+ "tests": ["tests/reftest/tests/testing/crashtest/crashtests.list"],
+ },
+ "jsreftest": {
+ "options": [
+ "--extra-profile-file=tests/jsreftest/tests/js/src/tests/user.js",
+ "--suite=jstestbrowser",
+ "--topsrcdir=tests/jsreftest/tests",
+ ],
+ "tests": ["tests/jsreftest/tests/js/src/tests/jstests.list"],
+ },
+ "reftest": {
+ "options": [
+ "--suite=reftest",
+ "--setpref=layers.acceleration.force-enabled=true",
+ "--topsrcdir=tests/reftest/tests",
+ ],
+ "tests": ["tests/reftest/tests/layout/reftests/reftest.list"],
+ },
+ "reftest-no-accel": {
+ "options": [
+ "--suite=reftest",
+ "--setpref=layers.acceleration.disabled=true",
+ "--topsrcdir=tests/reftest/tests",
+ ],
+ "tests": ["tests/reftest/tests/layout/reftests/reftest.list"],
+ },
+ },
+ "all_xpcshell_suites": {
+ "xpcshell": {
+ "options": [
+ "--xpcshell=%(abs_app_dir)s/" + XPCSHELL_NAME,
+ "--http3server=%(abs_app_dir)s/" + HTTP3SERVER_NAME,
+ "--manifest=tests/xpcshell/tests/xpcshell.ini",
+ ],
+ "tests": [],
+ },
+ "xpcshell-coverage": {
+ "options": [
+ "--xpcshell=%(abs_app_dir)s/" + XPCSHELL_NAME,
+ "--http3server=%(abs_app_dir)s/" + HTTP3SERVER_NAME,
+ "--manifest=tests/xpcshell/tests/xpcshell.ini",
+ "--sequential",
+ ],
+ "tests": [],
+ },
+ },
+ "all_cppunittest_suites": {"cppunittest": {"tests": ["tests/cppunittest"]}},
+ "all_gtest_suites": {"gtest": []},
+ "all_jittest_suites": {
+ "jittest": [],
+ "jittest1": ["--total-chunks=2", "--this-chunk=1"],
+ "jittest2": ["--total-chunks=2", "--this-chunk=2"],
+ },
+ "run_cmd_checks_enabled": True,
+ "preflight_run_cmd_suites": [
+ # NOTE 'enabled' is only here while we have unconsolidated configs
+ {
+ "name": "disable_screen_saver",
+ "cmd": ["xset", "s", "off", "s", "reset"],
+ "halt_on_failure": False,
+ "architectures": ["32bit", "64bit"],
+ "enabled": DISABLE_SCREEN_SAVER,
+ },
+ {
+ "name": "run mouse & screen adjustment script",
+ "cmd": [
+ # when configs are consolidated this python path will only show
+ # for windows.
+ "python",
+ "../scripts/external_tools/mouse_and_screen_resolution.py",
+ "--configuration-file",
+ "../scripts/external_tools/machine-configuration.json",
+ ],
+ "architectures": ["32bit"],
+ "halt_on_failure": True,
+ "enabled": ADJUST_MOUSE_AND_SCREEN,
+ },
+ ],
+ "vcs_output_timeout": 1000,
+ "minidump_save_path": "%(abs_work_dir)s/../minidumps",
+ "unstructured_flavors": {
+ "xpcshell": [],
+ "gtest": [],
+ "cppunittest": [],
+ "jittest": [],
+ },
+ "tooltool_cache": "/builds/worker/tooltool-cache",
+ "nodejs_path": NODEJS_PATH,
+ # "log_format": "%(levelname)8s - %(message)s",
+}
diff --git a/testing/mozharness/configs/unittests/mac_unittest.py b/testing/mozharness/configs/unittests/mac_unittest.py
new file mode 100644
index 0000000000..e6a1978604
--- /dev/null
+++ b/testing/mozharness/configs/unittests/mac_unittest.py
@@ -0,0 +1,231 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+
+# OS Specifics
+INSTALLER_PATH = os.path.join(os.getcwd(), "installer.dmg")
+NODEJS_PATH = None
+if "MOZ_FETCHES_DIR" in os.environ:
+ NODEJS_PATH = os.path.join(os.environ["MOZ_FETCHES_DIR"], "node/bin/node")
+
+XPCSHELL_NAME = "xpcshell"
+HTTP3SERVER_NAME = "http3server"
+EXE_SUFFIX = ""
+DISABLE_SCREEN_SAVER = False
+ADJUST_MOUSE_AND_SCREEN = False
+#####
+config = {
+ "virtualenv_modules": ["six==1.13.0", "vcversioner==2.16.0.0"],
+ ###
+ "installer_path": INSTALLER_PATH,
+ "xpcshell_name": XPCSHELL_NAME,
+ "http3server_name": HTTP3SERVER_NAME,
+ "exe_suffix": EXE_SUFFIX,
+ "run_file_names": {
+ "mochitest": "runtests.py",
+ "reftest": "runreftest.py",
+ "xpcshell": "runxpcshelltests.py",
+ "cppunittest": "runcppunittests.py",
+ "gtest": "rungtests.py",
+ "jittest": "jit_test.py",
+ },
+ "minimum_tests_zip_dirs": [
+ "bin/*",
+ "certs/*",
+ "config/*",
+ "mach",
+ "marionette/*",
+ "modules/*",
+ "mozbase/*",
+ "tools/*",
+ ],
+ "suite_definitions": {
+ "cppunittest": {
+ "options": [
+ "--symbols-path=%(symbols_path)s",
+ "--utility-path=tests/bin",
+ "--xre-path=%(abs_res_dir)s",
+ ],
+ "run_filename": "runcppunittests.py",
+ "testsdir": "cppunittest",
+ },
+ "jittest": {
+ "options": [
+ "tests/bin/js",
+ "--no-slow",
+ "--no-progress",
+ "--format=automation",
+ "--jitflags=all",
+ "--timeout=970", # Keep in sync with run_timeout below.
+ ],
+ "run_filename": "jit_test.py",
+ "testsdir": "jit-test/jit-test",
+ "run_timeout": 1000, # Keep in sync with --timeout above.
+ },
+ "mochitest": {
+ "options": [
+ "--appname=%(binary_path)s",
+ "--utility-path=tests/bin",
+ "--extra-profile-file=tests/bin/plugins",
+ "--symbols-path=%(symbols_path)s",
+ "--certificate-path=tests/certs",
+ "--quiet",
+ "--log-raw=%(raw_log_file)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--screenshot-on-fail",
+ "--cleanup-crashes",
+ "--marionette-startup-timeout=180",
+ "--sandbox-read-whitelist=%(abs_work_dir)s",
+ ],
+ "run_filename": "runtests.py",
+ "testsdir": "mochitest",
+ },
+ "reftest": {
+ "options": [
+ "--appname=%(binary_path)s",
+ "--utility-path=tests/bin",
+ "--extra-profile-file=tests/bin/plugins",
+ "--symbols-path=%(symbols_path)s",
+ "--log-raw=%(raw_log_file)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--cleanup-crashes",
+ "--marionette-startup-timeout=180",
+ "--sandbox-read-whitelist=%(abs_work_dir)s",
+ ],
+ "run_filename": "runreftest.py",
+ "testsdir": "reftest",
+ },
+ "xpcshell": {
+ "options": [
+ "--self-test",
+ "--symbols-path=%(symbols_path)s",
+ "--test-plugin-path=%(test_plugin_path)s",
+ "--log-raw=%(raw_log_file)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--utility-path=tests/bin",
+ ],
+ "run_filename": "runxpcshelltests.py",
+ "testsdir": "xpcshell",
+ },
+ "gtest": {
+ "options": [
+ "--xre-path=%(abs_res_dir)s",
+ "--cwd=%(gtest_dir)s",
+ "--symbols-path=%(symbols_path)s",
+ "--utility-path=tests/bin",
+ "%(binary_path)s",
+ ],
+ "run_filename": "rungtests.py",
+ },
+ },
+ # local mochi suites
+ "all_mochitest_suites": {
+ "mochitest-plain": ["--chunk-by-dir=4"],
+ "mochitest-plain-gpu": ["--subsuite=gpu"],
+ "mochitest-media": ["--subsuite=media"],
+ "mochitest-chrome": ["--flavor=chrome", "--chunk-by-dir=4", "--disable-e10s"],
+ "mochitest-chrome-gpu": ["--flavor=chrome", "--subsuite=gpu", "--disable-e10s"],
+ "mochitest-browser-chrome": ["--flavor=browser", "--chunk-by-runtime"],
+ "mochitest-browser-chrome-screenshots": [
+ "--flavor=browser",
+ "--subsuite=screenshots",
+ ],
+ "mochitest-webgl1-core": ["--subsuite=webgl1-core"],
+ "mochitest-webgl1-ext": ["--subsuite=webgl1-ext"],
+ "mochitest-webgl2-core": ["--subsuite=webgl2-core"],
+ "mochitest-webgl2-ext": ["--subsuite=webgl2-ext"],
+ "mochitest-webgl2-deqp": ["--subsuite=webgl2-deqp"],
+ "mochitest-webgpu": ["--subsuite=webgpu"],
+ "mochitest-devtools-chrome": [
+ "--flavor=browser",
+ "--subsuite=devtools",
+ "--chunk-by-runtime",
+ ],
+ "mochitest-a11y": ["--flavor=a11y", "--disable-e10s"],
+ "mochitest-remote": ["--flavor=browser", "--subsuite=remote"],
+ },
+ # local reftest suites
+ "all_reftest_suites": {
+ "crashtest": {
+ "options": ["--suite=crashtest", "--topsrcdir=tests/reftest/tests"],
+ "tests": ["tests/reftest/tests/testing/crashtest/crashtests.list"],
+ },
+ "jsreftest": {
+ "options": [
+ "--extra-profile-file=tests/jsreftest/tests/js/src/tests/user.js",
+ "--suite=jstestbrowser",
+ "--topsrcdir=tests/jsreftest/tests",
+ ],
+ "tests": ["tests/jsreftest/tests/js/src/tests/jstests.list"],
+ },
+ "reftest": {
+ "options": ["--suite=reftest", "--topsrcdir=tests/reftest/tests"],
+ "tests": ["tests/reftest/tests/layout/reftests/reftest.list"],
+ },
+ },
+ "all_xpcshell_suites": {
+ "xpcshell": {
+ "options": [
+ "--xpcshell=%(abs_app_dir)s/" + XPCSHELL_NAME,
+ "--http3server=%(abs_app_dir)s/" + HTTP3SERVER_NAME,
+ "--manifest=tests/xpcshell/tests/xpcshell.ini",
+ ],
+ "tests": [],
+ },
+ },
+ "all_cppunittest_suites": {"cppunittest": ["tests/cppunittest"]},
+ "all_gtest_suites": {"gtest": []},
+ "all_jittest_suites": {"jittest": [], "jittest-chunked": []},
+ "run_cmd_checks_enabled": True,
+ "preflight_run_cmd_suites": [
+ # NOTE 'enabled' is only here while we have unconsolidated configs
+ {
+ "name": "disable_screen_saver",
+ "cmd": ["xset", "s", "off", "s", "reset"],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": False,
+ "enabled": DISABLE_SCREEN_SAVER,
+ },
+ {
+ "name": "disable_dock",
+ "cmd": ["defaults", "write", "com.apple.dock", "autohide", "-bool", "true"],
+ "architectures": ["64bit"],
+ "halt_on_failure": True,
+ "enabled": True,
+ },
+ {
+ "name": "kill_dock",
+ "cmd": ["killall", "Dock"],
+ "architectures": ["64bit"],
+ "halt_on_failure": True,
+ "enabled": True,
+ },
+ {
+ "name": "run mouse & screen adjustment script",
+ "cmd": [
+ # when configs are consolidated this python path will only show
+ # for windows.
+ "python",
+ "../scripts/external_tools/mouse_and_screen_resolution.py",
+ "--configuration-file",
+ "../scripts/external_tools/machine-configuration.json",
+ ],
+ "architectures": ["32bit"],
+ "halt_on_failure": True,
+ "enabled": ADJUST_MOUSE_AND_SCREEN,
+ },
+ ],
+ "vcs_output_timeout": 1000,
+ "minidump_save_path": "%(abs_work_dir)s/../minidumps",
+ "unstructured_flavors": {
+ "xpcshell": [],
+ "gtest": [],
+ "cppunittest": [],
+ "jittest": [],
+ },
+ "tooltool_cache": "/builds/tooltool_cache",
+ "nodejs_path": NODEJS_PATH,
+}
diff --git a/testing/mozharness/configs/unittests/win_unittest.py b/testing/mozharness/configs/unittests/win_unittest.py
new file mode 100644
index 0000000000..30e069913a
--- /dev/null
+++ b/testing/mozharness/configs/unittests/win_unittest.py
@@ -0,0 +1,323 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import absolute_import
+import os
+import platform
+import sys
+
+# OS Specifics
+ABS_WORK_DIR = os.path.join(os.getcwd(), "build")
+BINARY_PATH = os.path.join(ABS_WORK_DIR, "firefox", "firefox.exe")
+INSTALLER_PATH = os.path.join(ABS_WORK_DIR, "installer.zip")
+NODEJS_PATH = None
+if "MOZ_FETCHES_DIR" in os.environ:
+ NODEJS_PATH = os.path.join(os.environ["MOZ_FETCHES_DIR"], "node/node.exe")
+
+PYWIN32 = "pypiwin32==219"
+if sys.version_info > (3, 0):
+ PYWIN32 = "pywin32==300"
+
+XPCSHELL_NAME = "xpcshell.exe"
+EXE_SUFFIX = ".exe"
+DISABLE_SCREEN_SAVER = False
+ADJUST_MOUSE_AND_SCREEN = True
+DESKTOP_VISUALFX_THEME = {
+ "Let Windows choose": 0,
+ "Best appearance": 1,
+ "Best performance": 2,
+ "Custom": 3,
+}.get("Best appearance")
+TASKBAR_AUTOHIDE_REG_PATH = {
+ "Windows 7": "HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2",
+ "Windows 10": "HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3",
+}.get("{} {}".format(platform.system(), platform.release()))
+#####
+config = {
+ "exes": {
+ "python": sys.executable,
+ "hg": os.path.join(os.environ.get("PROGRAMFILES", ""), "Mercurial", "hg"),
+ },
+ ###
+ "installer_path": INSTALLER_PATH,
+ "binary_path": BINARY_PATH,
+ "xpcshell_name": XPCSHELL_NAME,
+ "virtualenv_modules": [PYWIN32, "six==1.13.0", "vcversioner==2.16.0.0"],
+ "virtualenv_path": "venv",
+ "exe_suffix": EXE_SUFFIX,
+ "run_file_names": {
+ "mochitest": "runtests.py",
+ "reftest": "runreftest.py",
+ "xpcshell": "runxpcshelltests.py",
+ "cppunittest": "runcppunittests.py",
+ "gtest": "rungtests.py",
+ "jittest": "jit_test.py",
+ },
+ "minimum_tests_zip_dirs": [
+ "bin/*",
+ "certs/*",
+ "config/*",
+ "mach",
+ "marionette/*",
+ "modules/*",
+ "mozbase/*",
+ "tools/*",
+ "mozpack/*",
+ "mozbuild/*",
+ ],
+ "suite_definitions": {
+ "cppunittest": {
+ "options": [
+ "--symbols-path=%(symbols_path)s",
+ "--utility-path=tests/bin",
+ "--xre-path=%(abs_app_dir)s",
+ ],
+ "run_filename": "runcppunittests.py",
+ "testsdir": "cppunittest",
+ },
+ "jittest": {
+ "options": [
+ "tests/bin/js",
+ "--no-slow",
+ "--no-progress",
+ "--format=automation",
+ "--jitflags=all",
+ "--timeout=970", # Keep in sync with run_timeout below.
+ ],
+ "run_filename": "jit_test.py",
+ "testsdir": "jit-test/jit-test",
+ "run_timeout": 1000, # Keep in sync with --timeout above.
+ },
+ "mochitest": {
+ "options": [
+ "--appname=%(binary_path)s",
+ "--utility-path=tests/bin",
+ "--extra-profile-file=tests/bin/plugins",
+ "--symbols-path=%(symbols_path)s",
+ "--certificate-path=tests/certs",
+ "--quiet",
+ "--log-raw=%(raw_log_file)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--screenshot-on-fail",
+ "--cleanup-crashes",
+ "--marionette-startup-timeout=180",
+ ],
+ "run_filename": "runtests.py",
+ "testsdir": "mochitest",
+ },
+ "reftest": {
+ "options": [
+ "--appname=%(binary_path)s",
+ "--utility-path=tests/bin",
+ "--extra-profile-file=tests/bin/plugins",
+ "--symbols-path=%(symbols_path)s",
+ "--log-raw=%(raw_log_file)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--cleanup-crashes",
+ "--marionette-startup-timeout=180",
+ "--sandbox-read-whitelist=%(abs_work_dir)s",
+ ],
+ "run_filename": "runreftest.py",
+ "testsdir": "reftest",
+ },
+ "xpcshell": {
+ "options": [
+ "--self-test",
+ "--symbols-path=%(symbols_path)s",
+ "--test-plugin-path=%(test_plugin_path)s",
+ "--log-raw=%(raw_log_file)s",
+ "--log-errorsummary=%(error_summary_file)s",
+ "--utility-path=tests/bin",
+ ],
+ "run_filename": "runxpcshelltests.py",
+ "testsdir": "xpcshell",
+ },
+ "gtest": {
+ "options": [
+ "--xre-path=%(abs_res_dir)s",
+ "--cwd=%(gtest_dir)s",
+ "--symbols-path=%(symbols_path)s",
+ "--utility-path=tests/bin",
+ "%(binary_path)s",
+ ],
+ "run_filename": "rungtests.py",
+ },
+ },
+ # local mochi suites
+ "all_mochitest_suites": {
+ "mochitest-plain": ["--chunk-by-dir=4"],
+ "mochitest-plain-gpu": ["--subsuite=gpu"],
+ "mochitest-media": ["--subsuite=media"],
+ "mochitest-chrome": ["--flavor=chrome", "--chunk-by-dir=4", "--disable-e10s"],
+ "mochitest-chrome-gpu": ["--flavor=chrome", "--subsuite=gpu", "--disable-e10s"],
+ "mochitest-browser-chrome": ["--flavor=browser", "--chunk-by-runtime"],
+ "mochitest-browser-chrome-screenshots": [
+ "--flavor=browser",
+ "--subsuite=screenshots",
+ ],
+ "mochitest-webgl1-core": ["--subsuite=webgl1-core"],
+ "mochitest-webgl1-ext": ["--subsuite=webgl1-ext"],
+ "mochitest-webgl2-core": ["--subsuite=webgl2-core"],
+ "mochitest-webgl2-ext": ["--subsuite=webgl2-ext"],
+ "mochitest-webgl2-deqp": ["--subsuite=webgl2-deqp"],
+ "mochitest-webgpu": ["--subsuite=webgpu"],
+ "mochitest-devtools-chrome": [
+ "--flavor=browser",
+ "--subsuite=devtools",
+ "--chunk-by-runtime",
+ ],
+ "mochitest-a11y": ["--flavor=a11y", "--disable-e10s"],
+ "mochitest-remote": ["--flavor=browser", "--subsuite=remote"],
+ },
+ # local reftest suites
+ "all_reftest_suites": {
+ "crashtest": {
+ "options": ["--suite=crashtest", "--topsrcdir=tests/reftest/tests"],
+ "tests": ["tests/reftest/tests/testing/crashtest/crashtests.list"],
+ },
+ "jsreftest": {
+ "options": [
+ "--extra-profile-file=tests/jsreftest/tests/js/src/tests/user.js",
+ "--suite=jstestbrowser",
+ "--topsrcdir=tests/jsreftest/tests",
+ ],
+ "tests": ["tests/jsreftest/tests/js/src/tests/jstests.list"],
+ },
+ "reftest": {
+ "options": ["--suite=reftest", "--topsrcdir=tests/reftest/tests"],
+ "tests": ["tests/reftest/tests/layout/reftests/reftest.list"],
+ },
+ "reftest-gpu": {
+ "options": [
+ "--suite=reftest",
+ "--setpref=layers.gpu-process.force-enabled=true",
+ "--topsrcdir=tests/reftest/tests",
+ ],
+ "tests": ["tests/reftest/tests/layout/reftests/reftest.list"],
+ },
+ "reftest-no-accel": {
+ "options": [
+ "--suite=reftest",
+ "--setpref=layers.acceleration.disabled=true",
+ "--topsrcdir=tests/reftest/tests",
+ ],
+ "tests": ["tests/reftest/tests/layout/reftests/reftest.list"],
+ },
+ },
+ "all_xpcshell_suites": {
+ "xpcshell": {
+ "options": [
+ "--xpcshell=%(abs_app_dir)s/" + XPCSHELL_NAME,
+ "--manifest=tests/xpcshell/tests/xpcshell.ini",
+ ],
+ "tests": [],
+ },
+ },
+ "all_cppunittest_suites": {"cppunittest": ["tests/cppunittest"]},
+ "all_gtest_suites": {"gtest": []},
+ "all_jittest_suites": {
+ "jittest": [],
+ "jittest-chunked": [],
+ },
+ "run_cmd_checks_enabled": True,
+ "preflight_run_cmd_suites": [
+ {
+ "name": "disable_screen_saver",
+ "cmd": ["xset", "s", "off", "s", "reset"],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": False,
+ "enabled": DISABLE_SCREEN_SAVER,
+ },
+ {
+ "name": "run mouse & screen adjustment script",
+ "cmd": [
+ sys.executable,
+ os.path.join(
+ os.getcwd(),
+ "mozharness",
+ "external_tools",
+ "mouse_and_screen_resolution.py",
+ ),
+ "--configuration-file",
+ os.path.join(
+ os.getcwd(),
+ "mozharness",
+ "external_tools",
+ "machine-configuration.json",
+ ),
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": ADJUST_MOUSE_AND_SCREEN,
+ },
+ {
+ "name": "disable windows security and maintenance notifications",
+ "cmd": [
+ "powershell",
+ "-command",
+ "\"&{$p='HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\\Notifications\Settings\Windows.SystemToast.SecurityAndMaintenance';if(!(Test-Path -Path $p)){&New-Item -Path $p -Force}&Set-ItemProperty -Path $p -Name Enabled -Value 0}\"", # noqa
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": (platform.release() == 10),
+ },
+ {
+ "name": "set windows VisualFX",
+ "cmd": [
+ "powershell",
+ "-command",
+ "\"&{{&Set-ItemProperty -Path 'HKCU:Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects' -Name VisualFXSetting -Value {}}}\"".format(
+ DESKTOP_VISUALFX_THEME
+ ),
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": True,
+ },
+ {
+ "name": "hide windows taskbar",
+ "cmd": [
+ "powershell",
+ "-command",
+ "\"&{{$p='{}';$v=(Get-ItemProperty -Path $p).Settings;$v[8]=3;&Set-ItemProperty -Path $p -Name Settings -Value $v}}\"".format(
+ TASKBAR_AUTOHIDE_REG_PATH
+ ),
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": True,
+ },
+ {
+ "name": "restart windows explorer",
+ "cmd": [
+ "powershell",
+ "-command",
+ '"&{&Stop-Process -ProcessName explorer}"',
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": True,
+ },
+ {
+ "name": "prepare chrome profile",
+ "cmd": [
+ "powershell",
+ "-command",
+ "if (test-path ${env:ProgramFiles(x86)}\Google\Chrome\Application\chrome.exe) {start chrome; Start-Sleep -s 30; taskkill /F /IM chrome.exe /T}",
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": True,
+ },
+ ],
+ "vcs_output_timeout": 1000,
+ "minidump_save_path": "%(abs_work_dir)s/../minidumps",
+ "unstructured_flavors": {
+ "xpcshell": [],
+ "gtest": [],
+ "cppunittest": [],
+ "jittest": [],
+ },
+ "nodejs_path": NODEJS_PATH,
+}
diff --git a/testing/mozharness/configs/web_platform_tests/prod_config.py b/testing/mozharness/configs/web_platform_tests/prod_config.py
new file mode 100644
index 0000000000..25f9a7240d
--- /dev/null
+++ b/testing/mozharness/configs/web_platform_tests/prod_config.py
@@ -0,0 +1,51 @@
+# ***** BEGIN LICENSE BLOCK *****
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this file,
+# You can obtain one at http://mozilla.org/MPL/2.0/.
+# ***** END LICENSE BLOCK *****
+
+from __future__ import absolute_import
+import os
+
+# OS Specifics
+DISABLE_SCREEN_SAVER = True
+ADJUST_MOUSE_AND_SCREEN = False
+#####
+
+config = {
+ "options": [
+ "--prefs-root=%(test_path)s/prefs",
+ "--config=%(test_path)s/wptrunner.ini",
+ "--ca-cert-path=%(test_path)s/tests/tools/certs/cacert.pem",
+ "--host-key-path=%(test_path)s/tests/tools/certs/web-platform.test.key",
+ "--host-cert-path=%(test_path)s/tests/tools/certs/web-platform.test.pem",
+ "--certutil-binary=%(test_install_path)s/bin/certutil",
+ ],
+ "geckodriver": os.path.join("%(abs_fetches_dir)s", "geckodriver"),
+ "per_test_category": "web-platform",
+ "run_cmd_checks_enabled": True,
+ "preflight_run_cmd_suites": [
+ # NOTE 'enabled' is only here while we have unconsolidated configs
+ {
+ "name": "disable_screen_saver",
+ "cmd": ["xset", "s", "off", "s", "reset"],
+ "halt_on_failure": False,
+ "architectures": ["32bit", "64bit"],
+ "enabled": DISABLE_SCREEN_SAVER,
+ },
+ {
+ "name": "run mouse & screen adjustment script",
+ "cmd": [
+ # when configs are consolidated this python path will only show
+ # for windows.
+ "python",
+ "../scripts/external_tools/mouse_and_screen_resolution.py",
+ "--configuration-file",
+ "../scripts/external_tools/machine-configuration.json",
+ ],
+ "architectures": ["32bit"],
+ "halt_on_failure": True,
+ "enabled": ADJUST_MOUSE_AND_SCREEN,
+ },
+ ],
+}
diff --git a/testing/mozharness/configs/web_platform_tests/prod_config_android.py b/testing/mozharness/configs/web_platform_tests/prod_config_android.py
new file mode 100644
index 0000000000..23c366f42f
--- /dev/null
+++ b/testing/mozharness/configs/web_platform_tests/prod_config_android.py
@@ -0,0 +1,26 @@
+# ***** BEGIN LICENSE BLOCK *****
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this file,
+# You can obtain one at http://mozilla.org/MPL/2.0/.
+# ***** END LICENSE BLOCK *****
+from __future__ import absolute_import
+import os
+
+config = {
+ "options": [
+ "--prefs-root=%(test_path)s/prefs",
+ "--config=%(test_path)s/wptrunner.ini",
+ "--ca-cert-path=%(test_path)s/tests/tools/certs/cacert.pem",
+ "--host-key-path=%(test_path)s/tests/tools/certs/web-platform.test.key",
+ "--host-cert-path=%(test_path)s/tests/tools/certs/web-platform.test.pem",
+ "--certutil-binary=%(xre_path)s/certutil",
+ "--product=firefox_android",
+ ],
+ "binary_path": "/tmp",
+ "geckodriver": "%(abs_fetches_dir)s/geckodriver",
+ "hostutils_manifest_path": "testing/config/tooltool-manifests/linux64/hostutils.manifest",
+ "log_tbpl_level": "info",
+ "log_raw_level": "info",
+ "per_test_category": "web-platform",
+ "tooltool_cache": os.environ.get("TOOLTOOL_CACHE"),
+}
diff --git a/testing/mozharness/configs/web_platform_tests/prod_config_mac.py b/testing/mozharness/configs/web_platform_tests/prod_config_mac.py
new file mode 100644
index 0000000000..b663f9be59
--- /dev/null
+++ b/testing/mozharness/configs/web_platform_tests/prod_config_mac.py
@@ -0,0 +1,51 @@
+# ***** BEGIN LICENSE BLOCK *****
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this file,
+# You can obtain one at http://mozilla.org/MPL/2.0/.
+# ***** END LICENSE BLOCK *****
+
+from __future__ import absolute_import
+import os
+
+# OS Specifics
+DISABLE_SCREEN_SAVER = False
+ADJUST_MOUSE_AND_SCREEN = False
+#####
+
+config = {
+ "options": [
+ "--prefs-root=%(test_path)s/prefs",
+ "--config=%(test_path)s/wptrunner.ini",
+ "--ca-cert-path=%(test_path)s/tests/tools/certs/cacert.pem",
+ "--host-key-path=%(test_path)s/tests/tools/certs/web-platform.test.key",
+ "--host-cert-path=%(test_path)s/tests/tools/certs/web-platform.test.pem",
+ "--certutil-binary=%(test_install_path)s/bin/certutil",
+ ],
+ "geckodriver": os.path.join("%(abs_fetches_dir)s", "geckodriver"),
+ "per_test_category": "web-platform",
+ "run_cmd_checks_enabled": True,
+ "preflight_run_cmd_suites": [
+ # NOTE 'enabled' is only here while we have unconsolidated configs
+ {
+ "name": "disable_screen_saver",
+ "cmd": ["xset", "s", "off", "s", "reset"],
+ "halt_on_failure": False,
+ "architectures": ["32bit", "64bit"],
+ "enabled": DISABLE_SCREEN_SAVER,
+ },
+ {
+ "name": "run mouse & screen adjustment script",
+ "cmd": [
+ # when configs are consolidated this python path will only show
+ # for windows.
+ "python",
+ "../scripts/external_tools/mouse_and_screen_resolution.py",
+ "--configuration-file",
+ "../scripts/external_tools/machine-configuration.json",
+ ],
+ "architectures": ["32bit"],
+ "halt_on_failure": True,
+ "enabled": ADJUST_MOUSE_AND_SCREEN,
+ },
+ ],
+}
diff --git a/testing/mozharness/configs/web_platform_tests/prod_config_windows.py b/testing/mozharness/configs/web_platform_tests/prod_config_windows.py
new file mode 100644
index 0000000000..227b126683
--- /dev/null
+++ b/testing/mozharness/configs/web_platform_tests/prod_config_windows.py
@@ -0,0 +1,59 @@
+# ***** BEGIN LICENSE BLOCK *****
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this file,
+# You can obtain one at http://mozilla.org/MPL/2.0/.
+# ***** END LICENSE BLOCK *****
+
+# This is a template config file for web-platform-tests test.
+
+from __future__ import absolute_import
+import os
+import sys
+
+# OS Specifics
+DISABLE_SCREEN_SAVER = False
+ADJUST_MOUSE_AND_SCREEN = True
+#####
+
+
+config = {
+ "options": [
+ "--prefs-root=%(test_path)s/prefs",
+ "--config=%(test_path)s/wptrunner.ini",
+ "--ca-cert-path=%(test_path)s/tests/tools/certs/cacert.pem",
+ "--host-key-path=%(test_path)s/tests/tools/certs/web-platform.test.key",
+ "--host-cert-path=%(test_path)s/tests/tools/certs/web-platform.test.pem",
+ "--certutil-binary=%(test_install_path)s/bin/certutil",
+ ],
+ "exes": {
+ "python": sys.executable,
+ "hg": "c:/mozilla-build/hg/hg",
+ },
+ "geckodriver": os.path.join("%(abs_fetches_dir)s", "geckodriver.exe"),
+ "per_test_category": "web-platform",
+ "run_cmd_checks_enabled": True,
+ "preflight_run_cmd_suites": [
+ # NOTE 'enabled' is only here while we have unconsolidated configs
+ {
+ "name": "disable_screen_saver",
+ "cmd": ["xset", "s", "off", "s", "reset"],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": False,
+ "enabled": DISABLE_SCREEN_SAVER,
+ },
+ {
+ "name": "run mouse & screen adjustment script",
+ "cmd": [
+ # when configs are consolidated this python path will only show
+ # for windows.
+ sys.executable,
+ "../scripts/external_tools/mouse_and_screen_resolution.py",
+ "--configuration-file",
+ "../scripts/external_tools/machine-configuration.json",
+ ],
+ "architectures": ["32bit"],
+ "halt_on_failure": True,
+ "enabled": ADJUST_MOUSE_AND_SCREEN,
+ },
+ ],
+}
diff --git a/testing/mozharness/configs/web_platform_tests/prod_config_windows_taskcluster.py b/testing/mozharness/configs/web_platform_tests/prod_config_windows_taskcluster.py
new file mode 100644
index 0000000000..4c863e2af9
--- /dev/null
+++ b/testing/mozharness/configs/web_platform_tests/prod_config_windows_taskcluster.py
@@ -0,0 +1,124 @@
+# ***** BEGIN LICENSE BLOCK *****
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this file,
+# You can obtain one at http://mozilla.org/MPL/2.0/.
+# ***** END LICENSE BLOCK *****
+
+# This is a template config file for web-platform-tests test.
+
+from __future__ import absolute_import
+import os
+import platform
+import sys
+
+# OS Specifics
+DISABLE_SCREEN_SAVER = False
+ADJUST_MOUSE_AND_SCREEN = True
+DESKTOP_VISUALFX_THEME = {
+ "Let Windows choose": 0,
+ "Best appearance": 1,
+ "Best performance": 2,
+ "Custom": 3,
+}.get("Best appearance")
+TASKBAR_AUTOHIDE_REG_PATH = {
+ "Windows 7": "HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2",
+ "Windows 10": "HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3",
+}.get("{} {}".format(platform.system(), platform.release()))
+#####
+
+config = {
+ "options": [
+ "--prefs-root=%(test_path)s/prefs",
+ "--config=%(test_path)s/wptrunner.ini",
+ "--ca-cert-path=%(test_path)s/tests/tools/certs/cacert.pem",
+ "--host-key-path=%(test_path)s/tests/tools/certs/web-platform.test.key",
+ "--host-cert-path=%(test_path)s/tests/tools/certs/web-platform.test.pem",
+ "--certutil-binary=%(test_install_path)s/bin/certutil",
+ ],
+ "exes": {
+ "python": sys.executable,
+ "hg": os.path.join(os.environ["PROGRAMFILES"], "Mercurial", "hg"),
+ },
+ "run_cmd_checks_enabled": True,
+ "preflight_run_cmd_suites": [
+ {
+ "name": "disable_screen_saver",
+ "cmd": ["xset", "s", "off", "s", "reset"],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": False,
+ "enabled": DISABLE_SCREEN_SAVER,
+ },
+ {
+ "name": "run mouse & screen adjustment script",
+ "cmd": [
+ sys.executable,
+ os.path.join(
+ os.getcwd(),
+ "mozharness",
+ "external_tools",
+ "mouse_and_screen_resolution.py",
+ ),
+ "--configuration-file",
+ os.path.join(
+ os.getcwd(),
+ "mozharness",
+ "external_tools",
+ "machine-configuration.json",
+ ),
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": ADJUST_MOUSE_AND_SCREEN,
+ },
+ {
+ "name": "disable windows security and maintenance notifications",
+ "cmd": [
+ "powershell",
+ "-command",
+ r"\"&{$p='HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings\Windows.SystemToast.SecurityAndMaintenance';if(!(Test-Path -Path $p)){&New-Item -Path $p -Force}&Set-ItemProperty -Path $p -Name Enabled -Value 0}\"", # noqa
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": (platform.release() == 10),
+ },
+ {
+ "name": "set windows VisualFX",
+ "cmd": [
+ "powershell",
+ "-command",
+ "\"&{{&Set-ItemProperty -Path 'HKCU:Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects' -Name VisualFXSetting -Value {}}}\"".format(
+ DESKTOP_VISUALFX_THEME
+ ),
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": True,
+ },
+ {
+ "name": "hide windows taskbar",
+ "cmd": [
+ "powershell",
+ "-command",
+ "\"&{{$p='{}';$v=(Get-ItemProperty -Path $p).Settings;$v[8]=3;&Set-ItemProperty -Path $p -Name Settings -Value $v}}\"".format(
+ TASKBAR_AUTOHIDE_REG_PATH
+ ),
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": True,
+ },
+ {
+ "name": "restart windows explorer",
+ "cmd": [
+ "powershell",
+ "-command",
+ '"&{&Stop-Process -ProcessName explorer}"',
+ ],
+ "architectures": ["32bit", "64bit"],
+ "halt_on_failure": True,
+ "enabled": True,
+ },
+ ],
+ "geckodriver": os.path.join("%(abs_fetches_dir)s", "geckodriver.exe"),
+ "per_test_category": "web-platform",
+}
diff --git a/testing/mozharness/configs/web_platform_tests/test_config.py b/testing/mozharness/configs/web_platform_tests/test_config.py
new file mode 100644
index 0000000000..a9787185a7
--- /dev/null
+++ b/testing/mozharness/configs/web_platform_tests/test_config.py
@@ -0,0 +1,24 @@
+# ***** BEGIN LICENSE BLOCK *****
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this file,
+# You can obtain one at http://mozilla.org/MPL/2.0/.
+# ***** END LICENSE BLOCK *****
+
+config = {
+ "options": [
+ "--prefs-root=%(test_path)s/prefs",
+ "--config=%(test_path)s/wptrunner.ini",
+ "--ca-cert-path=%(test_path)s/tests/tools/certs/cacert.pem",
+ "--host-key-path=%(test_path)s/tests/tools/certs/web-platform.test.key",
+ "--host-cert-path=%(test_path)s/tests/tools/certs/web-platform.test.pem",
+ "--certutil-binary=%(test_install_path)s/bin/certutil",
+ ],
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "create-virtualenv",
+ "pull",
+ "install",
+ "run-tests",
+ ],
+}
diff --git a/testing/mozharness/configs/web_platform_tests/test_config_windows.py b/testing/mozharness/configs/web_platform_tests/test_config_windows.py
new file mode 100644
index 0000000000..8262f017bd
--- /dev/null
+++ b/testing/mozharness/configs/web_platform_tests/test_config_windows.py
@@ -0,0 +1,31 @@
+# ***** BEGIN LICENSE BLOCK *****
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this file,
+# You can obtain one at http://mozilla.org/MPL/2.0/.
+# ***** END LICENSE BLOCK *****
+
+from __future__ import absolute_import
+import sys
+
+config = {
+ "options": [
+ "--prefs-root=%(test_path)s/prefs",
+ "--config=%(test_path)s/wptrunner.ini",
+ "--ca-cert-path=%(test_path)s/tests/tools/certs/cacert.pem",
+ "--host-key-path=%(test_path)s/tests/tools/certs/web-platform.test.key",
+ "--host-cert-path=%(test_path)s/tests/tools/certs/web-platform.test.pem",
+ "--certutil-binary=%(test_install_path)s/bin/certutil",
+ ],
+ "exes": {
+ "python": sys.executable,
+ "hg": "c:/mozilla-build/hg/hg",
+ },
+ "default_actions": [
+ "clobber",
+ "download-and-extract",
+ "create-virtualenv",
+ "pull",
+ "install",
+ "run-tests",
+ ],
+}