Merge mozilla-central to mozilla-inbound. a=merge CLOSED TREE
authorCiure Andrei <aciure@mozilla.com>
Fri, 08 Jun 2018 00:07:12 +0300
changeset 478620 8e386f33143372071bfbfeca7596a2144cf0ca85
parent 478619 17b140524c6ee9e1263175212dec5231bfe3059f (current diff)
parent 478437 e16a3d8427b8bb6ceeb0b970702fc2eaccd997b8 (diff)
child 478621 38c222c1bf73be8ef89397c23c607dfe34d748ab
push id1757
push userffxbld-merge
push dateFri, 24 Aug 2018 17:02:43 +0000
treeherdermozilla-release@736023aebdb1 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone62.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge mozilla-central to mozilla-inbound. a=merge CLOSED TREE
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-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/single_locale/dev-mozilla-beta.py
testing/mozharness/configs/single_locale/dev-mozilla-release.py
testing/mozharness/configs/single_locale/mozilla-esr52.py
testing/mozharness/configs/single_locale/mozilla-esr60.py
--- a/mobile/android/base/Makefile.in
+++ b/mobile/android/base/Makefile.in
@@ -42,17 +42,17 @@ include $(topsrcdir)/config/android-comm
 	$(REPORT_BUILD)
 	$(MAKE) -C ../../../faster
 	$(MAKE) -C ../installer stage-package
 	$(MKDIR) -p $(@D)
 	rsync --update $(DIST)/fennec/$(notdir $(OMNIJAR_NAME)) $@
 	$(RM) $(DIST)/fennec/$(notdir $(OMNIJAR_NAME))
 
 .PHONY: features
-tools features::
+features::
 	$(call py_action,generate_builtin_addons,--features=features chrome/chrome/content/built_in_addons.json)
 
 ifndef MOZILLA_OFFICIAL
 # Targets built very early during a Gradle build.  In automation,
 # these are built before Gradle is invoked, and gradle-targets is not
 # made at all.  This is required to avoid building gradle-targets with
 # AB_CD=multi during multi-l10n builds.
 gradle-targets: $(generated_resources) $(generated_files)
--- a/taskcluster/mach_commands.py
+++ b/taskcluster/mach_commands.py
@@ -267,45 +267,53 @@ class MachCommands(MachCommandBase):
                      help='Action input (.yml or .json)')
     @CommandArgument('--task', default=None,
                      help='Task definition (.yml or .json; if omitted, the task will be'
                           'fetched from the queue)')
     @CommandArgument('callback', default=None,
                      help='Action callback name (Python function name)')
     def test_action_callback(self, **options):
         import taskgraph.parameters
+        from taskgraph.util.taskcluster import get_task_definition
         import taskgraph.actions
         import yaml
 
         def load_data(filename):
             with open(filename) as f:
                 if filename.endswith('.yml'):
                     return yaml.safe_load(f)
                 elif filename.endswith('.json'):
                     return json.load(f)
                 else:
                     raise Exception("unknown filename {}".format(filename))
 
         try:
             self.setup_logging()
             task_id = options['task_id']
+            if options['task']:
+                task = load_data(options['task'])
+            elif task_id:
+                task = get_task_definition(task_id)
+            else:
+                task = None
 
             if options['input']:
                 input = load_data(options['input'])
             else:
                 input = None
 
             parameters = taskgraph.parameters.load_parameters_file(options['parameters'])
             parameters.check()
 
             root = options['root']
 
             return taskgraph.actions.trigger_action_callback(
                     task_group_id=options['task_group_id'],
                     task_id=task_id,
+                    task=task,
                     input=input,
                     callback=options['callback'],
                     parameters=parameters,
                     root=root,
                     test=True)
         except Exception:
             traceback.print_exc()
             sys.exit(1)
--- a/taskcluster/taskgraph/actions/backfill.py
+++ b/taskcluster/taskgraph/actions/backfill.py
@@ -7,18 +7,17 @@
 from __future__ import absolute_import, print_function, unicode_literals
 
 import logging
 
 import requests
 from requests.exceptions import HTTPError
 
 from .registry import register_callback_action
-from .util import find_decision_task, create_task_from_def, fix_task_dependencies
-from slugid import nice as slugid
+from .util import find_decision_task, create_tasks
 from taskgraph.util.taskcluster import get_artifact_from_index
 from taskgraph.taskgraph import TaskGraph
 
 PUSHLOG_TMPL = '{}/json-pushes?version=2&startID={}&endID={}'
 INDEX_TMPL = 'gecko.v2.{}.pushlog-id.{}.decision'
 
 logger = logging.getLogger(__name__)
 
@@ -40,46 +39,27 @@ logger = logging.getLogger(__name__)
             'depth': {
                 'type': 'integer',
                 'default': 5,
                 'minimum': 1,
                 'maximum': 10,
                 'title': 'Depth',
                 'description': ('The number of previous pushes before the current '
                                 'push to attempt to trigger this task on.')
-            },
-            'inclusive': {
-                'type': 'boolean',
-                'default': False,
-                'title': 'Inclusive Range',
-                'description': ('If true, the backfill will also retrigger the task '
-                                'on the selected push.')
-            },
-            'addGeckoProfile': {
-                'type': 'boolean',
-                'default': False,
-                'title': 'Add Gecko Profile',
-                'description': 'If true, appends --geckoProfile to mozharness options.'
-            },
-            'testPath': {
-                'type': 'string',
-                'title': 'Test Path',
-                'description': 'If specified, set MOZHARNESS_TEST_PATHS to this value.'
             }
         },
         'additionalProperties': False
     },
     available=lambda parameters: parameters.get('project', None) != 'try'
 )
 def backfill_action(parameters, graph_config, input, task_group_id, task_id, task):
     label = task['metadata']['name']
     pushes = []
-    inclusive_tweak = 1 if input.get('inclusive') else 0
-    depth = input.get('depth', 5) + inclusive_tweak
-    end_id = int(parameters['pushlog_id']) - (1 - inclusive_tweak)
+    depth = input.get('depth', 5)
+    end_id = int(parameters['pushlog_id']) - 1
 
     while True:
         start_id = max(end_id - depth, 0)
         pushlog_url = PUSHLOG_TMPL.format(parameters['head_repository'], start_id, end_id)
         r = requests.get(pushlog_url)
         r.raise_for_status()
         pushes = pushes + r.json()['pushes'].keys()
         if len(pushes) >= depth:
@@ -105,26 +85,13 @@ def backfill_action(parameters, graph_co
                     INDEX_TMPL.format(parameters['project'], push),
                     'public/parameters.yml')
             push_decision_task_id = find_decision_task(push_params, graph_config)
         except HTTPError as e:
             logger.info('Skipping {} due to missing index artifacts! Error: {}'.format(push, e))
             continue
 
         if label in full_task_graph.tasks.keys():
-            task_def = fix_task_dependencies(full_task_graph.tasks[label], label_to_taskid)
-            task_def['taskGroupId'] = push_decision_task_id
-
-            if input.get('addGeckoProfile'):
-                mh_options = task_def['payload'].setdefault('env', {}) \
-                                                .get('MOZHARNESS_OPTIONS', '')
-                task_def['payload']['env']['MOZHARNESS_OPTIONS'] = mh_options + ' --geckoProfile'
-                task_def['extra']['treeherder']['symbol'] += '-p'
-
-            if input.get('testPath'):
-                env = task_def['payload'].setdefault('env', {})
-                env['MOZHARNESS_TEST_PATHS'] = input.get('testPath')
-                task_def['extra']['treeherder']['symbol'] += '-b'
-
-            new_task_id = slugid()
-            create_task_from_def(new_task_id, task_def, parameters['level'])
+            create_tasks(
+                    [label], full_task_graph, label_to_taskid,
+                    push_params, push_decision_task_id, push)
         else:
             logging.info('Could not find {} on {}. Skipping.'.format(label, push))
--- a/taskcluster/taskgraph/actions/mochitest_retrigger.py
+++ b/taskcluster/taskgraph/actions/mochitest_retrigger.py
@@ -6,18 +6,19 @@
 
 from __future__ import absolute_import, print_function, unicode_literals
 
 import json
 import logging
 
 from slugid import nice as slugid
 
-from .util import (create_task_from_def, fetch_graph_and_labels, fix_task_dependencies)
+from .util import (create_task_from_def, fetch_graph_and_labels)
 from .registry import register_callback_action
+from taskgraph.util.parameterization import resolve_task_references
 
 TASKCLUSTER_QUEUE_URL = "https://queue.taskcluster.net/v1/task"
 
 logger = logging.getLogger(__name__)
 
 
 @register_callback_action(
     name='retrigger-mochitest-reftest-with-options',
@@ -78,17 +79,23 @@ logger = logging.getLogger(__name__)
         'required': ['path']
     }
 )
 def mochitest_retrigger_action(parameters, graph_config, input, task_group_id, task_id, task):
     decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
         parameters, graph_config)
 
     pre_task = full_task_graph.tasks[task['metadata']['name']]
-    new_task_definition = fix_task_dependencies(pre_task, label_to_taskid)
+
+    # fix up the task's dependencies, similar to how optimization would
+    # have done in the decision
+    dependencies = {name: label_to_taskid[label]
+                    for name, label in pre_task.dependencies.iteritems()}
+    new_task_definition = resolve_task_references(pre_task.label, pre_task.task, dependencies)
+    new_task_definition.setdefault('dependencies', []).extend(dependencies.itervalues())
 
     # don't want to run mozharness tests, want a custom mach command instead
     new_task_definition['payload']['command'] += ['--no-run-tests']
 
     custom_mach_command = [task['tags']['test-type']]
 
     # mochitests may specify a flavor
     if new_task_definition['payload']['env'].get('MOCHITEST_FLAVOR'):
