Bug 1154796 - copy mozharness and put it in gecko tree, based on 4d855a6835ed, DONTBUILD r=mshal, a=testing
authorJordan Lund <jlund@mozilla.com>
Wed, 08 Jul 2015 12:14:52 -0700
changeset 201242 7105dab57de828c29a8f8df97487f4ff79430306
parent 201241 036b844a4d01ec7622bcbe2ec5867a745bfe7a7d
child 201243 e6a1ef7a16fa9595d6b0b3195d6b27b08cde21b6
push id296
push userjlund@mozilla.com
push dateWed, 08 Jul 2015 19:15:26 +0000
treeherdermozilla-esr31@e6a1ef7a16fa [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmshal, testing
bugs1154796
milestone31.8.0esrpre
Bug 1154796 - copy mozharness and put it in gecko tree, based on 4d855a6835ed, DONTBUILD r=mshal, a=testing
testing/mozharness/LICENSE
testing/mozharness/README.txt
testing/mozharness/README.txt.rej
testing/mozharness/configs/android/android_panda_releng.py
testing/mozharness/configs/android/android_panda_talos_releng.py
testing/mozharness/configs/android/androidarm.py
testing/mozharness/configs/android/androidarm_4_3.py
testing/mozharness/configs/android/androidarm_dev.py
testing/mozharness/configs/android/androidx86.py
testing/mozharness/configs/b2g/desktop_automation_config.py
testing/mozharness/configs/b2g/desktop_linux32.py
testing/mozharness/configs/b2g/desktop_linux64.py
testing/mozharness/configs/b2g/desktop_macosx64.py
testing/mozharness/configs/b2g/desktop_windows32.py
testing/mozharness/configs/b2g/emulator_automation_config.py
testing/mozharness/configs/b2g/emulator_test_config.py
testing/mozharness/configs/b2g/gaia_integration_config.py
testing/mozharness/configs/b2g/gaia_try.py
testing/mozharness/configs/b2g/gaia_unit_production_config.py
testing/mozharness/configs/b2g/gaia_unit_test_config.py
testing/mozharness/configs/b2g/generic_config.py
testing/mozharness/configs/b2g/mulet_config.py
testing/mozharness/configs/b2g/releng-emulator.py
testing/mozharness/configs/b2g/releng-fota-eng.py
testing/mozharness/configs/b2g/releng-fota-updates.py
testing/mozharness/configs/b2g/releng-otoro-eng.py
testing/mozharness/configs/b2g/releng-otoro.py
testing/mozharness/configs/b2g/releng-private-updates.py
testing/mozharness/configs/b2g/releng-try.py
testing/mozharness/configs/b2g/releng_sub_linux_configs/32_debug.py
testing/mozharness/configs/b2g/releng_sub_linux_configs/64_debug.py
testing/mozharness/configs/b2g/releng_sub_mac_configs/64_debug.py
testing/mozharness/configs/b2g/releng_sub_windows_configs/32_debug.py
testing/mozharness/configs/b2g/taskcluster-emulator.py
testing/mozharness/configs/b2g/taskcluster-phone-ota.py
testing/mozharness/configs/b2g/taskcluster-phone.py
testing/mozharness/configs/b2g/taskcluster-spark-dogfood.py
testing/mozharness/configs/b2g/taskcluster-spark-ota.py
testing/mozharness/configs/b2g/taskcluster-spark.py
testing/mozharness/configs/b2g_bumper/master.py
testing/mozharness/configs/b2g_bumper/v2.0.py
testing/mozharness/configs/b2g_bumper/v2.1.py
testing/mozharness/configs/b2g_bumper/v2.1s.py
testing/mozharness/configs/b2g_bumper/v2.2.py
testing/mozharness/configs/balrog/docker-worker.py
testing/mozharness/configs/balrog/production.py
testing/mozharness/configs/balrog/staging.py
testing/mozharness/configs/builds/branch_specifics.py
testing/mozharness/configs/builds/build_pool_specifics.py
testing/mozharness/configs/builds/releng_base_android_64_builds.py
testing/mozharness/configs/builds/releng_base_linux_32_builds.py
testing/mozharness/configs/builds/releng_base_linux_64_builds.py
testing/mozharness/configs/builds/releng_base_mac_64_builds.py
testing/mozharness/configs/builds/releng_base_windows_32_builds.py
testing/mozharness/configs/builds/releng_base_windows_64_builds.py
testing/mozharness/configs/builds/releng_sub_android_configs/64_api_11.py
testing/mozharness/configs/builds/releng_sub_android_configs/64_api_11_debug.py
testing/mozharness/configs/builds/releng_sub_android_configs/64_api_9.py
testing/mozharness/configs/builds/releng_sub_android_configs/64_api_9_debug.py
testing/mozharness/configs/builds/releng_sub_android_configs/64_x86.py
testing/mozharness/configs/builds/releng_sub_linux_configs/32_debug.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_and_debug.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_code_coverage.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_debug.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_graphene.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_horizon.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_mulet.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_source.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_stat_and_debug.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_debug.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_graphene.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_horizon.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_mulet.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_stat_and_debug.py
testing/mozharness/configs/builds/releng_sub_windows_configs/32_debug.py
testing/mozharness/configs/builds/releng_sub_windows_configs/32_mulet.py
testing/mozharness/configs/builds/releng_sub_windows_configs/64_debug.py
testing/mozharness/configs/builds/releng_sub_windows_configs/64_graphene.py
testing/mozharness/configs/builds/releng_sub_windows_configs/64_horizon.py
testing/mozharness/configs/developer_config.py
testing/mozharness/configs/generic_releng_config.py
testing/mozharness/configs/hazards/build_b2g.py
testing/mozharness/configs/hazards/build_browser.py
testing/mozharness/configs/hazards/build_shell.py
testing/mozharness/configs/hazards/common.py
testing/mozharness/configs/luciddream/linux_config.py
testing/mozharness/configs/marionette/automation_emulator_config.py
testing/mozharness/configs/marionette/gaia_ui_test_emu_config.py
testing/mozharness/configs/marionette/gaia_ui_test_prod_config.py
testing/mozharness/configs/marionette/prod_config.py
testing/mozharness/configs/marionette/test_config.py
testing/mozharness/configs/marionette/windows_config.py
testing/mozharness/configs/merge_day/aurora_to_beta.py
testing/mozharness/configs/merge_day/b2g_branch_repos.py
testing/mozharness/configs/merge_day/b2g_tag.py
testing/mozharness/configs/merge_day/beta_to_release.py
testing/mozharness/configs/merge_day/central_to_aurora.py
testing/mozharness/configs/merge_day/release_to_esr.py
testing/mozharness/configs/merge_day/staging_beta_migration.py
testing/mozharness/configs/multi_locale/android-mozharness-build.json
testing/mozharness/configs/multi_locale/b2g_linux32.py
testing/mozharness/configs/multi_locale/b2g_linux64.py
testing/mozharness/configs/multi_locale/b2g_macosx64.py
testing/mozharness/configs/multi_locale/b2g_win32.py
testing/mozharness/configs/multi_locale/mozilla-aurora_android-armv6.json
testing/mozharness/configs/multi_locale/mozilla-aurora_android-x86.json
testing/mozharness/configs/multi_locale/mozilla-aurora_android.json
testing/mozharness/configs/multi_locale/mozilla-beta_android-armv6.json
testing/mozharness/configs/multi_locale/mozilla-beta_android-x86.json
testing/mozharness/configs/multi_locale/mozilla-beta_android.json
testing/mozharness/configs/multi_locale/mozilla-central_android-armv6.json
testing/mozharness/configs/multi_locale/mozilla-central_android-x86.json
testing/mozharness/configs/multi_locale/mozilla-central_android.json
testing/mozharness/configs/multi_locale/mozilla-release_android-armv6.json
testing/mozharness/configs/multi_locale/mozilla-release_android-x86.json
testing/mozharness/configs/multi_locale/mozilla-release_android.json
testing/mozharness/configs/multi_locale/release_mozilla-beta_android-armv6.json
testing/mozharness/configs/multi_locale/release_mozilla-beta_android-x86.json
testing/mozharness/configs/multi_locale/release_mozilla-beta_android.json
testing/mozharness/configs/multi_locale/release_mozilla-esr_android-armv6.json
testing/mozharness/configs/multi_locale/release_mozilla-release_android-armv6.json
testing/mozharness/configs/multi_locale/release_mozilla-release_android-x86.json
testing/mozharness/configs/multi_locale/release_mozilla-release_android.json
testing/mozharness/configs/multi_locale/staging_release_mozilla-beta_android-armv6.json
testing/mozharness/configs/multi_locale/staging_release_mozilla-beta_android-x86.json
testing/mozharness/configs/multi_locale/staging_release_mozilla-beta_android.json
testing/mozharness/configs/multi_locale/staging_release_mozilla-esr_android-armv6.json
testing/mozharness/configs/multi_locale/staging_release_mozilla-release_android-armv6.json
testing/mozharness/configs/multi_locale/staging_release_mozilla-release_android-x86.json
testing/mozharness/configs/multi_locale/staging_release_mozilla-release_android.json
testing/mozharness/configs/multi_locale/standalone_mozilla-central.py
testing/mozharness/configs/partner_repacks/release_mozilla-release_android.py
testing/mozharness/configs/partner_repacks/staging_release_mozilla-release_android.py
testing/mozharness/configs/releases/bouncer_fennec.py
testing/mozharness/configs/releases/bouncer_firefox_beta.py
testing/mozharness/configs/releases/bouncer_firefox_esr.py
testing/mozharness/configs/releases/bouncer_firefox_release.py
testing/mozharness/configs/releases/bouncer_thunderbird.py
testing/mozharness/configs/selfserve/production.py
testing/mozharness/configs/selfserve/staging.py
testing/mozharness/configs/servo/mac.py
testing/mozharness/configs/single_locale/alder.py
testing/mozharness/configs/single_locale/ash.py
testing/mozharness/configs/single_locale/linux.py
testing/mozharness/configs/single_locale/linux64.py
testing/mozharness/configs/single_locale/macosx64.py
testing/mozharness/configs/single_locale/mozilla-aurora.py
testing/mozharness/configs/single_locale/mozilla-aurora_android-api-11.py
testing/mozharness/configs/single_locale/mozilla-aurora_android-api-9.py
testing/mozharness/configs/single_locale/mozilla-aurora_android.py
testing/mozharness/configs/single_locale/mozilla-central.py
testing/mozharness/configs/single_locale/mozilla-central_android-api-11.py
testing/mozharness/configs/single_locale/mozilla-central_android-api-9.py
testing/mozharness/configs/single_locale/mozilla-central_android.py
testing/mozharness/configs/single_locale/production.py
testing/mozharness/configs/single_locale/release_mozilla-beta_android.py
testing/mozharness/configs/single_locale/release_mozilla-beta_android_api_11.py
testing/mozharness/configs/single_locale/release_mozilla-beta_android_api_9.py
testing/mozharness/configs/single_locale/release_mozilla-release_android.py
testing/mozharness/configs/single_locale/release_mozilla-release_android_api_11.py
testing/mozharness/configs/single_locale/release_mozilla-release_android_api_9.py
testing/mozharness/configs/single_locale/staging.py
testing/mozharness/configs/single_locale/staging_release_mozilla-beta_android.py
testing/mozharness/configs/single_locale/staging_release_mozilla-beta_android_api_11.py
testing/mozharness/configs/single_locale/staging_release_mozilla-beta_android_api_9.py
testing/mozharness/configs/single_locale/staging_release_mozilla-release_android.py
testing/mozharness/configs/single_locale/staging_release_mozilla-release_android_api_11.py
testing/mozharness/configs/single_locale/staging_release_mozilla-release_android_api_9.py
testing/mozharness/configs/single_locale/win32.py
testing/mozharness/configs/single_locale/win64.py
testing/mozharness/configs/talos/linux_config.py
testing/mozharness/configs/talos/mac_config.py
testing/mozharness/configs/talos/windows_config.py
testing/mozharness/configs/test/example_config1.json
testing/mozharness/configs/test/example_config2.py
testing/mozharness/configs/test/test.illegal_suffix
testing/mozharness/configs/test/test.json
testing/mozharness/configs/test/test.py
testing/mozharness/configs/test/test_malformed.json
testing/mozharness/configs/test/test_malformed.py
testing/mozharness/configs/test/test_optional.py
testing/mozharness/configs/test/test_override.py
testing/mozharness/configs/test/test_override2.py
testing/mozharness/configs/unittests/linux_unittest.py
testing/mozharness/configs/unittests/mac_unittest.py
testing/mozharness/configs/unittests/thunderbird_extra.py
testing/mozharness/configs/unittests/win_unittest.py
testing/mozharness/configs/update_tests/mozilla-beta.py
testing/mozharness/configs/update_tests/mozilla-release.py
testing/mozharness/configs/users/aki/gaia_json.py
testing/mozharness/configs/users/sfink/mock.py
testing/mozharness/configs/users/sfink/spidermonkey.py
testing/mozharness/configs/vcs_sync/beagle.py
testing/mozharness/configs/vcs_sync/build-repos.py
testing/mozharness/configs/vcs_sync/gecko-git.py
testing/mozharness/configs/vcs_sync/l10n.py
testing/mozharness/configs/vcs_sync/project-branches.py
testing/mozharness/configs/vcs_sync/staging_build-repos.py
testing/mozharness/configs/vcs_sync/staging_l10n.py
testing/mozharness/configs/web_platform_tests/prod_config.py
testing/mozharness/configs/web_platform_tests/prod_config_windows.py
testing/mozharness/configs/web_platform_tests/test_config.py
testing/mozharness/configs/web_platform_tests/test_config_windows.py
testing/mozharness/docs/Makefile
testing/mozharness/docs/android_emulator_build.rst
testing/mozharness/docs/android_emulator_unittest.rst
testing/mozharness/docs/android_panda.rst
testing/mozharness/docs/android_panda_talos.rst
testing/mozharness/docs/b2g_build.rst
testing/mozharness/docs/b2g_bumper.rst
testing/mozharness/docs/b2g_desktop_multilocale.rst
testing/mozharness/docs/b2g_desktop_unittest.rst
testing/mozharness/docs/b2g_emulator_unittest.rst
testing/mozharness/docs/bouncer_submitter.rst
testing/mozharness/docs/bump_gaia_json.rst
testing/mozharness/docs/conf.py
testing/mozharness/docs/configtest.rst
testing/mozharness/docs/desktop_l10n.rst
testing/mozharness/docs/desktop_unittest.rst
testing/mozharness/docs/fx_desktop_build.rst
testing/mozharness/docs/gaia_build_integration.rst
testing/mozharness/docs/gaia_integration.rst
testing/mozharness/docs/gaia_unit.rst
testing/mozharness/docs/index.rst
testing/mozharness/docs/marionette.rst
testing/mozharness/docs/mobile_l10n.rst
testing/mozharness/docs/mobile_partner_repack.rst
testing/mozharness/docs/modules.rst
testing/mozharness/docs/mozharness.base.rst
testing/mozharness/docs/mozharness.base.vcs.rst
testing/mozharness/docs/mozharness.mozilla.building.rst
testing/mozharness/docs/mozharness.mozilla.l10n.rst
testing/mozharness/docs/mozharness.mozilla.rst
testing/mozharness/docs/mozharness.mozilla.testing.rst
testing/mozharness/docs/mozharness.rst
testing/mozharness/docs/multil10n.rst
testing/mozharness/docs/scripts.rst
testing/mozharness/docs/sourcetool.rst
testing/mozharness/docs/spidermonkey_build.rst
testing/mozharness/docs/talos_script.rst
testing/mozharness/docs/web_platform_tests.rst
testing/mozharness/examples/action_config_script.py
testing/mozharness/examples/silent_script.py
testing/mozharness/examples/venv.py
testing/mozharness/examples/verbose_script.py
testing/mozharness/external_tools/__init__.py
testing/mozharness/external_tools/clobberer.py
testing/mozharness/external_tools/count_and_reboot.py
testing/mozharness/external_tools/detect_repo.py
testing/mozharness/external_tools/download_file.py
testing/mozharness/external_tools/git-ssh-wrapper.sh
testing/mozharness/external_tools/mouse_and_screen_resolution.py
testing/mozharness/external_tools/purge_builds.py
testing/mozharness/mozfile/__init__.py
testing/mozharness/mozfile/mozfile.py
testing/mozharness/mozharness/__init__.py
testing/mozharness/mozharness/base/__init__.py
testing/mozharness/mozharness/base/config.py
testing/mozharness/mozharness/base/diskutils.py
testing/mozharness/mozharness/base/errors.py
testing/mozharness/mozharness/base/log.py
testing/mozharness/mozharness/base/parallel.py
testing/mozharness/mozharness/base/python.py
testing/mozharness/mozharness/base/script.py
testing/mozharness/mozharness/base/signing.py
testing/mozharness/mozharness/base/transfer.py
testing/mozharness/mozharness/base/vcs/__init__.py
testing/mozharness/mozharness/base/vcs/gittool.py
testing/mozharness/mozharness/base/vcs/hgtool.py
testing/mozharness/mozharness/base/vcs/mercurial.py
testing/mozharness/mozharness/base/vcs/tcvcs.py
testing/mozharness/mozharness/base/vcs/vcsbase.py
testing/mozharness/mozharness/base/vcs/vcssync.py
testing/mozharness/mozharness/lib/__init__.py
testing/mozharness/mozharness/lib/python/__init__.py
testing/mozharness/mozharness/lib/python/authentication.py
testing/mozharness/mozharness/mozilla/__init__.py
testing/mozharness/mozharness/mozilla/blob_upload.py
testing/mozharness/mozharness/mozilla/bouncer/__init__.py
testing/mozharness/mozharness/mozilla/bouncer/submitter.py
testing/mozharness/mozharness/mozilla/buildbot.py
testing/mozharness/mozharness/mozilla/building/__init__.py
testing/mozharness/mozharness/mozilla/building/buildb2gbase.py
testing/mozharness/mozharness/mozilla/building/buildbase.py
testing/mozharness/mozharness/mozilla/building/hazards.py
testing/mozharness/mozharness/mozilla/gaia.py
testing/mozharness/mozharness/mozilla/googleplay.py
testing/mozharness/mozharness/mozilla/l10n/__init__.py
testing/mozharness/mozharness/mozilla/l10n/locales.py
testing/mozharness/mozharness/mozilla/l10n/multi_locale_build.py
testing/mozharness/mozharness/mozilla/mapper.py
testing/mozharness/mozharness/mozilla/mar.py
testing/mozharness/mozharness/mozilla/mock.py
testing/mozharness/mozharness/mozilla/mozbase.py
testing/mozharness/mozharness/mozilla/proxxy.py
testing/mozharness/mozharness/mozilla/purge.py
testing/mozharness/mozharness/mozilla/release.py
testing/mozharness/mozharness/mozilla/repo_manifest.py
testing/mozharness/mozharness/mozilla/selfserve.py
testing/mozharness/mozharness/mozilla/signing.py
testing/mozharness/mozharness/mozilla/structuredlog.py
testing/mozharness/mozharness/mozilla/taskcluster_helper.py
testing/mozharness/mozharness/mozilla/testing/__init__.py
testing/mozharness/mozharness/mozilla/testing/codecoverage.py
testing/mozharness/mozharness/mozilla/testing/device.py
testing/mozharness/mozharness/mozilla/testing/errors.py
testing/mozharness/mozharness/mozilla/testing/firefox_ui_tests.py
testing/mozharness/mozharness/mozilla/testing/gaia_test.py
testing/mozharness/mozharness/mozilla/testing/mozpool.py
testing/mozharness/mozharness/mozilla/testing/talos.py
testing/mozharness/mozharness/mozilla/testing/testbase.py
testing/mozharness/mozharness/mozilla/testing/try_tools.py
testing/mozharness/mozharness/mozilla/testing/unittest.py
testing/mozharness/mozharness/mozilla/tooltool.py
testing/mozharness/mozharness/mozilla/updates/__init__.py
testing/mozharness/mozharness/mozilla/updates/balrog.py
testing/mozharness/mozharness/mozilla/vcstools.py
testing/mozharness/mozinfo/__init__.py
testing/mozharness/mozinfo/mozinfo.py
testing/mozharness/mozprocess/__init__.py
testing/mozharness/mozprocess/pid.py
testing/mozharness/mozprocess/processhandler.py
testing/mozharness/mozprocess/qijo.py
testing/mozharness/mozprocess/winprocess.py
testing/mozharness/mozprocess/wpk.py
testing/mozharness/requirements.txt
testing/mozharness/scripts/android_emulator_build.py
testing/mozharness/scripts/android_emulator_unittest.py
testing/mozharness/scripts/android_panda.py
testing/mozharness/scripts/android_panda_talos.py
testing/mozharness/scripts/androidx86_emulator_unittest.py
testing/mozharness/scripts/b2g_build.py
testing/mozharness/scripts/b2g_bumper.py
testing/mozharness/scripts/b2g_desktop_build.py
testing/mozharness/scripts/b2g_desktop_multilocale.py
testing/mozharness/scripts/b2g_desktop_unittest.py
testing/mozharness/scripts/b2g_emulator_unittest.py
testing/mozharness/scripts/bouncer_submitter.py
testing/mozharness/scripts/configtest.py
testing/mozharness/scripts/desktop_l10n.py
testing/mozharness/scripts/desktop_unittest.py
testing/mozharness/scripts/firefox_ui_updates.py
testing/mozharness/scripts/fx_desktop_build.py
testing/mozharness/scripts/gaia_build_integration.py
testing/mozharness/scripts/gaia_build_unit.py
testing/mozharness/scripts/gaia_integration.py
testing/mozharness/scripts/gaia_linter.py
testing/mozharness/scripts/gaia_unit.py
testing/mozharness/scripts/hazard_build.py
testing/mozharness/scripts/luciddream_unittest.py
testing/mozharness/scripts/marionette.py
testing/mozharness/scripts/merge_day/b2g_branch_repos.py
testing/mozharness/scripts/merge_day/b2g_tag.py
testing/mozharness/scripts/merge_day/gecko_migration.py
testing/mozharness/scripts/mobile_l10n.py
testing/mozharness/scripts/mobile_partner_repack.py
testing/mozharness/scripts/mulet_unittest.py
testing/mozharness/scripts/multil10n.py
testing/mozharness/scripts/openh264_build.py
testing/mozharness/scripts/push_apk.py
testing/mozharness/scripts/sourcetool.py
testing/mozharness/scripts/spidermonkey/build.b2g
testing/mozharness/scripts/spidermonkey/build.browser
testing/mozharness/scripts/spidermonkey/build.shell
testing/mozharness/scripts/spidermonkey_build.py
testing/mozharness/scripts/talos_script.py
testing/mozharness/scripts/update_apk_description.py
testing/mozharness/scripts/vcs-sync/initial_beagle.py
testing/mozharness/scripts/vcs-sync/vcs_sync.py
testing/mozharness/scripts/web_platform_tests.py
testing/mozharness/setup.cfg
testing/mozharness/setup.py
testing/mozharness/test/README
testing/mozharness/test/helper_files/.hgrc
testing/mozharness/test/helper_files/.noserc
testing/mozharness/test/helper_files/init_hgrepo.sh
testing/mozharness/test/helper_files/locales.json
testing/mozharness/test/helper_files/locales.txt
testing/mozharness/test/hgrc
testing/mozharness/test/pip-freeze.example.txt
testing/mozharness/test/test_base_config.py
testing/mozharness/test/test_base_diskutils.py
testing/mozharness/test/test_base_log.py
testing/mozharness/test/test_base_parallel.py
testing/mozharness/test/test_base_python.py
testing/mozharness/test/test_base_script.py
testing/mozharness/test/test_base_transfer.py
testing/mozharness/test/test_base_vcs_mercurial.py
testing/mozharness/test/test_l10n_locales.py
testing/mozharness/test/test_mozilla_blob_upload.py
testing/mozharness/test/test_mozilla_buildbot.py
testing/mozharness/tox.ini
testing/mozharness/unit.sh
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/LICENSE
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  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/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+  This Source Code Form is "Incompatible With Secondary Licenses", as
+  defined by the Mozilla Public License, v. 2.0.
--- a/testing/mozharness/README.txt
+++ b/testing/mozharness/README.txt
@@ -1,2 +1,11 @@
-mozharness.json is a manifest file that is currently only used on try.
-It allows you to lock mozharness to a repository and a revision.
+the contents of this dir (testing/mozharness) represent two parts
+
+1) the old way: mozharness.json is a manifest file that locks or "pins" mozharness to a repository and a revision.
+
+2) the new way: an in-gecko-tree copy of mozharness.
+    * hgmo/build/mozharness is still live and the defacto read/write repository
+    * continuous integration jobs are based on this copy
+    * As we transition to dropping support for hg.m.o/build/mozharness, this copy will continue to be synced
+    * this copy is currently based on: http://hg.mozilla.org/build/mozharness/rev/4d855a6835ed
+
+
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/README.txt.rej
@@ -0,0 +1,15 @@
+--- README.txt
++++ README.txt
+@@ -1,1 +1,11 @@
+-mozharness.json is a manifest file that locks or "pins" mozharness to a repository and a revision.
++the contents of this dir (testing/mozharness) represent two parts
++
++1) the old way: mozharness.json is a manifest file that locks or "pins" mozharness to a repository and a revision.
++
++2) the new way: an in-gecko-tree copy of mozharness.
++    * hgmo/build/mozharness is still live and the defacto read/write repository
++    * continuous integration jobs are based on this copy
++    * As we transition to dropping support for hg.m.o/build/mozharness, this copy will continue to be synced
++    * this copy is currently based on: http://hg.mozilla.org/build/mozharness/rev/4d855a6835ed
++
++
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/android/android_panda_releng.py
@@ -0,0 +1,107 @@
+# This is a template config file for panda android tests on production.
+import socket
+import os
+
+MINIDUMP_STACKWALK_PATH = "/builds/minidump_stackwalk"
+
+config = {
+    # Values for the foopies
+    "exes": {
+        'python': '/tools/buildbot/bin/python',
+        'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'],
+    },
+    "run_file_names": {
+        "mochitest": "runtestsremote.py",
+        "reftest": "remotereftest.py",
+        "crashtest": "remotereftest.py",
+        "jsreftest": "remotereftest.py",
+        "robocop": "runtestsremote.py",
+        "instrumentation": "runinstrumentation.py",
+        "xpcshell": "remotexpcshelltests.py",
+        "jittest": "jit_test.py",
+        "cppunittest": "remotecppunittests.py"
+    },
+    "hostutils_url":  "http://talos-remote.pvt.build.mozilla.org/tegra/tegra-host-utils.Linux.1109310.2.zip",
+    "verify_path":  "/builds/sut_tools/verify.py",
+    "install_app_path":  "/builds/sut_tools/installApp.py",
+    "logcat_path":  "/builds/sut_tools/logcat.py",
+    # test harness options are located in the gecko tree
+    "in_tree_config": "config/mozharness/android_panda_config.py",
+    "all_mochitest_suites": {
+        "mochitest-1": ["--total-chunks=8", "--this-chunk=1"],
+        "mochitest-2": ["--total-chunks=8", "--this-chunk=2"],
+        "mochitest-3": ["--total-chunks=8", "--this-chunk=3"],
+        "mochitest-4": ["--total-chunks=8", "--this-chunk=4"],
+        "mochitest-5": ["--total-chunks=8", "--this-chunk=5"],
+        "mochitest-6": ["--total-chunks=8", "--this-chunk=6"],
+        "mochitest-7": ["--total-chunks=8", "--this-chunk=7"],
+        "mochitest-8": ["--total-chunks=8", "--this-chunk=8"],
+        "mochitest-gl": ["--subsuite=webgl"],
+    },
+    "all_reftest_suites": {
+        "reftest-1": ["--total-chunks=8", "--this-chunk=1"],
+        "reftest-2": ["--total-chunks=8", "--this-chunk=2"],
+        "reftest-3": ["--total-chunks=8", "--this-chunk=3"],
+        "reftest-4": ["--total-chunks=8", "--this-chunk=4"],
+        "reftest-5": ["--total-chunks=8", "--this-chunk=5"],
+        "reftest-6": ["--total-chunks=8", "--this-chunk=6"],
+        "reftest-7": ["--total-chunks=8", "--this-chunk=7"],
+        "reftest-8": ["--total-chunks=8", "--this-chunk=8"],
+    },
+    "all_crashtest_suites": {
+        "crashtest": []
+    },
+    "all_jsreftest_suites": {
+        "jsreftest-1": ["--total-chunks=3", "--this-chunk=1"],
+        "jsreftest-2": ["--total-chunks=3", "--this-chunk=2"],
+        "jsreftest-3": ["--total-chunks=3", "--this-chunk=3"],
+    },
+    "all_robocop_suites": {
+        "robocop-1": ["--total-chunks=10", "--this-chunk=1"],
+        "robocop-2": ["--total-chunks=10", "--this-chunk=2"],
+        "robocop-3": ["--total-chunks=10", "--this-chunk=3"],
+        "robocop-4": ["--total-chunks=10", "--this-chunk=4"],
+        "robocop-5": ["--total-chunks=10", "--this-chunk=5"],
+        "robocop-6": ["--total-chunks=10", "--this-chunk=6"],
+        "robocop-7": ["--total-chunks=10", "--this-chunk=7"],
+        "robocop-8": ["--total-chunks=10", "--this-chunk=8"],
+        "robocop-9": ["--total-chunks=10", "--this-chunk=9"],
+        "robocop-10": ["--total-chunks=10", "--this-chunk=10"],
+    },
+    "all_instrumentation_suites": {
+        "browser": ["--suite", "browser"],
+        "background": ["--suite", "background"],
+    },
+    "all_xpcshell_suites": {
+        "xpcshell": []
+    },
+    "all_jittest_suites": {
+        "jittest": []
+    },
+    "all_cppunittest_suites": {
+        "cppunittest": ['cppunittest']
+    },
+    "find_links": [
+        "http://pypi.pvt.build.mozilla.org/pub",
+        "http://pypi.pub.build.mozilla.org/pub",
+    ],
+    "pip_index": False,
+    "buildbot_json_path": "buildprops.json",
+    "mobile_imaging_format": "http://mobile-imaging",
+    "mozpool_assignee": socket.gethostname(),
+    "default_actions": [
+        'clobber',
+        'read-buildbot-config',
+        'download-and-extract',
+        'create-virtualenv',
+        'request-device',
+        'run-test',
+        'close-request',
+    ],
+    "minidump_stackwalk_path": MINIDUMP_STACKWALK_PATH,
+    "minidump_save_path": "%(abs_work_dir)s/../minidumps",
+    "default_blob_upload_servers": [
+         "https://blobupload.elasticbeanstalk.com",
+    ],
+    "blob_uploader_auth_file" : os.path.join(os.getcwd(), "oauth.txt"),
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/android/android_panda_talos_releng.py
@@ -0,0 +1,76 @@
+# This is a template config file for panda android tests on production.
+import socket
+import os
+
+config = {
+    # Values for the foopies
+    "exes": {
+        'python': '/tools/buildbot/bin/python',
+        'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'],
+    },
+    "run_file_names": {
+        "preflight_talos": "remotePerfConfigurator.py",
+        "talos": "run_tests.py",
+    },
+    "retry_url":  "http://talos-bundles.pvt.build.mozilla.org/zips/retry.zip",
+    "verify_path":  "/builds/sut_tools/verify.py",
+    "install_app_path":  "/builds/sut_tools/installApp.py",
+    "talos_from_code_url": "https://hg.mozilla.org/%s/raw-file/%s/testing/talos/talos_from_code.py",
+    "talos_json_url": "https://hg.mozilla.org/%s/raw-file/%s/testing/talos/talos.json",
+    "datazilla_urls": ["https://datazilla.mozilla.org/talos"],
+    "datazilla_authfile": os.path.join(os.getcwd(), "oauth.txt"),
+    #remotePerfConfigurator.py options
+    "preflight_talos_options": [
+        "-v", "-e", "%(app_name)s",
+        "-t", "%(hostname)s",
+        "--branchName=%(talos_branch)s",
+        "--resultsServer=graphs.mozilla.org",
+        "--resultsLink=/server/collect.cgi",
+        "--noChrome",
+        "--symbolsPath=../symbols",
+        "--remoteDevice=%(device_ip)s",
+        "--sampleConfig=remote.config",
+        "--output=local.yml",
+        "--webServer=talos-remote.pvt.build.mozilla.org",
+        "--browserWait=60"
+    ],
+    #run_tests.py options
+    "talos_options": [
+        "--noisy",
+        "local.yml"
+    ],
+    "all_talos_suites": {
+        "remote-troboprovider":  ["--activeTests=tprovider", "--noChrome", "--fennecIDs=../fennec_ids.txt"],
+        "remote-ts":  ["--activeTests=ts", "--mozAfterPaint", "--noChrome"],
+        #currently disabled
+        "remote-tsvgx":  ["--activeTests=tsvgx", "--noChrome", '--tppagecycles', '10'],
+        "remote-tcanvasmark":  ["--activeTests=tcanvasmark", "--noChrome"],
+        "remote-tsspider":  ["--activeTests=tsspider", "--noChrome"],
+        #end currently disabled
+        "remote-trobopan":  ["--activeTests=trobopan", "--noChrome", "--fennecIDs=../fennec_ids.txt"],
+        "remote-tsvg":  ["--activeTests=tsvg", "--noChrome"],
+        "remote-tp4m_nochrome":  ["--activeTests=tp4m", "--noChrome", "--rss"],
+        "remote-trobocheck2":  ["--activeTests=tcheck2", "--noChrome", "--fennecIDs=../fennec_ids.txt"],
+        "remote-tspaint": ["--activeTests=ts_paint", "--mozAfterPaint"],
+    },
+    "find_links": [
+        "http://pypi.pvt.build.mozilla.org/pub",
+        "http://pypi.pub.build.mozilla.org/pub",
+    ],
+    "buildbot_json_path": "buildprops.json",
+    "mobile_imaging_format": "http://mobile-imaging",
+    "mozpool_assignee": socket.gethostname(),
+    "default_actions": [
+        'clobber',
+        'read-buildbot-config',
+        'download-and-extract',
+        'create-virtualenv',
+        'request-device',
+        'run-test',
+        'close-request',
+    ],
+    "default_blob_upload_servers": [
+         "https://blobupload.elasticbeanstalk.com",
+    ],
+    "blob_uploader_auth_file" : os.path.join(os.getcwd(), "oauth.txt"),
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/android/androidarm.py
@@ -0,0 +1,286 @@
+import os
+
+config = {
+    "buildbot_json_path": "buildprops.json",
+    "host_utils_url": "http://talos-remote.pvt.build.mozilla.org/tegra/tegra-host-utils.Linux.1109310.2.zip",
+    "robocop_package_name": "org.mozilla.roboexample.test",
+    "device_ip": "127.0.0.1",
+    "default_sut_port1": "20701",
+    "default_sut_port2": "20700", # does not prompt for commands
+    "tooltool_manifest_path": "testing/config/tooltool-manifests/androidarm/releng.manifest",
+    "tooltool_cache": "/builds/tooltool_cache",
+    "emulator_manifest": """
+        [
+        {
+        "size": 193383673,
+        "digest": "6609e8b95db59c6a3ad60fc3dcfc358b2c8ec8b4dda4c2780eb439e1c5dcc5d550f2e47ce56ba14309363070078d09b5287e372f6e95686110ff8a2ef1838221",
+        "algorithm": "sha512",
+        "filename": "android-sdk18_0.r18moz1.orig.tar.gz",
+        "unpack": "True"
+        }
+        ] """,
+    "emulator_process_name": "emulator64-arm",
+    "emulator_extra_args": "-debug init,console,gles,memcheck,adbserver,adbclient,adb,avd_config,socket -qemu -m 1024 -cpu cortex-a9",
+    "device_manager": "sut",
+    "exes": {
+        'adb': '%(abs_work_dir)s/android-sdk18/platform-tools/adb',
+        'python': '/tools/buildbot/bin/python',
+        'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'],
+        'tooltool.py': "/tools/tooltool.py",
+    },
+    "env": {
+        "DISPLAY": ":0.0",
+        "PATH": "%(PATH)s:%(abs_work_dir)s/android-sdk18/tools:%(abs_work_dir)s/android-sdk18/platform-tools",
+        "MINIDUMP_SAVEPATH": "%(abs_work_dir)s/../minidumps"
+    },
+    "default_actions": [
+        'clobber',
+        'read-buildbot-config',
+        'setup-avds',
+        'start-emulator',
+        'download-and-extract',
+        'create-virtualenv',
+        'verify-emulator',
+        'install',
+        'run-tests',
+        'stop-emulator',
+    ],
+    "emulator": {
+            "name": "test-1",
+            "device_id": "emulator-5554",
+            "http_port": "8854", # starting http port to use for the mochitest server
+            "ssl_port": "4454", # starting ssl port to use for the server
+            "emulator_port": 5554,
+            "sut_port1": 20701,
+            "sut_port2": 20700
+        },
+    "test_suite_definitions": {
+        "jsreftest-1": {
+            "category": "jsreftest",
+            "extra_args": ["--this-chunk=1"],
+        },
+        "jsreftest-2": {
+            "category": "jsreftest",
+            "extra_args": ["--this-chunk=2"],
+        },
+        "jsreftest-3": {
+            "category": "jsreftest",
+            "extra_args": ["--this-chunk=3"],
+        },
+        "jsreftest-4": {
+            "category": "jsreftest",
+            "extra_args": ["--this-chunk=4"],
+        },
+        "jsreftest-5": {
+            "category": "jsreftest",
+            "extra_args": ["--this-chunk=5"],
+        },
+        "jsreftest-6": {
+            "category": "jsreftest",
+            "extra_args": ["--this-chunk=6"],
+        },
+        "mochitest-1": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=1"],
+        },
+        "mochitest-2": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=2"],
+        },
+        "mochitest-3": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=3"],
+        },
+        "mochitest-4": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=4"],
+        },
+        "mochitest-5": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=5"],
+        },
+        "mochitest-6": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=6"],
+        },
+        "mochitest-7": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=7"],
+        },
+        "mochitest-8": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=8"],
+        },
+        "mochitest-9": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=9"],
+        },
+        "mochitest-10": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=10"],
+        },
+        "mochitest-11": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=11"],
+        },
+        "mochitest-12": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=12"],
+        },
+        "mochitest-13": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=13"],
+        },
+        "mochitest-14": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=14"],
+        },
+        "mochitest-15": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=15"],
+        },
+        "mochitest-16": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=16"],
+        },
+        "mochitest-gl-1": {
+            "category": "mochitest-gl",
+            "extra_args": ["--this-chunk=1"],
+        },
+        "mochitest-gl-2": {
+            "category": "mochitest-gl",
+            "extra_args": ["--this-chunk=2"],
+        },
+        "mochitest-gl-3": {
+            "category": "mochitest-gl",
+            "extra_args": ["--this-chunk=3"],
+        },
+        "mochitest-gl-4": {
+            "category": "mochitest-gl",
+            "extra_args": ["--this-chunk=4"],
+        },
+        "reftest-1": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=1",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-2": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=2",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-3": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=3",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-4": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=4",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-5": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=5",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-6": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=6",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-7": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=7",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-8": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=8",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-9": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=9",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-10": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=10",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-11": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=11",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-12": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=12",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-13": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=13",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-14": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=14",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-15": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=15",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-16": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=16",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "crashtest-1": {
+            "category": "crashtest",
+            "extra_args": ["--this-chunk=1"],
+        },
+        "crashtest-2": {
+            "category": "crashtest",
+            "extra_args": ["--this-chunk=2"],
+        },
+        "xpcshell-1": {
+            "category": "xpcshell",
+            "extra_args": ["--total-chunks=3", "--this-chunk=1"],
+        },
+        "xpcshell-2": {
+            "category": "xpcshell",
+            "extra_args": ["--total-chunks=3", "--this-chunk=2"],
+        },
+        "xpcshell-3": {
+            "category": "xpcshell",
+            "extra_args": ["--total-chunks=3", "--this-chunk=3"],
+        },
+        "robocop-1": {
+            "category": "robocop",
+            "extra_args": ["--this-chunk=1"],
+        },
+        "robocop-2": {
+            "category": "robocop",
+            "extra_args": ["--this-chunk=2"],
+        },
+        "robocop-3": {
+            "category": "robocop",
+            "extra_args": ["--this-chunk=3"],
+        },
+        "robocop-4": {
+            "category": "robocop",
+            "extra_args": ["--this-chunk=4"],
+        },
+    }, # end of "test_definitions"
+    # test harness options are located in the gecko tree
+    "in_tree_config": "config/mozharness/android_arm_config.py",
+    "download_minidump_stackwalk": True,
+    "default_blob_upload_servers": [
+         "https://blobupload.elasticbeanstalk.com",
+    ],
+    "blob_uploader_auth_file" : os.path.join(os.getcwd(), "oauth.txt"),
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/android/androidarm_4_3.py
@@ -0,0 +1,296 @@
+import os
+
+config = {
+    "buildbot_json_path": "buildprops.json",
+    "host_utils_url": "http://talos-remote.pvt.build.mozilla.org/tegra/tegra-host-utils.Linux.1109310.2.zip",
+    "robocop_package_name": "org.mozilla.roboexample.test",
+    "tooltool_manifest_path": "testing/config/tooltool-manifests/androidarm_4_3/releng.manifest",
+    "tooltool_cache": "/builds/tooltool_cache",
+    ".avds_dir": "/home/cltbld/.android",
+    "emulator_manifest": """
+        [
+        {
+        "size": 140097024,
+        "digest": "51781032335c09103e8509b1a558bf22a7119392cf1ea301c49c01bdf21ff0ceb37d260bc1c322cd9b903252429fb01830fc27e4632be30cd345c95bf4b1a39b",
+        "algorithm": "sha512",
+        "filename": "android-sdk_r24.0.2-linux.tgz",
+        "unpack": "True"
+        }
+        ] """,
+    "tools_manifest": """
+        [
+        {
+        "size": 193383673,
+        "digest": "6609e8b95db59c6a3ad60fc3dcfc358b2c8ec8b4dda4c2780eb439e1c5dcc5d550f2e47ce56ba14309363070078d09b5287e372f6e95686110ff8a2ef1838221",
+        "algorithm": "sha512",
+        "filename": "android-sdk18_0.r18moz1.orig.tar.gz",
+        "unpack": "True"
+        }
+        ] """,
+    "emulator_process_name": "emulator64-arm",
+    "emulator_extra_args": "-show-kernel -debug init,console,gles,memcheck,adbserver,adbclient,adb,avd_config,socket",
+    "device_manager": "adb",
+    "exes": {
+        'adb': '%(abs_work_dir)s/android-sdk18/platform-tools/adb',
+        'python': '/tools/buildbot/bin/python',
+        'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'],
+        'tooltool.py': "/tools/tooltool.py",
+    },
+    "env": {
+        "DISPLAY": ":0.0",
+        "PATH": "%(PATH)s:%(abs_work_dir)s/android-sdk-linux/tools:%(abs_work_dir)s/android-sdk18/platform-tools",
+        "MINIDUMP_SAVEPATH": "%(abs_work_dir)s/../minidumps"
+    },
+    "default_actions": [
+        'clobber',
+        'read-buildbot-config',
+        'setup-avds',
+        'start-emulator',
+        'download-and-extract',
+        'create-virtualenv',
+        'verify-emulator',
+        'install',
+        'run-tests',
+        'stop-emulator',
+    ],
+    "emulator": {
+            "name": "test-1",
+            "device_id": "emulator-5554",
+            "http_port": "8854", # starting http port to use for the mochitest server
+            "ssl_port": "4454", # starting ssl port to use for the server
+            "emulator_port": 5554,
+        },
+    "test_suite_definitions": {
+        "jsreftest-1": {
+            "category": "jsreftest",
+            "extra_args": ["--this-chunk=1"],
+        },
+        "jsreftest-2": {
+            "category": "jsreftest",
+            "extra_args": ["--this-chunk=2"],
+        },
+        "jsreftest-3": {
+            "category": "jsreftest",
+            "extra_args": ["--this-chunk=3"],
+        },
+        "jsreftest-4": {
+            "category": "jsreftest",
+            "extra_args": ["--this-chunk=4"],
+        },
+        "jsreftest-5": {
+            "category": "jsreftest",
+            "extra_args": ["--this-chunk=5"],
+        },
+        "jsreftest-6": {
+            "category": "jsreftest",
+            "extra_args": ["--this-chunk=6"],
+        },
+        "mochitest-1": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=1"],
+        },
+        "mochitest-2": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=2"],
+        },
+        "mochitest-3": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=3"],
+        },
+        "mochitest-4": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=4"],
+        },
+        "mochitest-5": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=5"],
+        },
+        "mochitest-6": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=6"],
+        },
+        "mochitest-7": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=7"],
+        },
+        "mochitest-8": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=8"],
+        },
+        "mochitest-9": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=9"],
+        },
+        "mochitest-10": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=10"],
+        },
+        "mochitest-11": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=11"],
+        },
+        "mochitest-12": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=12"],
+        },
+        "mochitest-13": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=13"],
+        },
+        "mochitest-14": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=14"],
+        },
+        "mochitest-15": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=15"],
+        },
+        "mochitest-16": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=16"],
+        },
+        "mochitest-gl-1": {
+            "category": "mochitest-gl",
+            "extra_args": ["--this-chunk=1"],
+        },
+        "mochitest-gl-2": {
+            "category": "mochitest-gl",
+            "extra_args": ["--this-chunk=2"],
+        },
+        "mochitest-gl-3": {
+            "category": "mochitest-gl",
+            "extra_args": ["--this-chunk=3"],
+        },
+        "mochitest-gl-4": {
+            "category": "mochitest-gl",
+            "extra_args": ["--this-chunk=4"],
+        },
+        "reftest-1": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=1",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-2": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=2",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-3": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=3",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-4": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=4",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-5": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=5",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-6": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=6",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-7": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=7",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-8": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=8",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-9": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=9",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-10": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=10",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-11": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=11",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-12": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=12",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-13": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=13",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-14": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=14",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-15": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=15",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-16": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=16", "--this-chunk=16",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "crashtest-1": {
+            "category": "crashtest",
+            "extra_args": ["--this-chunk=1"],
+        },
+        "crashtest-2": {
+            "category": "crashtest",
+            "extra_args": ["--this-chunk=2"],
+        },
+        "xpcshell-1": {
+            "category": "xpcshell",
+            "extra_args": ["--total-chunks=3", "--this-chunk=1"],
+        },
+        "xpcshell-2": {
+            "category": "xpcshell",
+            "extra_args": ["--total-chunks=3", "--this-chunk=2"],
+        },
+        "xpcshell-3": {
+            "category": "xpcshell",
+            "extra_args": ["--total-chunks=3", "--this-chunk=3"],
+        },
+        "robocop-1": {
+            "category": "robocop",
+            "extra_args": ["--this-chunk=1"],
+        },
+        "robocop-2": {
+            "category": "robocop",
+            "extra_args": ["--this-chunk=2"],
+        },
+        "robocop-3": {
+            "category": "robocop",
+            "extra_args": ["--this-chunk=3"],
+        },
+        "robocop-4": {
+            "category": "robocop",
+            "extra_args": ["--this-chunk=4"],
+        },
+        "cppunittest": {
+            "category": "cppunittest",
+            "extra_args": [],
+        },
+    }, # end of "test_definitions"
+    # test harness options are located in the gecko tree
+    "in_tree_config": "config/mozharness/android_arm_4_3_config.py",
+    "download_minidump_stackwalk": True,
+    "default_blob_upload_servers": [
+         "https://blobupload.elasticbeanstalk.com",
+    ],
+    "blob_uploader_auth_file" : os.path.join(os.getcwd(), "oauth.txt"),
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/android/androidarm_dev.py
@@ -0,0 +1,9 @@
+# This config contains dev values that will replace
+# the values specified in the production config
+# if specified like this (order matters):
+# --cfg android/androidarm.py
+# --cfg android/androidarm_dev.py
+import os
+config = {
+    "tooltool_cache_path": os.path.join(os.getenv("HOME"), "cache"),
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/android/androidx86.py
@@ -0,0 +1,135 @@
+import os
+
+config = {
+    "buildbot_json_path": "buildprops.json",
+    "host_utils_url": "http://talos-remote.pvt.build.mozilla.org/tegra/tegra-host-utils.Linux.1109310.2.zip",
+    "robocop_package_name": "org.mozilla.roboexample.test",
+    "device_ip": "127.0.0.1",
+    "default_sut_port1": "20701",
+    "default_sut_port2": "20700", # does not prompt for commands
+    "tooltool_manifest_path": "testing/config/tooltool-manifests/androidx86/releng.manifest",
+    "tooltool_cache": "/builds/tooltool_cache",
+    "emulator_manifest": """
+        [
+        {
+        "size": 193383673,
+        "digest": "6609e8b95db59c6a3ad60fc3dcfc358b2c8ec8b4dda4c2780eb439e1c5dcc5d550f2e47ce56ba14309363070078d09b5287e372f6e95686110ff8a2ef1838221",
+        "algorithm": "sha512",
+        "filename": "android-sdk18_0.r18moz1.orig.tar.gz",
+        "unpack": "True"
+        }
+        ] """,
+    "emulator_process_name": "emulator64-x86",
+    "emulator_extra_args": "-debug init,console,gles,memcheck,adbserver,adbclient,adb,avd_config,socket -qemu -m 1024 -enable-kvm",
+    "device_manager": "sut",
+    "exes": {
+        'adb': '%(abs_work_dir)s/android-sdk18/platform-tools/adb',
+        'python': '/tools/buildbot/bin/python',
+        'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'],
+        'tooltool.py': "/tools/tooltool.py",
+    },
+    "env": {
+        "DISPLAY": ":0.0",
+        "PATH": "%(PATH)s:%(abs_work_dir)s/android-sdk18/tools:%(abs_work_dir)s/android-sdk18/platform-tools",
+    },
+    "default_actions": [
+        'clobber',
+        'read-buildbot-config',
+        'setup-avds',
+        'start-emulators',
+        'download-and-extract',
+        'create-virtualenv',
+        'install',
+        'run-tests',
+        'stop-emulators',
+    ],
+    "emulators": [
+        {
+            "name": "test-1",
+            "device_id": "emulator-5554",
+            "http_port": "8854", # starting http port to use for the mochitest server
+            "ssl_port": "4454", # starting ssl port to use for the server
+            "emulator_port": 5554,
+            "sut_port1": 20701,
+            "sut_port2": 20700
+        },
+        {
+            "name": "test-2",
+            "device_id": "emulator-5556",
+            "http_port": "8856", # starting http port to use for the mochitest server
+            "ssl_port": "4456", # starting ssl port to use for the server
+            "emulator_port": 5556,
+            "sut_port1": 20703,
+            "sut_port2": 20702
+        },
+        {
+            "name": "test-3",
+            "device_id": "emulator-5558",
+            "http_port": "8858", # starting http port to use for the mochitest server
+            "ssl_port": "4458", # starting ssl port to use for the server
+            "emulator_port": 5558,
+            "sut_port1": 20705,
+            "sut_port2": 20704
+        },
+        {
+            "name": "test-4",
+            "device_id": "emulator-5560",
+            "http_port": "8860", # starting http port to use for the mochitest server
+            "ssl_port": "4460", # starting ssl port to use for the server
+            "emulator_port": 5560,
+            "sut_port1": 20707,
+            "sut_port2": 20706
+        }
+    ],
+    "test_suite_definitions": {
+        "jsreftest": {
+            "category": "reftest",
+            "extra_args": ["../jsreftest/tests/jstests.list",
+                "--extra-profile-file=jsreftest/tests/user.js"]
+        },
+        "mochitest-1": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=2", "--this-chunk=1"],
+        },
+        "mochitest-2": {
+            "category": "mochitest",
+            "extra_args": ["--total-chunks=2", "--this-chunk=2"],
+        },
+        "mochitest-gl": {
+            "category": "mochitest",
+            "extra_args": ["--subsuite=webgl"],
+        },
+        "reftest-1": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=3", "--this-chunk=1",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-2": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=3", "--this-chunk=2",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "reftest-3": {
+            "category": "reftest",
+            "extra_args": ["--total-chunks=3", "--this-chunk=3",
+                "tests/layout/reftests/reftest.list"]
+        },
+        "crashtest": {
+            "category": "reftest",
+            "extra_args": ["tests/testing/crashtest/crashtests.list"]
+        },
+        "xpcshell": {
+            "category": "xpcshell",
+            # XXX --manifest is superceded by testing/config/mozharness/android_x86_config.py.
+            # Remove when Gecko 35 no longer in tbpl.
+            "extra_args": ["--manifest=tests/xpcshell_android.ini"]
+        },
+    }, # end of "test_definitions"
+    # test harness options are located in the gecko tree
+    "in_tree_config": "config/mozharness/android_x86_config.py",
+    "download_minidump_stackwalk": True,
+    "default_blob_upload_servers": [
+         "https://blobupload.elasticbeanstalk.com",
+    ],
+    "blob_uploader_auth_file" : os.path.join(os.getcwd(), "oauth.txt"),
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/desktop_automation_config.py
@@ -0,0 +1,45 @@
+# This is a template config file for b2g desktop unittest production.
+import os
+
+config = {
+    # mozharness options
+    "application": "b2g",
+    "tooltool_cache": "/builds/tooltool_cache",
+
+    "exes": {
+        'python': '/tools/buildbot/bin/python',
+        'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'],
+        'tooltool.py': "/tools/tooltool.py",
+    },
+
+    "find_links": [
+        "http://pypi.pvt.build.mozilla.org/pub",
+        "http://pypi.pub.build.mozilla.org/pub",
+    ],
+    "pip_index": False,
+
+    "buildbot_json_path": "buildprops.json",
+
+    "default_actions": [
+        'clobber',
+        'read-buildbot-config',
+        'download-and-extract',
+        'create-virtualenv',
+        'install',
+        'run-tests',
+    ],
+    "download_symbols": "ondemand",
+    "download_minidump_stackwalk": True,
+    "default_blob_upload_servers": [
+        "https://blobupload.elasticbeanstalk.com",
+    ],
+    "blob_uploader_auth_file": os.path.join(os.getcwd(), "oauth.txt"),
+
+    # testsuite options
+    "run_file_names": {
+        "mochitest": "runtestsb2g.py",
+        "reftest": "runreftestb2g.py",
+    },
+    # test harness options are located in the gecko tree
+    "in_tree_config": "config/mozharness/b2g_desktop_config.py",
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/desktop_linux32.py
@@ -0,0 +1,140 @@
+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
+    # desktop_linux64.py
+
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+    ],
+    "buildbot_json_path": "buildprops.json",
+    'exes': {
+        'hgtool.py': os.path.join(
+            os.getcwd(), 'build', 'tools', 'buildfarm', 'utils', 'hgtool.py'
+        ),
+        "buildbot": "/tools/buildbot/bin/buildbot",
+    },
+    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
+    'purge_skip': ['info', 'rel-*:45d', 'tb-rel-*:45d'],
+    'purge_basedirs':  ["/mock/users/cltbld/home/cltbld/build"],
+    # mock shtuff
+    'mock_mozilla_dir':  '/builds/mock_mozilla',
+    'mock_target': 'mozilla-centos6-x86_64',
+    'mock_files': [
+        ('/home/cltbld/.ssh', '/home/mock_mozilla/.ssh'),
+        ('/home/cltbld/.hgrc', '/builds/.hgrc'),
+        ('/home/cltbld/.boto', '/builds/.boto'),
+        ('/builds/gapi.data', '/builds/gapi.data'),
+        ('/builds/relengapi.tok', '/builds/relengapi.tok'),
+        ('/tools/tooltool.py', '/builds/tooltool.py'),
+        ('/builds/mozilla-desktop-geoloc-api.key', '/builds/mozilla-desktop-geoloc-api.key'),
+        ('/builds/crash-stats-api.token', '/builds/crash-stats-api.token'),
+    ],
+    'enable_ccache': True,
+    'vcs_share_base': '/builds/hg-shared',
+    'objdir': 'obj-firefox',
+    'tooltool_script': ["/builds/tooltool.py"],
+    'tooltool_bootstrap': "setup.sh",
+    'enable_talos_sendchange': False,
+    'enable_unittest_sendchange': True,
+    #########################################################################
+
+
+    #########################################################################
+    ###### 32 bit specific ######
+    'base_name': 'B2G_%(branch)s_linux32_gecko',
+    'platform': 'linux32_gecko',
+    'stage_platform': 'linux32_gecko',
+    'stage_product': 'b2g',
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'DISPLAY': ':2',
+        'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+        'MOZ_OBJDIR': 'obj-firefox',
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        # 32 bit specific
+        'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib/ccache:\
+/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:\
+/tools/python27/bin:/tools/python27-mercurial/bin:/home/cltbld/bin',
+        'LD_LIBRARY_PATH': "/tools/gcc-4.3.3/installed/lib",
+    },
+    'upload_env': {
+        # stage_server is dictated from build_pool_specifics.py
+        'UPLOAD_HOST': '%(stage_server)s',
+        'UPLOAD_USER': '%(stage_username)s',
+        'UPLOAD_SSH_KEY': '/home/mock_mozilla/.ssh/%(stage_ssh_key)s',
+        'UPLOAD_TO_TEMP': '1',
+    },
+    'purge_minsize': 14,
+    'mock_packages': [
+        'autoconf213', 'python', 'mozilla-python27', 'zip', 'mozilla-python27-mercurial',
+        'git', 'ccache', 'perl-Test-Simple', 'perl-Config-General',
+        'yasm', 'wget',
+        'mpfr',  # required for system compiler
+        'xorg-x11-font*',  # fonts required for PGO
+        'imake',  # required for makedepend!?!
+        ### <-- from releng repo
+        'gcc45_0moz3', 'gcc454_0moz1', 'gcc472_0moz1', 'gcc473_0moz1',
+        'yasm', 'ccache',
+        ###
+        'valgrind',
+        ######## 32 bit specific ###########
+        'glibc-static.i686', 'libstdc++-static.i686',
+        'gtk2-devel.i686', 'libnotify-devel.i686',
+        'alsa-lib-devel.i686', 'libcurl-devel.i686',
+        'wireless-tools-devel.i686', 'libX11-devel.i686',
+        'libXt-devel.i686', 'mesa-libGL-devel.i686',
+        'gnome-vfs2-devel.i686', 'GConf2-devel.i686',
+        'pulseaudio-libs-devel.i686',
+        'gstreamer-devel.i686', 'gstreamer-plugins-base-devel.i686',
+        # Packages already installed in the mock environment, as x86_64
+        # packages.
+        'glibc-devel.i686', 'libgcc.i686', 'libstdc++-devel.i686',
+        # yum likes to install .x86_64 -devel packages that satisfy .i686
+        # -devel packages dependencies. So manually install the dependencies
+        # of the above packages.
+        'ORBit2-devel.i686', 'atk-devel.i686', 'cairo-devel.i686',
+        'check-devel.i686', 'dbus-devel.i686', 'dbus-glib-devel.i686',
+        'fontconfig-devel.i686', 'glib2-devel.i686',
+        'hal-devel.i686', 'libICE-devel.i686', 'libIDL-devel.i686',
+        'libSM-devel.i686', 'libXau-devel.i686', 'libXcomposite-devel.i686',
+        'libXcursor-devel.i686', 'libXdamage-devel.i686',
+        'libXdmcp-devel.i686', 'libXext-devel.i686', 'libXfixes-devel.i686',
+        'libXft-devel.i686', 'libXi-devel.i686', 'libXinerama-devel.i686',
+        'libXrandr-devel.i686', 'libXrender-devel.i686',
+        'libXxf86vm-devel.i686', 'libdrm-devel.i686', 'libidn-devel.i686',
+        'libpng-devel.i686', 'libxcb-devel.i686', 'libxml2-devel.i686',
+        'pango-devel.i686', 'perl-devel.i686', 'pixman-devel.i686',
+        'zlib-devel.i686',
+        # Freetype packages need to be installed be version, because a newer
+        # version is available, but we don't want it for Firefox builds.
+        'freetype-2.3.11-6.el6_1.8.i686',
+        'freetype-devel-2.3.11-6.el6_1.8.i686',
+        'freetype-2.3.11-6.el6_1.8.x86_64',
+        ######## 32 bit specific ###########
+        # The B2G SDK is still 64-bit, and we need libXt for that
+        'libXt.x86_64',
+    ],
+    'src_mozconfig': 'b2g/config/mozconfigs/linux32_gecko/nightly',
+    'tooltool_manifest_src': "b2g/config/tooltool-manifests/linux32/releng.manifest",
+    #########################################################################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/desktop_linux64.py
@@ -0,0 +1,103 @@
+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
+    # desktop_linux32.py
+
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+    ],
+    "buildbot_json_path": "buildprops.json",
+    'exes': {
+        'hgtool.py': os.path.join(
+            os.getcwd(), 'build', 'tools', 'buildfarm', 'utils', 'hgtool.py'
+        ),
+        "buildbot": "/tools/buildbot/bin/buildbot",
+    },
+    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
+    'purge_skip': ['info', 'rel-*:45d', 'tb-rel-*:45d'],
+    'purge_basedirs':  ["/mock/users/cltbld/home/cltbld/build"],
+    # mock shtuff
+    'mock_mozilla_dir':  '/builds/mock_mozilla',
+    'mock_target': 'mozilla-centos6-x86_64',
+    'mock_files': [
+        ('/home/cltbld/.ssh', '/home/mock_mozilla/.ssh'),
+        ('/home/cltbld/.hgrc', '/builds/.hgrc'),
+        ('/home/cltbld/.boto', '/builds/.boto'),
+        ('/builds/gapi.data', '/builds/gapi.data'),
+        ('/builds/relengapi.tok', '/builds/relengapi.tok'),
+        ('/tools/tooltool.py', '/builds/tooltool.py'),
+        ('/builds/mozilla-desktop-geoloc-api.key', '/builds/mozilla-desktop-geoloc-api.key'),
+        ('/builds/crash-stats-api.token', '/builds/crash-stats-api.token'),
+    ],
+    'enable_ccache': True,
+    'vcs_share_base': '/builds/hg-shared',
+    'objdir': 'obj-firefox',
+    'tooltool_script': ["/builds/tooltool.py"],
+    'tooltool_bootstrap': "setup.sh",
+    'enable_talos_sendchange': False,
+    'enable_unittest_sendchange': True,
+    #########################################################################
+
+
+    #########################################################################
+    ###### 64 bit specific ######
+    'base_name': 'B2G_%(branch)s_linux64_gecko',
+    'platform': 'linux64_gecko',
+    'stage_platform': 'linux64_gecko',
+    'stage_product': 'b2g',
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'DISPLAY': ':2',
+        'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+        'MOZ_OBJDIR': 'obj-firefox',
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        ## 64 bit specific
+        'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib64/ccache:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:/tools/python27/bin:\
+/tools/python27-mercurial/bin:/home/cltbld/bin',
+        'LD_LIBRARY_PATH': "/tools/gcc-4.3.3/installed/lib64",
+        ##
+    },
+    'upload_env': {
+        # stage_server is dictated from build_pool_specifics.py
+        'UPLOAD_HOST': '%(stage_server)s',
+        'UPLOAD_USER': '%(stage_username)s',
+        'UPLOAD_SSH_KEY': '/home/mock_mozilla/.ssh/%(stage_ssh_key)s',
+        'UPLOAD_TO_TEMP': '1',
+    },
+    'purge_minsize': 14,
+    'mock_packages': ['autoconf213', 'mozilla-python27', 'zip',
+                      'mozilla-python27-mercurial', 'git', 'ccache',
+                      'glibc-static', 'libstdc++-static', 'perl-Test-Simple',
+                      'perl-Config-General', 'gtk2-devel', 'libnotify-devel',
+                      'yasm', 'alsa-lib-devel', 'libcurl-devel',
+                      'wireless-tools-devel', 'libX11-devel', 'libXt-devel',
+                      'mesa-libGL-devel', 'gnome-vfs2-devel', 'mpfr',
+                      'xorg-x11-font', 'imake', 'ccache', 'wget',
+                      'freetype-2.3.11-6.el6_2.9',
+                      'freetype-devel-2.3.11-6.el6_2.9', 'gstreamer-devel',
+                      'gstreamer-plugins-base-devel'],
+    'src_mozconfig': 'b2g/config/mozconfigs/linux64_gecko/nightly',
+    'tooltool_manifest_src': "b2g/config/tooltool-manifests/linux64/releng.manifest",
+    #########################################################################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/desktop_macosx64.py
@@ -0,0 +1,79 @@
+import os
+import sys
+
+config = {
+    #########################################################################
+    ######## MACOSX GENERIC CONFIG KEYS/VAlUES
+
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+    ],
+    "buildbot_json_path": "buildprops.json",
+    'exes': {
+        'python2.7': sys.executable,
+        'hgtool.py': os.path.join(
+            os.getcwd(), 'build', 'tools', 'buildfarm', 'utils', 'hgtool.py'
+        ),
+        "buildbot": "/tools/buildbot/bin/buildbot",
+    },
+    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
+    'purge_skip': ['info', 'rel-*:45d', 'tb-rel-*:45d'],
+    'purge_basedirs':  [],
+    'enable_ccache': True,
+    'vcs_share_base': '/builds/hg-shared',
+    'objdir': 'obj-firefox',
+    'tooltool_script': ["/builds/tooltool.py"],
+    'tooltool_bootstrap': "setup.sh",
+    'enable_talos_sendchange': False,
+    'enable_unittest_sendchange': False,
+    #########################################################################
+
+
+    #########################################################################
+    ###### 64 bit specific ######
+    'base_name': 'B2G_%(branch)s_macosx64_gecko',
+    'platform': 'macosx64_gecko',
+    'stage_platform': 'macosx64_gecko',
+    'stage_product': 'b2g',
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+        'MOZ_OBJDIR': 'obj-firefox',
+        'CHOWN_ROOT': '~/bin/chown_root',
+        'CHOWN_REVERT': '~/bin/chown_revert',
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        ## 64 bit specific
+        'PATH': '/tools/python/bin:/tools/buildbot/bin:/opt/local/bin:/usr/bin:'
+                '/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin',
+        ##
+    },
+    'upload_env': {
+        # stage_server is dictated from build_pool_specifics.py
+        'UPLOAD_HOST': '%(stage_server)s',
+        'UPLOAD_USER': '%(stage_username)s',
+        'UPLOAD_SSH_KEY': '/Users/cltbld/.ssh/%(stage_ssh_key)s',
+        'UPLOAD_TO_TEMP': '1',
+    },
+    "check_test_env": {
+        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s/breakpad/osx64/minidump_stackwalk',
+        'MINIDUMP_SAVE_PATH': '%(base_work_dir)s/minidumps',
+    },
+    'purge_minsize': 12,
+    'src_mozconfig': 'b2g/config/mozconfigs/macosx64_gecko/nightly',
+    'tooltool_manifest_src': 'b2g/config/tooltool-manifests/macosx64/releng.manifest',
+    #########################################################################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/desktop_windows32.py
@@ -0,0 +1,101 @@
+import os
+import sys
+
+config = {
+    #########################################################################
+    ######## WINDOWS GENERIC CONFIG KEYS/VAlUES
+    # if you are updating this with custom 32 bit keys/values please add them
+    # below under the '32 bit specific' code block otherwise, update in this
+    # code block and also make sure this is synced with
+    # releng_base_windows_64_builds.py
+
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+    ],
+    "buildbot_json_path": "buildprops.json",
+    'exes': {
+        'python2.7': sys.executable,
+        'hgtool.py': [
+            sys.executable,
+            os.path.join(
+                os.getcwd(), 'build', 'tools', 'buildfarm', 'utils', 'hgtool.py'
+            )
+        ],
+        'gittool.py': [
+            sys.executable,
+            os.path.join(
+                os.getcwd(), 'build', 'tools', 'buildfarm', 'utils', 'gittool.py'
+            )
+        ],
+        "buildbot": [
+            sys.executable,
+            'c:\\mozilla-build\\buildbotve\\scripts\\buildbot'
+        ],
+        "make": [
+            sys.executable,
+            os.path.join(
+                os.getcwd(), 'build', 'src', 'build', 'pymake', 'make.py'
+            )
+        ],
+        'virtualenv': [
+            sys.executable,
+            'c:/mozilla-build/buildbotve/virtualenv.py'
+        ],
+    },
+    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
+    'purge_skip': ['info', 'rel-*:45d', 'tb-rel-*:45d'],
+    'purge_basedirs':  [],
+    'enable_ccache': False,
+    'vcs_share_base': 'C:\\builds\\hg-shared',
+    'objdir': 'obj-firefox',
+    'tooltool_script': [sys.executable,
+                        'C:/mozilla-build/tooltool.py'],
+    'tooltool_bootstrap': "setup.sh",
+    'enable_talos_sendchange': False,
+    'enable_unittest_sendchange': False,
+    #########################################################################
+
+
+     #########################################################################
+     ###### 32 bit specific ######
+    'base_name': 'B2G_%(branch)s_win32_gecko',
+    'platform': 'win32_gecko',
+    'stage_platform': 'win32_gecko',
+    'stage_product': 'b2g',
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'BINSCOPE': 'C:/Program Files (x86)/Microsoft/SDL BinScope/BinScope.exe',
+        'HG_SHARE_BASE_DIR': 'C:/builds/hg-shared',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'MOZ_OBJDIR': 'obj-firefox',
+        'PATH': 'C:/mozilla-build/nsis-3.0b1;C:/mozilla-build/nsis-2.46u;C:/mozilla-build/python27;'
+                'C:/mozilla-build/buildbotve/scripts;'
+                '%s' % (os.environ.get('path')),
+        'PDBSTR_PATH': '/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe',
+        'PROPERTIES_FILE': os.path.join(os.getcwd(), 'buildprops.json'),
+        'TINDERBOX_OUTPUT': '1',
+    },
+    'upload_env': {
+        # stage_server is dictated from build_pool_specifics.py
+        'UPLOAD_HOST': '%(stage_server)s',
+        'UPLOAD_USER': '%(stage_username)s',
+        'UPLOAD_SSH_KEY': '/c/Users/cltbld/.ssh/%(stage_ssh_key)s',
+        'UPLOAD_TO_TEMP': '1',
+    },
+    "check_test_env": {
+        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s/breakpad/win32/minidump_stackwalk.exe',
+        'MINIDUMP_SAVE_PATH': '%(base_work_dir)s/minidumps',
+    },
+    'enable_pymake': True,
+    'purge_minsize': 12,
+    'src_mozconfig': 'b2g/config/mozconfigs/win32_gecko/nightly',
+    'tooltool_manifest_src': "b2g/config/tooltool-manifests/win32/releng.manifest",
+    #########################################################################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/emulator_automation_config.py
@@ -0,0 +1,52 @@
+# This is a template config file for b2g emulator unittest production.
+import os
+
+config = {
+    # mozharness options
+    "application": "b2g",
+    "busybox_url": "https://api.pub.build.mozilla.org/tooltool/sha512/0748e900821820f1a42e2f1f3fa4d9002ef257c351b9e6b78e7de0ddd0202eace351f440372fbb1ae0b7e69e8361b036f6bd3362df99e67fc585082a311fc0df",
+    "xre_url": "https://api.pub.build.mozilla.org/tooltool/sha512/dc9503b21c87b5a469118746f99e4f41d73888972ce735fa10a80f6d218086da0e3da525d9a4cd8e4ea497ec199fef720e4a525873d77a1af304ac505e076462",
+    "tooltool_cache": "/builds/tooltool_cache",
+
+    "exes": {
+        'python': '/tools/buildbot/bin/python',
+        'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'],
+        'tooltool.py': "/tools/tooltool.py",
+    },
+
+    "find_links": [
+        "http://pypi.pvt.build.mozilla.org/pub",
+        "http://pypi.pub.build.mozilla.org/pub",
+    ],
+    "pip_index": False,
+
+    "buildbot_json_path": "buildprops.json",
+
+    "default_actions": [
+        'clobber',
+        'read-buildbot-config',
+        'download-and-extract',
+        'create-virtualenv',
+        'install',
+        'run-tests',
+    ],
+    "download_symbols": "ondemand",
+    "download_minidump_stackwalk": True,
+    "default_blob_upload_servers": [
+        "https://blobupload.elasticbeanstalk.com",
+    ],
+    "blob_uploader_auth_file": os.path.join(os.getcwd(), "oauth.txt"),
+
+    "run_file_names": {
+        "jsreftest": "runreftestb2g.py",
+        "mochitest": "runtestsb2g.py",
+        "mochitest-chrome": "runtestsb2g.py",
+        "reftest": "runreftestb2g.py",
+        "crashtest": "runreftestb2g.py",
+        "xpcshell": "runtestsb2g.py",
+        "cppunittest": "remotecppunittests.py"
+    },
+    # test harness options are located in the gecko tree
+    "in_tree_config": "config/mozharness/b2g_emulator_config.py",
+    "vcs_output_timeout": 1760,
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/emulator_test_config.py
@@ -0,0 +1,21 @@
+# This is a template config file for b2g emulator unittest testing
+
+config = {
+    # mozharness script options
+    "application": "b2g",
+    "test_suite": "xpcshell",                               # reftest, mochitest or xpcshell
+
+    "emulator_url": "http://127.0.1.1/b2g/emulator.zip",    # url to emulator zip file
+    "installer_url": "http://127.0.1.1/b2g/b2g.tar.gz",     # url to gecko build
+    "xre_url": "http://127.0.1.1/b2g/xpcshell.zip",         # url to xpcshell zip file
+    "test_url": "http://127.0.1.1/b2g/tests.zip",           # url to tests.zip
+    "busybox_url": "http://127.0.1.1/b2g/busybox",          # url to busybox binary
+
+    # testsuite options
+    #"adb_path": "path/to/adb",           # defaults - os.environ['ADB_PATH']
+    #"test_manifest": "path/to/manifest", # defaults - mochitest: "b2g.json"
+                                          #              reftest: "tests/layout/reftests/reftest.list"
+                                          #             xpcshell: "tests/xpcshell.ini"
+    "total_chunks": 1,
+    "this_chunk": 1,
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/gaia_integration_config.py
@@ -0,0 +1,40 @@
+# This is a template config file for b2g emulator unittest testing
+import platform
+
+HG_SHARE_BASE_DIR = "/builds/hg-shared"
+
+if platform.system().lower() == 'darwin':
+    xre_url = "https://api.pub.build.mozilla.org/tooltool/sha512/4d8d7a37d90c34a2a2fda3066a8fe85c189b183d05389cb957fc6fed31f10a6924e50c1b84488ff61c015293803f58a3aed5d4819374d04c8e0ee2b9e3997278"
+else:
+    xre_url = "https://api.pub.build.mozilla.org/tooltool/sha512/dc9503b21c87b5a469118746f99e4f41d73888972ce735fa10a80f6d218086da0e3da525d9a4cd8e4ea497ec199fef720e4a525873d77a1af304ac505e076462"
+
+config = {
+    # mozharness script options
+    "xre_url": xre_url,
+
+    "vcs_share_base": HG_SHARE_BASE_DIR,
+    "exes": {
+        'python': '/tools/buildbot/bin/python',
+        'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'],
+        'tooltool.py': "/tools/tooltool.py",
+    },
+
+    "find_links": [
+        "http://pypi.pvt.build.mozilla.org/pub",
+        "http://pypi.pub.build.mozilla.org/pub",
+    ],
+    "pip_index": False,
+
+    "buildbot_json_path": "buildprops.json",
+
+    "default_actions": [
+        'clobber',
+        'read-buildbot-config',
+        'pull',
+        'download-and-extract',
+        'create-virtualenv',
+        'install',
+        'run-tests',
+    ],
+    "vcs_output_timeout": 1760,
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/gaia_try.py
@@ -0,0 +1,4 @@
+config = {
+    "gaia_json_path": "{repo_path}/raw-file/{revision}/gaia.json",
+    "bypass_download_cache": True,
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/gaia_unit_production_config.py
@@ -0,0 +1,45 @@
+# This is a template config file for b2g emulator unittest testing
+import platform
+import os
+
+HG_SHARE_BASE_DIR = "/builds/hg-shared"
+
+if platform.system().lower() == 'darwin':
+    xre_url = "https://api.pub.build.mozilla.org/tooltool/sha512/4d8d7a37d90c34a2a2fda3066a8fe85c189b183d05389cb957fc6fed31f10a6924e50c1b84488ff61c015293803f58a3aed5d4819374d04c8e0ee2b9e3997278"
+else:
+    xre_url = "https://api.pub.build.mozilla.org/tooltool/sha512/dc9503b21c87b5a469118746f99e4f41d73888972ce735fa10a80f6d218086da0e3da525d9a4cd8e4ea497ec199fef720e4a525873d77a1af304ac505e076462"
+
+config = {
+    # mozharness script options
+    "xre_url": xre_url,
+
+    "vcs_share_base": HG_SHARE_BASE_DIR,
+    "exes": {
+        'python': '/tools/buildbot/bin/python',
+        'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'],
+        'tooltool.py': "/tools/tooltool.py",
+    },
+
+    "find_links": [
+        "http://pypi.pvt.build.mozilla.org/pub",
+        "http://pypi.pub.build.mozilla.org/pub",
+    ],
+    "pip_index": False,
+
+    "buildbot_json_path": "buildprops.json",
+
+    "default_actions": [
+        'clobber',
+        'read-buildbot-config',
+        'pull',
+        'download-and-extract',
+        'create-virtualenv',
+        'install',
+        'run-tests',
+    ],
+    "default_blob_upload_servers": [
+        "https://blobupload.elasticbeanstalk.com",
+    ],
+    "blob_uploader_auth_file": os.path.join(os.getcwd(), "oauth.txt"),
+    "vcs_output_timeout": 1760,
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/gaia_unit_test_config.py
@@ -0,0 +1,7 @@
+# This is a template config file for b2g emulator unittest testing
+
+config = {
+    # mozharness script options
+    "installer_url": "https://ftp-ssl.mozilla.org/pub/mozilla.org/b2g/tinderbox-builds/mozilla-central-linux64_gecko/1365627906/b2g-23.0a1.multi.linux-x86_64.tar.bz2",
+    "xre_url": "https://ftp-ssl.mozilla.org/pub/mozilla.org/xulrunner/nightly/2012/09/2012-09-20-03-05-43-mozilla-central/xulrunner-18.0a1.en-US.linux-x86_64.tar.bz2"
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/generic_config.py
@@ -0,0 +1,25 @@
+# This is a config with generic releng related values 
+import os
+
+config = {
+    "exes": {
+        'python': '/tools/buildbot/bin/python',
+        'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'],
+        'tooltool.py': "/tools/tooltool.py",
+    },
+
+    "find_links": [
+        "http://pypi.pvt.build.mozilla.org/pub",
+        "http://pypi.pub.build.mozilla.org/pub",
+    ],
+    "pip_index": False,
+
+    "buildbot_json_path": "buildprops.json",
+
+    "download_symbols": "ondemand",
+    "download_minidump_stackwalk": True,
+    "default_blob_upload_servers": [
+        "https://blobupload.elasticbeanstalk.com",
+    ],
+    "blob_uploader_auth_file": os.path.join(os.getcwd(), "oauth.txt"),
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/mulet_config.py
@@ -0,0 +1,13 @@
+# Call --cfg b2g/generic_config.py before this config
+config = {
+    "default_actions": [
+        'clobber',
+        'read-buildbot-config',
+        'pull',
+        'download-and-extract',
+        'create-virtualenv',
+        'install',
+        'run-tests',
+    ],
+    "in_tree_config": "config/mozharness/linux_mulet_config.py",
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/releng-emulator.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+import os
+config = {
+    "default_actions": [
+        'clobber',
+        'checkout-sources',
+        'get-blobs',
+        'update-source-manifest',
+        'build',
+        'build-symbols',
+        'make-updates',
+        'prep-upload',
+        'upload',
+        'make-socorro-json',
+        'upload-source-manifest',
+    ],
+    "upload": {
+        "default": {
+            "ssh_key": os.path.expanduser("~/.ssh/b2gbld_dsa"),
+            "ssh_user": "b2gbld",
+            "upload_remote_host": "pvtbuilds2.dmz.scl3.mozilla.com",
+            "upload_remote_path": "/pub/mozilla.org/b2g/tinderbox-builds/%(branch)s-%(target)s/%(buildid)s",
+            "upload_remote_symlink": "/pub/mozilla.org/b2g/tinderbox-builds/%(branch)s-%(target)s/latest",
+            "upload_remote_nightly_path": "/pub/mozilla.org/b2g/nightly/%(branch)s-%(target)s/%(year)04i/%(month)02i/%(year)04i-%(month)02i-%(day)02i-%(hour)02i-%(minute)02i-%(second)02i",
+            "upload_remote_nightly_symlink": "/pub/mozilla.org/b2g/nightly/%(branch)s-%(target)s/latest",
+            "upload_dep_target_exclusions": [],
+        },
+        "public": {
+            "ssh_key": os.path.expanduser("~/.ssh/ffxbld_rsa"),
+            "ssh_user": "ffxbld",
+            "upload_remote_host": "stage.mozilla.org",
+            "post_upload_cmd": "post_upload.py --tinderbox-builds-dir %(branch)s-%(target)s -p b2g -i %(buildid)s --revision %(revision)s --release-to-tinderbox-dated-builds",
+            "post_upload_nightly_cmd": "post_upload.py --tinderbox-builds-dir %(branch)s-%(target)s -b %(branch)s-%(target)s -p b2g -i %(buildid)s --revision %(revision)s --release-to-tinderbox-dated-builds --release-to-latest --release-to-dated",
+        },
+    },
+    "gittool_share_base": "/builds/git-shared/git",
+    "gittool_base_mirror_urls": [],
+    "hgtool_share_base": "/builds/hg-shared",
+    "hgtool_base_bundle_urls": ["https://ftp-ssl.mozilla.org/pub/mozilla.org/firefox/bundles"],
+    "sendchange_masters": ["buildbot-master81.build.mozilla.org:9301"],
+    "exes": {
+        "tooltool.py": "/tools/tooltool.py",
+        "buildbot": "/tools/buildbot/bin/buildbot",
+    },
+    "manifest": {
+        "upload_remote_host": "stage.mozilla.org",
+        "upload_remote_basepath": "/pub/mozilla.org/b2g/manifests/nightly/%(version)s",
+        "depend_upload_remote_basepath": "/pub/mozilla.org/b2g/manifests/depend/%(branch)s/%(platform)s/%(buildid)s",
+        "ssh_key": os.path.expanduser("~/.ssh/b2gbld_dsa"),
+        "ssh_user": "b2gbld",
+        "branches": {
+            'mozilla-b2g32_v2_0': '2.0.0',
+            'mozilla-b2g34_v2_1': '2.1.0',
+            'mozilla-b2g37_v2_2': '2.2.0',
+            'mozilla-central': '3.0.0',
+        },
+        "translate_hg_to_git": True,
+        "translate_base_url": "http://cruncher.build.mozilla.org/mapper/{project}/{vcs}/{rev}",
+    },
+    "env": {
+        "CCACHE_DIR": "/builds/ccache",
+        "CCACHE_COMPRESS": "1",
+        "CCACHE_UMASK": "002",
+        "GAIA_OPTIMIZE": "1",
+        "SYMBOL_SERVER_HOST": "symbolpush.mozilla.org",
+        "SYMBOL_SERVER_USER": "b2gbld",
+        "SYMBOL_SERVER_SSH_KEY": "/home/mock_mozilla/.ssh/b2gbld_dsa",
+        "SYMBOL_SERVER_PATH": "/mnt/netapp/breakpad/symbols_b2g/",
+        "POST_SYMBOL_UPLOAD_CMD": "/usr/local/bin/post-symbol-upload.py",
+        "WGET_OPTS": "-c -q",
+        "PATH": "/tools/python27/bin:%(PATH)s",
+    },
+    "purge_minsize": 20,
+    "clobberer_url": "https://api.pub.build.mozilla.org/clobberer/lastclobber",
+    "is_automation": True,
+    "repo_mirror_dir": "/builds/git-shared/repo",
+    "repo_remote_mappings": {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/releng-fota-eng.py
@@ -0,0 +1,93 @@
+#!/usr/bin/env python
+import os
+config = {
+    "default_actions": [
+        'clobber',
+        'checkout-sources',
+        'get-blobs',
+        'update-source-manifest',
+        'build',
+        'build-symbols',
+        'make-updates',
+        'prep-upload',
+        'upload',
+        'make-socorro-json',
+        'upload-source-manifest',
+    ],
+    "upload": {
+        "default": {
+            "ssh_key": os.path.expanduser("~/.ssh/b2gbld_dsa"),
+            "ssh_user": "b2gbld",
+            "upload_remote_host": "pvtbuilds.pvt.build.mozilla.org",
+            "upload_remote_path": "/pvt/mozilla.org/b2gotoro/tinderbox-builds/%(branch)s-%(target)s/%(buildid)s",
+            "upload_remote_symlink": "/pvt/mozilla.org/b2gotoro/tinderbox-builds/%(branch)s-%(target)s/latest",
+            "upload_remote_nightly_path": "/pvt/mozilla.org/b2gotoro/nightly/%(branch)s-%(target)s/%(year)04i/%(month)02i/%(year)04i-%(month)02i-%(day)02i-%(hour)02i-%(minute)02i-%(second)02i",
+            "upload_remote_nightly_symlink": "/pvt/mozilla.org/b2gotoro/nightly/%(branch)s-%(target)s/latest",
+            "upload_dep_target_exclusions": [],
+        },
+        "public": {
+            "ssh_key": os.path.expanduser("~/.ssh/ffxbld_rsa"),
+            "ssh_user": "ffxbld",
+            "upload_remote_host": "stage.mozilla.org",
+            "post_upload_cmd": "post_upload.py --tinderbox-builds-dir %(branch)s-%(target)s -p b2g -i %(buildid)s --revision %(revision)s --release-to-tinderbox-dated-builds",
+            "post_upload_nightly_cmd": "post_upload.py --tinderbox-builds-dir %(branch)s-%(target)s -b %(branch)s-%(target)s -p b2g -i %(buildid)s --revision %(revision)s --release-to-tinderbox-dated-builds --release-to-latest --release-to-dated",
+        },
+    },
+    "gittool_share_base": "/builds/git-shared/git",
+    "gittool_base_mirror_urls": [],
+    "hgtool_share_base": "/builds/hg-shared",
+    "hgtool_base_bundle_urls": ["https://ftp-ssl.mozilla.org/pub/mozilla.org/firefox/bundles"],
+    "exes": {
+        "tooltool.py": "/tools/tooltool.py",
+        "python": "/tools/python27/bin/python2.7",
+    },
+    "manifest": {
+        "upload_remote_host": "stage.mozilla.org",
+        "upload_remote_basepath": "/pub/mozilla.org/b2g/manifests/nightly/%(version)s",
+        "depend_upload_remote_basepath": "/pub/mozilla.org/b2g/manifests/depend/%(branch)s/%(platform)s/%(buildid)s",
+        "ssh_key": os.path.expanduser("~/.ssh/b2gbld_dsa"),
+        "ssh_user": "b2gbld",
+        "branches": {
+            'mozilla-b2g32_v2_0': '2.0.0',
+            'mozilla-b2g34_v2_1': '2.1.0',
+            'mozilla-b2g37_v2_2': '2.2.0',
+            'mozilla-central': '3.0.0',
+        },
+        "translate_hg_to_git": True,
+        "translate_base_url": "http://cruncher.build.mozilla.org/mapper/{project}/{vcs}/{rev}",
+        "target_suffix": "-eng",
+    },
+    "env": {
+        "CCACHE_DIR": "/builds/ccache",
+        "CCACHE_COMPRESS": "1",
+        "CCACHE_UMASK": "002",
+        "GAIA_OPTIMIZE": "1",
+        "SYMBOL_SERVER_HOST": "symbolpush.mozilla.org",
+        "SYMBOL_SERVER_USER": "b2gbld",
+        "SYMBOL_SERVER_SSH_KEY": "/home/mock_mozilla/.ssh/b2gbld_dsa",
+        "SYMBOL_SERVER_PATH": "/mnt/netapp/breakpad/symbols_b2g/",
+        "POST_SYMBOL_UPLOAD_CMD": "/usr/local/bin/post-symbol-upload.py",
+        "B2G_UPDATER": "1",
+        "B2G_SYSTEM_APPS": "1",
+        "WGET_OPTS": "-c -q",
+        "PATH": "/tools/python27/bin:%(PATH)s",
+        "B2G_UPDATE_CHANNEL": "default",
+    },
+    "purge_minsize": 15,
+    "clobberer_url": "https://api.pub.build.mozilla.org/clobberer/lastclobber",
+    "is_automation": True,
+    "variant": "eng",
+    "target_suffix": "-eng",
+    "update_type": "fota",
+    "repo_mirror_dir": "/builds/git-shared/repo",
+    "repo_remote_mappings": {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/releng-fota-updates.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+import os
+config = {
+    "default_actions": [
+        'clobber',
+        'checkout-sources',
+        'get-blobs',
+        'update-source-manifest',
+        'build',
+        'build-symbols',
+        'make-updates',
+        'prep-upload',
+        'upload',
+        'make-socorro-json',
+        'upload-source-manifest',
+        'submit-to-balrog',
+    ],
+    "upload": {
+        "default": {
+            "ssh_key": os.path.expanduser("~/.ssh/b2gbld_dsa"),
+            "ssh_user": "b2gbld",
+            "upload_remote_host": "pvtbuilds.pvt.build.mozilla.org",
+            "upload_remote_path": "/pvt/mozilla.org/b2gotoro/tinderbox-builds/%(branch)s-%(target)s/%(buildid)s",
+            "upload_remote_symlink": "/pvt/mozilla.org/b2gotoro/tinderbox-builds/%(branch)s-%(target)s/latest",
+            "upload_remote_nightly_path": "/pvt/mozilla.org/b2gotoro/nightly/%(branch)s-%(target)s/%(year)04i/%(month)02i/%(year)04i-%(month)02i-%(day)02i-%(hour)02i-%(minute)02i-%(second)02i",
+            "upload_remote_nightly_symlink": "/pvt/mozilla.org/b2gotoro/nightly/%(branch)s-%(target)s/latest",
+            "upload_dep_target_exclusions": ["inari", "leo", "helix", "mako", "wasabi"],
+        },
+        "public": {
+            "ssh_key": os.path.expanduser("~/.ssh/ffxbld_rsa"),
+            "ssh_user": "ffxbld",
+            "upload_remote_host": "stage.mozilla.org",
+            "post_upload_cmd": "post_upload.py --tinderbox-builds-dir %(branch)s-%(target)s -p b2g -i %(buildid)s --revision %(revision)s --release-to-tinderbox-dated-builds",
+            "post_upload_nightly_cmd": "post_upload.py --tinderbox-builds-dir %(branch)s-%(target)s -b %(branch)s-%(target)s -p b2g -i %(buildid)s --revision %(revision)s --release-to-tinderbox-dated-builds --release-to-latest --release-to-dated",
+        },
+    },
+    "gittool_share_base": "/builds/git-shared/git",
+    "gittool_base_mirror_urls": [],
+    "hgtool_share_base": "/builds/hg-shared",
+    "hgtool_base_bundle_urls": ["https://ftp-ssl.mozilla.org/pub/mozilla.org/firefox/bundles"],
+    "exes": {
+        "tooltool.py": "/tools/tooltool.py",
+    },
+    "manifest": {
+        "upload_remote_host": "stage.mozilla.org",
+        "upload_remote_basepath": "/pub/mozilla.org/b2g/manifests/nightly/%(version)s",
+        "depend_upload_remote_basepath": "/pub/mozilla.org/b2g/manifests/depend/%(branch)s/%(platform)s/%(buildid)s",
+        "ssh_key": os.path.expanduser("~/.ssh/b2gbld_dsa"),
+        "ssh_user": "b2gbld",
+        "branches": {
+            'mozilla-b2g32_v2_0': '2.0.0',
+            'mozilla-b2g34_v2_1': '2.1.0',
+            'mozilla-b2g37_v2_2': '2.2.0',
+            'mozilla-central': '3.0.0',
+        },
+        "translate_hg_to_git": True,
+        "translate_base_url": "http://cruncher.build.mozilla.org/mapper/{project}/{vcs}/{rev}",
+    },
+    "env": {
+        "CCACHE_DIR": "/builds/ccache",
+        "CCACHE_COMPRESS": "1",
+        "CCACHE_UMASK": "002",
+        "GAIA_OPTIMIZE": "1",
+        "SYMBOL_SERVER_HOST": "symbolpush.mozilla.org",
+        "SYMBOL_SERVER_USER": "b2gbld",
+        "SYMBOL_SERVER_SSH_KEY": "/home/mock_mozilla/.ssh/b2gbld_dsa",
+        "SYMBOL_SERVER_PATH": "/mnt/netapp/breakpad/symbols_b2g/",
+        "POST_SYMBOL_UPLOAD_CMD": "/usr/local/bin/post-symbol-upload.py",
+        "WGET_OPTS": "-c -q",
+        "PATH": "/tools/python27/bin:%(PATH)s",
+    },
+    "purge_minsize": 15,
+    "clobberer_url": "https://api.pub.build.mozilla.org/clobberer/lastclobber",
+    "is_automation": True,
+    "repo_mirror_dir": "/builds/git-shared/repo",
+    "repo_remote_mappings": {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+    },
+    "update_type": "fota",
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/releng-otoro-eng.py
@@ -0,0 +1,92 @@
+#!/usr/bin/env python
+import os
+config = {
+    "default_actions": [
+        'clobber',
+        'checkout-sources',
+        'get-blobs',
+        'update-source-manifest',
+        'build',
+        'build-symbols',
+        'make-updates',
+        'prep-upload',
+        'upload',
+        'make-socorro-json',
+        'upload-source-manifest',
+    ],
+    "upload": {
+        "default": {
+            "ssh_key": os.path.expanduser("~/.ssh/b2gbld_dsa"),
+            "ssh_user": "b2gbld",
+            "upload_remote_host": "pvtbuilds.pvt.build.mozilla.org",
+            "upload_remote_path": "/pvt/mozilla.org/b2gotoro/tinderbox-builds/%(branch)s-%(target)s/%(buildid)s",
+            "upload_remote_symlink": "/pvt/mozilla.org/b2gotoro/tinderbox-builds/%(branch)s-%(target)s/latest",
+            "upload_remote_nightly_path": "/pvt/mozilla.org/b2gotoro/nightly/%(branch)s-%(target)s/%(year)04i/%(month)02i/%(year)04i-%(month)02i-%(day)02i-%(hour)02i-%(minute)02i-%(second)02i",
+            "upload_remote_nightly_symlink": "/pvt/mozilla.org/b2gotoro/nightly/%(branch)s-%(target)s/latest",
+            "upload_dep_target_exclusions": [],
+        },
+        "public": {
+            "ssh_key": os.path.expanduser("~/.ssh/ffxbld_rsa"),
+            "ssh_user": "ffxbld",
+            "upload_remote_host": "stage.mozilla.org",
+            "post_upload_cmd": "post_upload.py --tinderbox-builds-dir %(branch)s-%(target)s -p b2g -i %(buildid)s --revision %(revision)s --release-to-tinderbox-dated-builds",
+            "post_upload_nightly_cmd": "post_upload.py --tinderbox-builds-dir %(branch)s-%(target)s -b %(branch)s-%(target)s -p b2g -i %(buildid)s --revision %(revision)s --release-to-tinderbox-dated-builds --release-to-latest --release-to-dated",
+        },
+    },
+    "gittool_share_base": "/builds/git-shared/git",
+    "gittool_base_mirror_urls": [],
+    "hgtool_share_base": "/builds/hg-shared",
+    "hgtool_base_bundle_urls": ["https://ftp-ssl.mozilla.org/pub/mozilla.org/firefox/bundles"],
+    "exes": {
+        "tooltool.py": "/tools/tooltool.py",
+        "python": "/tools/python27/bin/python2.7",
+    },
+    "manifest": {
+        "upload_remote_host": "stage.mozilla.org",
+        "upload_remote_basepath": "/pub/mozilla.org/b2g/manifests/nightly/%(version)s",
+        "depend_upload_remote_basepath": "/pub/mozilla.org/b2g/manifests/depend/%(branch)s/%(platform)s/%(buildid)s",
+        "ssh_key": os.path.expanduser("~/.ssh/b2gbld_dsa"),
+        "ssh_user": "b2gbld",
+        "branches": {
+            'mozilla-b2g32_v2_0': '2.0.0',
+            'mozilla-b2g34_v2_1': '2.1.0',
+            'mozilla-b2g37_v2_2': '2.2.0',
+            'mozilla-central': '3.0.0',
+        },
+        "translate_hg_to_git": True,
+        "translate_base_url": "http://cruncher.build.mozilla.org/mapper/{project}/{vcs}/{rev}",
+        "target_suffix": "-eng",
+    },
+    "env": {
+        "CCACHE_DIR": "/builds/ccache",
+        "CCACHE_COMPRESS": "1",
+        "CCACHE_UMASK": "002",
+        "GAIA_OPTIMIZE": "1",
+        "SYMBOL_SERVER_HOST": "symbolpush.mozilla.org",
+        "SYMBOL_SERVER_USER": "b2gbld",
+        "SYMBOL_SERVER_SSH_KEY": "/home/mock_mozilla/.ssh/b2gbld_dsa",
+        "SYMBOL_SERVER_PATH": "/mnt/netapp/breakpad/symbols_b2g/",
+        "POST_SYMBOL_UPLOAD_CMD": "/usr/local/bin/post-symbol-upload.py",
+        "B2G_UPDATER": "1",
+        "B2G_SYSTEM_APPS": "1",
+        "WGET_OPTS": "-c -q",
+        "PATH": "/tools/python27/bin:%(PATH)s",
+        "B2G_UPDATE_CHANNEL": "default",
+    },
+    "purge_minsize": 15,
+    "clobberer_url": "https://api.pub.build.mozilla.org/clobberer/lastclobber",
+    "is_automation": True,
+    "variant": "eng",
+    "target_suffix": "-eng",
+    "repo_mirror_dir": "/builds/git-shared/repo",
+    "repo_remote_mappings": {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/releng-otoro.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+import os
+config = {
+    "default_actions": [
+        'clobber',
+        'checkout-sources',
+        'get-blobs',
+        'update-source-manifest',
+        'build',
+        'build-symbols',
+        'make-updates',
+        'prep-upload',
+        'upload',
+        'make-socorro-json',
+        'upload-source-manifest',
+    ],
+    "upload": {
+        "default": {
+            "ssh_key": os.path.expanduser("~/.ssh/b2gbld_dsa"),
+            "ssh_user": "b2gbld",
+            "upload_remote_host": "pvtbuilds.pvt.build.mozilla.org",
+            "upload_remote_path": "/pvt/mozilla.org/b2gotoro/tinderbox-builds/%(branch)s-%(target)s/%(buildid)s",
+            "upload_remote_symlink": "/pvt/mozilla.org/b2gotoro/tinderbox-builds/%(branch)s-%(target)s/latest",
+            "upload_remote_nightly_path": "/pvt/mozilla.org/b2gotoro/nightly/%(branch)s-%(target)s/%(year)04i/%(month)02i/%(year)04i-%(month)02i-%(day)02i-%(hour)02i-%(minute)02i-%(second)02i",
+            "upload_remote_nightly_symlink": "/pvt/mozilla.org/b2gotoro/nightly/%(branch)s-%(target)s/latest",
+            "upload_dep_target_exclusions": ["inari", "leo", "helix", "mako", "wasabi"],
+        },
+        "public": {
+            "ssh_key": os.path.expanduser("~/.ssh/ffxbld_rsa"),
+            "ssh_user": "ffxbld",
+            "upload_remote_host": "stage.mozilla.org",
+            "post_upload_cmd": "post_upload.py --tinderbox-builds-dir %(branch)s-%(target)s -p b2g -i %(buildid)s --revision %(revision)s --release-to-tinderbox-dated-builds",
+            "post_upload_nightly_cmd": "post_upload.py --tinderbox-builds-dir %(branch)s-%(target)s -b %(branch)s-%(target)s -p b2g -i %(buildid)s --revision %(revision)s --release-to-tinderbox-dated-builds --release-to-latest --release-to-dated",
+        },
+    },
+    "gittool_share_base": "/builds/git-shared/git",
+    "gittool_base_mirror_urls": [],
+    "hgtool_share_base": "/builds/hg-shared",
+    "hgtool_base_bundle_urls": ["https://ftp-ssl.mozilla.org/pub/mozilla.org/firefox/bundles"],
+    "exes": {
+        "tooltool.py": "/tools/tooltool.py",
+    },
+    "manifest": {
+        "upload_remote_host": "stage.mozilla.org",
+        "upload_remote_basepath": "/pub/mozilla.org/b2g/manifests/nightly/%(version)s",
+        "depend_upload_remote_basepath": "/pub/mozilla.org/b2g/manifests/depend/%(branch)s/%(platform)s/%(buildid)s",
+        "ssh_key": os.path.expanduser("~/.ssh/b2gbld_dsa"),
+        "ssh_user": "b2gbld",
+        "branches": {
+            'mozilla-b2g32_v2_0': '2.0.0',
+            'mozilla-b2g34_v2_1': '2.1.0',
+            'mozilla-b2g37_v2_2': '2.2.0',
+            'mozilla-central': '3.0.0',
+        },
+        "translate_hg_to_git": True,
+        "translate_base_url": "http://cruncher.build.mozilla.org/mapper/{project}/{vcs}/{rev}",
+    },
+    "env": {
+        "CCACHE_DIR": "/builds/ccache",
+        "CCACHE_COMPRESS": "1",
+        "CCACHE_UMASK": "002",
+        "GAIA_OPTIMIZE": "1",
+        "SYMBOL_SERVER_HOST": "symbolpush.mozilla.org",
+        "SYMBOL_SERVER_USER": "b2gbld",
+        "SYMBOL_SERVER_SSH_KEY": "/home/mock_mozilla/.ssh/b2gbld_dsa",
+        "SYMBOL_SERVER_PATH": "/mnt/netapp/breakpad/symbols_b2g/",
+        "POST_SYMBOL_UPLOAD_CMD": "/usr/local/bin/post-symbol-upload.py",
+        "WGET_OPTS": "-c -q",
+        "PATH": "/tools/python27/bin:%(PATH)s",
+    },
+    "purge_minsize": 15,
+    "clobberer_url": "https://api.pub.build.mozilla.org/clobberer/lastclobber",
+    "is_automation": True,
+    "repo_mirror_dir": "/builds/git-shared/repo",
+    "repo_remote_mappings": {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/releng-private-updates.py
@@ -0,0 +1,86 @@
+#!/usr/bin/env python
+import os
+config = {
+    "default_actions": [
+        'clobber',
+        'checkout-sources',
+        'get-blobs',
+        'update-source-manifest',
+        'build',
+        'build-symbols',
+        'make-updates',
+        'prep-upload',
+        'upload',
+        'make-socorro-json',
+        'upload-source-manifest',
+        'submit-to-balrog',
+    ],
+    "upload": {
+        "default": {
+            "ssh_key": os.path.expanduser("~/.ssh/b2gbld_dsa"),
+            "ssh_user": "b2gbld",
+            "upload_remote_host": "pvtbuilds.pvt.build.mozilla.org",
+            "upload_remote_path": "/pvt/mozilla.org/b2gotoro/tinderbox-builds/%(branch)s-%(target)s/%(buildid)s",
+            "upload_remote_symlink": "/pvt/mozilla.org/b2gotoro/tinderbox-builds/%(branch)s-%(target)s/latest",
+            "upload_remote_nightly_path": "/pvt/mozilla.org/b2gotoro/nightly/%(branch)s-%(target)s/%(year)04i/%(month)02i/%(year)04i-%(month)02i-%(day)02i-%(hour)02i-%(minute)02i-%(second)02i",
+            "upload_remote_nightly_symlink": "/pvt/mozilla.org/b2gotoro/nightly/%(branch)s-%(target)s/latest",
+            "upload_dep_target_exclusions": ["inari", "leo", "helix", "mako", "wasabi"],
+        },
+        "public": {
+            "ssh_key": os.path.expanduser("~/.ssh/ffxbld_rsa"),
+            "ssh_user": "ffxbld",
+            "upload_remote_host": "stage.mozilla.org",
+            "post_upload_cmd": "post_upload.py --tinderbox-builds-dir %(branch)s-%(target)s -p b2g -i %(buildid)s --revision %(revision)s --release-to-tinderbox-dated-builds",
+            "post_upload_nightly_cmd": "post_upload.py --tinderbox-builds-dir %(branch)s-%(target)s -b %(branch)s-%(target)s -p b2g -i %(buildid)s --revision %(revision)s --release-to-tinderbox-dated-builds --release-to-latest --release-to-dated",
+        },
+    },
+    "gittool_share_base": "/builds/git-shared/git",
+    "gittool_base_mirror_urls": [],
+    "hgtool_share_base": "/builds/hg-shared",
+    "hgtool_base_bundle_urls": ["https://ftp-ssl.mozilla.org/pub/mozilla.org/firefox/bundles"],
+    "exes": {
+        "tooltool.py": "/tools/tooltool.py",
+    },
+    "manifest": {
+        "upload_remote_host": "stage.mozilla.org",
+        "upload_remote_basepath": "/pub/mozilla.org/b2g/manifests/nightly/%(version)s",
+        "depend_upload_remote_basepath": "/pub/mozilla.org/b2g/manifests/depend/%(branch)s/%(platform)s/%(buildid)s",
+        "ssh_key": os.path.expanduser("~/.ssh/b2gbld_dsa"),
+        "ssh_user": "b2gbld",
+        "branches": {
+            'mozilla-b2g32_v2_0': '2.0.0',
+            'mozilla-b2g34_v2_1': '2.1.0',
+            'mozilla-b2g37_v2_2': '2.2.0',
+            'mozilla-central': '3.0.0',
+        },
+        "translate_hg_to_git": True,
+        "translate_base_url": "http://cruncher.build.mozilla.org/mapper/{project}/{vcs}/{rev}",
+    },
+    "env": {
+        "CCACHE_DIR": "/builds/ccache",
+        "CCACHE_COMPRESS": "1",
+        "CCACHE_UMASK": "002",
+        "GAIA_OPTIMIZE": "1",
+        "SYMBOL_SERVER_HOST": "symbolpush.mozilla.org",
+        "SYMBOL_SERVER_USER": "b2gbld",
+        "SYMBOL_SERVER_SSH_KEY": "/home/mock_mozilla/.ssh/b2gbld_dsa",
+        "SYMBOL_SERVER_PATH": "/mnt/netapp/breakpad/symbols_b2g/",
+        "POST_SYMBOL_UPLOAD_CMD": "/usr/local/bin/post-symbol-upload.py",
+        "WGET_OPTS": "-c -q",
+        "PATH": "/tools/python27/bin:%(PATH)s",
+    },
+    "purge_minsize": 15,
+    "clobberer_url": "https://api.pub.build.mozilla.org/clobberer/lastclobber",
+    "is_automation": True,
+    "repo_mirror_dir": "/builds/git-shared/repo",
+    "repo_remote_mappings": {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/releng-try.py
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+import os
+config = {
+    "default_actions": [
+        'clobber',
+        'checkout-sources',
+        'get-blobs',
+        'update-source-manifest',
+        'build',
+        'build-symbols',
+        'prep-upload',
+        'upload',
+    ],
+    "upload": {
+        "default": {
+            "ssh_key": os.path.expanduser("~/.ssh/b2gtry_dsa"),
+            "ssh_user": "b2gtry",
+            "upload_remote_host": "pvtbuilds2.dmz.scl3.mozilla.com",
+            "upload_remote_path": "/pub/mozilla.org/b2g/try-builds/%(user)s-%(revision)s/%(branch)s-%(target)s",
+            "upload_dep_target_exclusions": [],
+        },
+    },
+    "gittool_share_base": "/builds/git-shared/git",
+    "gittool_base_mirror_urls": [],
+    "hgtool_share_base": "/builds/hg-shared",
+    "hgtool_base_bundle_urls": ["https://ftp-ssl.mozilla.org/pub/mozilla.org/firefox/bundles"],
+    "sendchange_masters": ["buildbot-master81.build.mozilla.org:9301"],
+    "exes": {
+        "tooltool.py": "/tools/tooltool.py",
+        "buildbot": "/tools/buildbot/bin/buildbot",
+    },
+    "env": {
+        "CCACHE_DIR": "/builds/ccache",
+        "CCACHE_COMPRESS": "1",
+        "CCACHE_UMASK": "002",
+        "GAIA_OPTIMIZE": "1",
+        "WGET_OPTS": "-c -q",
+        "PATH": "/tools/python27/bin:%(PATH)s",
+    },
+    "purge_minsize": 20,
+    #"clobberer_url": "https://api-pub-build.allizom.org/clobberer/lastclobber",
+    #"clobberer_url": "https://api.pub.build.mozilla.org/clobberer/lastclobber",
+    "is_automation": True,
+    "force_clobber": True,
+    "repo_mirror_dir": "/builds/git-shared/repo",
+    "repo_remote_mappings": {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/releng_sub_linux_configs/32_debug.py
@@ -0,0 +1,7 @@
+import os
+
+config = {
+    'stage_platform': 'linux32_gecko-debug',
+    'debug_build': True,
+    'src_mozconfig': 'b2g/config/mozconfigs/linux32_gecko/debug',
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/releng_sub_linux_configs/64_debug.py
@@ -0,0 +1,7 @@
+import os
+
+config = {
+    'stage_platform': 'linux64_gecko-debug',
+    'debug_build': True,
+    'src_mozconfig': 'b2g/config/mozconfigs/linux64_gecko/debug',
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/releng_sub_mac_configs/64_debug.py
@@ -0,0 +1,7 @@
+import os
+
+config = {
+    'stage_platform': 'macosx64_gecko-debug',
+    'debug_build': True,
+    'src_mozconfig': 'b2g/config/mozconfigs/macosx64_gecko/debug',
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/releng_sub_windows_configs/32_debug.py
@@ -0,0 +1,7 @@
+import os
+
+config = {
+    'stage_platform': 'win32_gecko-debug',
+    'debug_build': True,
+    'src_mozconfig': 'b2g/config/mozconfigs/win32_gecko/debug',
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/taskcluster-emulator.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+config = {
+    "default_vcs": "tc-vcs",
+    "default_actions": [
+        'checkout-sources',
+        'build',
+        'build-symbols',
+    ],
+    "env": {
+        "GAIA_OPTIMIZE": "1",
+        "WGET_OPTS": "-c -q"
+    },
+    "is_automation": True,
+    "repo_remote_mappings": {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/taskcluster-phone-ota.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+import os.path
+config = {
+    "default_vcs": "tc-vcs",
+    "default_actions": [
+        'checkout-sources',
+        'build',
+        'build-symbols',
+        'make-updates',
+        'prep-upload',
+        'submit-to-balrog'
+    ],
+    "balrog_credentials_file": "balrog_credentials",
+    "nightly_build": True,
+    "upload": {
+        "default": {
+            "upload_dep_target_exclusions": []
+        }
+    },
+    "upload": {
+        "default": {
+            "ssh_key": os.path.expanduser("~/.ssh/b2g-rsa"),
+            "ssh_user": "",
+            "upload_remote_host": "",
+            "upload_remote_nightly_path": "/srv/ftp/pub/mozilla.org/b2g/nightly/%(branch)s-%(target)s/latest",
+            "upload_remote_path": "/srv/ftp/pub/mozilla.org/b2g/%(target)s/%(branch)s-%(target)s/%(buildid)s",
+            "upload_remote_symlink": "/srv/ftp/pub/mozilla.org/b2g/%(target)s/%(branch)s-%(target)s/latest",
+        },
+        "public": {
+            "ssh_key": os.path.expanduser("~/.ssh/b2g-rsa"),
+            "ssh_user": "",
+            "upload_remote_host": "",
+            "post_upload_cmd": "post_upload.py --tinderbox-builds-dir %(branch)s-%(target)s -p b2g -i %(buildid)s --revision %(revision)s --release-to-tinderbox-dated-builds",
+            "post_upload_nightly_cmd": "post_upload.py --tinderbox-builds-dir %(branch)s-%(target)s -b %(branch)s-%(target)s -p b2g -i %(buildid)s --revision %(revision)s --release-to-tinderbox-dated-builds --release-to-latest --release-to-dated",
+        },
+    },
+    "env": {
+        "GAIA_OPTIMIZE": "1",
+        "WGET_OPTS": "-c -q"
+    },
+    "is_automation": True,
+    "repo_remote_mappings": {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/taskcluster-phone.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+config = {
+    "default_vcs": "tc-vcs",
+    "default_actions": [
+        'checkout-sources',
+        'build',
+        'build-symbols',
+        'prep-upload'
+    ],
+    "upload": {
+        "default": {
+            "upload_dep_target_exclusions": []
+        }
+    },
+    "env": {
+        "GAIA_OPTIMIZE": "1",
+        "WGET_OPTS": "-c -q"
+    },
+    "is_automation": True,
+    "repo_remote_mappings": {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/taskcluster-spark-dogfood.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+import os.path
+config = {
+    "default_vcs": "tc-vcs",
+    "default_actions": [
+        'checkout-sources',
+        'build',
+        'build-symbols',
+        'make-updates',
+        'prep-upload',
+        'submit-to-balrog'
+    ],
+    "balrog_credentials_file": "balrog_credentials",
+    "nightly_build": True,
+    "env": {
+        "GAIA_OPTIMIZE": "1",
+        "B2G_UPDATER": "1",
+        "LIGHTSABER": "1",
+        "DOGFOOD": "1",
+        "B2G_UPDATE_CHANNEL": "dogfood",
+        "BOWER_FLAGS": "--allow-root",
+        "B2G_PATH": "%(work_dir)s",
+        "GAIA_DISTRIBUTION_DIR": "%(work_dir)s/gaia/distros/spark",
+        "WGET_OPTS": "-c -q"
+    },
+    "is_automation": True,
+    "repo_remote_mappings": {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/taskcluster-spark-ota.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+import os.path
+config = {
+    "default_vcs": "tc-vcs",
+    "default_actions": [
+        'checkout-sources',
+        'build',
+        'build-symbols',
+        'make-updates',
+        'prep-upload',
+        'submit-to-balrog'
+    ],
+    "balrog_credentials_file": "balrog_credentials",
+    "nightly_build": True,
+    "env": {
+        "GAIA_OPTIMIZE": "1",
+        "B2G_UPDATER": "1",
+        "LIGHTSABER": "1",
+        "BOWER_FLAGS": "--allow-root",
+        "B2G_PATH": "%(work_dir)s",
+        "GAIA_DISTRIBUTION_DIR": "%(work_dir)s/gaia/distros/spark",
+        "WGET_OPTS": "-c -q"
+    },
+    "is_automation": True,
+    "repo_remote_mappings": {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g/taskcluster-spark.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+config = {
+    "default_vcs": "tc-vcs",
+    "default_actions": [
+        'checkout-sources',
+        'build',
+        'build-symbols',
+        'prep-upload'
+    ],
+    "upload": {
+        "default": {
+            "upload_dep_target_exclusions": []
+        }
+    },
+    "env": {
+        "GAIA_OPTIMIZE": "1",
+        "WGET_OPTS": "-c -q",
+        "LIGHTSABER": "1",
+        "B2G_PATH": "%(work_dir)s",
+        "BOWER_FLAGS": "--allow-root",
+        "GAIA_DISTRIBUTION_DIR": "%(work_dir)s/gaia/distros/spark",
+        "WGET_OPTS": "-c -q",
+    },
+    "is_automation": True,
+    "repo_remote_mappings": {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g_bumper/master.py
@@ -0,0 +1,96 @@
+#!/usr/bin/env python
+config = {
+    "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"],
+        "gittool.py": ["/usr/local/bin/gittool.py"],
+    },
+    'gecko_pull_url': 'https://hg.mozilla.org/integration/b2g-inbound',
+    'gecko_push_url': 'ssh://hg.mozilla.org/integration/b2g-inbound',
+    'gecko_local_dir': 'b2g-inbound',
+    'git_ref_cache': '/builds/b2g_bumper/git_ref_cache.json',
+
+    'manifests_repo': 'https://git.mozilla.org/b2g/b2g-manifest.git',
+    'manifests_revision': 'origin/master',
+
+    'hg_user': 'B2G Bumper Bot <release+b2gbumper@mozilla.com>',
+    "ssh_key": "~/.ssh/ffxbld_rsa",
+    "ssh_user": "ffxbld",
+
+    'hgtool_base_bundle_urls': ['https://ftp-ssl.mozilla.org/pub/mozilla.org/firefox/bundles'],
+
+    'gaia_repo_url': 'https://hg.mozilla.org/integration/gaia-central',
+    'gaia_revision_file': 'b2g/config/gaia.json',
+    'gaia_max_revisions': 1,
+    # Which git branch this hg repo corresponds to
+    'gaia_git_branch': 'master',
+    'gaia_git_repo': 'https://git.mozilla.org/releases/gaia.git',
+    'gaia_mapper_project': 'gaia',
+    'mapper_url': 'http://cruncher.build.mozilla.org/mapper/{project}/{vcs}/{rev}',
+
+    'devices': {
+        'dolphin': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-l': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-kk': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-jb': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-ics': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+            'manifest_file': 'emulator.xml',
+        },
+        # Equivalent to emulator-ics - see bug 916134
+        # Remove once the above bug resolved
+        'emulator': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+            'manifest_file': 'emulator.xml',
+        },
+        'flame-kk': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'nexus-4': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'nexus-5-l': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'aries': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+            'manifest_file': 'shinano.xml',
+        },
+    },
+    'repo_remote_mappings': {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'http://sprdsource.spreadtrum.com:8085/b2g/android': 'https://git.mozilla.org/external/sprd-aosp',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+        'git://github.com/t2m-foxfone/': 'https://git.mozilla.org/external/t2m-foxfone',
+        # Some mappings to ourself, we want to leave these as-is!
+        'https://git.mozilla.org/external/aosp': 'https://git.mozilla.org/external/aosp',
+        'https://git.mozilla.org/external/caf': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/external/apitrace': 'https://git.mozilla.org/external/apitrace',
+        'https://git.mozilla.org/external/t2m-foxfone': 'https://git.mozilla.org/external/t2m-foxfone',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g_bumper/v2.0.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python
+config = {
+    "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"],
+        "gittool.py": ["/usr/local/bin/gittool.py"],
+    },
+    'gecko_pull_url': 'https://hg.mozilla.org/releases/mozilla-b2g32_v2_0',
+    'gecko_push_url': 'ssh://hg.mozilla.org/releases/mozilla-b2g32_v2_0',
+    'gecko_local_dir': 'mozilla-b2g32_v2_0',
+    'git_ref_cache': '/builds/b2g_bumper/git_ref_cache.json',
+
+    'manifests_repo': 'https://git.mozilla.org/b2g/b2g-manifest.git',
+    'manifests_revision': 'origin/v2.0',
+
+    'hg_user': 'B2G Bumper Bot <release+b2gbumper@mozilla.com>',
+    "ssh_key": "~/.ssh/ffxbld_rsa",
+    "ssh_user": "ffxbld",
+
+    'hgtool_base_bundle_urls': ['https://ftp-ssl.mozilla.org/pub/mozilla.org/firefox/bundles'],
+
+    'gaia_repo_url': 'https://hg.mozilla.org/integration/gaia-2_0',
+    'gaia_revision_file': 'b2g/config/gaia.json',
+    'gaia_max_revisions': 5,
+    # Which git branch this hg repo corresponds to
+    'gaia_git_branch': 'v2.0',
+    'gaia_git_repo': 'https://git.mozilla.org/releases/gaia.git',
+    'gaia_mapper_project': 'gaia',
+    'mapper_url': 'http://cruncher.build.mozilla.org/mapper/{project}/{vcs}/{rev}',
+
+    'devices': {
+        'emulator-kk': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-jb': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-ics': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+            'manifest_file': 'emulator.xml',
+        },
+        # Equivalent to emulator-ics - see bug 916134
+        # Remove once the above bug resolved
+        'emulator': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+            'manifest_file': 'emulator.xml',
+        },
+        'flame-kk': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'nexus-4': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+    },
+    'repo_remote_mappings': {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+        'git://github.com/t2m-foxfone/': 'https://git.mozilla.org/external/t2m-foxfone',
+        # Some mappings to ourself, we want to leave these as-is!
+        'https://git.mozilla.org/external/aosp': 'https://git.mozilla.org/external/aosp',
+        'https://git.mozilla.org/external/caf': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/external/apitrace': 'https://git.mozilla.org/external/apitrace',
+        'https://git.mozilla.org/external/t2m-foxfone': 'https://git.mozilla.org/external/t2m-foxfone',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g_bumper/v2.1.py
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+config = {
+    "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"],
+        "gittool.py": ["/usr/local/bin/gittool.py"],
+    },
+    'gecko_pull_url': 'https://hg.mozilla.org/releases/mozilla-b2g34_v2_1/',
+    'gecko_push_url': 'ssh://hg.mozilla.org/releases/mozilla-b2g34_v2_1/',
+    'gecko_local_dir': 'mozilla-b2g34_v2_1',
+    'git_ref_cache': '/builds/b2g_bumper/git_ref_cache.json',
+
+    'manifests_repo': 'https://git.mozilla.org/b2g/b2g-manifest.git',
+    'manifests_revision': 'origin/v2.1',
+
+    'hg_user': 'B2G Bumper Bot <release+b2gbumper@mozilla.com>',
+    "ssh_key": "~/.ssh/ffxbld_rsa",
+    "ssh_user": "ffxbld",
+
+    'hgtool_base_bundle_urls': ['https://ftp-ssl.mozilla.org/pub/mozilla.org/firefox/bundles'],
+
+    'gaia_repo_url': 'https://hg.mozilla.org/integration/gaia-2_1',
+    'gaia_revision_file': 'b2g/config/gaia.json',
+    'gaia_max_revisions': 5,
+    # Which git branch this hg repo corresponds to
+    'gaia_git_branch': 'v2.1',
+    'gaia_git_repo': 'https://git.mozilla.org/releases/gaia.git',
+    'gaia_mapper_project': 'gaia',
+    'mapper_url': 'http://cruncher.build.mozilla.org/mapper/{project}/{vcs}/{rev}',
+
+    'devices': {
+        'dolphin': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-kk': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-jb': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-ics': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+            'manifest_file': 'emulator.xml',
+        },
+        # Equivalent to emulator-ics - see bug 916134
+        # Remove once the above bug resolved
+        'emulator': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+            'manifest_file': 'emulator.xml',
+        },
+        'flame-kk': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'nexus-4': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+    },
+    'repo_remote_mappings': {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'http://sprdsource.spreadtrum.com:8085/b2g/android': 'https://git.mozilla.org/external/sprd-aosp',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+        'git://github.com/t2m-foxfone/': 'https://git.mozilla.org/external/t2m-foxfone',
+        # Some mappings to ourself, we want to leave these as-is!
+        'https://git.mozilla.org/external/aosp': 'https://git.mozilla.org/external/aosp',
+        'https://git.mozilla.org/external/caf': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/external/apitrace': 'https://git.mozilla.org/external/apitrace',
+        'https://git.mozilla.org/external/t2m-foxfone': 'https://git.mozilla.org/external/t2m-foxfone',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g_bumper/v2.1s.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+config = {
+    "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"],
+        "gittool.py": ["/usr/local/bin/gittool.py"],
+    },
+    'gecko_pull_url': 'https://hg.mozilla.org/releases/mozilla-b2g34_v2_1s/',
+    'gecko_push_url': 'ssh://hg.mozilla.org/releases/mozilla-b2g34_v2_1s/',
+    'gecko_local_dir': 'mozilla-b2g34_v2_1s',
+    'git_ref_cache': '/builds/b2g_bumper/git_ref_cache.json',
+
+    'manifests_repo': 'https://git.mozilla.org/b2g/b2g-manifest.git',
+    'manifests_revision': 'origin/v2.1s',
+
+    'hg_user': 'B2G Bumper Bot <release+b2gbumper@mozilla.com>',
+    "ssh_key": "~/.ssh/ffxbld_rsa",
+    "ssh_user": "ffxbld",
+
+    'hgtool_base_bundle_urls': ['https://ftp-ssl.mozilla.org/pub/mozilla.org/firefox/bundles'],
+
+    'gaia_repo_url': 'https://hg.mozilla.org/integration/gaia-2_1s',
+    'gaia_revision_file': 'b2g/config/gaia.json',
+    'gaia_max_revisions': 5,
+    # Which git branch this hg repo corresponds to
+    'gaia_git_branch': 'v2.1s',
+    'gaia_git_repo': 'https://git.mozilla.org/releases/gaia.git',
+    'gaia_mapper_project': 'gaia',
+    'mapper_url': 'http://cruncher.build.mozilla.org/mapper/{project}/{vcs}/{rev}',
+
+    'devices': {
+        'dolphin': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'dolphin-512': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-kk': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-jb': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-ics': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+            'manifest_file': 'emulator.xml',
+        },
+        # Equivalent to emulator-ics - see bug 916134
+        # Remove once the above bug resolved
+        'emulator': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+            'manifest_file': 'emulator.xml',
+        },
+        'flame-kk': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'nexus-4': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+    },
+    'repo_remote_mappings': {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'http://sprdsource.spreadtrum.com:8085/b2g/android': 'https://git.mozilla.org/external/sprd-aosp',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+        'git://github.com/t2m-foxfone/': 'https://git.mozilla.org/external/t2m-foxfone',
+        # Some mappings to ourself, we want to leave these as-is!
+        'https://git.mozilla.org/external/aosp': 'https://git.mozilla.org/external/aosp',
+        'https://git.mozilla.org/external/caf': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/external/apitrace': 'https://git.mozilla.org/external/apitrace',
+        'https://git.mozilla.org/external/t2m-foxfone': 'https://git.mozilla.org/external/t2m-foxfone',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/b2g_bumper/v2.2.py
@@ -0,0 +1,91 @@
+#!/usr/bin/env python
+config = {
+    "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"],
+        "gittool.py": ["/usr/local/bin/gittool.py"],
+    },
+    'gecko_pull_url': 'https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/',
+    'gecko_push_url': 'ssh://hg.mozilla.org/releases/mozilla-b2g37_v2_2/',
+    'gecko_local_dir': 'mozilla-b2g37_v2_2',
+    'git_ref_cache': '/builds/b2g_bumper/git_ref_cache.json',
+
+    'manifests_repo': 'https://git.mozilla.org/b2g/b2g-manifest.git',
+    'manifests_revision': 'origin/v2.2',
+
+    'hg_user': 'B2G Bumper Bot <release+b2gbumper@mozilla.com>',
+    "ssh_key": "~/.ssh/ffxbld_rsa",
+    "ssh_user": "ffxbld",
+
+    'hgtool_base_bundle_urls': ['https://ftp-ssl.mozilla.org/pub/mozilla.org/firefox/bundles'],
+
+    'gaia_repo_url': 'https://hg.mozilla.org/integration/gaia-2_2',
+    'gaia_revision_file': 'b2g/config/gaia.json',
+    'gaia_max_revisions': 5,
+    # Which git branch this hg repo corresponds to
+    'gaia_git_branch': 'v2.2',
+    'gaia_git_repo': 'https://git.mozilla.org/releases/gaia.git',
+    'gaia_mapper_project': 'gaia',
+    'mapper_url': 'http://cruncher.build.mozilla.org/mapper/{project}/{vcs}/{rev}',
+
+    'devices': {
+        'dolphin': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-l': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-kk': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-jb': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'emulator-ics': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+            'manifest_file': 'emulator.xml',
+        },
+        # Equivalent to emulator-ics - see bug 916134
+        # Remove once the above bug resolved
+        'emulator': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+            'manifest_file': 'emulator.xml',
+        },
+        'flame-kk': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'nexus-4': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+        'nexus-5-l': {
+            'ignore_projects': ['gecko'],
+            'ignore_groups': ['darwin'],
+        },
+    },
+    'repo_remote_mappings': {
+        'https://android.googlesource.com/': 'https://git.mozilla.org/external/aosp',
+        'git://codeaurora.org/': 'https://git.mozilla.org/external/caf',
+        'git://github.com/mozilla-b2g/': 'https://git.mozilla.org/b2g',
+        'git://github.com/mozilla/': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/releases': 'https://git.mozilla.org/releases',
+        'http://android.git.linaro.org/git-ro/': 'https://git.mozilla.org/external/linaro',
+        'http://sprdsource.spreadtrum.com:8085/b2g/android': 'https://git.mozilla.org/external/sprd-aosp',
+        'git://github.com/apitrace/': 'https://git.mozilla.org/external/apitrace',
+        'git://github.com/t2m-foxfone/': 'https://git.mozilla.org/external/t2m-foxfone',
+        # Some mappings to ourself, we want to leave these as-is!
+        'https://git.mozilla.org/external/aosp': 'https://git.mozilla.org/external/aosp',
+        'https://git.mozilla.org/external/caf': 'https://git.mozilla.org/external/caf',
+        'https://git.mozilla.org/b2g': 'https://git.mozilla.org/b2g',
+        'https://git.mozilla.org/external/apitrace': 'https://git.mozilla.org/external/apitrace',
+        'https://git.mozilla.org/external/t2m-foxfone': 'https://git.mozilla.org/external/t2m-foxfone',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/balrog/docker-worker.py
@@ -0,0 +1,21 @@
+config = {
+    'balrog_servers': [
+        {
+            'balrog_api_root': 'http://balrog/api',
+            'ignore_failures': False,
+            'url_replacements': [
+                ('http://ftp.mozilla.org/pub/mozilla.org', 'http://download.cdn.mozilla.net/pub/mozilla.org'),
+            ],
+            'balrog_usernames': {
+                'b2g': 'b2gbld',
+                'firefox': 'ffxbld',
+                'thunderbird': 'tbirdbld',
+                'mobile': 'ffxbld',
+                'Fennec': 'ffxbld',
+                'graphene': 'ffxbld',
+                'horizon': 'ffxbld',
+            }
+        }
+    ]
+}
+
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/balrog/production.py
@@ -0,0 +1,33 @@
+config = {
+    'balrog_servers': [
+        {
+            'balrog_api_root': 'https://aus4-admin.mozilla.org/api',
+            'ignore_failures': False,
+            'url_replacements': [
+                ('http://ftp.mozilla.org/pub/mozilla.org', 'http://download.cdn.mozilla.net/pub/mozilla.org'),
+            ],
+            'balrog_usernames': {
+                'b2g': 'b2gbld',
+                'firefox': 'ffxbld',
+                'thunderbird': 'tbirdbld',
+                'mobile': 'ffxbld',
+                'Fennec': 'ffxbld',
+                'graphene': 'ffxbld',
+                'horizon': 'ffxbld',
+            }
+        },
+        {
+            'balrog_api_root': 'https://aus4-admin-dev.allizom.org/api',
+            'ignore_failures': True,
+            'balrog_usernames': {
+                'b2g': 'stage-b2gbld',
+                'firefox': 'stage-ffxbld',
+                'thunderbird': 'stage-tbirdbld',
+                'mobile': 'stage-ffxbld',
+                'Fennec': 'stage-ffxbld',
+                'graphene': 'stage-ffxbld',
+                'horizon': 'stage-ffxbld',
+            }
+        }
+    ]
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/balrog/staging.py
@@ -0,0 +1,17 @@
+config = {
+    'balrog_servers': [
+        {
+            'balrog_api_root': 'https://aus4-admin-dev.allizom.org/api',
+            'ignore_failures': False,
+            'balrog_usernames': {
+                'b2g': 'stage-b2gbld',
+                'firefox': 'stage-ffxbld',
+                'thunderbird': 'stage-tbirdbld',
+                'mobile': 'stage-ffxbld',
+                'Fennec': 'stage-ffxbld',
+                'graphene': 'stage-ffxbld',
+                'horizon': 'stage-ffxbld',
+            }
+        }
+    ]
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/branch_specifics.py
@@ -0,0 +1,149 @@
+# this is a dict of branch specific keys/values. As this fills up and more
+# fx build factories are ported, we might deal with this differently
+
+# we should be able to port this in-tree and have the respective repos and
+# revisions handle what goes on in here. Tracking: bug 978510
+
+# example config and explanation of how it works:
+# config = {
+#     # if a branch matches a key below, override items in self.config with
+#     # items in the key's value.
+#     # this override can be done for every platform or at a platform level
+#     '<branch-name>': {
+#         # global config items (applies to all platforms and build types)
+#         'repo_path': "projects/<branch-name>",
+#         'graph_server_branch_name': "Firefox",
+#
+#         # platform config items (applies to specific platforms)
+#         'platform_overrides': {
+#             # if a platform matches a key below, override items in
+#             # self.config with items in the key's value
+#             'linux64-debug': {
+#                 'upload_symbols': False,
+#             },
+#             'win64': {
+#                 'enable_checktests': False,
+#             },
+#         }
+#     },
+# }
+
+config = {
+    ### release branches
+    "mozilla-central": {
+        "repo_path": 'mozilla-central',
+        "update_channel": "nightly",
+        "graph_server_branch_name": "Firefox",
+        'use_branch_in_symbols_extra_buildid': False,
+    },
+    'mozilla-release': {
+        'repo_path': 'releases/mozilla-release',
+        # TODO I think we can remove update_channel since we don't run
+        # nightlies for mozilla-release
+        'update_channel': 'release',
+        'branch_uses_per_checkin_strategy': True,
+        'use_branch_in_symbols_extra_buildid': False,
+    },
+    'mozilla-beta': {
+        'repo_path': 'releases/mozilla-beta',
+        # TODO I think we can remove update_channel since we don't run
+        # nightlies for mozilla-beta
+        'update_channel': 'beta',
+        'branch_uses_per_checkin_strategy': True,
+        'use_branch_in_symbols_extra_buildid': False,
+    },
+    'mozilla-aurora': {
+        'repo_path': 'releases/mozilla-aurora',
+        'update_channel': 'aurora',
+        'branch_uses_per_checkin_strategy': True,
+        'use_branch_in_symbols_extra_buildid': False,
+    },
+    'mozilla-esr31': {
+        'repo_path': 'releases/mozilla-esr31',
+        'update_channel': 'nightly-esr31',
+        'branch_uses_per_checkin_strategy': True,
+        'use_branch_in_symbols_extra_buildid': False,
+    },
+    'mozilla-b2g32_v2_0': {
+        'repo_path': 'releases/mozilla-b2g32_v2_0',
+        'use_branch_in_symbols_extra_buildid': False,
+        'update_channel': 'nightly-b2g32',
+        'graph_server_branch_name': 'Mozilla-B2g32-v2.0',
+    },
+    'try': {
+        'repo_path': 'try',
+        'clone_by_revision': True,
+        'clone_with_purge': True,
+        'tinderbox_build_dir': '%(who)s-%(got_revision)s',
+        'to_tinderbox_dated': False,
+        'include_post_upload_builddir': True,
+        'release_to_try_builds': True,
+        'use_branch_in_symbols_extra_buildid': False,
+        'stage_username': 'trybld',
+        'stage_ssh_key': 'trybld_dsa',
+        'branch_supports_uploadsymbols': False,
+        'use_clobberer': False,
+    },
+
+    ### project branches
+    'b2g-inbound': {
+        'repo_path': 'integration/b2g-inbound',
+    },
+    'fx-team': {
+        'repo_path': 'integration/fx-team',
+    },
+    'gum': {
+        'branch_uses_per_checkin_strategy': True,
+    },
+    'mozilla-inbound': {
+        'repo_path': 'integration/mozilla-inbound',
+    },
+    'services-central': {
+        'repo_path': 'services/services-central',
+    },
+    'ux': {
+        "graph_server_branch_name": "UX",
+    },
+    # When build promotion goes live the mozconfig changes are probably better
+    # expressed once in files like configs/builds/releng_base_windows_32_builds.py
+    'date': {
+        'enable_release_promotion': 1,
+        'platform_overrides': {
+            'linux': {
+                'src_mozconfig': 'browser/config/mozconfigs/linux32/beta',
+            },
+            'linux64': {
+                'src_mozconfig': 'browser/config/mozconfigs/linux64/beta',
+            },
+            'macosx64': {
+                'src_mozconfig': 'browser/config/mozconfigs/macosx-universal/beta',
+            },
+            'win32': {
+                'src_mozconfig': 'browser/config/mozconfigs/win32/beta',
+            },
+            'win64': {
+                'src_mozconfig': 'browser/config/mozconfigs/win64/beta',
+            },
+        },
+    },
+    'cypress': {
+        # bug 1164935
+        'branch_uses_per_checkin_strategy': True,
+    }
+
+    ### other branches that do not require anything special:
+    # 'alder': {},
+    # 'ash': {},
+    # 'birch': {},
+    # 'build-system': {}
+    # 'cedar': {},
+    # 'elm': {},
+    # 'fig': {},
+    # 'graphics': {}
+    # 'holly': {},
+    # 'jamun': {},
+    # 'larch': {},
+    # 'maple': {},
+    # 'oak': {},
+    # 'pine': {}
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/build_pool_specifics.py
@@ -0,0 +1,43 @@
+# 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 = {
+    "staging": {
+        # if not clobberer_url, only clobber 'abs_work_dir'
+        # if true: possibly clobber, clobberer, and purge_builds
+        # see PurgeMixin for clobber() conditions
+        'clobberer_url': 'https://api-pub-build.allizom.org/clobberer/lastclobber',
+        # staging we should use MozillaTest
+        # but in production we let the self.branch decide via
+        # self._query_graph_server_branch_name()
+        "graph_server_branch_name": "MozillaTest",
+        'graph_server': 'graphs.allizom.org',
+        "hgtool_base_bundle_urls": [
+            'http://dev-stage01.build.mozilla.org/pub/mozilla'
+            '.org/firefox/bundles',
+        ],
+        'symbol_server_host': "dev-stage01.srv.releng.scl3.mozilla.com",
+        'stage_server': 'dev-stage01.srv.releng.scl3.mozilla.com',
+        "sendchange_masters": ["dev-master1.srv.releng.scl3.mozilla.com:9038"],
+        'taskcluster_index': 'index.garbage.staging',
+    },
+    "production": {
+        # if not clobberer_url, only clobber 'abs_work_dir'
+        # if true: possibly clobber, clobberer, and purge_builds
+        # see PurgeMixin for clobber() conditions
+        'clobberer_url': 'https://api.pub.build.mozilla.org/clobberer/lastclobber',
+        'graph_server': 'graphs.mozilla.org',
+        "hgtool_base_bundle_urls": [
+            'https://ftp-ssl.mozilla.org/pub/mozilla.org/firefox/bundles'
+        ],
+        'symbol_server_host': "symbolpush.mozilla.org",
+        'stage_server': 'stage.mozilla.org',
+        "sendchange_masters": ["buildbot-master81.build.mozilla.org:9301"],
+        'taskcluster_index': 'index',
+    },
+    "taskcluster": {
+        'graph_server': 'graphs.mozilla.org',
+        'symbol_server_host': "symbolpush.mozilla.org",
+        'stage_server': 'stage.mozilla.org',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_base_android_64_builds.py
@@ -0,0 +1,106 @@
+import os
+
+config = {
+    #########################################################################
+    ######## ANDROID GENERIC CONFIG KEYS/VAlUES
+
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'multi-l10n',
+        'update',  # decided by query_is_nightly()
+    ],
+    "buildbot_json_path": "buildprops.json",
+    'exes': {
+        'hgtool.py': os.path.join(
+            os.getcwd(), 'build', 'tools', 'buildfarm', 'utils', 'hgtool.py'
+        ),
+        "buildbot": "/tools/buildbot/bin/buildbot",
+    },
+    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
+    # decides whether we want to use moz_sign_cmd in env
+    'enable_signing': True,
+    'purge_skip': ['info', 'rel-*:45d', 'tb-rel-*:45d'],
+    'purge_basedirs':  ["/mock/users/cltbld/home/cltbld/build"],
+    # mock shtuff
+    'mock_mozilla_dir':  '/builds/mock_mozilla',
+    'mock_target': 'mozilla-centos6-x86_64-android',
+    'mock_files': [
+        ('/home/cltbld/.ssh', '/home/mock_mozilla/.ssh'),
+        ('/home/cltbld/.hgrc', '/builds/.hgrc'),
+        ('/home/cltbld/.boto', '/builds/.boto'),
+        ('/builds/mozilla-api.key', '/builds/mozilla-api.key'),
+        ('/builds/mozilla-fennec-geoloc-api.key', '/builds/mozilla-fennec-geoloc-api.key'),
+        ('/builds/crash-stats-api.token', '/builds/crash-stats-api.token'),
+    ],
+    'enable_ccache': True,
+    'vcs_share_base': '/builds/hg-shared',
+    'objdir': 'obj-firefox',
+    'tooltool_script': ["/builds/tooltool.py"],
+    'tooltool_bootstrap': "setup.sh",
+    'enable_count_ctors': False,
+    'enable_talos_sendchange': True,
+    'enable_unittest_sendchange': True,
+    'multi_locale': True,
+    #########################################################################
+
+
+    #########################################################################
+    'base_name': 'Android 2.3 %(branch)s',
+    'platform': 'android',
+    'stage_platform': 'android',
+    'stage_product': 'mobile',
+    'post_upload_include_platform': True,
+    'enable_max_vsize': False,
+    'use_package_as_marfile': True,
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'DISPLAY': ':2',
+        'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+        'MOZ_OBJDIR': 'obj-firefox',
+        # SYMBOL_SERVER_HOST is dictated from build_pool_specifics.py
+        'SYMBOL_SERVER_HOST': '%(symbol_server_host)s',
+        'SYMBOL_SERVER_SSH_KEY': "/home/mock_mozilla/.ssh/ffxbld_rsa",
+        'SYMBOL_SERVER_USER': 'ffxbld',
+        'SYMBOL_SERVER_PATH': '/mnt/netapp/breakpad/symbols_ffx/',
+        'POST_SYMBOL_UPLOAD_CMD': '/usr/local/bin/post-symbol-upload.py',
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        'PATH': '/tools/buildbot/bin:/usr/local/bin:/bin:/usr/bin',
+        'SHIP_LICENSED_FONTS': '1',
+    },
+    'upload_env': {
+        # stage_server is dictated from build_pool_specifics.py
+        'UPLOAD_HOST': '%(stage_server)s',
+        'UPLOAD_USER': '%(stage_username)s',
+        'UPLOAD_SSH_KEY': '/home/mock_mozilla/.ssh/%(stage_ssh_key)s',
+        'UPLOAD_TO_TEMP': '1',
+    },
+    "check_test_env": {
+        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s/breakpad/linux/minidump_stackwalk',
+        'MINIDUMP_SAVE_PATH': '%(base_work_dir)s/minidumps',
+    },
+    'purge_minsize': 12,
+    'mock_packages': ['autoconf213', 'mozilla-python27-mercurial', 'yasm',
+                      'ccache', 'zip', "gcc472_0moz1", "gcc473_0moz1",
+                      'java-1.7.0-openjdk-devel', 'zlib-devel',
+                      'glibc-static', 'openssh-clients', 'mpfr',
+                      'wget', 'glibc.i686', 'libstdc++.i686',
+                      'zlib.i686', 'freetype-2.3.11-6.el6_1.8.x86_64',
+                      'ant', 'ant-apache-regexp'
+                      ],
+    'src_mozconfig': 'mobile/android/config/mozconfigs/android/nightly',
+    'tooltool_manifest_src': "mobile/android/config/tooltool-manifests/android/releng.manifest",
+    #########################################################################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_base_linux_32_builds.py
@@ -0,0 +1,154 @@
+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
+
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        'generate-build-stats',
+        'update',  # decided by query_is_nightly()
+    ],
+    "buildbot_json_path": "buildprops.json",
+    'exes': {
+        'hgtool.py': os.path.join(
+            os.getcwd(), 'build', 'tools', 'buildfarm', 'utils', 'hgtool.py'
+        ),
+        "buildbot": "/tools/buildbot/bin/buildbot",
+    },
+    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
+    # decides whether we want to use moz_sign_cmd in env
+    'enable_signing': True,
+    'purge_skip': ['info', 'rel-*:45d', 'tb-rel-*:45d'],
+    'purge_basedirs':  ["/mock/users/cltbld/home/cltbld/build"],
+    # mock shtuff
+    'mock_mozilla_dir':  '/builds/mock_mozilla',
+    'mock_target': 'mozilla-centos6-x86_64',
+    'mock_files': [
+        ('/home/cltbld/.ssh', '/home/mock_mozilla/.ssh'),
+        ('/home/cltbld/.hgrc', '/builds/.hgrc'),
+        ('/home/cltbld/.boto', '/builds/.boto'),
+        ('/builds/gapi.data', '/builds/gapi.data'),
+        ('/builds/relengapi.tok', '/builds/relengapi.tok'),
+        ('/tools/tooltool.py', '/builds/tooltool.py'),
+        ('/builds/mozilla-desktop-geoloc-api.key', '/builds/mozilla-desktop-geoloc-api.key'),
+        ('/builds/crash-stats-api.token', '/builds/crash-stats-api.token'),
+        ('/builds/adjust-sdk.token', '/builds/adjust-sdk.token'),
+    ],
+    'enable_ccache': True,
+    'vcs_share_base': '/builds/hg-shared',
+    'objdir': 'obj-firefox',
+    'tooltool_script': ["/builds/tooltool.py"],
+    'tooltool_bootstrap': "setup.sh",
+    'enable_count_ctors': True,
+    'enable_talos_sendchange': True,
+    'enable_unittest_sendchange': True,
+    #########################################################################
+
+
+    #########################################################################
+    ###### 32 bit specific ######
+    'base_name': 'Linux_%(branch)s',
+    'platform': 'linux',
+    'stage_platform': 'linux',
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'DISPLAY': ':2',
+        'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+        'MOZ_OBJDIR': 'obj-firefox',
+        # SYMBOL_SERVER_HOST is dictated from build_pool_specifics.py
+        'SYMBOL_SERVER_HOST': '%(symbol_server_host)s',
+        'SYMBOL_SERVER_SSH_KEY': "/home/mock_mozilla/.ssh/ffxbld_rsa",
+        'SYMBOL_SERVER_USER': 'ffxbld',
+        'SYMBOL_SERVER_PATH': '/mnt/netapp/breakpad/symbols_ffx/',
+        'POST_SYMBOL_UPLOAD_CMD': '/usr/local/bin/post-symbol-upload.py',
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        # 32 bit specific
+        'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib/ccache:\
+/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:\
+/tools/python27/bin:/tools/python27-mercurial/bin:/home/cltbld/bin',
+        'LD_LIBRARY_PATH': "/tools/gcc-4.3.3/installed/lib",
+    },
+    'upload_env': {
+        # stage_server is dictated from build_pool_specifics.py
+        'UPLOAD_HOST': '%(stage_server)s',
+        'UPLOAD_USER': '%(stage_username)s',
+        'UPLOAD_SSH_KEY': '/home/mock_mozilla/.ssh/%(stage_ssh_key)s',
+        'UPLOAD_TO_TEMP': '1',
+    },
+    "check_test_env": {
+        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s/breakpad/linux/minidump_stackwalk',
+        'MINIDUMP_SAVE_PATH': '%(base_work_dir)s/minidumps',
+    },
+    'purge_minsize': 12,
+    'mock_packages': [
+        'autoconf213', 'python', 'mozilla-python27', 'zip', 'mozilla-python27-mercurial',
+        'git', 'ccache', 'perl-Test-Simple', 'perl-Config-General',
+        'yasm', 'wget',
+        'mpfr',  # required for system compiler
+        'xorg-x11-font*',  # fonts required for PGO
+        'imake',  # required for makedepend!?!
+        ### <-- from releng repo
+        'gcc45_0moz3', 'gcc454_0moz1', 'gcc472_0moz1', 'gcc473_0moz1',
+        'yasm', 'ccache',
+        ###
+        'valgrind',
+        ######## 32 bit specific ###########
+        'glibc-static.i686', 'libstdc++-static.i686',
+        'gtk2-devel.i686', 'libnotify-devel.i686',
+        'alsa-lib-devel.i686', 'libcurl-devel.i686',
+        'wireless-tools-devel.i686', 'libX11-devel.i686',
+        'libXt-devel.i686', 'mesa-libGL-devel.i686',
+        'gnome-vfs2-devel.i686', 'GConf2-devel.i686',
+        'pulseaudio-libs-devel.i686',
+        'gstreamer-devel.i686', 'gstreamer-plugins-base-devel.i686',
+        # Packages already installed in the mock environment, as x86_64
+        # packages.
+        'glibc-devel.i686', 'libgcc.i686', 'libstdc++-devel.i686',
+        # yum likes to install .x86_64 -devel packages that satisfy .i686
+        # -devel packages dependencies. So manually install the dependencies
+        # of the above packages.
+        'ORBit2-devel.i686', 'atk-devel.i686', 'cairo-devel.i686',
+        'check-devel.i686', 'dbus-devel.i686', 'dbus-glib-devel.i686',
+        'fontconfig-devel.i686', 'glib2-devel.i686',
+        'hal-devel.i686', 'libICE-devel.i686', 'libIDL-devel.i686',
+        'libSM-devel.i686', 'libXau-devel.i686', 'libXcomposite-devel.i686',
+        'libXcursor-devel.i686', 'libXdamage-devel.i686',
+        'libXdmcp-devel.i686', 'libXext-devel.i686', 'libXfixes-devel.i686',
+        'libXft-devel.i686', 'libXi-devel.i686', 'libXinerama-devel.i686',
+        'libXrandr-devel.i686', 'libXrender-devel.i686',
+        'libXxf86vm-devel.i686', 'libdrm-devel.i686', 'libidn-devel.i686',
+        'libpng-devel.i686', 'libxcb-devel.i686', 'libxml2-devel.i686',
+        'pango-devel.i686', 'perl-devel.i686', 'pixman-devel.i686',
+        'zlib-devel.i686',
+        # Freetype packages need to be installed be version, because a newer
+        # version is available, but we don't want it for Firefox builds.
+        'freetype-2.3.11-6.el6_1.8.i686',
+        'freetype-devel-2.3.11-6.el6_1.8.i686',
+        'freetype-2.3.11-6.el6_1.8.x86_64',
+        ######## 32 bit specific ###########
+    ],
+    'src_mozconfig': 'browser/config/mozconfigs/linux32/nightly',
+    'tooltool_manifest_src': "browser/config/tooltool-manifests/linux32/\
+releng.manifest",
+    #########################################################################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_base_linux_64_builds.py
@@ -0,0 +1,135 @@
+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',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        'generate-build-stats',
+        'update',  # decided by query_is_nightly()
+    ],
+    "buildbot_json_path": "buildprops.json",
+    'exes': {
+        'hgtool.py': os.path.join(
+            os.getcwd(), 'build', 'tools', 'buildfarm', 'utils', 'hgtool.py'
+        ),
+        "buildbot": "/tools/buildbot/bin/buildbot",
+    },
+    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
+    # decides whether we want to use moz_sign_cmd in env
+    'enable_signing': True,
+    'purge_skip': ['info', 'rel-*:45d', 'tb-rel-*:45d'],
+    'purge_basedirs':  ["/mock/users/cltbld/home/cltbld/build"],
+    # mock shtuff
+    'mock_mozilla_dir':  '/builds/mock_mozilla',
+    'mock_target': 'mozilla-centos6-x86_64',
+    'mock_files': [
+        ('/home/cltbld/.ssh', '/home/mock_mozilla/.ssh'),
+        ('/home/cltbld/.hgrc', '/builds/.hgrc'),
+        ('/home/cltbld/.boto', '/builds/.boto'),
+        ('/builds/gapi.data', '/builds/gapi.data'),
+        ('/builds/relengapi.tok', '/builds/relengapi.tok'),
+        ('/tools/tooltool.py', '/builds/tooltool.py'),
+        ('/builds/mozilla-desktop-geoloc-api.key', '/builds/mozilla-desktop-geoloc-api.key'),
+        ('/builds/crash-stats-api.token', '/builds/crash-stats-api.token'),
+        ('/builds/adjust-sdk.token', '/builds/adjust-sdk.token'),
+    ],
+    'enable_ccache': True,
+    'vcs_share_base': '/builds/hg-shared',
+    'objdir': 'obj-firefox',
+    'tooltool_script': ["/builds/tooltool.py"],
+    'tooltool_bootstrap': "setup.sh",
+    'enable_count_ctors': True,
+    'enable_talos_sendchange': True,
+    'enable_unittest_sendchange': True,
+    #########################################################################
+
+
+    #########################################################################
+    ###### 64 bit specific ######
+    'base_name': 'Linux_x86-64_%(branch)s',
+    'platform': 'linux64',
+    'stage_platform': 'linux64',
+    'use_platform_in_symbols_extra_buildid': True,
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'DISPLAY': ':2',
+        'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+        'MOZ_OBJDIR': 'obj-firefox',
+        # SYMBOL_SERVER_HOST is dictated from build_pool_specifics.py
+        'SYMBOL_SERVER_HOST': '%(symbol_server_host)s',
+        'SYMBOL_SERVER_SSH_KEY': "/home/mock_mozilla/.ssh/ffxbld_rsa",
+        'SYMBOL_SERVER_USER': 'ffxbld',
+        'SYMBOL_SERVER_PATH': '/mnt/netapp/breakpad/symbols_ffx/',
+        'POST_SYMBOL_UPLOAD_CMD': '/usr/local/bin/post-symbol-upload.py',
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        ## 64 bit specific
+        'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib64/ccache:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:/tools/python27/bin:\
+/tools/python27-mercurial/bin:/home/cltbld/bin',
+        'LD_LIBRARY_PATH': "/tools/gcc-4.3.3/installed/lib64",
+        ##
+    },
+    'upload_env': {
+        # stage_server is dictated from build_pool_specifics.py
+        'UPLOAD_HOST': '%(stage_server)s',
+        'UPLOAD_USER': '%(stage_username)s',
+        'UPLOAD_SSH_KEY': '/home/mock_mozilla/.ssh/%(stage_ssh_key)s',
+        'UPLOAD_TO_TEMP': '1',
+    },
+    "check_test_env": {
+        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s/breakpad/linux64/minidump_stackwalk',
+        'MINIDUMP_SAVE_PATH': '%(base_work_dir)s/minidumps',
+    },
+    'purge_minsize': 14,
+    'mock_packages': [
+        'autoconf213', 'python', 'mozilla-python27', 'zip', 'mozilla-python27-mercurial',
+        'git', 'ccache', 'perl-Test-Simple', 'perl-Config-General',
+        'yasm', 'wget',
+        'mpfr',  # required for system compiler
+        'xorg-x11-font*',  # fonts required for PGO
+        'imake',  # required for makedepend!?!
+        ### <-- from releng repo
+        'gcc45_0moz3', 'gcc454_0moz1', 'gcc472_0moz1', 'gcc473_0moz1',
+        'yasm', 'ccache',
+        ###
+        'valgrind', 'dbus-x11',
+        ######## 64 bit specific ###########
+        'glibc-static', 'libstdc++-static',
+        'gtk2-devel', 'libnotify-devel',
+        'alsa-lib-devel', 'libcurl-devel', 'wireless-tools-devel',
+        'libX11-devel', 'libXt-devel', 'mesa-libGL-devel', 'gnome-vfs2-devel',
+        'GConf2-devel',
+        ### from releng repo
+        'gcc45_0moz3', 'gcc454_0moz1', 'gcc472_0moz1', 'gcc473_0moz1',
+        'yasm', 'ccache',
+        ###
+        'pulseaudio-libs-devel', 'gstreamer-devel',
+        'gstreamer-plugins-base-devel', 'freetype-2.3.11-6.el6_1.8.x86_64',
+        'freetype-devel-2.3.11-6.el6_1.8.x86_64'
+    ],
+    'src_mozconfig': 'browser/config/mozconfigs/linux64/nightly',
+    'tooltool_manifest_src': "browser/config/tooltool-manifests/linux64/\
+releng.manifest",
+    #########################################################################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_base_mac_64_builds.py
@@ -0,0 +1,91 @@
+import os
+import sys
+
+config = {
+    #########################################################################
+    ######## MACOSX GENERIC CONFIG KEYS/VAlUES
+
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        # 'setup-mock',
+        'checkout-sources',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        'generate-build-stats',
+        'update',  # decided by query_is_nightly()
+    ],
+    "buildbot_json_path": "buildprops.json",
+    'exes': {
+        'python2.7': sys.executable,
+        'hgtool.py': os.path.join(
+            os.getcwd(), 'build', 'tools', 'buildfarm', 'utils', 'hgtool.py'
+        ),
+        "buildbot": "/tools/buildbot/bin/buildbot",
+    },
+    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
+    # decides whether we want to use moz_sign_cmd in env
+    'enable_signing': True,
+    'purge_skip': ['info', 'rel-*:45d', 'tb-rel-*:45d'],
+    'purge_basedirs':  [],
+    'enable_ccache': True,
+    'vcs_share_base': '/builds/hg-shared',
+    'objdir': 'obj-firefox/i386',
+    'tooltool_script': ["/builds/tooltool.py"],
+    'tooltool_bootstrap': "setup.sh",
+    'enable_count_ctors': False,
+    'enable_talos_sendchange': True,
+    'enable_unittest_sendchange': True,
+    #########################################################################
+
+
+    #########################################################################
+    ###### 64 bit specific ######
+    'base_name': 'OS X 10.7 %(branch)s',
+    'platform': 'macosx64',
+    'stage_platform': 'macosx64',
+    'use_platform_in_symbols_extra_buildid': True,
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+        'MOZ_OBJDIR': 'obj-firefox',
+        # SYMBOL_SERVER_HOST is dictated from build_pool_specifics.py
+        'SYMBOL_SERVER_HOST': '%(symbol_server_host)s',
+        'SYMBOL_SERVER_SSH_KEY': "/Users/cltbld/.ssh/ffxbld_rsa",
+        'SYMBOL_SERVER_USER': 'ffxbld',
+        'SYMBOL_SERVER_PATH': '/mnt/netapp/breakpad/symbols_ffx/',
+        'POST_SYMBOL_UPLOAD_CMD': '/usr/local/bin/post-symbol-upload.py',
+        'CHOWN_ROOT': '~/bin/chown_root',
+        'CHOWN_REVERT': '~/bin/chown_revert',
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        ## 64 bit specific
+        'PATH': '/tools/python/bin:/tools/buildbot/bin:/opt/local/bin:/usr/bin:'
+                '/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin',
+        ##
+    },
+    'upload_env': {
+        # stage_server is dictated from build_pool_specifics.py
+        'UPLOAD_HOST': '%(stage_server)s',
+        'UPLOAD_USER': '%(stage_username)s',
+        'UPLOAD_SSH_KEY': '/Users/cltbld/.ssh/%(stage_ssh_key)s',
+        'UPLOAD_TO_TEMP': '1',
+    },
+    "check_test_env": {
+        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s/breakpad/osx64/minidump_stackwalk',
+        'MINIDUMP_SAVE_PATH': '%(base_work_dir)s/minidumps',
+    },
+    'purge_minsize': 12,
+    'src_mozconfig': 'browser/config/mozconfigs/macosx-universal/nightly',
+    'tooltool_manifest_src': 'browser/config/tooltool-manifests/macosx64/releng.manifest',
+    #########################################################################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_base_windows_32_builds.py
@@ -0,0 +1,113 @@
+import os
+import sys
+
+config = {
+    #########################################################################
+    ######## WINDOWS GENERIC CONFIG KEYS/VAlUES
+    # if you are updating this with custom 32 bit keys/values please add them
+    # below under the '32 bit specific' code block otherwise, update in this
+    # code block and also make sure this is synced with
+    # releng_base_windows_64_builds.py
+
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        # 'setup-mock', windows do not use mock
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        'generate-build-stats',
+        'update',  # decided by query_is_nightly()
+    ],
+    "buildbot_json_path": "buildprops.json",
+    'exes': {
+        'python2.7': sys.executable,
+        'hgtool.py': [
+            sys.executable,
+            os.path.join(
+                os.getcwd(), 'build', 'tools', 'buildfarm', 'utils', 'hgtool.py'
+            )
+        ],
+        "buildbot": {
+            'gpo_location': [
+                sys.executable,
+                'c:\\mozilla-build\\buildbotve\\scripts\\buildbot'
+            ],
+            'puppet_location': [
+                sys.executable,
+                'c:\\mozilla-build\\buildbot-0.8.4-pre-moz6\\scripts\\buildbot'
+            ]
+        },
+        "make": [
+            sys.executable,
+            os.path.join(
+                os.getcwd(), 'build', 'src', 'build', 'pymake', 'make.py'
+            )
+        ],
+        'virtualenv': [
+            sys.executable,
+            'c:/mozilla-build/buildbotve/virtualenv.py'
+        ],
+    },
+    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
+    # decides whether we want to use moz_sign_cmd in env
+    'enable_signing': True,
+    'purge_skip': ['info', 'rel-*:45d', 'tb-rel-*:45d'],
+    'purge_basedirs':  [],
+    'enable_ccache': False,
+    'vcs_share_base': 'C:/builds/hg-shared',
+    'objdir': 'obj-firefox',
+    'tooltool_script': [sys.executable,
+                        'C:/mozilla-build/tooltool.py'],
+    'tooltool_bootstrap': "setup.sh",
+    'enable_count_ctors': False,
+    'enable_talos_sendchange': True,
+    'enable_unittest_sendchange': True,
+    'max_build_output_timeout': 60 * 80,
+    #########################################################################
+
+
+     #########################################################################
+     ###### 32 bit specific ######
+    'base_name': 'WINNT_5.2_%(branch)s',
+    'platform': 'win32',
+    'stage_platform': 'win32',
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'BINSCOPE': 'C:/Program Files (x86)/Microsoft/SDL BinScope/BinScope.exe',
+        'HG_SHARE_BASE_DIR': 'C:/builds/hg-shared',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'MOZ_OBJDIR': 'obj-firefox',
+        'PATH': 'C:/mozilla-build/nsis-3.0b1;C:/mozilla-build/nsis-2.46u;C:/mozilla-build/python27;'
+                'C:/mozilla-build/buildbotve/scripts;'
+                '%s' % (os.environ.get('path')),
+        'PDBSTR_PATH': '/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe',
+        'PROPERTIES_FILE': os.path.join(os.getcwd(), 'buildprops.json'),
+        # SYMBOL_SERVER_HOST is dictated from build_pool_specifics.py
+        'SYMBOL_SERVER_HOST': '%(symbol_server_host)s',
+        'SYMBOL_SERVER_SSH_KEY': '/c/Users/cltbld/.ssh/ffxbld_rsa',
+        'SYMBOL_SERVER_USER': 'ffxbld',
+        'SYMBOL_SERVER_PATH': '/mnt/netapp/breakpad/symbols_ffx/',
+        'POST_SYMBOL_UPLOAD_CMD': '/usr/local/bin/post-symbol-upload.py',
+        'TINDERBOX_OUTPUT': '1',
+    },
+    'upload_env': {
+        # stage_server is dictated from build_pool_specifics.py
+        'UPLOAD_HOST': '%(stage_server)s',
+        'UPLOAD_USER': '%(stage_username)s',
+        'UPLOAD_SSH_KEY': '/c/Users/cltbld/.ssh/%(stage_ssh_key)s',
+        'UPLOAD_TO_TEMP': '1',
+    },
+    "check_test_env": {
+        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s/breakpad/win32/minidump_stackwalk.exe',
+        'MINIDUMP_SAVE_PATH': '%(base_work_dir)s/minidumps',
+    },
+    'enable_pymake': True,
+    'purge_minsize': 12,
+    'src_mozconfig': 'browser/config/mozconfigs/win32/nightly',
+    'tooltool_manifest_src': "browser/config/tooltool-manifests/win32/releng.manifest",
+    #########################################################################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_base_windows_64_builds.py
@@ -0,0 +1,111 @@
+import os
+import sys
+
+config = {
+    #########################################################################
+    ######## WINDOWS GENERIC CONFIG KEYS/VAlUES
+    # if you are updating this with custom 32 bit keys/values please add them
+    # below under the '32 bit specific' code block otherwise, update in this
+    # code block and also make sure this is synced with
+    # releng_base_windows_64_builds.py
+
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        # 'setup-mock', windows do not use mock
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        'generate-build-stats',
+        'update',  # decided by query_is_nightly()
+    ],
+    "buildbot_json_path": "buildprops.json",
+    'exes': {
+        'python2.7': sys.executable,
+        'hgtool.py': [
+            sys.executable,
+            os.path.join(
+                os.getcwd(), 'build', 'tools', 'buildfarm', 'utils', 'hgtool.py'
+            )
+        ],
+        "buildbot": {
+            'gpo_location': [
+                sys.executable,
+                'c:\\mozilla-build\\buildbotve\\scripts\\buildbot'
+            ],
+            'puppet_location': [
+                sys.executable,
+                'c:\\mozilla-build\\buildbot-0.8.4-pre-moz6\\scripts\\buildbot'
+            ]
+        },
+        "make": [
+            sys.executable,
+            os.path.join(
+                os.getcwd(), 'build', 'src', 'build', 'pymake', 'make.py'
+            )
+        ],
+        'virtualenv': [
+            sys.executable,
+            'c:/mozilla-build/buildbotve/virtualenv.py'
+        ],
+    },
+    'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
+    # decides whether we want to use moz_sign_cmd in env
+    'enable_signing': True,
+    'purge_skip': ['info', 'rel-*:45d', 'tb-rel-*:45d'],
+    'purge_basedirs':  [],
+    'enable_ccache': False,
+    'vcs_share_base': 'C:/builds/hg-shared',
+    'objdir': 'obj-firefox',
+    'tooltool_script': [sys.executable,
+                        'C:/mozilla-build/tooltool.py'],
+    'tooltool_bootstrap': "setup.sh",
+    'enable_count_ctors': False,
+    'enable_talos_sendchange': True,
+    'enable_unittest_sendchange': True,
+    'max_build_output_timeout': 60 * 80,
+    #########################################################################
+
+
+     #########################################################################
+     ###### 64 bit specific ######
+    'base_name': 'WINNT_6.1_x86-64_%(branch)s',
+    'platform': 'win64',
+    'stage_platform': 'win64',
+    'env': {
+        'MOZ_SYMBOLS_EXTRA_BUILDID': 'win64',
+        'MOZ_AUTOMATION': '1',
+        'HG_SHARE_BASE_DIR': 'C:/builds/hg-shared',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'MOZ_OBJDIR': 'obj-firefox',
+        'PATH': 'C:/mozilla-build/python27;C:/mozilla-build/buildbotve/scripts;'
+                '%s' % (os.environ.get('path')),
+        'PDBSTR_PATH': '/c/Program Files (x86)/Windows Kits/8.0/Debuggers/x64/srcsrv/pdbstr.exe',
+        'PROPERTIES_FILE': os.path.join(os.getcwd(), 'buildprops.json'),
+        # SYMBOL_SERVER_HOST is dictated from build_pool_specifics.py
+        'SYMBOL_SERVER_HOST': '%(symbol_server_host)s',
+        'SYMBOL_SERVER_SSH_KEY': '/c/Users/cltbld/.ssh/ffxbld_rsa',
+        'SYMBOL_SERVER_USER': 'ffxbld',
+        'SYMBOL_SERVER_PATH': '/mnt/netapp/breakpad/symbols_ffx/',
+        'POST_SYMBOL_UPLOAD_CMD': '/usr/local/bin/post-symbol-upload.py',
+        'TINDERBOX_OUTPUT': '1',
+    },
+    'upload_env': {
+        # stage_server is dictated from build_pool_specifics.py
+        'UPLOAD_HOST': '%(stage_server)s',
+        'UPLOAD_USER': '%(stage_username)s',
+        'UPLOAD_SSH_KEY': '/c/Users/cltbld/.ssh/%(stage_ssh_key)s',
+        'UPLOAD_TO_TEMP': '1',
+    },
+    "check_test_env": {
+        'MINIDUMP_STACKWALK': '%(abs_tools_dir)s/breakpad/win64/minidump_stackwalk.exe',
+        'MINIDUMP_SAVE_PATH': '%(base_work_dir)s/minidumps',
+    },
+    'enable_pymake': True,
+    'purge_minsize': 12,
+    'src_mozconfig': 'browser/config/mozconfigs/win64/nightly',
+    'tooltool_manifest_src': "browser/config/tooltool-manifests/win64/releng.manifest",
+    #########################################################################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_11.py
@@ -0,0 +1,7 @@
+config = {
+    'base_name': 'Android armv7 API 11+ %(branch)s',
+    'stage_platform': 'android-api-11',
+    'src_mozconfig': 'mobile/android/config/mozconfigs/android-api-11/nightly',
+    'tooltool_manifest_src': 'mobile/android/config/tooltool-manifests/android/releng.manifest',
+    'multi_locale_config_platform': 'android',
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_11_debug.py
@@ -0,0 +1,8 @@
+config = {
+    'base_name': 'Android armv7 API 11+ %(branch)s debug',
+    'stage_platform': 'android-api-11-debug',
+    'src_mozconfig': 'mobile/android/config/mozconfigs/android-api-11/debug',
+    'tooltool_manifest_src': 'mobile/android/config/tooltool-manifests/android/releng.manifest',
+    'multi_locale_config_platform': 'android',
+    'debug_build': True,
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_9.py
@@ -0,0 +1,7 @@
+config = {
+    'base_name': 'Android armv7 API 9 %(branch)s',
+    'stage_platform': 'android-api-9',
+    'src_mozconfig': 'mobile/android/config/mozconfigs/android-api-9-10-constrained/nightly',
+    'tooltool_manifest_src': 'mobile/android/config/tooltool-manifests/android/releng.manifest',
+    'multi_locale_config_platform': 'android',
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_9_debug.py
@@ -0,0 +1,8 @@
+config = {
+    'base_name': 'Android armv7 API 9 %(branch)s debug',
+    'stage_platform': 'android-api-9-debug',
+    'src_mozconfig': 'mobile/android/config/mozconfigs/android-api-9-10-constrained/debug',
+    'tooltool_manifest_src': 'mobile/android/config/tooltool-manifests/android/releng.manifest',
+    'multi_locale_config_platform': 'android',
+    'debug_build': True,
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_android_configs/64_x86.py
@@ -0,0 +1,6 @@
+config = {
+    'base_name': 'Android 4.2 x86 %(branch)s',
+    'stage_platform': 'android-x86',
+    'src_mozconfig': 'mobile/android/config/mozconfigs/android-x86/nightly',
+    'tooltool_manifest_src': 'mobile/android/config/tooltool-manifests/android-x86/releng.manifest',
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/32_debug.py
@@ -0,0 +1,46 @@
+import os
+
+MOZ_OBJDIR = 'obj-firefox'
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        # 'generate-build-stats',
+        'update',  # decided by query_is_nightly()
+    ],
+    'debug_build': True,
+    'stage_platform': 'linux-debug',
+    'purge_minsize': 15,
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    #### 32 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': MOZ_OBJDIR,
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        # 32 bit specific
+        'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib/ccache:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:/tools/python27/bin:\
+/tools/python27-mercurial/bin:/home/cltbld/bin',
+        'LD_LIBRARY_PATH': '/tools/gcc-4.3.3/installed/lib:\
+%s/dist/bin' % (MOZ_OBJDIR,),
+        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
+        'TINDERBOX_OUTPUT': '1',
+    },
+    'src_mozconfig': 'browser/config/mozconfigs/linux32/debug',
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan.py
@@ -0,0 +1,47 @@
+import os
+
+MOZ_OBJDIR = 'obj-firefox'
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        # 'generate-build-stats',
+        # 'update',
+    ],
+    'stage_platform': 'linux64-asan',
+    'purge_minsize': 12,
+    'tooltool_manifest_src': "browser/config/tooltool-manifests/linux64/\
+asan.manifest",
+    'platform_supports_post_upload_to_latest': False,
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    #### 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': 'obj-firefox',
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        ## 64 bit specific
+        'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib64/ccache:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:/tools/python27/bin:\
+/tools/python27-mercurial/bin:/home/cltbld/bin',
+    },
+    'src_mozconfig': 'browser/config/mozconfigs/linux64/nightly-asan',
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_and_debug.py
@@ -0,0 +1,48 @@
+import os
+
+MOZ_OBJDIR = 'obj-firefox'
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        # 'generate-build-stats',
+        # 'update',
+    ],
+    'stage_platform': 'linux64-asan-debug',
+    'debug_build': True,
+    'purge_minsize': 12,
+    'tooltool_manifest_src': "browser/config/tooltool-manifests/linux64/\
+asan.manifest",
+    'platform_supports_post_upload_to_latest': False,
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    #### 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': 'obj-firefox',
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        ## 64 bit specific
+        'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib64/ccache:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:/tools/python27/bin:\
+/tools/python27-mercurial/bin:/home/cltbld/bin',
+    },
+    'src_mozconfig': 'browser/config/mozconfigs/linux64/debug-asan',
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_code_coverage.py
@@ -0,0 +1,45 @@
+import os
+
+MOZ_OBJDIR = 'obj-firefox'
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        # 'generate-build-stats',
+        'update',  # decided by query_is_nightly()
+    ],
+    'stage_platform': 'linux64-cc',
+    'platform_supports_post_upload_to_latest': False,
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    'enable_count_ctors': False,
+    #### 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': 'obj-firefox',
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        ## 64 bit specific
+        'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib64/ccache:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:/tools/python27/bin:\
+/tools/python27-mercurial/bin:/home/cltbld/bin',
+    },
+    'src_mozconfig': 'browser/config/mozconfigs/linux64/code-coverage',
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_debug.py
@@ -0,0 +1,45 @@
+import os
+
+MOZ_OBJDIR = 'obj-firefox'
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        # 'generate-build-stats',
+        'update',  # decided by query_is_nightly()
+    ],
+    'stage_platform': 'linux64-debug',
+    'debug_build': True,
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    #### 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': MOZ_OBJDIR,
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
+        # 64 bit specific
+        'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib64/ccache:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:/tools/python27/bin:\
+/tools/python27-mercurial/bin:/home/cltbld/bin',
+        'LD_LIBRARY_PATH': '/tools/gcc-4.3.3/installed/lib64:\
+%s/dist/bin' % (MOZ_OBJDIR,),
+        'TINDERBOX_OUTPUT': '1',
+    },
+    'src_mozconfig': 'browser/config/mozconfigs/linux64/debug',
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_graphene.py
@@ -0,0 +1,45 @@
+import os
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        'update',  # may or may not happen based on query_is_nightly()
+    ],
+    'stage_platform': 'linux64',
+    'stage_product': 'b2g',
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    'enable_unittest_sendchange': False,
+    'enable_count_ctors': False,
+    'objdir': 'obj-graphene',
+    #### 64 bit build specific #####
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+        'MOZ_OBJDIR': 'obj-graphene',
+        'TINDERBOX_OUTPUT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        ## 64 bit specific
+        'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib64/ccache:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:/tools/python27/bin:\
+/tools/python27-mercurial/bin:/home/cltbld/bin',
+        "SYMBOL_SERVER_HOST": "%(symbol_server_host)s",
+        "SYMBOL_SERVER_SSH_KEY": "/home/mock_mozilla/.ssh/ffxbld_rsa",
+        "SYMBOL_SERVER_USER": "ffxbld",
+        "SYMBOL_SERVER_PATH": "/mnt/netapp/breakpad/symbols_ffx",
+    },
+    'src_mozconfig': 'b2g/graphene/config/mozconfigs/linux64/nightly',
+    'balrog_platform': 'linux64',
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_horizon.py
@@ -0,0 +1,45 @@
+import os
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        'update',  # may or may not happen based on query_is_nightly()
+    ],
+    'stage_platform': 'linux64',
+    'stage_product': 'b2g',
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    'enable_unittest_sendchange': False,
+    'enable_count_ctors': False,
+    'objdir': 'obj-horizon',
+    #### 64 bit build specific #####
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+        'MOZ_OBJDIR': 'obj-horizon',
+        'TINDERBOX_OUTPUT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        ## 64 bit specific
+        'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib64/ccache:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:/tools/python27/bin:\
+/tools/python27-mercurial/bin:/home/cltbld/bin',
+        "SYMBOL_SERVER_HOST": "%(symbol_server_host)s",
+        "SYMBOL_SERVER_SSH_KEY": "/home/mock_mozilla/.ssh/ffxbld_rsa",
+        "SYMBOL_SERVER_USER": "ffxbld",
+        "SYMBOL_SERVER_PATH": "/mnt/netapp/breakpad/symbols_ffx",
+    },
+    'src_mozconfig': 'b2g/graphene/config/horizon-mozconfigs/linux64/nightly',
+    'balrog_platform': 'linux64',
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_mulet.py
@@ -0,0 +1,42 @@
+import os
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+    ],
+    'stage_platform': 'linux64-mulet',
+    'stage_product': 'b2g',
+    'tooltool_manifest_src': "b2g/dev/config/tooltool-manifests/linux64/releng.manifest",
+    'platform_supports_post_upload_to_latest': False,
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    'enable_count_ctors': False,
+    #### 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': 'obj-firefox',
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        ## 64 bit specific
+        'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib64/ccache:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:/tools/python27/bin:\
+/tools/python27-mercurial/bin:/home/cltbld/bin',
+    },
+    'src_mozconfig': 'b2g/dev/config/mozconfigs/linux64/mulet',
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_source.py
@@ -0,0 +1,19 @@
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'package-source',
+    ],
+    'stage_platform': 'source',  # Not used, but required by the script
+    'purge_minsize': 3,
+    'buildbot_json_path': 'buildprops.json',
+    'app_ini_path': 'FAKE',  # Not used, but required by the script
+    'objdir': 'obj-firefox',
+    'env': {
+        'MOZ_OBJDIR': 'obj-firefox',
+        'TINDERBOX_OUTPUT': '1',
+        'LC_ALL': 'C',
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_stat_and_debug.py
@@ -0,0 +1,51 @@
+import os
+
+MOZ_OBJDIR = 'obj-firefox'
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        # 'generate-build-stats',
+        'update',  # decided by query_is_nightly()
+    ],
+    'debug_build': True,
+    'stage_platform': 'linux64-st-an-debug',
+    'purge_minsize': 12,
+    'tooltool_manifest_src': "browser/config/tooltool-manifests/linux64/\
+clang.manifest",
+    'platform_supports_post_upload_to_latest': False,
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    'enable_unittest_sendchange': False,
+    #### 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': MOZ_OBJDIR,
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
+        # 64 bit specific
+        'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib64/ccache:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:/tools/python27/bin:\
+/tools/python27-mercurial/bin:/home/cltbld/bin',
+    },
+    'src_mozconfig': 'browser/config/mozconfigs/linux64/\
+debug-static-analysis-clang',
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_debug.py
@@ -0,0 +1,45 @@
+import os
+
+MOZ_OBJDIR = 'obj-firefox'
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        # 'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        # 'generate-build-stats',
+        'update',  # decided by query_is_nightly()
+    ],
+    'stage_platform': 'macosx64-debug',
+    'debug_build': True,
+    'objdir': 'obj-firefox',
+    'enable_talos_sendchange': False,
+    #### 64 bit build specific #####
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+        'MOZ_OBJDIR': 'obj-firefox',
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
+        ## 64 bit specific
+        'PATH': '/tools/python/bin:/tools/buildbot/bin:/opt/local/bin:/usr/bin:'
+                '/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin',
+        ##
+    },
+    'src_mozconfig': 'browser/config/mozconfigs/macosx64/debug',
+    'purge_minsize': 10,
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_graphene.py
@@ -0,0 +1,43 @@
+import os
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        'update',  # may or may not happen based on query_is_nightly()
+    ],
+    'stage_platform': 'mac',
+    'stage_product': 'b2g',
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    'enable_unittest_sendchange': False,
+    'enable_count_ctors': False,
+    'objdir': 'obj-graphene',
+    #### 64 bit build specific #####
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+        'MOZ_OBJDIR': 'obj-graphene',
+        'TINDERBOX_OUTPUT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        ## 64 bit specific
+        'PATH': '/tools/python/bin:/tools/buildbot/bin:/opt/local/bin:/usr/bin:'
+                '/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin',
+        "SYMBOL_SERVER_HOST": "%(symbol_server_host)s",
+        "SYMBOL_SERVER_SSH_KEY": "/Users/cltbld/.ssh/ffxbld_rsa",
+        "SYMBOL_SERVER_USER": "ffxbld",
+        "SYMBOL_SERVER_PATH": "/mnt/netapp/breakpad/symbols_ffx",
+    },
+    'src_mozconfig': 'b2g/graphene/config/mozconfigs/macosx64/nightly',
+    'balrog_platform': 'macosx64',
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_horizon.py
@@ -0,0 +1,43 @@
+import os
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        'update',  # may or may not happen based on query_is_nightly()
+    ],
+    'stage_platform': 'mac',
+    'stage_product': 'b2g',
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    'enable_unittest_sendchange': False,
+    'enable_count_ctors': False,
+    'objdir': 'obj-horizon',
+    #### 64 bit build specific #####
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+        'MOZ_OBJDIR': 'obj-horizon',
+        'TINDERBOX_OUTPUT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        ## 64 bit specific
+        'PATH': '/tools/python/bin:/tools/buildbot/bin:/opt/local/bin:/usr/bin:'
+                '/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin',
+        "SYMBOL_SERVER_HOST": "%(symbol_server_host)s",
+        "SYMBOL_SERVER_SSH_KEY": "/Users/cltbld/.ssh/ffxbld_rsa",
+        "SYMBOL_SERVER_USER": "ffxbld",
+        "SYMBOL_SERVER_PATH": "/mnt/netapp/breakpad/symbols_ffx",
+    },
+    'src_mozconfig': 'b2g/graphene/config/horizon-mozconfigs/macosx64/nightly',
+    'balrog_platform': 'macosx64',
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_mulet.py
@@ -0,0 +1,42 @@
+import os
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'build',
+        'upload-files',
+        'sendchange',
+    ],
+    'stage_platform': 'macosx64-mulet',
+    'stage_product': 'b2g',
+    'tooltool_manifest_src': "b2g/dev/config/tooltool-manifests/macosx64/releng.manifest",
+    'objdir': 'obj-firefox',
+    'enable_signing': False,
+    'enable_unittest_sendchange': False,
+    'enable_talos_sendchange': False,
+    #### 64 bit build specific #####
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+        'MOZ_OBJDIR': 'obj-firefox',
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
+        ## 64 bit specific
+        'PATH': '/tools/python/bin:/tools/buildbot/bin:/opt/local/bin:/usr/bin:'
+                '/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin',
+        ##
+    },
+    'src_mozconfig': 'b2g/dev/config/mozconfigs/macosx64/mulet',
+    'purge_minsize': 10,
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_stat_and_debug.py
@@ -0,0 +1,50 @@
+import os
+
+MOZ_OBJDIR = 'obj-firefox'
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        # 'setup-mock',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        # 'generate-build-stats',
+        'update',  # decided by query_is_nightly()
+    ],
+    'debug_build': True,
+    'stage_platform': 'macosx64-st-an-debug',
+    'purge_minsize': 12,
+    'tooltool_manifest_src': "browser/config/tooltool-manifests/macosx64/\
+clang.manifest",
+    'platform_supports_post_upload_to_latest': False,
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    'enable_unittest_sendchange': False,
+    'objdir': MOZ_OBJDIR,
+    #### 64 bit build specific #####
+    'env': {
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+        'MOZ_OBJDIR': MOZ_OBJDIR,
+        'TINDERBOX_OUTPUT': '1',
+        'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+        'TOOLTOOL_HOME': '/builds',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'CCACHE_DIR': '/builds/ccache',
+        'CCACHE_COMPRESS': '1',
+        'CCACHE_UMASK': '002',
+        'LC_ALL': 'C',
+        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
+        # 64 bit specific
+        'PATH': '/tools/python/bin:/tools/buildbot/bin:/opt/local/bin:/usr/bin:'
+                '/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin',
+    },
+    'src_mozconfig': 'browser/config/mozconfigs/macosx64/\
+debug-static-analysis',
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/32_debug.py
@@ -0,0 +1,39 @@
+import os
+
+MOZ_OBJDIR = 'obj-firefox'
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        # 'setup-mock', windows do not use mock
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        # 'generate-build-stats',
+        'update',  # decided by query_is_nightly()
+    ],
+    'stage_platform': 'win32-debug',
+    'debug_build': True,
+    'enable_talos_sendchange': False,
+    #### 32 bit build specific #####
+    'env': {
+        'BINSCOPE': 'C:/Program Files (x86)/Microsoft/SDL BinScope/BinScope.exe',
+        'HG_SHARE_BASE_DIR': 'C:/builds/hg-shared',
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'MOZ_OBJDIR': 'obj-firefox',
+        'PATH': 'C:/mozilla-build/nsis-3.0b1;C:/mozilla-build/nsis-2.46u;C:/mozilla-build/python27;'
+                'C:/mozilla-build/buildbotve/scripts;'
+                '%s' % (os.environ.get('path')),
+        'PROPERTIES_FILE': os.path.join(os.getcwd(), 'buildprops.json'),
+        'TINDERBOX_OUTPUT': '1',
+        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
+    },
+    'src_mozconfig': 'browser/config/mozconfigs/win32/debug',
+    'purge_minsize': 9,
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/32_mulet.py
@@ -0,0 +1,36 @@
+import os
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'build',
+        'upload-files',
+        'sendchange',
+    ],
+    'stage_platform': 'win32-mulet',
+    'stage_product': 'b2g',
+    'tooltool_manifest_src': "b2g/dev/config/tooltool-manifests/win32/releng.manifest",
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    'enable_unittest_sendchange': False,
+    #### 32 bit build specific #####
+    'env': {
+        'BINSCOPE': 'C:/Program Files (x86)/Microsoft/SDL BinScope/BinScope.exe',
+        'HG_SHARE_BASE_DIR': 'C:/builds/hg-shared',
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'MOZ_OBJDIR': 'obj-firefox',
+        'PATH': 'C:/mozilla-build/nsis-3.0b1;C:/mozilla-build/nsis-2.46u;C:/mozilla-build/python27;'
+                'C:/mozilla-build/buildbotve/scripts;'
+                '%s' % (os.environ.get('path')),
+        'PROPERTIES_FILE': os.path.join(os.getcwd(), 'buildprops.json'),
+        'TINDERBOX_OUTPUT': '1',
+        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
+    },
+    'src_mozconfig': 'b2g/dev/config/mozconfigs/win32/mulet',
+    'purge_minsize': 9,
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/64_debug.py
@@ -0,0 +1,37 @@
+import os
+
+MOZ_OBJDIR = 'obj-firefox'
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        # 'setup-mock', windows do not use mock
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        # 'generate-build-stats',
+        'update',  # decided by query_is_nightly()
+    ],
+    'stage_platform': 'win64-debug',
+    'debug_build': True,
+    'enable_talos_sendchange': False,
+    #### 64 bit build specific #####
+    'env': {
+        'BINSCOPE': 'C:/Program Files (x86)/Microsoft/SDL BinScope/BinScope.exe',
+        'HG_SHARE_BASE_DIR': 'C:/builds/hg-shared',
+        'MOZ_AUTOMATION': '1',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'MOZ_OBJDIR': 'obj-firefox',
+        'PATH': 'C:/mozilla-build/python27;C:/mozilla-build/buildbotve/scripts;'
+                '%s' % (os.environ.get('path')),
+        'PROPERTIES_FILE': os.path.join(os.getcwd(), 'buildprops.json'),
+        'TINDERBOX_OUTPUT': '1',
+        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
+    },
+    'src_mozconfig': 'browser/config/mozconfigs/win64/debug',
+    'purge_minsize': 9,
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/64_graphene.py
@@ -0,0 +1,42 @@
+import os
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        'update',  # may or may not happen based on query_is_nightly()
+    ],
+    'stage_platform': 'win64',
+    'stage_product': 'b2g',
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    'enable_unittest_sendchange': False,
+    'enable_count_ctors': False,
+    'objdir': 'obj-graphene',
+    'env': {
+        'BINSCOPE': 'C:/Program Files (x86)/Microsoft/SDL BinScope/BinScope.exe',
+        'HG_SHARE_BASE_DIR': 'C:/builds/hg-shared',
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'MOZ_OBJDIR': 'obj-graphene',
+        'PATH': 'C:/mozilla-build/nsis-3.0b1;C:/mozilla-build/nsis-2.46u;C:/mozilla-build/python27;'
+                'C:/mozilla-build/buildbotve/scripts;'
+                '%s' % (os.environ.get('path')),
+        'PROPERTIES_FILE': os.path.join(os.getcwd(), 'buildprops.json'),
+        'TINDERBOX_OUTPUT': '1',
+        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
+        "SYMBOL_SERVER_HOST": "%(symbol_server_host)s",
+        "SYMBOL_SERVER_SSH_KEY": "/c/Users/cltbld/.ssh/ffxbld_rsa",
+        "SYMBOL_SERVER_USER": "ffxbld",
+        "SYMBOL_SERVER_PATH": "/mnt/netapp/breakpad/symbols_ffx",
+    },
+    'src_mozconfig': 'b2g/graphene/config/mozconfigs/win64/nightly',
+    'balrog_platform': 'win64',
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/64_horizon.py
@@ -0,0 +1,42 @@
+import os
+
+config = {
+    'default_actions': [
+        'clobber',
+        'clone-tools',
+        'checkout-sources',
+        'build',
+        'upload-files',
+        'sendchange',
+        'check-test',
+        'update',  # may or may not happen based on query_is_nightly()
+    ],
+    'stage_platform': 'win64',
+    'stage_product': 'b2g',
+    'enable_signing': False,
+    'enable_talos_sendchange': False,
+    'enable_unittest_sendchange': False,
+    'enable_count_ctors': False,
+    'objdir': 'obj-horizon',
+    'env': {
+        'BINSCOPE': 'C:/Program Files (x86)/Microsoft/SDL BinScope/BinScope.exe',
+        'HG_SHARE_BASE_DIR': 'C:/builds/hg-shared',
+        'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+        'MOZ_AUTOMATION': '1',
+        'MOZ_CRASHREPORTER_NO_REPORT': '1',
+        'MOZ_OBJDIR': 'obj-horizon',
+        'PATH': 'C:/mozilla-build/nsis-3.0b1;C:/mozilla-build/nsis-2.46u;C:/mozilla-build/python27;'
+                'C:/mozilla-build/buildbotve/scripts;'
+                '%s' % (os.environ.get('path')),
+        'PROPERTIES_FILE': os.path.join(os.getcwd(), 'buildprops.json'),
+        'TINDERBOX_OUTPUT': '1',
+        'XPCOM_DEBUG_BREAK': 'stack-and-abort',
+        "SYMBOL_SERVER_HOST": "%(symbol_server_host)s",
+        "SYMBOL_SERVER_SSH_KEY": "/c/Users/cltbld/.ssh/ffxbld_rsa",
+        "SYMBOL_SERVER_USER": "ffxbld",
+        "SYMBOL_SERVER_PATH": "/mnt/netapp/breakpad/symbols_ffx",
+    },
+    'src_mozconfig': 'b2g/graphene/config/horizon-mozconfigs/win64/nightly',
+    'balrog_platform': 'win64',
+    #######################
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/developer_config.py
@@ -0,0 +1,51 @@
+"""
+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
+"""
+
+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": {
+        "hgtool.py": os.path.join(LOCAL_WORKDIR, "hgtool.py"),
+        "gittool.py": os.path.join(LOCAL_WORKDIR, "gittool.py"),
+    },
+    "env": {
+        "PIP_TRUSTED_HOST": "pypi.pub.build.mozilla.org",
+    },
+
+    # Pip
+    "find_links": ["http://pypi.pub.build.mozilla.org/pub"],
+    "pip_index": False,
+
+    # Talos related
+    "python_webserver": True,
+    "virtualenv_path": '%s/build/venv' % os.getcwd(),
+
+    # 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
+    "hgtool.py": 'http://hg.mozilla.org/build/puppet/raw-file/faaf5abd792e/modules/packages/files/hgtool.py',
+    "gittool.py": 'http://hg.mozilla.org/build/puppet/raw-file/faaf5abd792e/modules/packages/files/gittool.py',
+
+    # Android related
+    "host_utils_url": "https://api.pub.build.mozilla.org/tooltool/sha512/372c89f9dccaf5ee3b9d35fd1cfeb089e1e5db3ff1c04e35aa3adc8800bc61a2ae10e321f37ae7bab20b56e60941f91bb003bcb22035902a73d70872e7bd3282",
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/generic_releng_config.py
@@ -0,0 +1,50 @@
+# This config file has generic values needed for any job and any platform running
+# on Release Engineering machines inside the VPN
+from mozharness.base.script import platform_name
+
+# These are values specific to each platform on Release Engineering machines
+PYTHON_WIN32 = 'c:/mozilla-build/python27/python.exe'
+# These are values specific to running machines on Release Engineering machines
+# to run it locally on your machines append --cfg developer_config.py
+PLATFORM_CONFIG = {
+    'linux64': {
+        'exes': {
+            'gittool.py': '/usr/local/bin/gittool.py',
+            'hgtool.py': '/usr/local/bin/hgtool.py',
+            'python': '/tools/buildbot/bin/python',
+            'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'],
+        },
+        'env': {
+            'DISPLAY': ':2',
+        }
+    },
+    'macosx': {
+        'exes': {
+            'gittool.py': '/usr/local/bin/gittool.py',
+            'hgtool.py': '/usr/local/bin/hgtool.py',
+            'python': '/tools/buildbot/bin/python',
+            'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'],
+        },
+    },
+    'win32': {
+        "exes": {
+            'gittool.py': [PYTHON_WIN32, 'c:/builds/hg-shared/build/tools/buildfarm/utils/gittool.py'],
+            'hgtool.py': [PYTHON_WIN32, 'c:/builds/hg-shared/build/tools/buildfarm/utils/hgtool.py'],
+            # Otherwise, depending on the PATH we can pick python 2.6 up
+            'python': PYTHON_WIN32,
+            'virtualenv': [PYTHON_WIN32, 'c:/mozilla-build/buildbotve/virtualenv.py'],
+        }
+    }
+}
+
+config = PLATFORM_CONFIG[platform_name()]
+# Generic values
+config.update({
+    "find_links": [
+        "http://pypi.pvt.build.mozilla.org/pub",
+        "http://pypi.pub.build.mozilla.org/pub",
+    ],
+    'pip_index': False,
+    'virtualenv_path': 'venv',
+})
+
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/hazards/build_b2g.py
@@ -0,0 +1,23 @@
+config = {
+  'build_command': "build.b2g",
+  'expect_file': "expect.b2g.json",
+
+  'default_actions': [
+      'clobber',
+      'checkout-tools',
+      'checkout-sources',
+      'get-blobs',
+      'clobber-shell',
+      'configure-shell',
+      'build-shell',
+      'clobber-analysis',
+      'setup-analysis',
+      'run-analysis',
+      'collect-analysis-output',
+      'upload-analysis',
+      'check-expectations',
+   ],
+
+    'sixgill_manifest': "build/sixgill-b2g.manifest",
+    'b2g_target_compiler_prefix': "target_compiler/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-",
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/hazards/build_browser.py
@@ -0,0 +1,4 @@
+config = {
+  'build_command': "build.browser",
+  'expect_file': "expect.browser.json",
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/hazards/build_shell.py
@@ -0,0 +1,4 @@
+config = {
+  'build_command': "build.shell",
+  'expect_file': "expect.shell.json",
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/hazards/common.py
@@ -0,0 +1,89 @@
+HG_SHARE_BASE_DIR = "/builds/hg-shared"
+
+PYTHON_DIR = "/tools/python27"
+SRCDIR = "source"
+
+config = {
+    "log_name": "hazards",
+    "shell-objdir": "obj-opt-js",
+    "analysis-dir": "analysis",
+    "analysis-objdir": "obj-analyzed",
+    "srcdir": SRCDIR,
+    "analysis-scriptdir": "js/src/devtools/rootAnalysis",
+
+    # These paths are relative to the tooltool checkout location
+    "sixgill": "sixgill/usr/libexec/sixgill",
+    "sixgill_bin": "sixgill/usr/bin",
+
+    "python": "python",
+
+    "exes": {
+        'hgtool.py': '%(abs_tools_dir)s/buildfarm/utils/hgtool.py',
+        'gittool.py': '%(abs_tools_dir)s/buildfarm/utils/gittool.py',
+        'tooltool.py': '/tools/tooltool.py',
+    },
+
+    "purge_minsize": 18,
+    "force_clobber": True,
+    'vcs_share_base': HG_SHARE_BASE_DIR,
+
+    "repos": [{
+        "repo": "https://hg.mozilla.org/build/tools",
+        "revision": "default",
+        "dest": "tools"
+    }],
+
+    "upload_remote_baseuri": 'https://ftp-ssl.mozilla.org/',
+
+    'tools_dir': "/tools",
+    'compiler_manifest': "build/gcc.manifest",
+    'b2g_compiler_manifest': "build/gcc-b2g.manifest",
+    'compiler_setup': "setup.sh.gcc",
+    'sixgill_manifest': "build/sixgill.manifest",
+    'sixgill_setup': "setup.sh.sixgill",
+
+    # Mock.
+    "mock_packages": [
+        "autoconf213", "mozilla-python27-mercurial", "ccache",
+        "zip", "zlib-devel", "glibc-static",
+        "openssh-clients", "mpfr", "wget", "rsync",
+
+        # For building the JS shell
+        "gmp-devel", "nspr", "nspr-devel",
+
+        # For building the browser
+        "dbus-devel", "dbus-glib-devel", "hal-devel",
+        "libICE-devel", "libIDL-devel",
+
+        # For mach resource-usage
+        "python-psutil",
+
+        'zip', 'git',
+        'libstdc++-static', 'perl-Test-Simple', 'perl-Config-General',
+        'gtk2-devel', 'libnotify-devel', 'yasm',
+        'alsa-lib-devel', 'libcurl-devel',
+        'wireless-tools-devel', 'libX11-devel',
+        'libXt-devel', 'mesa-libGL-devel',
+        'gnome-vfs2-devel', 'GConf2-devel', 'wget',
+        'mpfr',  # required for system compiler
+        'xorg-x11-font*',  # fonts required for PGO
+        'imake',  # required for makedepend!?!
+        'pulseaudio-libs-devel',
+        'freetype-2.3.11-6.el6_1.8.x86_64',
+        'freetype-devel-2.3.11-6.el6_1.8.x86_64',
+        'gstreamer-devel', 'gstreamer-plugins-base-devel',
+    ],
+    "mock_files": [
+        ("/home/cltbld/.ssh", "/home/mock_mozilla/.ssh"),
+        ("/tools/tooltool.py", "/tools/tooltool.py"),
+    ],
+    "env_replacements": {
+        "pythondir": PYTHON_DIR,
+        "gccdir": "%(abs_work_dir)s/gcc",
+        "sixgilldir": "%(abs_work_dir)s/sixgill",
+    },
+    "partial_env": {
+        "PATH": "%(pythondir)s/bin:%(gccdir)s/bin:%(PATH)s",
+        "LD_LIBRARY_PATH": "%(sixgilldir)s/usr/lib64",
+    },
+}
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/luciddream/linux_config.py
@@ -0,0 +1,43 @@
+# This is a template config file for luciddream production.
+import os
+import platform
+
+HG_SHARE_BASE_DIR = "/builds/hg-shared"
+
+if platform.system().lower() == 'darwin':
+    xre_url = "https://api.pub.build.mozilla.org/tooltool/sha512/4d8d7a37d90c34a2a2fda3066a8fe85c189b183d05389cb957fc6fed31f10a6924e50c1b84488ff61c015293803f58a3aed5d4819374d04c8e0ee2b9e3997278"
+else:
+    xre_url = "https://api.pub.build.mozilla.org/tooltool/sha512/dc9503b21c87b5a469118746f99e4f41d73888972ce735fa10a80f6d218086da0e3da525d9a4cd8e4ea497ec199fef720e4a525873d77a1af304ac505e076462"
+
+config = {
+    # mozharness script options
+    "xre_url": xre_url,
+    "b2gdesktop_url": "http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/2015/03/2015-03-09-00-25-06-mozilla-b2g37_v2_2/b2g-37.0.multi.linux-i686.tar.bz2",
</