--- a/taskcluster/taskgraph/actions/util.py
+++ b/taskcluster/taskgraph/actions/util.py
@@ -13,17 +13,16 @@ import os
 
 from requests.exceptions import HTTPError
 
 from taskgraph import create
 from taskgraph.decision import write_artifact
 from taskgraph.taskgraph import TaskGraph
 from taskgraph.optimize import optimize_task_graph
 from taskgraph.util.taskcluster import get_session, find_task_id, get_artifact, list_tasks
-from taskgraph.util.parameterization import resolve_task_references
 
 logger = logging.getLogger(__name__)
 
 PUSHLOG_TMPL = '{}/json-pushes?version=2&changeset={}&tipsonly=1&full=1'
 
 
 def find_decision_task(parameters, graph_config):
     """Given the parameters for this action, find the taskId of the decision
@@ -101,26 +100,16 @@ def create_task_from_def(task_id, task_d
     it to this function. No dependencies will be scheduled. You must handle
     this yourself. Seeing how create_tasks handles it might prove helpful."""
     task_def['schedulerId'] = 'gecko-level-{}'.format(level)
     label = task_def['metadata']['name']
     session = get_session()
     create.create_task(session, task_id, label, task_def)
 
 
-def fix_task_dependencies(task_def, label_to_taskid):
-    """fix up the task's dependencies, similar to how optimization would
-    have done in the decision"""
-    dependencies = {name: label_to_taskid[label]
-                    for name, label in task_def.dependencies.iteritems()}
-    new_task_definition = resolve_task_references(task_def.label, task_def.task, dependencies)
-    new_task_definition.setdefault('dependencies', []).extend(dependencies.itervalues())
-    return new_task_definition
-
-
 def update_parent(task, graph):
     task.task.setdefault('extra', {})['parent'] = os.environ.get('TASK_ID', '')
     return task
 
 
 def create_tasks(to_run, full_task_graph, label_to_taskid,
                  params, decision_task_id=None, suffix=''):
     """Create new tasks.  The task definition will have {relative-datestamp':
deleted file mode 100644
--- a/testing/mozharness/configs/multi_locale/staging_release_mozilla-beta_android-armv6.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "work_dir": ".",
-    "log_name": "multilocale",
-    "objdir": "obj-firefox",
-    "locales_file": "build/configs/mozilla/l10n-changesets_mobile-beta.json",
-    "locales_platform": "android-multilocale",
-    "locales_dir": "mobile/android/locales",
-    "ignore_locales": ["en-US", "multi"],
-    "vcs_share_base": "/builds/hg-shared",
-    "hg_l10n_base": "https://hg.mozilla.org/",
-    "required_config_vars": ["tag_override"],
-    "l10n_dir": "mozilla-beta",
-    "mozilla_dir": "build",
-    "mozconfig": "build/mobile/android/config/mozconfigs/android-armv6/release"
-}
deleted file mode 100644
--- a/testing/mozharness/configs/multi_locale/staging_release_mozilla-beta_android-x86.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "work_dir": ".",
-    "log_name": "multilocale",
-    "objdir": "obj-firefox",
-    "locales_file": "build/configs/mozilla/l10n-changesets_mobile-beta.json",
-    "locales_platform": "android-multilocale",
-    "locales_dir": "mobile/android/locales",
-    "ignore_locales": ["en-US", "multi"],
-    "vcs_share_base": "/builds/hg-shared",
-    "hg_l10n_base": "https://hg.mozilla.org/",
-    "required_config_vars": ["tag_override"],
-    "l10n_dir": "mozilla-beta",
-    "mozilla_dir": "build",
-    "mozconfig": "build/mobile/android/config/mozconfigs/android-x86/release"
-}
deleted file mode 100644
--- a/testing/mozharness/configs/multi_locale/staging_release_mozilla-beta_android.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-    "work_dir": ".",
-    "log_name": "multilocale",
-    "objdir": "obj-firefox",
-    "locales_file": "build/configs/mozilla/l10n-changesets_mobile-beta.json",
-    "locales_platform": "android-multilocale",
-    "locales_dir": "mobile/android/locales",
-    "ignore_locales": ["en-US", "multi"],
-    "vcs_share_base": "/builds/hg-shared",
-    "hg_l10n_base": "https://hg.mozilla.org/",
-    "required_config_vars": ["tag_override"],
-    "l10n_dir": "mozilla-beta",
-    "mozilla_dir": "build"
-}
deleted file mode 100644
--- a/testing/mozharness/configs/multi_locale/staging_release_mozilla-release_android-armv6.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "work_dir": ".",
-    "log_name": "multilocale",
-    "objdir": "obj-firefox",
-    "locales_file": "build/configs/mozilla/l10n-changesets_mobile-release.json",
-    "locales_platform": "android-multilocale",
-    "locales_dir": "mobile/android/locales",
-    "ignore_locales": ["en-US", "multi"],
-    "vcs_share_base": "/builds/hg-shared",
-    "hg_l10n_base": "https://hg.mozilla.org/",
-    "required_config_vars": ["tag_override"],
-    "l10n_dir": "mozilla-release",
-    "mozilla_dir": "build",
-    "mozconfig": "build/mobile/android/config/mozconfigs/android-armv6/release"
-}
deleted file mode 100644
--- a/testing/mozharness/configs/multi_locale/staging_release_mozilla-release_android-x86.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "work_dir": ".",
-    "log_name": "multilocale",
-    "objdir": "obj-firefox",
-    "locales_file": "build/configs/mozilla/l10n-changesets_mobile-release.json",
-    "locales_platform": "android-multilocale",
-    "locales_dir": "mobile/android/locales",
-    "ignore_locales": ["en-US", "multi"],
-    "vcs_share_base": "/builds/hg-shared",
-    "hg_l10n_base": "https://hg.mozilla.org/",
-    "required_config_vars": ["tag_override"],
-    "l10n_dir": "mozilla-release",
-    "mozilla_dir": "build",
-    "mozconfig": "build/mobile/android/config/mozconfigs/android-x86/release"
-}
deleted file mode 100644
--- a/testing/mozharness/configs/multi_locale/staging_release_mozilla-release_android.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-    "work_dir": ".",
-    "log_name": "multilocale",
-    "objdir": "obj-firefox",
-    "locales_file": "build/configs/mozilla/l10n-changesets_mobile-release.json",
-    "locales_platform": "android-multilocale",
-    "locales_dir": "mobile/android/locales",
-    "ignore_locales": ["en-US", "multi"],
-    "vcs_share_base": "/builds/hg-shared",
-    "hg_l10n_base": "https://hg.mozilla.org/",
-    "required_config_vars": ["tag_override"],
-    "l10n_dir": "mozilla-release",
-    "mozilla_dir": "build"
-}
deleted file mode 100644
--- a/testing/mozharness/configs/multi_locale/standalone_mozilla-central.py
+++ /dev/null
@@ -1,41 +0,0 @@
-
-import os
-# The name of the directory we'll pull our source into.
-BUILD_DIR = "mozilla-central"
-# This is where the l10n repos are (everything after https://hg.mozilla.org/)
-# for mozilla-central, that's "l10n-central".
-# For mozilla-aurora, that's "releases/l10n/mozilla-aurora"
-L10N_REPO_PATH = "l10n-central"
-# Currently this is assumed to be a subdirectory of your build dir
-OBJDIR = "objdir-droid"
-# Absolute path to your mozconfig.
-# By default it looks at "./mozconfig"
-MOZCONFIG = os.path.join(os.getcwd(), "mozconfig")
-
-config = {
-    "work_dir": ".",
-    "log_name": "multilocale",
-    "objdir": OBJDIR,
-    "locales_file": "%s/mobile/locales/l10n-changesets.json" % BUILD_DIR,
-    "locales_platform": "android-multilocale",
-    "locales_dir": "mobile/android/locales",
-    "ignore_locales": ["en-US", "multi"],
-    "vcs_share_base": "/builds/hg-shared",
-    "l10n_repos": [],
-    "hg_l10n_base": "https://hg.mozilla.org/%s" % L10N_REPO_PATH,
-    "hg_l10n_tag": "default",
-    "l10n_dir": "l10n",
-    "mozilla_dir": BUILD_DIR,
-    "mozconfig": MOZCONFIG,
-    "default_actions": [
-        "pull-locale-source",
-        "build",
-        "package-en-US",
-        "backup-objdir",
-        "restore-objdir",
-        "add-locales",
-        "android-assemble-app",
-        "package-multi",
-        "summary",
-    ],
-}
--- a/testing/mozharness/configs/single_locale/alder.py
+++ b/testing/mozharness/configs/single_locale/alder.py
@@ -1,32 +1,13 @@
-# This configuration uses mozilla-central binaries (en-US, localized complete
-# mars) and urls but it generates 'alder' artifacts. With this setup, binaries
-# generated on alder are NOT overwriting mozilla-central files.
-# Using this configuration, on a successful build, artifacts will be uploaded
-# here:
-#
-# * http://dev-stage01.srv.releng.scl3.mozilla.com/pub/mozilla.org/firefox/nightly/latest-alder-l10n/
-#   (in staging environment)
-# * https://ftp.mozilla.org/pub/firefox/nightly/latest-alder-l10n/
-#   (in production environment)
-#
-# If you really want to have localized alder builds, use the use the following
-# values:
-# * "en_us_binary_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds/alder-%(platform)s/latest/",
-# * "mar_tools_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds/alder-%(platform)s/latest/",
-# * "repo": "https://hg.mozilla.org/projects/alder",
-#
-
 import os
 
 config = {
     "nightly_build": True,
     "branch": "alder",
-    "en_us_binary_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/",
     "update_channel": "nightly",
 
     # l10n
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
 
     # mar - passed in environ from taskcluster
     "mar_tools_url": os.environ["MAR_TOOLS_URL"],
 
--- a/testing/mozharness/configs/single_locale/ash.py
+++ b/testing/mozharness/configs/single_locale/ash.py
@@ -1,32 +1,13 @@
-# This configuration uses mozilla-central binaries (en-US, localized complete
-# mars) and urls but it generates 'ash' artifacts. With this setup, binaries
-# generated on ash are NOT overwriting mozilla-central files.
-# Using this configuration, on a successful build, artifacts will be uploaded
-# here:
-#
-# * http://dev-stage01.srv.releng.scl3.mozilla.com/pub/mozilla.org/firefox/nightly/latest-ash-l10n/
-#   (in staging environment)
-# * https://ftp.mozilla.org/pub/firefox/nightly/latest-ash-l10n/
-#   (in production environment)
-#
-# If you really want to have localized ash builds, use the use the following
-# values:
-# * "en_us_binary_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds/ash-%(platform)s/latest/",
-# * "mar_tools_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds/ash-%(platform)s/latest/",
-# * "repo": "https://hg.mozilla.org/projects/ash",
-#
-
 import os
 
 config = {
     "nightly_build": True,
     "branch": "ash",
-    "en_us_binary_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/",
     "update_channel": "nightly",
 
     # l10n
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
 
     # mar - passed in environ from taskcluster
     "mar_tools_url": os.environ["MAR_TOOLS_URL"],
 
--- a/testing/mozharness/configs/single_locale/ash_android-api-16.py
+++ b/testing/mozharness/configs/single_locale/ash_android-api-16.py
@@ -1,38 +1,36 @@
+import os
+
 BRANCH = "ash"
 MOZ_UPDATE_CHANNEL = "nightly"
 MOZILLA_DIR = BRANCH
 OBJDIR = "obj-firefox"
-EN_US_BINARY_URL = "http://archive.mozilla.org/pub/mobile/nightly/latest-%s-android-api-16/en-US" % BRANCH
 HG_SHARE_BASE_DIR = "/builds/hg-shared"
 
 config = {
     "branch": BRANCH,
     "log_name": "single_locale",
     "objdir": OBJDIR,
     "is_automation": True,
-    "locales_file": "%s/mobile/locales/l10n-changesets.json" % MOZILLA_DIR,
     "locales_dir": "mobile/android/locales",
     "ignore_locales": ["en-US"],
     "nightly_build": True,
     "tooltool_config": {
         "manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
         "output_dir": "%(abs_work_dir)s/" + MOZILLA_DIR,
     },
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
     "hg_l10n_tag": "default",
     'vcs_share_base': HG_SHARE_BASE_DIR,
 
     "l10n_dir": "l10n-central",
     "repack_env": {
         # so ugly, bug 951238
         "LD_LIBRARY_PATH": "/lib:/tools/gcc-4.7.2-0moz1/lib:/tools/gcc-4.7.2-0moz1/lib64",
         "MOZ_OBJDIR": OBJDIR,
-        "EN_US_BINARY_URL": EN_US_BINARY_URL,
+        "EN_US_BINARY_URL": os.environ['EN_US_BINARY_URL'],
         "MOZ_UPDATE_CHANNEL": MOZ_UPDATE_CHANNEL,
     },
-    "upload_branch": "%s-android-api-16" % BRANCH,
-    "platform": "android",
 
     # Balrog
     "build_target": "Android_arm-eabi-gcc3",
 }
--- a/testing/mozharness/configs/single_locale/autoland.py
+++ b/testing/mozharness/configs/single_locale/autoland.py
@@ -1,14 +1,13 @@
 import os
 
 config = {
     "nightly_build": True,
     "branch": "mozilla-central",
-    "en_us_binary_url": "http://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central",
     "update_channel": "nightly",
 
     # l10n
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
 
     # mar - passed in environ from taskcluster
     "mar_tools_url": os.environ["MAR_TOOLS_URL"],
 
--- a/testing/mozharness/configs/single_locale/autoland_android-api-16.py
+++ b/testing/mozharness/configs/single_locale/autoland_android-api-16.py
@@ -1,40 +1,36 @@
 import os
 
 BRANCH = "autoland"
 MOZ_UPDATE_CHANNEL = "nightly"
 MOZILLA_DIR = BRANCH
 OBJDIR = "obj-firefox"
-EN_US_BINARY_URL = "http://archive.mozilla.org/pub/mobile/nightly/latest-%s-android-api-16/en-US" % BRANCH
 HG_SHARE_BASE_DIR = "/builds/hg-shared"
 
 config = {
     "branch": BRANCH,
     "log_name": "single_locale",
     "objdir": OBJDIR,
     "is_automation": True,
-    "locales_file": "%s/mobile/locales/l10n-changesets.json" % MOZILLA_DIR,
     "locales_dir": "mobile/android/locales",
     "ignore_locales": ["en-US"],
     "nightly_build": True,
     "tooltool_config": {
         "manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
         "output_dir": "%(abs_work_dir)s/" + MOZILLA_DIR,
     },
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
     "hg_l10n_tag": "default",
     'vcs_share_base': HG_SHARE_BASE_DIR,
 
     "l10n_dir": "l10n-central",
     "repack_env": {
         # so ugly, bug 951238
         "LD_LIBRARY_PATH": "/lib:/tools/gcc-4.7.2-0moz1/lib:/tools/gcc-4.7.2-0moz1/lib64",
         "MOZ_OBJDIR": OBJDIR,
-        "EN_US_BINARY_URL": os.environ.get("EN_US_BINARY_URL", EN_US_BINARY_URL),
+        "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
         "MOZ_UPDATE_CHANNEL": MOZ_UPDATE_CHANNEL,
     },
-    "upload_branch": "%s-android-api-16" % BRANCH,
-    "platform": "android",
 
     # Balrog
     "build_target": "Android_arm-eabi-gcc3",
 }
deleted file mode 100644
--- a/testing/mozharness/configs/single_locale/dev-mozilla-beta.py
+++ /dev/null
@@ -1,11 +0,0 @@
-config = {
-    "branch": "jamun",
-    "nightly_build": True,
-    "update_channel": "beta",
-
-    # l10n
-    "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
-
-    # purge options
-    'is_automation': True,
-}
deleted file mode 100644
--- a/testing/mozharness/configs/single_locale/dev-mozilla-release.py
+++ /dev/null
@@ -1,11 +0,0 @@
-config = {
-    "branch": "jamun",
-    "nightly_build": True,
-    "update_channel": "release",
-
-    # l10n
-    "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
-
-    # purge options
-    'is_automation': True,
-}
--- a/testing/mozharness/configs/single_locale/jamun.py
+++ b/testing/mozharness/configs/single_locale/jamun.py
@@ -1,14 +1,13 @@
 import os
 
 config = {
     "nightly_build": True,
     "branch": "jamun",
-    "en_us_binary_url": "http://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central",
     "update_channel": "nightly-jamun",
 
     # l10n
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
 
     # mar - passed in environ from taskcluster
     "mar_tools_url": os.environ["MAR_TOOLS_URL"],
 
--- a/testing/mozharness/configs/single_locale/jamun_android-api-16.py
+++ b/testing/mozharness/configs/single_locale/jamun_android-api-16.py
@@ -1,37 +1,33 @@
 import os
 
 BRANCH = "jamun"
 MOZILLA_DIR = BRANCH
-EN_US_BINARY_URL = None     # No build has been uploaded to archive.m.o
 
 config = {
     "branch": BRANCH,
     "log_name": "single_locale",
     "objdir": "obj-firefox",
     "is_automation": True,
-    "locales_file": "%s/mobile/locales/l10n-changesets.json" % MOZILLA_DIR,
     "locales_dir": "mobile/android/locales",
     "ignore_locales": ["en-US"],
     "nightly_build": True,
     "tooltool_config": {
         "manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
         "output_dir": "%(abs_work_dir)s/" + MOZILLA_DIR,
     },
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
     "hg_l10n_tag": "default",
     'vcs_share_base': "/builds/hg-shared",
 
     "l10n_dir": "mozilla-beta",
     "repack_env": {
         # so ugly, bug 951238
         "LD_LIBRARY_PATH": "/lib:/tools/gcc-4.7.2-0moz1/lib:/tools/gcc-4.7.2-0moz1/lib64",
         "MOZ_OBJDIR": "obj-firefox",
-        "EN_US_BINARY_URL": os.environ.get("EN_US_BINARY_URL", EN_US_BINARY_URL),
+        "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
         "MOZ_UPDATE_CHANNEL": "nightly-jamun",
     },
-    "upload_branch": "%s-android-api-16" % BRANCH,
-    "platform": "android",
 
     # Balrog
     "build_target": "Android_arm-eabi-gcc3",
 }
--- a/testing/mozharness/configs/single_locale/linux.py
+++ b/testing/mozharness/configs/single_locale/linux.py
@@ -1,21 +1,19 @@
 config = {
-    "platform": "linux",
     "app_name": "browser",
     "mozconfig_platform": "linux32",
     "mozconfig_variant": "l10n-mozconfig",
     "log_name": "single_locale",
     "objdir": "obj-firefox",
     "vcs_share_base": "/builds/hg-shared",
 
     # l10n
     "ignore_locales": ["en-US", "ja-JP-mac"],
     "l10n_dir": "l10n",
     "locales_dir": "browser/locales",
     "hg_l10n_tag": "default",
 
     # MAR
-    "application_ini": "application.ini",
     "local_mar_tool_dir": "dist/host/bin",
     "mar": "mar",
     "mbsdiff": "mbsdiff",
 }
--- a/testing/mozharness/configs/single_locale/linux64.py
+++ b/testing/mozharness/configs/single_locale/linux64.py
@@ -1,21 +1,18 @@
 config = {
-    "platform": "linux64",
     "app_name": "browser",
     "mozconfig_platform": "linux64",
     "mozconfig_variant": "l10n-mozconfig",
     "objdir": "obj-firefox",
     "vcs_share_base": "/builds/hg-shared",
 
     # l10n
     "ignore_locales": ["en-US", "ja-JP-mac"],
     "l10n_dir": "l10n",
-    "locales_file": "src/browser/locales/all-locales",
     "locales_dir": "browser/locales",
     "hg_l10n_tag": "default",
 
     # MAR
-    "application_ini": "application.ini",
     "local_mar_tool_dir": "dist/host/bin",
     "mar": "mar",
     "mbsdiff": "mbsdiff",
 }
--- a/testing/mozharness/configs/single_locale/linux64_devedition.py
+++ b/testing/mozharness/configs/single_locale/linux64_devedition.py
@@ -1,23 +1,20 @@
 config = {
-    "platform": "linux64",
     "app_name": "browser",
     "mozconfig_platform": "linux64",
     "mozconfig_variant": "l10n-mozconfig-devedition",
     "objdir": "obj-firefox",
     "vcs_share_base": "/builds/hg-shared",
 
     # l10n
     "ignore_locales": ["en-US", "ja-JP-mac"],
     "l10n_dir": "l10n",
-    "locales_file": "src/browser/locales/all-locales",
     "locales_dir": "browser/locales",
     "hg_l10n_tag": "default",
 
     # MAR
-    "application_ini": "application.ini",
     "local_mar_tool_dir": "dist/host/bin",
     "mar": "mar",
     "mbsdiff": "mbsdiff",
 
     "update_channel": "aurora",
 }
--- a/testing/mozharness/configs/single_locale/linux_devedition.py
+++ b/testing/mozharness/configs/single_locale/linux_devedition.py
@@ -1,23 +1,20 @@
 config = {
-    "platform": "linux",
     "app_name": "browser",
     "mozconfig_platform": "linux32",
     "mozconfig_variant": "l10n-mozconfig-devedition",
     "objdir": "obj-firefox",
     "vcs_share_base": "/builds/hg-shared",
 
     # l10n
     "ignore_locales": ["en-US", "ja-JP-mac"],
     "l10n_dir": "l10n",
-    "locales_file": "src/browser/locales/all-locales",
     "locales_dir": "browser/locales",
     "hg_l10n_tag": "default",
 
     # MAR
-    "application_ini": "application.ini",
     "local_mar_tool_dir": "dist/host/bin",
     "mar": "mar",
     "mbsdiff": "mbsdiff",
 
     "update_channel": "aurora",
 }
--- a/testing/mozharness/configs/single_locale/macosx64.py
+++ b/testing/mozharness/configs/single_locale/macosx64.py
@@ -1,26 +1,23 @@
 config = {
     # mozconfig file to use, it depends on branch and platform names
-    "platform": "macosx64",
     "app_name": "browser",
     "mozconfig_platform": "macosx64",
     "mozconfig_variant": "l10n-mozconfig",
     "objdir": "obj-firefox",
     "vcs_share_base": "/builds/hg-shared",
 
     "upload_env_extra": {
         "MOZ_PKG_PLATFORM": "mac",
     },
 
     # l10n
     "ignore_locales": ["en-US", "ja"],
     "l10n_dir": "l10n",
-    "locales_file": "src/browser/locales/all-locales",
     "locales_dir": "browser/locales",
     "hg_l10n_tag": "default",
 
     # MAR
-    "application_ini": "Contents/Resources/application.ini",
     "local_mar_tool_dir": "dist/host/bin",
     "mar": "mar",
     "mbsdiff": "mbsdiff",
 }
--- a/testing/mozharness/configs/single_locale/macosx64_devedition.py
+++ b/testing/mozharness/configs/single_locale/macosx64_devedition.py
@@ -1,29 +1,26 @@
 config = {
     # mozconfig file to use, it depends on branch and platform names
-    "platform": "macosx64",
     "app_name": "browser",
     "mozconfig_platform": "macosx64",
     "mozconfig_variant": "l10n-mozconfig-devedition",
     "log_name": "single_locale",
     "objdir": "obj-firefox",
     "vcs_share_base": "/builds/hg-shared",
 
     "upload_env_extra": {
         "MOZ_PKG_PLATFORM": "mac",
     },
 
     # l10n
     "ignore_locales": ["en-US", "ja"],
     "l10n_dir": "l10n",
-    "locales_file": "src/browser/locales/all-locales",
     "locales_dir": "browser/locales",
     "hg_l10n_tag": "default",
 
     # MAR
-    "application_ini": "Contents/Resources/application.ini",
     "local_mar_tool_dir": "dist/host/bin",
     "mar": "mar",
     "mbsdiff": "mbsdiff",
 
     "update_channel": "aurora",
 }
--- a/testing/mozharness/configs/single_locale/maple_android-api-16.py
+++ b/testing/mozharness/configs/single_locale/maple_android-api-16.py
@@ -1,38 +1,33 @@
 import os
 
 BRANCH = "maple"
 MOZILLA_DIR = BRANCH
-EN_US_BINARY_URL = "http://archive.mozilla.org/pub/" \
-                   "mobile/nightly/latest-maple-android-api-16/en-US"
 
 config = {
     "branch": BRANCH,
     "log_name": "single_locale",
     "objdir": "obj-firefox",
     "is_automation": True,
-    "locales_file": "%s/mobile/locales/l10n-changesets.json" % MOZILLA_DIR,
     "locales_dir": "mobile/android/locales",
     "ignore_locales": ["en-US"],
     "nightly_build": True,
     "tooltool_config": {
         "manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
         "output_dir": "%(abs_work_dir)s/" + MOZILLA_DIR,
     },
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
     "hg_l10n_tag": "default",
     'vcs_share_base': "/builds/hg-shared",
 
     "l10n_dir": "l10n-central",
     "repack_env": {
         # so ugly, bug 951238
         "LD_LIBRARY_PATH": "/lib:/tools/gcc-4.7.2-0moz1/lib:/tools/gcc-4.7.2-0moz1/lib64",
         "MOZ_OBJDIR": "obj-firefox",
-        "EN_US_BINARY_URL": os.environ.get("EN_US_BINARY_URL", EN_US_BINARY_URL),
+        "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
         "MOZ_UPDATE_CHANNEL": "nightly-maple",
     },
-    "upload_branch": "%s-android-api-16" % BRANCH,
-    "platform": "android",
 
     # Balrog
     "build_target": "Android_arm-eabi-gcc3",
 }
--- a/testing/mozharness/configs/single_locale/mozilla-aurora.py
+++ b/testing/mozharness/configs/single_locale/mozilla-aurora.py
@@ -1,14 +1,13 @@
 import os
 
 config = {
     "nightly_build": True,
     "branch": "mozilla-aurora",
-    "en_us_binary_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-aurora/",
     "update_channel": "aurora",
 
     # l10n
     "hg_l10n_base": "https://hg.mozilla.org/releases/l10n/mozilla-aurora",
 
     # mar - passed in environ from taskcluster
     "mar_tools_url": os.environ["MAR_TOOLS_URL"],
 
--- a/testing/mozharness/configs/single_locale/mozilla-aurora_android-api-16.py
+++ b/testing/mozharness/configs/single_locale/mozilla-aurora_android-api-16.py
@@ -1,40 +1,36 @@
 import os
 
 BRANCH = "mozilla-aurora"
 MOZ_UPDATE_CHANNEL = "aurora"
 MOZILLA_DIR = BRANCH
 OBJDIR = "obj-firefox"
-EN_US_BINARY_URL = "http://archive.mozilla.org/pub/mobile/nightly/latest-%s-android-api-16/en-US" % BRANCH
 HG_SHARE_BASE_DIR = "/builds/hg-shared"
 
 config = {
     "branch": BRANCH,
     "log_name": "single_locale",
     "objdir": OBJDIR,
     "is_automation": True,
-    "locales_file": "%s/mobile/locales/l10n-changesets.json" % MOZILLA_DIR,
     "locales_dir": "mobile/android/locales",
     "ignore_locales": ["en-US"],
     "nightly_build": True,
     "tooltool_config": {
         "manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
         "output_dir": "%(abs_work_dir)s/" + MOZILLA_DIR,
     },
     "hg_l10n_base": "https://hg.mozilla.org/releases/l10n/%s" % BRANCH,
     "hg_l10n_tag": "default",
     'vcs_share_base': HG_SHARE_BASE_DIR,
 
     "l10n_dir": MOZILLA_DIR,
     "repack_env": {
         # so ugly, bug 951238
         "LD_LIBRARY_PATH": "/lib:/tools/gcc-4.7.2-0moz1/lib:/tools/gcc-4.7.2-0moz1/lib64",
         "MOZ_OBJDIR": OBJDIR,
-        "EN_US_BINARY_URL": os.environ.get("EN_US_BINARY_URL", EN_US_BINARY_URL),
+        "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
         "MOZ_UPDATE_CHANNEL": MOZ_UPDATE_CHANNEL,
     },
-    "upload_branch": "%s-android-api-16" % BRANCH,
-    "platform": "android",
 
     # Balrog
     "build_target": "Android_arm-eabi-gcc3",
 }
--- a/testing/mozharness/configs/single_locale/mozilla-beta.py
+++ b/testing/mozharness/configs/single_locale/mozilla-beta.py
@@ -1,14 +1,13 @@
 import os
 
 config = {
     "nightly_build": True,
     "branch": "mozilla-beta",
-    "en_us_binary_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-beta/",
     "update_channel": "beta",
 
     # l10n
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
 
     # mar
     "mar_tools_url": os.environ["MAR_TOOLS_URL"],
 
--- a/testing/mozharness/configs/single_locale/mozilla-beta_android-api-16.py
+++ b/testing/mozharness/configs/single_locale/mozilla-beta_android-api-16.py
@@ -6,32 +6,28 @@ OBJDIR = "obj-firefox"
 EN_US_BINARY_URL = None
 HG_SHARE_BASE_DIR = "/builds/hg-shared"
 
 config = {
     "branch": BRANCH,
     "log_name": "single_locale",
     "objdir": OBJDIR,
     "is_automation": True,
-    "locales_file": "%s/mobile/locales/l10n-changesets.json" % MOZILLA_DIR,
     "locales_dir": "mobile/android/locales",
-    "locales_platform": "android-api-16",
     "ignore_locales": ["en-US"],
-    "platform": "android",
     "build_target": "Android_arm-eabi-gcc3",
     "tooltool_config": {
         "manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
         "output_dir": "%(abs_work_dir)s/" + MOZILLA_DIR,
     },
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
     "hg_l10n_tag": "default",
     'vcs_share_base': HG_SHARE_BASE_DIR,
     "l10n_dir": "l10n-central",
 
     "repack_env": {
         # so ugly, bug 951238
         "LD_LIBRARY_PATH": "/lib:/tools/gcc-4.7.2-0moz1/lib:/tools/gcc-4.7.2-0moz1/lib64",
-        "EN_US_BINARY_URL": os.environ.get("EN_US_BINARY_URL", EN_US_BINARY_URL),
+        "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
         "MOZ_OBJDIR": OBJDIR,
         "MOZ_UPDATE_CHANNEL": MOZ_UPDATE_CHANNEL,
     },
-    "upload_branch": "%s-android-api-16" % BRANCH,
 }
--- a/testing/mozharness/configs/single_locale/mozilla-beta_devedition.py
+++ b/testing/mozharness/configs/single_locale/mozilla-beta_devedition.py
@@ -1,12 +1,11 @@
 config = {
     "nightly_build": True,
     "branch": "mozilla-beta",
-    "en_us_binary_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-beta/",
     "update_channel": "aurora",  # devedition uses aurora based branding
 
     # l10n
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
 
     # purge options
     'is_automation': True,
 }
--- a/testing/mozharness/configs/single_locale/mozilla-central.py
+++ b/testing/mozharness/configs/single_locale/mozilla-central.py
@@ -1,14 +1,13 @@
 import os
 
 config = {
     "nightly_build": True,
     "branch": "mozilla-central",
-    "en_us_binary_url": "http://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central",
     "update_channel": "nightly",
 
     # l10n
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
 
     # mar - passed in environ from taskcluster
     "mar_tools_url": os.environ["MAR_TOOLS_URL"],
 
--- a/testing/mozharness/configs/single_locale/mozilla-central_android-api-16.py
+++ b/testing/mozharness/configs/single_locale/mozilla-central_android-api-16.py
@@ -1,40 +1,36 @@
 import os
 
 BRANCH = "mozilla-central"
 MOZ_UPDATE_CHANNEL = "nightly"
 MOZILLA_DIR = BRANCH
 OBJDIR = "obj-firefox"
-EN_US_BINARY_URL = "http://archive.mozilla.org/pub/mobile/nightly/latest-%s-android-api-16/en-US" % BRANCH
 HG_SHARE_BASE_DIR = "/builds/hg-shared"
 
 config = {
     "branch": BRANCH,
     "log_name": "single_locale",
     "objdir": OBJDIR,
     "is_automation": True,
-    "locales_file": "%s/mobile/locales/l10n-changesets.json" % MOZILLA_DIR,
     "locales_dir": "mobile/android/locales",
     "ignore_locales": ["en-US"],
     "nightly_build": True,
     "tooltool_config": {
         "manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
         "output_dir": "%(abs_work_dir)s/" + MOZILLA_DIR,
     },
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
     "hg_l10n_tag": "default",
     'vcs_share_base': HG_SHARE_BASE_DIR,
 
     "l10n_dir": "l10n-central",
     "repack_env": {
         # so ugly, bug 951238
         "LD_LIBRARY_PATH": "/lib:/tools/gcc-4.7.2-0moz1/lib:/tools/gcc-4.7.2-0moz1/lib64",
         "MOZ_OBJDIR": OBJDIR,
-        "EN_US_BINARY_URL": os.environ.get("EN_US_BINARY_URL", EN_US_BINARY_URL),
+        "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
         "MOZ_UPDATE_CHANNEL": MOZ_UPDATE_CHANNEL,
     },
-    "upload_branch": "%s-android-api-16" % BRANCH,
-    "platform": "android",
 
     # Balrog
     "build_target": "Android_arm-eabi-gcc3",
 }
deleted file mode 100644
--- a/testing/mozharness/configs/single_locale/mozilla-esr52.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# This config references releases/l10n/mozilla-release instead of l10n-central
-# because 52 predates cross-channel localization, which rides the train
-# with 57.
-# If you copy this config for the ESR following 57, change hg_l10n_base
-# to l10n-central.
-config = {
-    "nightly_build": True,
-    "branch": "mozilla-esr52",
-    "en_us_binary_url": "https://archive.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-esr52/",
-    "update_channel": "esr",
-
-    # l10n
-    "hg_l10n_base": "https://hg.mozilla.org/releases/l10n/mozilla-release",
-
-    # purge options
-    'is_automation': True,
-}
deleted file mode 100644
--- a/testing/mozharness/configs/single_locale/mozilla-esr60.py
+++ /dev/null
@@ -1,17 +0,0 @@
-import os
-
-config = {
-    "nightly_build": True,
-    "branch": "mozilla-esr60",
-    "en_us_binary_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-esr60/",
-    "update_channel": "esr",
-
-    # l10n
-    "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
-
-    # mar
-    "mar_tools_url": os.environ["MAR_TOOLS_URL"],
-
-    # purge options
-    'is_automation': True,
-}
--- a/testing/mozharness/configs/single_locale/mozilla-inbound.py
+++ b/testing/mozharness/configs/single_locale/mozilla-inbound.py
@@ -1,14 +1,13 @@
 import os
 
 config = {
     "nightly_build": True,
     "branch": "mozilla-inbound",
-    "en_us_binary_url": "http://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central",
     "update_channel": "nightly",
 
     # l10n
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
 
     # mar - passed in environ from taskcluster
     "mar_tools_url": os.environ["MAR_TOOLS_URL"],
 
--- a/testing/mozharness/configs/single_locale/mozilla-inbound_android-api-16.py
+++ b/testing/mozharness/configs/single_locale/mozilla-inbound_android-api-16.py
@@ -1,40 +1,36 @@
 import os
 
 BRANCH = "mozilla-inbound"
 MOZ_UPDATE_CHANNEL = "default"
 MOZILLA_DIR = BRANCH
 OBJDIR = "obj-firefox"
-EN_US_BINARY_URL = "http://archive.mozilla.org/pub/mobile/nightly/latest-%s-android-api-16/en-US" % BRANCH
 HG_SHARE_BASE_DIR = "/builds/hg-shared"
 
 config = {
     "branch": BRANCH,
     "log_name": "single_locale",
     "objdir": OBJDIR,
     "is_automation": True,
-    "locales_file": "%s/mobile/locales/l10n-changesets.json" % MOZILLA_DIR,
     "locales_dir": "mobile/android/locales",
     "ignore_locales": ["en-US"],
     "nightly_build": True,
     "tooltool_config": {
         "manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
         "output_dir": "%(abs_work_dir)s/" + MOZILLA_DIR,
     },
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
     "hg_l10n_tag": "default",
     'vcs_share_base': HG_SHARE_BASE_DIR,
 
     "l10n_dir": "l10n-central",
     "repack_env": {
         # so ugly, bug 951238
         "LD_LIBRARY_PATH": "/lib:/tools/gcc-4.7.2-0moz1/lib:/tools/gcc-4.7.2-0moz1/lib64",
         "MOZ_OBJDIR": OBJDIR,
-        "EN_US_BINARY_URL": os.environ.get("EN_US_BINARY_URL", EN_US_BINARY_URL),
+        "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
         "MOZ_UPDATE_CHANNEL": MOZ_UPDATE_CHANNEL,
     },
-    "upload_branch": "%s-android-api-16" % BRANCH,
-    "platform": "android",
 
     # Balrog
     "build_target": "Android_arm-eabi-gcc3",
 }
--- a/testing/mozharness/configs/single_locale/mozilla-release.py
+++ b/testing/mozharness/configs/single_locale/mozilla-release.py
@@ -1,14 +1,13 @@
 import os
 
 config = {
     "nightly_build": True,
     "branch": "mozilla-release",
-    "en_us_binary_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-release/",
     "update_channel": "release",
 
     # l10n
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
 
     # mar
     "mar_tools_url": os.environ["MAR_TOOLS_URL"],
 
--- a/testing/mozharness/configs/single_locale/mozilla-release_android-api-16.py
+++ b/testing/mozharness/configs/single_locale/mozilla-release_android-api-16.py
@@ -1,37 +1,32 @@
 import os
 BRANCH = "mozilla-release"
 MOZ_UPDATE_CHANNEL = "release"
 MOZILLA_DIR = BRANCH
 OBJDIR = "obj-firefox"
-EN_US_BINARY_URL = None
 HG_SHARE_BASE_DIR = "/builds/hg-shared"
 
 config = {
     "branch": BRANCH,
     "log_name": "single_locale",
     "objdir": OBJDIR,
     "is_automation": True,
-    "locales_file": "%s/mobile/locales/l10n-changesets.json" % MOZILLA_DIR,
     "locales_dir": "mobile/android/locales",
-    "locales_platform": "android-api-16",
     "ignore_locales": ["en-US"],
-    "platform": "android",
     "build_target": "Android_arm-eabi-gcc3",
     "tooltool_config": {
         "manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
         "output_dir": "%(abs_work_dir)s/" + MOZILLA_DIR,
     },
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
     "hg_l10n_tag": "default",
     'vcs_share_base': HG_SHARE_BASE_DIR,
     "l10n_dir": "l10n-central",
 
     "repack_env": {
         # so ugly, bug 951238
         "LD_LIBRARY_PATH": "/lib:/tools/gcc-4.7.2-0moz1/lib:/tools/gcc-4.7.2-0moz1/lib64",
-        "EN_US_BINARY_URL": os.environ.get("EN_US_BINARY_URL", EN_US_BINARY_URL),
+        "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
         "MOZ_OBJDIR": OBJDIR,
         "MOZ_UPDATE_CHANNEL": MOZ_UPDATE_CHANNEL,
     },
-    "upload_branch": "%s-android-api-16" % BRANCH,
 }
--- a/testing/mozharness/configs/single_locale/tc_android-api-16.py
+++ b/testing/mozharness/configs/single_locale/tc_android-api-16.py
@@ -1,10 +1,9 @@
 config = {
-    "locales_file": "src/mobile/locales/l10n-changesets.json",
     "mozconfig": "src/mobile/android/config/mozconfigs/android-api-16/l10n-nightly",
     "tooltool_config": {
         "manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
         "output_dir": "%(abs_work_dir)s/src",
     },
     "tooltool_servers": ['http://relengapi/tooltool/'],
 
     "upload_env": {
--- a/testing/mozharness/configs/single_locale/tc_linux32.py
+++ b/testing/mozharness/configs/single_locale/tc_linux32.py
@@ -1,18 +1,15 @@
 import os
 
-EN_US_BINARY_URL = "%(en_us_binary_url)s"
-
 config = {
-    "locales_file": "src/browser/locales/all-locales",
     "bootstrap_env": {
         "NO_MERCURIAL_SETUP_CHECK": "1",
         "MOZ_OBJDIR": "obj-firefox",
-        "EN_US_BINARY_URL": os.environ.get("EN_US_BINARY_URL", EN_US_BINARY_URL),
+        "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
         "MOZ_UPDATE_CHANNEL": "%(update_channel)s",
         "DIST": "%(abs_objdir)s",
         "L10NBASEDIR": "../../l10n",
         'TOOLTOOL_CACHE': os.environ.get('TOOLTOOL_CACHE'),
     },
     "upload_env": {
         'UPLOAD_PATH': '/builds/worker/artifacts/',
     },
--- a/testing/mozharness/configs/single_locale/tc_linux64.py
+++ b/testing/mozharness/configs/single_locale/tc_linux64.py
@@ -1,18 +1,15 @@
 import os
 
-EN_US_BINARY_URL = "%(en_us_binary_url)s"
-
 config = {
-    "locales_file": "src/browser/locales/all-locales",
     "bootstrap_env": {
         "NO_MERCURIAL_SETUP_CHECK": "1",
         "MOZ_OBJDIR": "obj-firefox",
-        "EN_US_BINARY_URL": os.environ.get("EN_US_BINARY_URL", EN_US_BINARY_URL),
+        "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
         "MOZ_UPDATE_CHANNEL": "%(update_channel)s",
         "DIST": "%(abs_objdir)s",
         "L10NBASEDIR": "../../l10n",
         'TOOLTOOL_CACHE': os.environ.get('TOOLTOOL_CACHE'),
     },
     "upload_env": {
         'UPLOAD_PATH': '/builds/worker/artifacts/',
     },
--- a/testing/mozharness/configs/single_locale/tc_macosx64.py
+++ b/testing/mozharness/configs/single_locale/tc_macosx64.py
@@ -1,18 +1,15 @@
 import os
 
-EN_US_BINARY_URL = "%(en_us_binary_url)s"
-
 config = {
-    "locales_file": "src/browser/locales/all-locales",
     "bootstrap_env": {
         "NO_MERCURIAL_SETUP_CHECK": "1",
         "MOZ_OBJDIR": "obj-firefox",
-        "EN_US_BINARY_URL": os.environ.get("EN_US_BINARY_URL", EN_US_BINARY_URL),
+        "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
         "MOZ_UPDATE_CHANNEL": "%(update_channel)s",
         "DIST": "%(abs_objdir)s",
         "L10NBASEDIR": "../../l10n",
         'TOOLTOOL_CACHE': os.environ.get('TOOLTOOL_CACHE'),
     },
     "upload_env": {
         'UPLOAD_PATH': '/builds/worker/artifacts/',
     },
--- a/testing/mozharness/configs/single_locale/tc_win32.py
+++ b/testing/mozharness/configs/single_locale/tc_win32.py
@@ -1,23 +1,19 @@
 import os
 
-EN_US_BINARY_URL = "%(en_us_binary_url)s"
-
 config = {
-    "locales_file": "src/browser/locales/all-locales",
     'vcs_share_base': os.path.join('y:', os.sep, 'hg-shared'),
     "bootstrap_env": {
         "NO_MERCURIAL_SETUP_CHECK": "1",
         "MOZ_OBJDIR": "obj-firefox",
-        "EN_US_BINARY_URL": os.environ.get("EN_US_BINARY_URL", EN_US_BINARY_URL),
+        "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
         # EN_US_INSTALLER_BINARY_URL falls back on EN_US_BINARY_URL
         "EN_US_INSTALLER_BINARY_URL": os.environ.get(
-            "EN_US_INSTALLER_BINARY_URL", os.environ.get(
-                "EN_US_BINARY_URL", EN_US_BINARY_URL)),
+            "EN_US_INSTALLER_BINARY_URL", os.environ["EN_US_BINARY_URL"]),
         "MOZ_UPDATE_CHANNEL": "%(update_channel)s",
         "DIST": "%(abs_objdir)s",
         "L10NBASEDIR": "../../l10n",
         'TOOLTOOL_CACHE': os.environ.get('TOOLTOOL_CACHE', 'c:/builds/tooltool_cache'),
         'EN_US_PACKAGE_NAME': 'target.zip',
         'EN_US_PKG_INST_BASENAME': 'target.installer',
     },
     "upload_env": {
--- a/testing/mozharness/configs/single_locale/tc_win64.py
+++ b/testing/mozharness/configs/single_locale/tc_win64.py
@@ -1,23 +1,19 @@
 import os
 
-EN_US_BINARY_URL = "%(en_us_binary_url)s"
-
 config = {
-    "locales_file": "src/browser/locales/all-locales",
     'vcs_share_base': os.path.join('y:', os.sep, 'hg-shared'),
     "bootstrap_env": {
         "NO_MERCURIAL_SETUP_CHECK": "1",
         "MOZ_OBJDIR": "obj-firefox",
-        "EN_US_BINARY_URL": os.environ.get("EN_US_BINARY_URL", EN_US_BINARY_URL),
+        "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
         # EN_US_INSTALLER_BINARY_URL falls back on EN_US_BINARY_URL
         "EN_US_INSTALLER_BINARY_URL": os.environ.get(
-            "EN_US_INSTALLER_BINARY_URL", os.environ.get(
-                "EN_US_BINARY_URL", EN_US_BINARY_URL)),
+            "EN_US_INSTALLER_BINARY_URL", os.environ["EN_US_BINARY_URL"]),
         "MOZ_UPDATE_CHANNEL": "%(update_channel)s",
         "DIST": "%(abs_objdir)s",
         "L10NBASEDIR": "../../l10n",
         'TOOLTOOL_CACHE': os.environ.get('TOOLTOOL_CACHE', 'c:/builds/tooltool_cache'),
         'EN_US_PACKAGE_NAME': 'target.zip',
         'EN_US_PKG_INST_BASENAME': 'target.installer',
     },
     "upload_env": {
--- a/testing/mozharness/configs/single_locale/try.py
+++ b/testing/mozharness/configs/single_locale/try.py
@@ -1,14 +1,13 @@
 import os
 
 config = {
     "nightly_build": False,
     "branch": "try",
-    "en_us_binary_url": "http://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central",
     "update_channel": "nightly-try",
 
     # l10n
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
 
     # mar - passed in environ from taskcluster
     "mar_tools_url": os.environ["MAR_TOOLS_URL"],
 
--- a/testing/mozharness/configs/single_locale/try_android-api-16.py
+++ b/testing/mozharness/configs/single_locale/try_android-api-16.py
@@ -1,38 +1,33 @@
 import os
 
 BRANCH = "try"
 MOZILLA_DIR = BRANCH
-EN_US_BINARY_URL = "http://archive.mozilla.org/pub/" \
-                   "mobile/nightly/latest-mozilla-central-android-api-16/en-US"
 
 config = {
     "branch": "try",
     "log_name": "single_locale",
     "objdir": "obj-firefox",
     "is_automation": True,
-    "locales_file": "%s/mobile/locales/l10n-changesets.json" % MOZILLA_DIR,
     "locales_dir": "mobile/android/locales",
     "ignore_locales": ["en-US"],
     "tooltool_config": {
         "manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
         "output_dir": "%(abs_work_dir)s/" + MOZILLA_DIR,
     },
     "nightly_build": True,
     "hg_l10n_base": "https://hg.mozilla.org/l10n-central",
     "hg_l10n_tag": "default",
     'vcs_share_base': "/builds/hg-shared",
 
     "l10n_dir": "l10n-central",
     "repack_env": {
         # so ugly, bug 951238
         "LD_LIBRARY_PATH": "/lib:/tools/gcc-4.7.2-0moz1/lib:/tools/gcc-4.7.2-0moz1/lib64",
         "MOZ_OBJDIR": "obj-firefox",
-        "EN_US_BINARY_URL": os.environ.get("EN_US_BINARY_URL", EN_US_BINARY_URL),
+        "EN_US_BINARY_URL": os.environ["EN_US_BINARY_URL"],
         "MOZ_UPDATE_CHANNEL": "try", # XXX Invalid
     },
-    "upload_branch": "%s-android-api-16" % BRANCH,
-    "platform": "android", # XXX Validate
 
     # Balrog
     "build_target": "Android_arm-eabi-gcc3",
 }
--- a/testing/mozharness/configs/single_locale/win32.py
+++ b/testing/mozharness/configs/single_locale/win32.py
@@ -1,30 +1,27 @@
 config = {
-    "platform": "win32",
     "app_name": "browser",
     "mozconfig_platform": "win32",
     "mozconfig_variant": "l10n-mozconfig",
     "log_name": "single_locale",
     "objdir": "obj-firefox",
     "vcs_share_base": "c:/builds/hg-shared",
 
     # tooltool
     'tooltool_url': 'https://tooltool.mozilla-releng.net/',
     'tooltool_manifest_src': 'browser/config/tooltool-manifests/win32/l10n.manifest',
 
     # l10n
     "ignore_locales": ["en-US", "ja-JP-mac"],
     "l10n_dir": "l10n",
-    "locales_file": "src/browser/locales/all-locales",
     "locales_dir": "browser/locales",
     "hg_l10n_tag": "default",
 
     # MAR
-    "application_ini": "application.ini",
     "local_mar_tool_dir": "dist\\host\\bin",
     "mar": "mar.exe",
     "mbsdiff": "mbsdiff.exe",
 
     # use mozmake?
     "enable_mozmake": True,
     'exes': {}
 }
--- a/testing/mozharness/configs/single_locale/win32_devedition.py
+++ b/testing/mozharness/configs/single_locale/win32_devedition.py
@@ -1,29 +1,26 @@
 config = {
-    "platform": "win32",
     "app_name": "browser",
     "mozconfig_platform": "win32",
     "mozconfig_variant": "l10n-mozconfig-devedition",
     "objdir": "obj-firefox",
     "vcs_share_base": "c:/builds/hg-shared",
 
     # tooltool
     'tooltool_url': 'https://tooltool.mozilla-releng.net/',
     'tooltool_manifest_src': 'browser/config/tooltool-manifests/win32/l10n.manifest',
 
     # l10n
     "ignore_locales": ["en-US", "ja-JP-mac"],
     "l10n_dir": "l10n",
-    "locales_file": "src/browser/locales/all-locales",
     "locales_dir": "browser/locales",
     "hg_l10n_tag": "default",
 
     # MAR
-    "application_ini": "application.ini",
     "local_mar_tool_dir": "dist\\host\\bin",
     "mar": "mar.exe",
     "mbsdiff": "mbsdiff.exe",
 
     # use mozmake?
     "enable_mozmake": True,
     'exes': {},
 
--- a/testing/mozharness/configs/single_locale/win64.py
+++ b/testing/mozharness/configs/single_locale/win64.py
@@ -1,29 +1,26 @@
 config = {
-    "platform": "win64",
     "app_name": "browser",
     "mozconfig_platform": "win64",
     "mozconfig_variant": "l10n-mozconfig",
     "objdir": "obj-firefox",
     "vcs_share_base": "c:/builds/hg-shared",
 
     # tooltool
     'tooltool_url': 'https://tooltool.mozilla-releng.net/',
     'tooltool_manifest_src': 'browser/config/tooltool-manifests/win64/l10n.manifest',
 
     # l10n
     "ignore_locales": ["en-US", "ja-JP-mac"],
     "l10n_dir": "l10n",
-    "locales_file": "src/browser/locales/all-locales",
     "locales_dir": "browser/locales",
     "hg_l10n_tag": "default",
 
     # MAR
-    "application_ini": "application.ini",
     "local_mar_tool_dir": "dist\\host\\bin",
     "mar": "mar.exe",
     "mbsdiff": "mbsdiff.exe",
 
     # use mozmake?
     "enable_mozmake": True,
     'exes': {}
 }
--- a/testing/mozharness/configs/single_locale/win64_devedition.py
+++ b/testing/mozharness/configs/single_locale/win64_devedition.py
@@ -1,29 +1,26 @@
 config = {
-    "platform": "win64",
     "app_name": "browser",
     "mozconfig_platform": "win64",
     "mozconfig_variant": "l10n-mozconfig-devedition",
     "objdir": "obj-firefox",
     "vcs_share_base": "c:/builds/hg-shared",
 
     # tooltool
     'tooltool_url': 'https://tooltool.mozilla-releng.net/',
     'tooltool_manifest_src': 'browser/config/tooltool-manifests/win64/l10n.manifest',
 
     # l10n
     "ignore_locales": ["en-US", "ja-JP-mac"],
     "l10n_dir": "l10n",
-    "locales_file": "src/browser/locales/all-locales",
     "locales_dir": "browser/locales",
     "hg_l10n_tag": "default",
 
     # MAR
-    "application_ini": "application.ini",
     "local_mar_tool_dir": "dist\\host\\bin",
     "mar": "mar.exe",
     "mbsdiff": "mbsdiff.exe",
 
     # use mozmake?
     "enable_mozmake": True,
     'exes': {},
 
--- a/testing/mozharness/mozharness/mozilla/l10n/locales.py
+++ b/testing/mozharness/mozharness/mozilla/l10n/locales.py
@@ -3,22 +3,18 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this file,
 # You can obtain one at http://mozilla.org/MPL/2.0/.
 # ***** END LICENSE BLOCK *****
 """Localization.
 """
 
 import os
-from urlparse import urljoin
 import pprint
 import sys
-from copy import deepcopy
-
-sys.path.insert(1, os.path.dirname(sys.path[0]))
 
 from mozharness.base.config import parse_config_file
 
 
 # LocalesMixin {{{1
 class LocalesMixin(object):
     def __init__(self, **kwargs):
         """ Mixins generally don't have an __init__.
--- a/testing/mozharness/mozharness/mozilla/l10n/multi_locale_build.py
+++ b/testing/mozharness/mozharness/mozilla/l10n/multi_locale_build.py
@@ -4,24 +4,22 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this file,
 # You can obtain one at http://mozilla.org/MPL/2.0/.
 # ***** END LICENSE BLOCK *****
 """multi_locale_build.py
 
 This should be a mostly generic multilocale build script.
 """
 
-from copy import deepcopy
 import os
 import sys
 
 sys.path.insert(1, os.path.dirname(os.path.dirname(sys.path[0])))
 
-from mozharness.base.errors import MakefileErrorList, SSHErrorList
-from mozharness.base.log import FATAL
+from mozharness.base.errors import MakefileErrorList
 from mozharness.base.vcs.vcsbase import MercurialScript
 from mozharness.mozilla.l10n.locales import LocalesMixin
 
 
 # MultiLocaleBuild {{{1
 class MultiLocaleBuild(LocalesMixin, MercurialScript):
     """ This class targets Fennec multilocale builds.
         We were considering this for potential Firefox desktop multilocale.
@@ -71,94 +69,54 @@ class MultiLocaleBuild(LocalesMixin, Mer
          "default": "l10n",
          "help": "Specify the l10n dir name"
          }
     ]]
 
     def __init__(self, require_config_file=True):
         LocalesMixin.__init__(self)
         MercurialScript.__init__(self, config_options=self.config_options,
-                                 all_actions=['clobber',
-                                              'pull-build-source',
-                                              'pull-locale-source',
-                                              'build',
-                                              'package-en-US',
-                                              'upload-en-US',
-                                              'backup-objdir',
-                                              'restore-objdir',
+                                 all_actions=['pull-locale-source',
                                               'add-locales',
                                               'android-assemble-app',
                                               'package-multi',
-                                              'upload-multi',
                                               'summary'],
                                  require_config_file=require_config_file)
 
     def query_l10n_env(self):
         return self.query_env()
 
-    def clobber(self):
-        c = self.config
-        if c['work_dir'] != '.':
-            path = os.path.join(c['base_work_dir'], c['work_dir'])
-            if os.path.exists(path):
-                self.rmtree(path, error_level=FATAL)
-        else:
-            self.info("work_dir is '.'; skipping for now.")
-
-    def pull_build_source(self):
-        c = self.config
-        repos = c['repos']
-        self.vcs_checkout_repos(repos, tag_override=c.get('tag_override'))
-
     # pull_locale_source() defined in LocalesMixin.
 
-    def build(self):
-        c = self.config
-        dirs = self.query_abs_dirs()
-        self.copyfile(os.path.join(dirs['abs_work_dir'], c['mozconfig']),
-                      os.path.join(dirs['abs_mozilla_dir'], 'mozconfig'),
-                      error_level=FATAL)
-
-        mach = os.path.join(dirs['abs_mozilla_dir'], 'mach')
-        env = self.query_env()
-        if self._process_command(command=[sys.executable, mach, 'build'],
-                                 cwd=dirs['abs_mozilla_dir'],
-                                 env=env, error_list=MakefileErrorList):
-            self.fatal("Erroring out after the build failed.")
-
     def android_assemble_app(self):
         dirs = self.query_abs_dirs()
 
         command = 'make -C mobile/android/base android_apks'
         env = self.query_env()
         if self._process_command(command=command,
                                  cwd=dirs['abs_objdir'],
                                  env=env, error_list=MakefileErrorList):
             self.fatal("Erroring out after assembling Android APKs failed.")
 
     def add_locales(self):
-        c = self.config
         dirs = self.query_abs_dirs()
         locales = self.query_locales()
 
         for locale in locales:
             command = 'make chrome-%s L10NBASEDIR=%s' % (locale, dirs['abs_l10n_dir'])
             status = self._process_command(command=command,
                                            cwd=dirs['abs_locales_dir'],
                                            error_list=MakefileErrorList)
             if status:
                 self.return_code += 1
                 self.add_summary("Failed to add locale %s!" % locale,
                                  level="error")
             else:
                 self.add_summary("Added locale %s successfully." % locale)
 
-    def package_en_US(self):
-        self.package(package_type='en-US')
-
     def preflight_package_multi(self):
         dirs = self.query_abs_dirs()
         self.run_command("rm -rfv dist/fennec*", cwd=dirs['abs_objdir'])
         # bug 933290
         self.run_command(["touch", "mobile/android/installer/Makefile"], cwd=dirs['abs_objdir'])
 
     def package_multi(self):
         self.package(package_type='multi')
@@ -187,50 +145,16 @@ class MultiLocaleBuild(LocalesMixin, Mer
             env['MOZ_CHROME_MULTILOCALE'] = "en-US " + \
                                             ' '.join(self.query_locales())
             self.info("MOZ_CHROME_MULTILOCALE is %s" % env['MOZ_CHROME_MULTILOCALE'])
         self._process_command(command=command, cwd=dirs['abs_objdir'],
                               env=env, error_list=MakefileErrorList,
                               halt_on_failure=True)
         self.additional_packaging(package_type=package_type, env=env)
 
-    def upload_en_US(self):
-        # TODO
-        self.info("Not written yet.")
-
-    def backup_objdir(self):
-        dirs = self.query_abs_dirs()
-        if not os.path.isdir(dirs['abs_objdir']):
-            self.warning("%s doesn't exist! Skipping..." % dirs['abs_objdir'])
-            return
-        rsync = self.query_exe('rsync')
-        backup_dir = '%s-bak' % dirs['abs_objdir']
-        self.rmtree(backup_dir)
-        self.mkdir_p(backup_dir)
-        self.run_command([rsync, '-a', '--delete', '--partial',
-                          '%s/' % dirs['abs_objdir'],
-                          '%s/' % backup_dir],
-                         error_list=SSHErrorList)
-
-    def restore_objdir(self):
-        dirs = self.query_abs_dirs()
-        rsync = self.query_exe('rsync')
-        backup_dir = '%s-bak' % dirs['abs_objdir']
-        if not os.path.isdir(dirs['abs_objdir']) or not os.path.isdir(backup_dir):
-            self.warning("Both %s and %s need to exist to restore the objdir! Skipping..." % (dirs['abs_objdir'], backup_dir))
-            return
-        self.run_command([rsync, '-a', '--delete', '--partial',
-                          '%s/' % backup_dir,
-                          '%s/' % dirs['abs_objdir']],
-                         error_list=SSHErrorList)
-
-    def upload_multi(self):
-        # TODO
-        self.info("Not written yet.")
-
     def _process_command(self, **kwargs):
         """Stub wrapper function that allows us to call scratchbox in
            MaemoMultiLocaleBuild.
 
         """
         return self.run_command(**kwargs)
 
 # __main__ {{{1
--- a/testing/mozharness/mozharness/mozilla/mar.py
+++ b/testing/mozharness/mozharness/mozilla/mar.py
@@ -18,19 +18,17 @@ class MarMixin(object):
 
     def download_mar_tools(self):
         """downloads mar tools executables (mar,mbsdiff)
            and stores them local_dir()"""
         self.info("getting mar tools")
         dst_dir = self._mar_tool_dir()
         self.mkdir_p(dst_dir)
         config = self.config
-        replace_dict = {'platform': config['platform'],
-                        'branch': config['branch']}
-        url = config['mar_tools_url'] % replace_dict
+        url = config['mar_tools_url']
         binaries = (config['mar'], config['mbsdiff'])
         for binary in binaries:
             from_url = "/".join((url, binary))
             full_path = os.path.join(dst_dir, binary)
             if not os.path.exists(full_path):
                 self.download_file(from_url, file_name=full_path)
                 self.info("downloaded %s" % full_path)
             else:
--- a/testing/mozharness/scripts/desktop_l10n.py
+++ b/testing/mozharness/scripts/desktop_l10n.py
@@ -10,17 +10,17 @@ This script manages Desktop repacks for 
 """
 import os
 import glob
 import re
 import sys
 import shlex
 
 # load modules from parent dir
-sys.path.insert(1, os.path.dirname(sys.path[0]))
+sys.path.insert(1, os.path.dirname(sys.path[0]))  # noqa
 
 from mozharness.base.errors import MakefileErrorList
 from mozharness.base.script import BaseScript
 from mozharness.base.vcs.vcsbase import VCSMixin
 from mozharness.mozilla.automation import AutomationMixin
 from mozharness.mozilla.building.buildbase import (
     MakeUploadOutputParser,
     get_mozconfig_path,
@@ -40,48 +40,37 @@ SUCCESS = 0
 FAILURE = 1
 
 SUCCESS_STR = "Success"
 FAILURE_STR = "Failed"
 
 
 # mandatory configuration options, without them, this script will not work
 # it's a list of values that are already known before starting a build
-configuration_tokens = ('branch',
-                        'platform',
-                        'update_channel',
-                        )
+configuration_tokens = ('branch', 'update_channel')
+
 # some other values such as "%(version)s", ...
 # are defined at run time and they cannot be enforced in the _pre_config_lock
 # phase
-runtime_config_tokens = ('version', 'locale', 'from_buildid',
-                         'abs_objdir', 'revision',
-                         'to_buildid', 'en_us_binary_url',
-                         'en_us_installer_binary_url', 'mar_tools_url',
-                         'who')
+runtime_config_tokens = ('version', 'locale', 'abs_objdir', 'revision',
+                         'en_us_installer_binary_url')
 
 
 # DesktopSingleLocale {{{1
 class DesktopSingleLocale(LocalesMixin, AutomationMixin,
                           VCSMixin, BaseScript, MarMixin):
     """Manages desktop repacks"""
     config_options = [[
         ['--locale', ],
         {"action": "extend",
          "dest": "locales",
          "type": "string",
          "help": "Specify the locale(s) to sign and update. Optionally pass"
                  " revision separated by colon, en-GB:default."}
     ], [
-        ['--locales-file', ],
-        {"action": "store",
-         "dest": "locales_file",
-         "type": "string",
-         "help": "Specify a file to determine which locales to sign and update"}
-    ], [
         ['--tag-override', ],
         {"action": "store",
          "dest": "tag_override",
          "type": "string",
          "help": "Override the tags set for all repos"}
     ], [
         ['--revision', ],
         {"action": "store",
@@ -109,27 +98,22 @@ class DesktopSingleLocale(LocalesMixin, 
     def __init__(self, require_config_file=True):
         # fxbuild style:
         buildscript_kwargs = {
             'all_actions': [
                 "clone-locales",
                 "list-locales",
                 "setup",
                 "repack",
-                "funsize-props",
                 "summary",
             ],
             'config': {
                 "ignore_locales": ["en-US"],
                 "locales_dir": "browser/locales",
-                "buildid_section": "App",
-                "buildid_option": "BuildID",
-                "application_ini": "application.ini",
                 "log_name": "single_locale",
-                "hashType": "sha512",
             },
         }
 
         LocalesMixin.__init__(self)
         BaseScript.__init__(
             self,
             config_options=self.config_options,
             require_config_file=require_config_file,
@@ -258,19 +242,16 @@ class DesktopSingleLocale(LocalesMixin, 
     # Helper methods {{{2
     def query_bootstrap_env(self):
         """returns the env for repacks"""
         if self.bootstrap_env:
             return self.bootstrap_env
         config = self.config
         replace_dict = self.query_abs_dirs()
 
-        replace_dict['en_us_binary_url'] = config.get('en_us_binary_url')
-        # Override en_us_binary_url if packageUrl is passed as a property from
-        # the en-US build
         bootstrap_env = self.query_env(partial_env=config.get("bootstrap_env"),
                                        replace_dict=replace_dict)
         for binary in self._mar_binaries():
             # "mar -> MAR" and 'mar.exe -> MAR' (windows)
             name = binary.replace('.exe', '')
             name = name.upper()
             binary_path = os.path.join(self._mar_tool_dir(), binary)
             # windows fix...
@@ -635,22 +616,16 @@ class DesktopSingleLocale(LocalesMixin, 
         self.abs_dirs = abs_dirs
         return self.abs_dirs
 
     def _mar_binaries(self):
         """returns a tuple with mar and mbsdiff paths"""
         config = self.config
         return (config['mar'], config['mbsdiff'])
 
-    def _mar_dir(self, dirname):
-        """returns the full path of dirname;
-            dirname is an entry in configuration"""
-        dirs = self.query_abs_dirs()
-        return os.path.join(dirs['abs_objdir'], self.config[dirname])
-
     # TODO: replace with ToolToolMixin
     def _get_tooltool_auth_file(self):
         # set the default authentication file based on platform; this
         # corresponds to where puppet puts the token
         if 'tooltool_authentication_file' in self.config:
             fn = self.config['tooltool_authentication_file']
         elif self._is_windows():
             fn = r'c:\builds\relengapi.tok'
--- a/testing/mozharness/scripts/mobile_l10n.py
+++ b/testing/mozharness/scripts/mobile_l10n.py
@@ -17,17 +17,17 @@ import sys
 
 try:
     import simplejson as json
     assert json
 except ImportError:
     import json
 
 # load modules from parent dir
-sys.path.insert(1, os.path.dirname(sys.path[0]))
+sys.path.insert(1, os.path.dirname(sys.path[0]))  # noqa
 
 from mozharness.base.errors import MakefileErrorList
 from mozharness.base.log import OutputParser
 from mozharness.mozilla.automation import AutomationMixin
 from mozharness.mozilla.tooltool import TooltoolMixin
 from mozharness.base.vcs.vcsbase import MercurialScript
 from mozharness.mozilla.l10n.locales import LocalesMixin
 from mozharness.mozilla.secrets import SecretsMixin
@@ -39,23 +39,16 @@ class MobileSingleLocale(LocalesMixin, T
     config_options = [[
         ['--locale', ],
         {"action": "extend",
          "dest": "locales",
          "type": "string",
          "help": "Specify the locale(s) to sign and update"
          }
     ], [
-        ['--locales-file', ],
-        {"action": "store",
-         "dest": "locales_file",
-         "type": "string",
-         "help": "Specify a file to determine which locales to sign and update"
-         }
-    ], [
         ['--tag-override', ],
         {"action": "store",
          "dest": "tag_override",
          "type": "string",
          "help": "Override the tags set for all repos"
          }
     ], [
         ['--revision', ],