bug 701864 - support mobile builds+repacks out of mobile/, mobile/xul/, mobile/android/. r=jhford
authorAki Sasaki <asasaki@mozilla.com>
Wed, 16 Nov 2011 18:08:29 -0800
changeset 5068 767226f46ea5f29c2502934a8c49e01642d90011
parent 5067 b331c679ce2616bb14568883ecb801d71715f44b
child 5069 1420fec41822ed73c5dae226f117f5a1e5b5536b
push id1
push userroot
push dateWed, 17 Dec 2014 00:18:48 +0000
reviewersjhford
bugs701864
bug 701864 - support mobile builds+repacks out of mobile/, mobile/xul/, mobile/android/. r=jhford
mozilla-tests/BuildSlaves.py.template
mozilla-tests/config.py
mozilla-tests/preproduction_config.py
mozilla-tests/production_addon_config.py
mozilla-tests/production_config.py
mozilla-tests/production_tests_master_tm01_localconfig.py
mozilla-tests/staging_addon_config.py
mozilla-tests/staging_ateam_config.py
mozilla-tests/staging_config.py
mozilla/BuildSlaves.py.template
mozilla/config.py
mozilla/preproduction_config.py
mozilla/production_config.py
mozilla/project_branches.py
mozilla/staging_config.py
--- a/mozilla-tests/BuildSlaves.py.template
+++ b/mozilla-tests/BuildSlaves.py.template
@@ -9,10 +9,12 @@ SlavePasswords = {
     "snowleopard": "pass",
     "snowleopard-r4": "pass",
     "lion": "pass",
     "xp": "pass",
     "win7": "pass",
     "w764": "pass",
     "vista": "pass",
     "tegra_android": "pass",
+    "tegra_android-xul": "pass",
+    "tegra_android-o": "pass",
 }
 
--- a/mozilla-tests/config.py
+++ b/mozilla-tests/config.py
@@ -57,16 +57,18 @@ BRANCHES = {
 # Talos
 PLATFORMS = {
     'macosx': {},
     'macosx64': {},
     'win32': {},
     'win64': {},
     'linux': {},
     'linux64' : {},
+    'android': {},
+    'android-xul': {},
     'linux-android': {},
 }
 
 # work around path length problem bug 599795
 # leopard-o == leopard-old
 PLATFORMS['macosx']['slave_platforms'] = ['leopard-o']
 PLATFORMS['macosx']['env_name'] = 'mac-perf'
 PLATFORMS['macosx']['leopard-o'] = {'name': "Rev3 MacOSX Leopard 10.5.8"}
@@ -99,54 +101,78 @@ PLATFORMS['linux']['env_name'] = 'linux-
 PLATFORMS['linux']['fedora'] = {'name': "Rev3 Fedora 12"}
 PLATFORMS['linux']['stage_product'] = 'firefox'
 
 PLATFORMS['linux64']['slave_platforms'] = ['fedora64']
 PLATFORMS['linux64']['env_name'] = 'linux-perf'
 PLATFORMS['linux64']['fedora64'] = {'name': "Rev3 Fedora 12x64"}
 PLATFORMS['linux64']['stage_product'] = 'firefox'
 
-PLATFORMS['linux-android']['slave_platforms'] = ['tegra_android']
+PLATFORMS['linux-android']['slave_platforms'] = ['tegra_android-o']
 PLATFORMS['linux-android']['env_name'] = 'android-perf'
 PLATFORMS['linux-android']['is_mobile'] = True
-PLATFORMS['linux-android']['tegra_android'] = {'name': "Android Tegra 250",
+PLATFORMS['linux-android']['tegra_android-o'] = {'name': "Android Tegra 250",
                                          'download_symbols': False,
                                         }
+PLATFORMS['linux-android']['stage_platform'] = 'android'
 PLATFORMS['linux-android']['stage_product'] = 'mobile'
-PLATFORMS['linux-android']['stage_platform'] = 'android'
 
+PLATFORMS['android']['slave_platforms'] = ['tegra_android']
+PLATFORMS['android']['env_name'] = 'android-perf'
+PLATFORMS['android']['is_mobile'] = True
+PLATFORMS['android']['tegra_android'] = {'name': "Android Tegra 250",
+                                         'download_symbols': False,
+                                        }
+PLATFORMS['android']['stage_product'] = 'mobile'
+
+PLATFORMS['android-xul']['slave_platforms'] = ['tegra_android-xul']
+PLATFORMS['android-xul']['env_name'] = 'android-perf'
+PLATFORMS['android-xul']['is_mobile'] = True
+PLATFORMS['android-xul']['tegra_android-xul'] = {'name': "Android XUL Tegra 250",
+                                         'download_symbols': False,
+                                        }
+PLATFORMS['android-xul']['stage_product'] = 'mobile'
 
 # Lets be explicit instead of magical.  leopard-o should be a second
 # entry in the SLAVE dict
 for platform, platform_config in PLATFORMS.items():
     for slave_platform in platform_config['slave_platforms']:
         platform_config[slave_platform]['slaves'] = sorted(SLAVES[slave_platform])
         if slave_platform in TRY_SLAVES:
             platform_config[slave_platform]['try_slaves'] = sorted(TRY_SLAVES[slave_platform])
         else:
             platform_config[slave_platform]['try_slaves'] = platform_config[slave_platform]['slaves']
 
-MOBILE_PLATFORMS = PLATFORMS['linux-android']['slave_platforms']
+MOBILE_PLATFORMS = PLATFORMS['android']['slave_platforms'] + \
+                   PLATFORMS['android-xul']['slave_platforms'] + \
+                   PLATFORMS['linux-android']['slave_platforms']
 
 ALL_PLATFORMS = PLATFORMS['linux']['slave_platforms'] + \
                 PLATFORMS['linux64']['slave_platforms'] + \
                 PLATFORMS['win32']['slave_platforms'] + \
                 PLATFORMS['macosx64']['slave_platforms']
 
 WIN7_ONLY = ['win7']
 
 NO_WIN = PLATFORMS['macosx64']['slave_platforms'] + PLATFORMS['linux']['slave_platforms'] + PLATFORMS['linux64']['slave_platforms']
 
 NO_MAC = PLATFORMS['linux']['slave_platforms'] + \
          PLATFORMS['linux64']['slave_platforms'] + \
          PLATFORMS['win32']['slave_platforms']
 
 MAC_ONLY = PLATFORMS['macosx64']['slave_platforms']
 
-ANDROID = PLATFORMS['linux-android']['slave_platforms']
+ANDROID = PLATFORMS['android']['slave_platforms'] + \
+          PLATFORMS['android-xul']['slave_platforms'] + \
+          PLATFORMS['linux-android']['slave_platforms']
+
+ANDROID_NATIVE = PLATFORMS['android']['slave_platforms']
+
+ANDROID_XUL = PLATFORMS['android-xul']['slave_platforms'] + \
+              PLATFORMS['linux-android']['slave_platforms']
 
 ADDON_TESTER_PLATFORMS = ['win7', 'fedora', 'snowleopard']
 
 SUITES = {
     'chrome': {
         'enable_by_default': True,
         'suites': GRAPH_CONFIG + ['--activeTests', 'tscroll:a11y:ts_paint:tpaint:tdhtml:tsspider', '--mozAfterPaint'],
         'options': ({}, NO_MAC),
@@ -230,37 +256,37 @@ SUITES = {
     'remote-tsspider': {
         'enable_by_default': True,
         'suites': GRAPH_CONFIG + ['--activeTests', 'tsspider', '--noChrome'],
         'options': (TALOS_REMOTE_FENNEC_OPTS, ANDROID),
     },
     'remote-tpan': {
         'enable_by_default': True,
         'suites': GRAPH_CONFIG + ['--activeTests', 'tpan', '--noChrome'],
-        'options': (TALOS_REMOTE_FENNEC_OPTS, ANDROID),
+        'options': (TALOS_REMOTE_FENNEC_OPTS, ANDROID_XUL),
     },
     'remote-tp4m': {
         'enable_by_default': True,
         'suites': GRAPH_CONFIG + ['--activeTests', 'tp4m'],
-        'options': (TALOS_REMOTE_FENNEC_OPTS, ANDROID),
+        'options': (TALOS_REMOTE_FENNEC_OPTS, ANDROID_XUL),
     },
     'remote-tp4m_nochrome': {
         'enable_by_default': True,
         'suites': GRAPH_CONFIG + ['--activeTests', 'tp4m', '--noChrome'],
         'options': (TALOS_REMOTE_FENNEC_OPTS, ANDROID),
     },
     'remote-twinopen': {
         'enable_by_default': True,
         'suites': GRAPH_CONFIG + ['--activeTests', 'twinopen'],
         'options': (TALOS_REMOTE_FENNEC_OPTS, ANDROID),
     },
     'remote-tzoom': {
         'enable_by_default': True,
         'suites': GRAPH_CONFIG + ['--activeTests', 'tzoom'],
-        'options': (TALOS_REMOTE_FENNEC_OPTS, ANDROID),
+        'options': (TALOS_REMOTE_FENNEC_OPTS, ANDROID_XUL),
     },
     # These old suites are only for 1.9.2 and do not use --mozAfterPaint 
     # chrome VS old_chrome is:
     # 1) without --mozAfterPaint, 2) use ts instead tpaint and 3) use twinopen instead of tpaint
     'old_chrome': {
         'enable_by_default': False,
         'suites': GRAPH_CONFIG + ['--activeTests', 'tscroll:a11y:ts:tdhtml:twinopen:tsspider'],
         'options': ({}, NO_MAC),
@@ -300,16 +326,18 @@ BRANCH_UNITTEST_VARS = {
     # turn on platforms as we get them running
     'platforms': {
         'linux': {},
         'linux64': {},
         'macosx': {},
         'macosx64': {},
         'win32': {},
         'win64': {},
+        'android': {},
+        'android-xul': {},
         'linux-android': {},
     },
 }
 
 # Default set of unit tests
 UNITTEST_SUITES = {
     'opt_unittest_suites': [
         # Turn on chunks for mochitests
@@ -451,16 +479,133 @@ def loadCustomUnittestSuites(BRANCHES, b
     for suiteToAdd in branchConfig.get('add_test_suites', []):
         type = 'opt_unittest_suites' if suiteToAdd[2] == 'opt' else 'debug_unittest_suites'
         # 'debug_unittest_suites' or 'opt_unittest_suites' is a list of tuple
         # addSuite() modifies that list and returns a new one with the added suite
         BRANCHES[branch]['platforms'][suiteToAdd[0]][suiteToAdd[1]][type] = \
             addSuite( suiteGroupName=suiteToAdd[3], newSuiteName=suiteToAdd[4],
                       suiteList=BRANCHES[branch]['platforms'][suiteToAdd[0]][suiteToAdd[1]][type])
 
+ANDROID_UNITTEST_DICT = {
+    'opt_unittest_suites': [
+        ('mochitest-1', (
+            {'suite': 'mochitest-plain',
+             'testPaths': [
+                 'content/smil/test', 'content/xml/document/test',
+                 'content/xslt/tests/mochitest'
+             ]
+            },
+        )),
+        ('mochitest-2', (
+            {'suite': 'mochitest-plain',
+             'testPaths': [
+                 'dom/src/json/test', 'dom/src/jsurl/test',
+                 'dom/tests/mochitest/dom-level0', 'js'
+             ]
+            },
+        )),
+        ('mochitest-3', (
+            {'suite': 'mochitest-plain',
+             'testPaths': ['dom/tests/mochitest/dom-level1-core']
+            },
+        )),
+        ('mochitest-4', (
+            {'suite': 'mochitest-plain',
+             'testPaths': ['dom/tests/mochitest/dom-level2-core']
+            },
+        )),
+        ('mochitest-5', (
+            {'suite': 'mochitest-plain',
+             'testPaths': ['dom/tests/mochitest/ajax/mochikit',
+                           'dom/tests/mochitest/ajax/scriptaculous',
+                           'dom/tests/mochitest/ajax/jquery'],
+            },
+        )),
+        ('mochitest-6', (
+            {'suite': 'mochitest-plain',
+             'testPaths': ['dom/tests/mochitest/dom-level2-html'],
+            },
+        )),
+        ('mochitest-7', (
+            {'suite': 'mochitest-plain',
+             'testPaths': ['Harness_sanity',
+                           'editor/composer/test',
+                           'intl/uconv/tests',
+                           'dom/tests/mochitest/orientation',
+                           'dom/tests/mochitest/storageevent'],
+            },
+        )),
+        ('mochitest-8', (
+            {'suite': 'mochitest-plain',
+             'testPaths': ['layout/xul/test',
+                           'modules/libjar/test/mochitest',
+                           'layout/inspector/tests',
+                           'toolkit/xre/test',
+                           'toolkit/components/microformats/tests',
+                           'MochiKit-1.4.2/tests',
+                           'parser/htmlparser/tests/mochitest'],
+           },
+        )),
+        ('browser-chrome', (
+            {'suite': 'mochitest-browser-chrome',
+             'testPaths': ['mobile']
+            },
+        )),
+        ('reftest-1', (
+            {'suite': 'reftest',
+             'totalChunks': 3,
+             'thisChunk': 1,
+            },
+        )),
+        ('reftest-2', (
+            {'suite': 'reftest',
+             'totalChunks': 3,
+             'thisChunk': 2,
+            },
+        )),
+        ('reftest-3', (
+            {'suite': 'reftest',
+             'totalChunks': 3,
+             'thisChunk': 3,
+            },
+        )),
+        ('crashtest-1', (
+            {'suite': 'crashtest',
+             'totalChunks': 2,
+             'thisChunk': 1,
+            },
+        )),
+        ('crashtest-2', (
+            {'suite': 'crashtest',
+             'totalChunks': 2,
+             'thisChunk': 2,
+            },
+        )),
+        ('jsreftest-1', (
+            {'suite': 'jsreftest',
+             'totalChunks': 3,
+             'thisChunk': 1,
+            },
+        )),
+        ('jsreftest-2', (
+            {'suite': 'jsreftest',
+             'totalChunks': 3,
+             'thisChunk': 2,
+            },
+        )),
+        ('jsreftest-3', (
+            {'suite': 'jsreftest',
+             'totalChunks': 3,
+             'thisChunk': 3,
+            },
+        )),
+    ],
+    'debug_unittest_suites': [],
+}
+
 # You must define opt_unittest_suites when enable_opt_unittests is True for a 
 # platform. Likewise debug_unittest_suites for enable_debug_unittests
 PLATFORM_UNITTEST_VARS = {
         'linux': {
             'builds_before_reboot': 1,
             'unittest-env' : {'DISPLAY': ':0'},
             'enable_opt_unittests': True,
             'enable_debug_unittests': True,
@@ -536,138 +681,39 @@ PLATFORM_UNITTEST_VARS = {
                 'opt_unittest_suites' : removeSuite('mochitest-a11y', UNITTEST_SUITES['opt_unittest_suites'][:]),
                 'debug_unittest_suites' : removeSuite('mochitest-a11y', UNITTEST_SUITES['debug_unittest_suites'][:]),
             },
             'lion': {
                 'opt_unittest_suites' : removeSuite('mochitest-a11y', UNITTEST_SUITES['opt_unittest_suites'][:]),
                 'debug_unittest_suites' : removeSuite('mochitest-a11y', UNITTEST_SUITES['debug_unittest_suites'][:]),
             },
         },
+        'android': {
+            'is_remote': True,
+            'host_utils_url': 'http://bm-remote.build.mozilla.org/tegra/tegra-host-utils.zip',
+            'enable_opt_unittests': True,
+            'enable_debug_unittests': False,
+            'remote_extras': UNITTEST_REMOTE_EXTRAS,
+            'tegra_android': deepcopy(ANDROID_UNITTEST_DICT),
+        },
+        'android-xul': {
+            'is_remote': True,
+            'host_utils_url': 'http://bm-remote.build.mozilla.org/tegra/tegra-host-utils.zip',
+            'enable_opt_unittests': True,
+            'enable_debug_unittests': False,
+            'remote_extras': UNITTEST_REMOTE_EXTRAS,
+            'tegra_android-xul': deepcopy(ANDROID_UNITTEST_DICT),
+        },
         'linux-android': {
             'is_remote': True,
             'host_utils_url': 'http://bm-remote.build.mozilla.org/tegra/tegra-host-utils.zip',
             'enable_opt_unittests': True,
             'enable_debug_unittests': False,
             'remote_extras': UNITTEST_REMOTE_EXTRAS,
-            'tegra_android': {
-                'opt_unittest_suites': [
-                    ('mochitest-1', (
-                        {'suite': 'mochitest-plain',
-                         'testPaths': [
-                             'content/smil/test', 'content/xml/document/test',
-                             'content/xslt/tests/mochitest'
-                         ]
-                        },
-                    )),
-                    ('mochitest-2', (
-                        {'suite': 'mochitest-plain',
-                         'testPaths': [
-                             'dom/src/json/test', 'dom/src/jsurl/test',
-                             'dom/tests/mochitest/dom-level0', 'js'
-                         ]
-                        },
-                    )),
-                    ('mochitest-3', (
-                        {'suite': 'mochitest-plain',
-                         'testPaths': ['dom/tests/mochitest/dom-level1-core']
-                        },
-                    )),
-                    ('mochitest-4', (
-                        {'suite': 'mochitest-plain',
-                         'testPaths': ['dom/tests/mochitest/dom-level2-core']
-                        },
-                    )),
-                    ('mochitest-5', (
-                        {'suite': 'mochitest-plain',
-                         'testPaths': ['dom/tests/mochitest/ajax/mochikit',
-                                       'dom/tests/mochitest/ajax/scriptaculous',
-                                       'dom/tests/mochitest/ajax/jquery'],
-                        },
-                    )),
-                    ('mochitest-6', (
-                        {'suite': 'mochitest-plain',
-                         'testPaths': ['dom/tests/mochitest/dom-level2-html'],
-                        },
-                    )),
-                    ('mochitest-7', (
-                        {'suite': 'mochitest-plain',
-                         'testPaths': ['Harness_sanity',
-                                       'editor/composer/test',
-                                       'intl/uconv/tests',
-                                       'dom/tests/mochitest/orientation',
-                                       'dom/tests/mochitest/storageevent'],
-                        },
-                    )),
-                    ('mochitest-8', (
-                        {'suite': 'mochitest-plain',
-                         'testPaths': ['layout/xul/test',
-                                       'modules/libjar/test/mochitest',
-                                       'layout/inspector/tests',
-                                       'toolkit/xre/test',
-                                       'toolkit/components/microformats/tests',
-                                       'MochiKit-1.4.2/tests',
-                                       'parser/htmlparser/tests/mochitest'],
-                       },
-                    )),
-                    ('browser-chrome', (
-                        {'suite': 'mochitest-browser-chrome',
-                         'testPaths': ['mobile']
-                        },
-                    )),
-                    ('reftest-1', (
-                        {'suite': 'reftest',
-                         'totalChunks': 3,
-                         'thisChunk': 1,
-                        },
-                    )),
-                    ('reftest-2', (
-                        {'suite': 'reftest',
-                         'totalChunks': 3,
-                         'thisChunk': 2,
-                        },
-                    )),
-                    ('reftest-3', (
-                        {'suite': 'reftest',
-                         'totalChunks': 3,
-                         'thisChunk': 3,
-                        },
-                    )),
-                    ('crashtest-1', (
-                        {'suite': 'crashtest',
-                         'totalChunks': 2,
-                         'thisChunk': 1,
-                        },
-                    )),
-                    ('crashtest-2', (
-                        {'suite': 'crashtest',
-                         'totalChunks': 2,
-                         'thisChunk': 2,
-                        },
-                    )),
-                    ('jsreftest-1', (
-                        {'suite': 'jsreftest',
-                         'totalChunks': 3,
-                         'thisChunk': 1,
-                        },
-                    )),
-                    ('jsreftest-2', (
-                        {'suite': 'jsreftest',
-                         'totalChunks': 3,
-                         'thisChunk': 2,
-                        },
-                    )),
-                    ('jsreftest-3', (
-                        {'suite': 'jsreftest',
-                         'totalChunks': 3,
-                         'thisChunk': 3,
-                        },
-                    )),
-                ],
-                'debug_unittest_suites': [],
-            },
+            'tegra_android-o': deepcopy(ANDROID_UNITTEST_DICT),
         },
 }
 
 # Copy project branches into BRANCHES keys
 for branch in ACTIVE_PROJECT_BRANCHES:
     BRANCHES[branch] = deepcopy(PROJECT_BRANCHES[branch])
 
 # Copy unittest vars in first, then platform vars
@@ -806,17 +852,17 @@ for suite in SUITES.keys():
     if options[1] == NO_MAC:
         options = (options[0], NO_MAC + PLATFORMS['win64']['slave_platforms'])
     if not SUITES[suite]['enable_by_default']:
         # Suites that are turned off by default
         BRANCHES['mozilla-central'][suite + '_tests'] = (0, True) + options
     else:
         # Suites that are turned on by default
         BRANCHES['mozilla-central'][suite + '_tests'] = (1, True) + options
-BRANCHES['mozilla-central']['platforms']['linux-android']['enable_debug_unittests'] = True
+BRANCHES['mozilla-central']['platforms']['android']['enable_debug_unittests'] = True
 BRANCHES['mozilla-central']['xperf_tests'] = (1, True, {}, WIN7_ONLY)
 
 ######## mozilla-release
 BRANCHES['mozilla-release']['pgo_strategy'] = 'per-checkin'
 
 ######## mozilla-beta
 BRANCHES['mozilla-beta']['pgo_strategy'] = 'per-checkin'
 
@@ -868,23 +914,23 @@ BRANCHES['addonbaselinetester']['fetch_s
 for suite in SUITES.keys():
     BRANCHES['addonbaselinetester'][suite + '_tests'] = (0, True, {}, [])
 BRANCHES['addonbaselinetester']['addon-baseline_tests'] = (1, False, TALOS_BASELINE_ADDON_OPTS, OLD_BRANCH_ADDON_TESTER_PLATFORMS)
 BRANCHES['addonbaselinetester']['enable_unittests'] = False
 
 ######## try
 BRANCHES['try']['tp4_tests'] = (1, False, TALOS_TP4_OPTS, ALL_PLATFORMS)
 BRANCHES['try']['xperf_tests'] = (1, False, {}, WIN7_ONLY)
-BRANCHES['try']['platforms']['linux-android']['enable_debug_unittests'] = True
+BRANCHES['try']['platforms']['android']['enable_debug_unittests'] = True
 BRANCHES['try']['platforms']['win32']['win7']['opt_unittest_suites'] += [('reftest-no-accel', ['reftest-no-d2d-d3d'])]
 
 # Let's load jetpack for the following branches:
 for branch in ('mozilla-central', 'mozilla-aurora', 'try',  ):
     for pf in PLATFORMS:
-        if pf in ('linux-android', ):
+        if 'android' in pf:
             continue
         for slave_pf in PLATFORMS[pf]['slave_platforms']:
             # These two mac excpetions are because we have been adding debug jetpack to macosx/leopard-o
             # and opt jetpack to macosx64/leopard. This probably was not correct but that's how it came about
             # XXX clean this mess in the next refactoring patch 
             if pf == "macosx" and slave_pf == "leopard-o":
                 BRANCHES[branch]['platforms'][pf][slave_pf]['debug_unittest_suites'] += [('jetpack', ['jetpack'])]
                 continue
@@ -896,16 +942,35 @@ for branch in ('mozilla-central', 'mozil
 
 ######## generic branch variables for project branches
 for projectBranch in ACTIVE_PROJECT_BRANCHES:
     branchConfig = PROJECT_BRANCHES[projectBranch]
     loadDefaultValues(BRANCHES, projectBranch, branchConfig)
     loadCustomTalosSuites(BRANCHES, SUITES, projectBranch, branchConfig)
     loadCustomUnittestSuites(BRANCHES, projectBranch, branchConfig)
 
+#-------------------------------------------------------------------------
+# Remove a branch from this tuple when we merge Firefox 11.0 into it.
+#-------------------------------------------------------------------------
+LINUX_ANDROID_BRANCHES = ('mozilla-aurora', 'mozilla-beta', 'mozilla-release')
+#-------------------------------------------------------------------------
+# Delete the following when 11.0 is released.
+#-------------------------------------------------------------------------
+for branch in BRANCHES.keys():
+    if branch in LINUX_ANDROID_BRANCHES:
+        for p in ('android', 'android-xul'):
+            if p in BRANCHES[branch]['platforms']:
+                del BRANCHES[branch]['platforms'][p]
+    else:
+        if 'linux-android' in BRANCHES[branch]['platforms']:
+            del BRANCHES[branch]['platforms']['linux-android']
+#-------------------------------------------------------------------------
+# End 11.0 hacks.
+#-------------------------------------------------------------------------
+
 if __name__ == "__main__":
     import sys, pprint, re
 
     class BBPrettyPrinter(pprint.PrettyPrinter):
         def format(self, object, context, maxlevels, level):
             if isinstance(object, WithProperties):
                 return pprint.PrettyPrinter.format(self, object.fmtstring, context, maxlevels, level)
             return pprint.PrettyPrinter.format(self, object, context, maxlevels, level)
--- a/mozilla-tests/preproduction_config.py
+++ b/mozilla-tests/preproduction_config.py
@@ -7,16 +7,18 @@ SLAVES = {
     'leopard': dict([("talos-r3-leopard-%03i" % x, {}) for x in range(1,60)]),
     'snowleopard': dict([("talos-r3-snow-%03i" % x, {}) for x in range(1,60)]),
     'snowleopard-r4': dict([("talos-r4-snow-%03i" % x, {}) for x in range(1,81)]),
     'lion': dict([("talos-r4-lion-%03i" % x, {}) for x in range(1,81)]),
     'tegra_android': dict([('tegra-%03i' % x, {'http_port': '30%03i' % x, 'ssl_port': '31%03i' % x}) for x in range(1,178)]),
 }
 
 SLAVES['leopard-o'] = SLAVES['leopard']
+SLAVES['tegra_android-xul'] = SLAVES['tegra_android']
+SLAVES['tegra_android-o'] = SLAVES['tegra_android']
 
 TRY_SLAVES = {}
 
 GRAPH_CONFIG = ['--resultsServer', 'graphs-stage.mozilla.org',
     '--resultsLink', '/server/collect.cgi']
 
 GLOBAL_VARS = {
     'disable_tinderbox_mail': True,
--- a/mozilla-tests/production_addon_config.py
+++ b/mozilla-tests/production_addon_config.py
@@ -4,16 +4,19 @@ SLAVES = {
     'xp': dict([("addon-r3-xp-%03i" % x, {}) for x in range(1,4)]),
     'win7': dict([("addon-r3-w7-%03i" % x, {}) for x in range(1,4)]),
     'w764': dict([("addon-r3-w764-%03i" % x, {}) for x in range(1,4)]),
     'leopard': dict([("addon-r3-leopard-%03i" % x, {}) for x in range(1,4)]),
     'snowleopard': dict([("addon-r3-snow-%03i" % x, {}) for x in range(1,4)]),
     'tegra_android': dict([('tegra-%03i' % x, {'http_port': '30%03i' % x, 'ssl_port': '31%03i' % x}) for x in range(1,4)]),
 }
 
+SLAVES['tegra_android-xul'] = SLAVES['tegra_android']
+SLAVES['tegra_android-o'] = SLAVES['tegra_android']
+
 TRY_SLAVES = {}
 
 GRAPH_CONFIG = ['--resultsServer', 'graphs.mozilla.org',
     '--resultsLink', '/server/collect.cgi']
 
 GLOBAL_VARS = {
     'build_tools_repo_path': 'build/tools',
     'stage_server': 'stage.mozilla.org',
--- a/mozilla-tests/production_config.py
+++ b/mozilla-tests/production_config.py
@@ -7,16 +7,18 @@ SLAVES = {
     'leopard': dict([("talos-r3-leopard-%03i" % x, {}) for x in range(3,10) + range(11,60)]),
     'snowleopard': dict([("talos-r3-snow-%03i" % x, {}) for x in range(3,10) + range(11,60)]),
     'snowleopard-r4': dict([("talos-r4-snow-%03i" % x, {}) for x in range(3,10) + range(11,81)]),
     'lion': dict([("talos-r4-lion-%03i" % x, {}) for x in range(3,10) + range(11,81)]),
     'tegra_android': dict([('tegra-%03i' % x, {'http_port': '30%03i' % x, 'ssl_port': '31%03i' % x}) for x in range(31,178)]),
 }
 
 SLAVES['leopard-o'] = SLAVES['leopard']
+SLAVES['tegra_android-xul'] = SLAVES['tegra_android']
+SLAVES['tegra_android-o'] = SLAVES['tegra_android']
 
 TRY_SLAVES = {}
 
 GRAPH_CONFIG = ['--resultsServer', 'graphs.mozilla.org',
     '--resultsLink', '/server/collect.cgi']
 
 GLOBAL_VARS = {
     'disable_tinderbox_mail': True,
--- a/mozilla-tests/production_tests_master_tm01_localconfig.py
+++ b/mozilla-tests/production_tests_master_tm01_localconfig.py
@@ -9,12 +9,14 @@ c['status'] = [
 c['buildbotURL'] = 'http://test-master01.build.mozilla.org:8012/'
 
 from buildbot import manhole
 c['manhole'] = manhole.PasswordManhole("tcp:1235:interface=127.0.0.1", "cltbld", "password")
 
 from config import BRANCHES, PROJECTS
 # Do everything!
 ACTIVE_BRANCHES = BRANCHES.keys()
-ACTIVE_PLATFORMS = {'linux-android': None}
+ACTIVE_PLATFORMS = {'linux-android': None,
+                    'android': None,
+                    'android-xul': None,}
 ACTIVE_PROJECTS = []
 
 QUEUEDIR = "/dev/shm/queue"
--- a/mozilla-tests/staging_addon_config.py
+++ b/mozilla-tests/staging_addon_config.py
@@ -4,16 +4,19 @@ SLAVES = {
     'xp': dict([("addon-r3-xp-%03i" % x, {}) for x in range(1,4)]),
     'win7': dict([("addon-r3-w7-%03i" % x, {}) for x in range(1,4)]),
     'w764': dict([("addon-r3-w764-%03i" % x, {}) for x in range(1,4)]),
     'leopard': dict([("addon-r3-leopard-%03i" % x, {}) for x in range(1,4)]),
     'snowleopard': dict([("addon-r3-snow-%03i" % x, {}) for x in range(1,4)]),
     'tegra_android': dict([('tegra-%03i' % x, {'http_port': '30%03i' % x, 'ssl_port': '31%03i' % x}) for x in range(1,4)]),
 }
 
+SLAVES['tegra_android-xul'] = SLAVES['tegra_android']
+SLAVES['tegra_android-o'] = SLAVES['tegra_android']
+
 TRY_SLAVES = {}
 
 GRAPH_CONFIG = ['--resultsServer', 'graphs-stage.mozilla.org',
     '--resultsLink', '/server/collect.cgi']
 
 GLOBAL_VARS = {
     'tinderbox_tree': 'MozillaTest',
     'mobile_tinderbox_tree': 'MobileTest',
--- a/mozilla-tests/staging_ateam_config.py
+++ b/mozilla-tests/staging_ateam_config.py
@@ -4,16 +4,19 @@ SLAVES = {
     'xp': dict([("tools-r3-xp-%03i" % x, {}) for x in range(1,4)]),
     'win7': dict([("tools-r3-w7-%03i" % x, {}) for x in range(1,4)]),
     'w764': dict([("tools-r3-w764-%03i" % x, {}) for x in range(1,4)]),
     'leopard': dict([("tools-r3-leopard-%03i" % x, {}) for x in range(1,4)]),
     'snowleopard': dict([("tools-r3-snow-%03i" % x, {}) for x in range(1,4)]),
     'tegra_android': dict([('tegra-%03i' % x, {'http_port': '30%03i' % x, 'ssl_port': '31%03i' % x}) for x in range(1,4)]),
 }
 
+SLAVES['tegra_android-xul'] = SLAVES['tegra_android']
+SLAVES['tegra_android-o'] = SLAVES['tegra_android']
+
 TRY_SLAVES = {}
 
 GRAPH_CONFIG = ['--resultsServer', 'graphs-stage.mozilla.org',
     '--resultsLink', '/server/collect.cgi']
 
 GLOBAL_VARS = {
     'tinderbox_tree': 'MozillaTest',
     'mobile_tinderbox_tree': 'MobileTest',
--- a/mozilla-tests/staging_config.py
+++ b/mozilla-tests/staging_config.py
@@ -7,16 +7,18 @@ SLAVES = {
     'leopard': dict([("talos-r3-leopard-%03i" % x, {}) for x in range(1,60)]),
     'snowleopard': dict([("talos-r3-snow-%03i" % x, {}) for x in range(1,60)]),
     'snowleopard-r4': dict([("talos-r4-snow-%03i" % x, {}) for x in range(1,81)]),
     'lion': dict([("talos-r4-lion-%03i" % x, {}) for x in range(1,81)]),
     'tegra_android': dict([('tegra-%03i' % x, {'http_port': '30%03i' % x, 'ssl_port': '31%03i' % x}) for x in range(1,178)]),
 }
 
 SLAVES['leopard-o'] = SLAVES['leopard']
+SLAVES['tegra_android-xul'] = SLAVES['tegra_android']
+SLAVES['tegra_android-o'] = SLAVES['tegra_android']
 
 TRY_SLAVES = {}
 
 GRAPH_CONFIG = ['--resultsServer', 'graphs-stage.mozilla.org',
     '--resultsLink', '/server/collect.cgi']
 
 GLOBAL_VARS = {
     'disable_tinderbox_mail': True,
--- a/mozilla/BuildSlaves.py.template
+++ b/mozilla/BuildSlaves.py.template
@@ -4,14 +4,16 @@ SlavePasswords = {
         'linux64': 'pass',
         'win32': 'pass',
         'win64': 'pass',
         'try-win32': 'pass',
         'macosx': 'pass',
         'macosx64': 'pass',
         'try-macosx': 'pass',
         'linux-android': 'pass',
+        'android': 'pass',
+        'android-xul': 'pass',
         'linux-mobile': 'pass',
         'macosx-mobile': 'pass',
         'win32-mobile': 'pass',
         }
 tuxedoUsername = 'user'
 tuxedoPassword = 'passwd'
--- a/mozilla/config.py
+++ b/mozilla/config.py
@@ -62,16 +62,19 @@ GLOBAL_VARS = {
         'win32': {},
         'win64': {},
         'macosx64': {},
         'linux-debug': {},
         'linux64-debug': {},
         'macosx-debug': {},
         'macosx64-debug': {},
         'win32-debug': {},
+        'android': {},
+        'android-debug': {},
+        'android-xul': {},
         'linux-android': {},
         'linux-android-debug': {},
         'linux-mobile': {},
         'win32-mobile': {},
         'macosx-mobile': {},
     },
     'pgo_strategy': None,
     'pgo_platforms': ('linux', 'linux64', 'win32'),
@@ -620,20 +623,160 @@ PLATFORM_VARS = {
                 'MOZ_CRASHREPORTER_NO_REPORT': '1',
                 'HG_SHARE_BASE_DIR': 'e:/builds/hg-shared',
                 'BINSCOPE': 'C:\Program Files\Microsoft\SDL Binscope\Binscope.exe',
             },
             'enable_unittests': False,
             'enable_checktests': True,
             'talos_masters': GLOBAL_VARS['talos_masters'],
         },
+        'android': {
+            'base_name': 'Android %(branch)s',
+            'mozconfig': 'android/%(branch)s/nightly',
+            'src_mozconfig': 'mobile/android/config/mozconfigs/android/nightly',
+            'mobile_dir': 'mobile/android',
+            'enable_xulrunner': False,
+            'profiled_build': False,
+            'builds_before_reboot': localconfig.BUILDS_BEFORE_REBOOT,
+            'build_space': 6,
+            'upload_symbols': True,
+            'download_symbols': False,
+            'packageTests': True,
+            'enable_codesighs': False,
+            'create_partial': False,
+            'slaves': SLAVES['linux'],
+            'platform_objdir': OBJDIR,
+            'update_platform': 'Android_arm-eabi-gcc3',
+            'enable_shared_checkouts': True,
+            'env': {
+                'DISPLAY': ':2',
+                'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+                'MOZ_OBJDIR': OBJDIR,
+                'SYMBOL_SERVER_HOST': localconfig.SYMBOL_SERVER_HOST,
+                'SYMBOL_SERVER_USER': 'ffxbld',
+                'SYMBOL_SERVER_PATH': SYMBOL_SERVER_MOBILE_PATH,
+                'SYMBOL_SERVER_SSH_KEY': "/home/cltbld/.ssh/ffxbld_dsa",
+                'POST_SYMBOL_UPLOAD_CMD': SYMBOL_SERVER_POST_UPLOAD_CMD,
+                'TINDERBOX_OUTPUT': '1',
+                'MOZ_CRASHREPORTER_NO_REPORT': '1',
+                'CCACHE_DIR': '/builds/ccache',
+                'CCACHE_COMPRESS': '1',
+                'CCACHE_UMASK': '002',
+                'LC_ALL': 'C',
+                'JAVA_HOME': '/tools/jdk6',
+                'PATH': '/tools/jdk6/bin:/opt/local/bin:/tools/python/bin:/tools/buildbot/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/',
+            },
+            'enable_opt_unittests': False,
+            'talos_masters': GLOBAL_VARS['talos_masters'],
+            'unittest_masters': GLOBAL_VARS['unittest_masters'],
+            'stage_platform': "android",
+            'stage_product': 'mobile',
+            'android_signing': True,
+            'post_upload_include_platform': True,
+            'multi_locale': True,
+            'multi_locale_script': 'scripts/multil10n.py',
+        },
+        'android-xul': {
+            'base_name': 'Android XUL %(branch)s',
+            'mozconfig': 'android-xul/%(branch)s/nightly',
+            'src_mozconfig': 'mobile/xul/config/mozconfigs/android/nightly',
+            'mobile_dir': 'mobile/xul',
+            'enable_xulrunner': False,
+            'profiled_build': False,
+            'builds_before_reboot': localconfig.BUILDS_BEFORE_REBOOT,
+            'build_space': 6,
+            'upload_symbols': True,
+            'download_symbols': False,
+            'packageTests': True,
+            'enable_codesighs': False,
+            'create_partial': False,
+            'slaves': SLAVES['linux'],
+            'platform_objdir': OBJDIR,
+            'update_platform': 'Android_arm-eabi-gcc3',
+            'enable_shared_checkouts': True,
+            'env': {
+                'DISPLAY': ':2',
+                'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+                'MOZ_OBJDIR': OBJDIR,
+                'SYMBOL_SERVER_HOST': localconfig.SYMBOL_SERVER_HOST,
+                'SYMBOL_SERVER_USER': 'ffxbld',
+                'SYMBOL_SERVER_PATH': SYMBOL_SERVER_MOBILE_PATH,
+                'SYMBOL_SERVER_SSH_KEY': "/home/cltbld/.ssh/ffxbld_dsa",
+                'POST_SYMBOL_UPLOAD_CMD': SYMBOL_SERVER_POST_UPLOAD_CMD,
+                'TINDERBOX_OUTPUT': '1',
+                'MOZ_CRASHREPORTER_NO_REPORT': '1',
+                'CCACHE_DIR': '/builds/ccache',
+                'CCACHE_COMPRESS': '1',
+                'CCACHE_UMASK': '002',
+                'LC_ALL': 'C',
+                'JAVA_HOME': '/tools/jdk6',
+                'PATH': '/tools/jdk6/bin:/opt/local/bin:/tools/python/bin:/tools/buildbot/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/',
+            },
+            'enable_opt_unittests': False,
+            'talos_masters': GLOBAL_VARS['talos_masters'],
+            'unittest_masters': GLOBAL_VARS['unittest_masters'],
+            'stage_platform': "android-xul",
+            'stage_product': 'mobile',
+            'android_signing': True,
+            'post_upload_include_platform': True,
+            'multi_locale': True,
+            'multi_locale_script': 'scripts/multil10n.py',
+        },
+        'android-debug': {
+            'base_name': 'Android Debug %(branch)s',
+            'mozconfig': 'android-debug/%(branch)s/nightly',
+            'src_mozconfig': 'mobile/android/config/mozconfigs/android/debug',
+            'mobile_dir': 'mobile/android',
+            'enable_xulrunner': False,
+            'profiled_build': False,
+            'builds_before_reboot': localconfig.BUILDS_BEFORE_REBOOT,
+            'build_space': 6,
+            'upload_symbols': True,
+            'download_symbols': False,
+            'packageTests': True,
+            'enable_codesighs': False,
+            'enable_leaktests': False,
+            'create_snippet': False,
+            'create_partial': False,
+            'slaves': SLAVES['linux'],
+            'platform_objdir': OBJDIR,
+            'update_platform': 'Android_arm-eabi-gcc3',
+            'enable_shared_checkouts': True,
+            'env': {
+                'DISPLAY': ':2',
+                'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+                'MOZ_OBJDIR': OBJDIR,
+                'SYMBOL_SERVER_HOST': localconfig.SYMBOL_SERVER_HOST,
+                'SYMBOL_SERVER_USER': 'ffxbld',
+                'SYMBOL_SERVER_PATH': SYMBOL_SERVER_MOBILE_PATH,
+                'SYMBOL_SERVER_SSH_KEY': "/home/cltbld/.ssh/ffxbld_dsa",
+                'POST_SYMBOL_UPLOAD_CMD': SYMBOL_SERVER_POST_UPLOAD_CMD,
+                'TINDERBOX_OUTPUT': '1',
+                'MOZ_CRASHREPORTER_NO_REPORT': '1',
+                'CCACHE_DIR': '/builds/ccache',
+                'CCACHE_COMPRESS': '1',
+                'CCACHE_UMASK': '002',
+                'LC_ALL': 'C',
+                'JAVA_HOME': '/tools/jdk6',
+                'PATH': '/tools/jdk6/bin:/opt/local/bin:/tools/python/bin:/tools/buildbot/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/',
+            },
+            'enable_opt_unittests': False,
+            'talos_masters': GLOBAL_VARS['talos_masters'],
+            'unittest_masters': GLOBAL_VARS['unittest_masters'],
+            'stage_platform': "android-debug",
+            'stage_product': 'mobile',
+            'android_signing': True,
+            'post_upload_include_platform': True,
+        },
         'linux-android': {
             'base_name': 'Android %(branch)s',
             'mozconfig': 'linux-android/%(branch)s/nightly',
             'src_mozconfig': 'mobile/config/mozconfigs/android/nightly',
+            'enable_nightly': False,
+            'enable_dep': False,
             'enable_xulrunner': False,
             'profiled_build': False,
             'builds_before_reboot': localconfig.BUILDS_BEFORE_REBOOT,
             'build_space': 6,
             'upload_symbols': True,
             'download_symbols': False,
             'packageTests': True,
             'enable_codesighs': False,
@@ -669,16 +812,18 @@ PLATFORM_VARS = {
             'post_upload_include_platform': True,
             'multi_locale': True,
             'multi_locale_script': 'scripts/multil10n.py',
         },
         'linux-android-debug': {
             'base_name': 'Android Debug %(branch)s',
             'mozconfig': 'linux-android-debug/%(branch)s/nightly',
             'src_mozconfig': 'mobile/config/mozconfigs/android/debug',
+            'enable_nightly': False,
+            'enable_dep': False,
             'enable_xulrunner': False,
             'profiled_build': False,
             'builds_before_reboot': localconfig.BUILDS_BEFORE_REBOOT,
             'build_space': 6,
             'upload_symbols': True,
             'download_symbols': False,
             'packageTests': True,
             'enable_codesighs': False,
@@ -713,17 +858,18 @@ PLATFORM_VARS = {
             'stage_platform': "android-debug",
             'stage_product': 'mobile',
             'android_signing': True,
             'post_upload_include_platform': True,
         },
         'linux-mobile': {
             'base_name': 'Linux Mobile Desktop %(branch)s',
             'mozconfig': 'linux-mobile/%(branch)s/nightly',
-            'src_mozconfig': 'mobile/config/mozconfigs/linux-desktop/nightly',
+            'src_mozconfig': 'mobile/xul/config/mozconfigs/linux-desktop/nightly',
+            'mobile_dir': 'mobile/xul',
             'profiled_build': False,
             'enable_xulrunner': False,
             'builds_before_reboot': localconfig.BUILDS_BEFORE_REBOOT,
             'build_space': 6,
             'packageTests': True,
             'upload_symbols': True,
             'update_platform': 'Linux_x86-gcc3',
             'create_partial': False,
@@ -758,17 +904,18 @@ PLATFORM_VARS = {
             'stage_platform': "linux",
             'stage_product': 'mobile',
             'post_upload_include_platform': True,
             'enable_dep': False,
         },
         'win32-mobile': {
             'base_name': 'WINNT 5.2 Mobile Desktop %(branch)s',
             'mozconfig': 'win32-mobile/%(branch)s/nightly',
-            'src_mozconfig': 'mobile/config/mozconfigs/win32-desktop/nightly',
+            'src_mozconfig': 'mobile/xul/config/mozconfigs/win32-desktop/nightly',
+            'mobile_dir': 'mobile/xul',
             'profiled_build': False,
             'enable_xulrunner': False,
             'builds_before_reboot': localconfig.BUILDS_BEFORE_REBOOT,
             'build_space': 6,
             'packageTests': True,
             'upload_symbols': True,
             'update_platform': 'WINNT_x86-msvc',
             'slaves': SLAVES['win32'],
@@ -803,17 +950,18 @@ PLATFORM_VARS = {
             'stage_platform': "win32",
             'stage_product': 'mobile',
             'post_upload_include_platform': True,
             'enable_dep': False,
         },
         'macosx-mobile': {
             'base_name': 'OS X 10.5.2 Mobile Desktop %(branch)s',
             'mozconfig': 'macosx-mobile/%(branch)s/nightly',
-            'src_mozconfig': 'mobile/config/mozconfigs/macosx-desktop/nightly',
+            'src_mozconfig': 'mobile/xul/config/mozconfigs/macosx-desktop/nightly',
+            'mobile_dir': 'mobile/xul',
             'profiled_build': False,
             'enable_xulrunner': False,
             'builds_before_reboot': localconfig.BUILDS_BEFORE_REBOOT,
             'build_space': 6,
             'packageTests': True,
             'upload_symbols': True,
             'update_platform': 'Darwin_x86_64-gcc3',
             'platform_objdir': "%s/i386" % OBJDIR, #needed?
@@ -1086,19 +1234,21 @@ BRANCHES['mozilla-central']['aus2_ssh_ke
 BRANCHES['mozilla-central']['aus2_base_upload_dir'] = '/opt/aus2/incoming/2/Firefox/mozilla-central'
 BRANCHES['mozilla-central']['aus2_base_upload_dir_l10n'] = '/opt/aus2/incoming/2/Firefox/mozilla-central'
 BRANCHES['mozilla-central']['aus2_mobile_base_upload_dir'] = '/opt/aus2/incoming/2/Fennec/mozilla-central'
 BRANCHES['mozilla-central']['aus2_mobile_base_upload_dir_l10n'] = '/opt/aus2/incoming/2/Fennec/mozilla-central'
 BRANCHES['mozilla-central']['enable_blocklist_update'] = True
 BRANCHES['mozilla-central']['blocklist_update_on_closed_tree'] = False
 BRANCHES['mozilla-central']['platforms']['linux-rpm']['enable_nightly'] = True
 BRANCHES['mozilla-central']['platforms']['linux64-rpm']['enable_nightly'] = True
-BRANCHES['mozilla-central']['platforms']['linux-android-debug']['enable_nightly'] = True
-BRANCHES['mozilla-central']['platforms']['linux-android']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-central'
+BRANCHES['mozilla-central']['platforms']['android']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-central'
+BRANCHES['mozilla-central']['platforms']['android-xul']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-central'
 BRANCHES['mozilla-central']['platforms']['macosx64-debug']['enable_leaktests'] = False
+del BRANCHES['mozilla-central']['platforms']['linux-android']
+del BRANCHES['mozilla-central']['platforms']['linux-android-debug']
 
 ######## shadow-central
 # custom settings for shadow-central repo
 BRANCHES['shadow-central']['hgurl'] = 'https://hgpvt.mozilla.org/'
 # have to use complete config repo path so it doesn't look to https://hgpvt.mozilla.org
 BRANCHES['shadow-central']['config_repo_path'] = 'http://hg.mozilla.org/build/buildbot-configs'
 # This is a path, relative to HGURL, where the repository is located
 # HGURL + repo_path should be a valid repository
@@ -1155,19 +1305,41 @@ BRANCHES['mozilla-release']['allLocalesF
 BRANCHES['mozilla-release']['localesURL'] = \
     '%s/build/buildbot-configs/raw-file/production/mozilla/l10n/all-locales.mozilla-release' % (GLOBAL_VARS['hgurl'])
 BRANCHES['mozilla-release']['enable_multi_locale'] = True
 BRANCHES['mozilla-release']['upload_mobile_symbols'] = True
 # temp disable nightlies (which includes turning off enable_l10n and l10nNightlyUpdate)
 BRANCHES['mozilla-release']['enable_nightly'] = False
 BRANCHES['mozilla-release']['enable_blocklist_update'] = False
 BRANCHES['mozilla-release']['blocklist_update_on_closed_tree'] = False
-BRANCHES['mozilla-release']['platforms']['linux-android']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-release'
 del BRANCHES['mozilla-release']['platforms']['win64']
 BRANCHES['mozilla-release']['enable_valgrind'] = False
+#-------------------------------------------------------------------------
+# Delete the below lines when 11.0 merges into release
+#-------------------------------------------------------------------------
+del BRANCHES['mozilla-release']['platforms']['android']
+del BRANCHES['mozilla-release']['platforms']['android-debug']
+del BRANCHES['mozilla-release']['platforms']['android-xul']
+BRANCHES['mozilla-release']['platforms']['linux-android']['enable_dep'] = True
+BRANCHES['mozilla-release']['platforms']['linux-android-debug']['enable_dep'] = True
+BRANCHES['mozilla-release']['platforms']['linux-android']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-release'
+BRANCHES['mozilla-release']['platforms']['linux-mobile']['src_mozconfig'] = 'mobile/config/mozconfigs/linux-desktop/nightly'
+BRANCHES['mozilla-release']['platforms']['linux-mobile']['mobile_dir'] = 'mobile'
+BRANCHES['mozilla-release']['platforms']['macosx-mobile']['src_mozconfig'] = 'mobile/config/mozconfigs/macosx-desktop/nightly'
+BRANCHES['mozilla-release']['platforms']['macosx-mobile']['mobile_dir'] = 'mobile'
+BRANCHES['mozilla-release']['platforms']['win32-mobile']['src_mozconfig'] = 'mobile/config/mozconfigs/win32-desktop/nightly'
+BRANCHES['mozilla-release']['platforms']['win32-mobile']['mobile_dir'] = 'mobile'
+#-------------------------------------------------------------------------
+# Uncomment the below lines when 11.0 merges into release
+#-------------------------------------------------------------------------
+#BRANCHES['mozilla-release']['platforms']['android']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-release'
+#BRANCHES['mozilla-release']['platforms']['android-xul']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-release'
+#-------------------------------------------------------------------------
+# End 11.0
+#-------------------------------------------------------------------------
 
 ######## mozilla-beta
 BRANCHES['mozilla-beta']['repo_path'] = 'releases/mozilla-beta'
 BRANCHES['mozilla-beta']['l10n_repo_path'] = 'releases/l10n/mozilla-beta'
 BRANCHES['mozilla-beta']['enable_weekly_bundle'] = True
 BRANCHES['mozilla-beta']['update_channel'] = 'beta'
 BRANCHES['mozilla-beta']['start_hour'] = [3]
 BRANCHES['mozilla-beta']['start_minute'] = [2]
@@ -1203,19 +1375,41 @@ BRANCHES['mozilla-beta']['enable_multi_l
 BRANCHES['mozilla-beta']['upload_mobile_symbols'] = True
 # temp disable nightlies (which includes turning off enable_l10n and l10nNightlyUpdate)
 BRANCHES['mozilla-beta']['enable_nightly'] = False
 # If True, a complete update snippet for this branch will be generated and
 # uploaded to. Any platforms with 'debug' in them will not have snippets
 # generated.
 BRANCHES['mozilla-beta']['enable_blocklist_update'] = True
 BRANCHES['mozilla-beta']['blocklist_update_on_closed_tree'] = False
-BRANCHES['mozilla-beta']['platforms']['linux-android']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-beta'
 del BRANCHES['mozilla-beta']['platforms']['win64']
 BRANCHES['mozilla-beta']['enable_valgrind'] = False
+#-------------------------------------------------------------------------
+# Delete the below lines when 11.0 merges into beta
+#-------------------------------------------------------------------------
+del BRANCHES['mozilla-beta']['platforms']['android']
+del BRANCHES['mozilla-beta']['platforms']['android-debug']
+del BRANCHES['mozilla-beta']['platforms']['android-xul']
+BRANCHES['mozilla-beta']['platforms']['linux-android']['enable_dep'] = True
+BRANCHES['mozilla-beta']['platforms']['linux-android-debug']['enable_dep'] = True
+BRANCHES['mozilla-beta']['platforms']['linux-android']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-beta'
+BRANCHES['mozilla-beta']['platforms']['linux-mobile']['src_mozconfig'] = 'mobile/config/mozconfigs/linux-desktop/nightly'
+BRANCHES['mozilla-beta']['platforms']['linux-mobile']['mobile_dir'] = 'mobile'
+BRANCHES['mozilla-beta']['platforms']['macosx-mobile']['src_mozconfig'] = 'mobile/config/mozconfigs/macosx-desktop/nightly'
+BRANCHES['mozilla-beta']['platforms']['macosx-mobile']['mobile_dir'] = 'mobile'
+BRANCHES['mozilla-beta']['platforms']['win32-mobile']['src_mozconfig'] = 'mobile/config/mozconfigs/win32-desktop/nightly'
+BRANCHES['mozilla-beta']['platforms']['win32-mobile']['mobile_dir'] = 'mobile'
+#-------------------------------------------------------------------------
+# Uncomment the below lines when 11.0 merges into beta
+#-------------------------------------------------------------------------
+#BRANCHES['mozilla-beta']['platforms']['android']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-beta'
+#BRANCHES['mozilla-beta']['platforms']['android-xul']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-beta'
+#-------------------------------------------------------------------------
+# End 11.0
+#-------------------------------------------------------------------------
 
 ######## mozilla-aurora
 BRANCHES['mozilla-aurora']['repo_path'] = 'releases/mozilla-aurora'
 BRANCHES['mozilla-aurora']['l10n_repo_path'] = 'releases/l10n/mozilla-aurora'
 BRANCHES['mozilla-aurora']['enable_weekly_bundle'] = True
 BRANCHES['mozilla-aurora']['start_hour'] = [4]
 BRANCHES['mozilla-aurora']['start_minute'] = [20]
 # Enable XULRunner / SDK builds
@@ -1258,21 +1452,45 @@ BRANCHES['mozilla-aurora']['create_parti
 BRANCHES['mozilla-aurora']['create_partial_l10n'] = True
 BRANCHES['mozilla-aurora']['aus2_user'] = 'ffxbld'
 BRANCHES['mozilla-aurora']['aus2_ssh_key'] = 'ffxbld_dsa'
 # use mozilla-aurora-test when disabling updates for merges
 BRANCHES['mozilla-aurora']['aus2_base_upload_dir'] = '/opt/aus2/incoming/2/Firefox/mozilla-aurora'
 BRANCHES['mozilla-aurora']['aus2_base_upload_dir_l10n'] = '/opt/aus2/incoming/2/Firefox/mozilla-aurora'
 BRANCHES['mozilla-aurora']['aus2_mobile_base_upload_dir'] = '/opt/aus2/incoming/2/Fennec/mozilla-aurora'
 BRANCHES['mozilla-aurora']['aus2_mobile_base_upload_dir_l10n'] = '/opt/aus2/incoming/2/Fennec/mozilla-aurora'
-BRANCHES['mozilla-aurora']['platforms']['linux-android']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-aurora'
 BRANCHES['mozilla-aurora']['enable_blocklist_update'] = True
 BRANCHES['mozilla-aurora']['blocklist_update_on_closed_tree'] = False
 del BRANCHES['mozilla-aurora']['platforms']['win64']
 BRANCHES['mozilla-aurora']['enable_valgrind'] = False
+#-------------------------------------------------------------------------
+# Delete the below lines when 11.0 merges into aurora
+#-------------------------------------------------------------------------
+del BRANCHES['mozilla-aurora']['platforms']['android']
+del BRANCHES['mozilla-aurora']['platforms']['android-debug']
+del BRANCHES['mozilla-aurora']['platforms']['android-xul']
+BRANCHES['mozilla-aurora']['platforms']['linux-android']['enable_dep'] = True
+BRANCHES['mozilla-aurora']['platforms']['linux-android']['enable_nightly'] = True
+BRANCHES['mozilla-aurora']['platforms']['linux-android-debug']['enable_dep'] = True
+BRANCHES['mozilla-aurora']['platforms']['linux-android-debug']['enable_nightly'] = True
+BRANCHES['mozilla-aurora']['platforms']['linux-android']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-aurora'
+BRANCHES['mozilla-aurora']['platforms']['linux-mobile']['src_mozconfig'] = 'mobile/config/mozconfigs/linux-desktop/nightly'
+BRANCHES['mozilla-aurora']['platforms']['linux-mobile']['mobile_dir'] = 'mobile'
+BRANCHES['mozilla-aurora']['platforms']['macosx-mobile']['src_mozconfig'] = 'mobile/config/mozconfigs/macosx-desktop/nightly'
+BRANCHES['mozilla-aurora']['platforms']['macosx-mobile']['mobile_dir'] = 'mobile'
+BRANCHES['mozilla-aurora']['platforms']['win32-mobile']['src_mozconfig'] = 'mobile/config/mozconfigs/win32-desktop/nightly'
+BRANCHES['mozilla-aurora']['platforms']['win32-mobile']['mobile_dir'] = 'mobile'
+#-------------------------------------------------------------------------
+# Uncomment the below lines when 11.0 merges into beta
+#-------------------------------------------------------------------------
+#BRANCHES['mozilla-aurora']['platforms']['android']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-aurora'
+#BRANCHES['mozilla-aurora']['platforms']['android-xul']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'mozilla-aurora'
+#-------------------------------------------------------------------------
+# End 11.0 deletion
+#-------------------------------------------------------------------------
 
 ######## mozilla-1.9.1
 # mozilla-1.9.1 can be removed once we're no longer refreshing MUs from 3.5.18,
 # or bug 662298 is fixed.
 BRANCHES['mozilla-1.9.1']['repo_path'] = 'releases/mozilla-1.9.1'
 BRANCHES['mozilla-1.9.1']['l10n_repo_path'] = 'releases/l10n-mozilla-1.9.1'
 BRANCHES['mozilla-1.9.1']['enable_weekly_bundle'] = True
 BRANCHES['mozilla-1.9.1']['brand_name'] = 'Shiretoko'
@@ -1471,27 +1689,29 @@ BRANCHES['try']['platforms']['linuxqt'][
 BRANCHES['try']['platforms']['win32']['slaves'] = TRY_SLAVES['win32']
 BRANCHES['try']['platforms']['win64']['slaves'] = TRY_SLAVES['win64']
 BRANCHES['try']['platforms']['macosx64']['slaves'] = TRY_SLAVES['macosx64']
 BRANCHES['try']['platforms']['linux-debug']['slaves'] = TRY_SLAVES['linux']
 BRANCHES['try']['platforms']['linux64-debug']['slaves'] = TRY_SLAVES['linux64']
 BRANCHES['try']['platforms']['win32-debug']['slaves'] = TRY_SLAVES['win32']
 BRANCHES['try']['platforms']['macosx-debug']['slaves'] = TRY_SLAVES['macosx']
 BRANCHES['try']['platforms']['macosx64-debug']['slaves'] = TRY_SLAVES['macosx64']
-BRANCHES['try']['platforms']['linux-android']['slaves'] = TRY_SLAVES['linux']
-BRANCHES['try']['platforms']['linux-android-debug']['slaves'] = TRY_SLAVES['linux']
+BRANCHES['try']['platforms']['android']['slaves'] = TRY_SLAVES['linux']
+BRANCHES['try']['platforms']['android-debug']['slaves'] = TRY_SLAVES['linux']
+BRANCHES['try']['platforms']['android-xul']['slaves'] = TRY_SLAVES['linux']
 BRANCHES['try']['platforms']['linux-mobile']['slaves'] = TRY_SLAVES['linux']
 BRANCHES['try']['platforms']['win32-mobile']['slaves'] = TRY_SLAVES['win32']
 BRANCHES['try']['platforms']['macosx-mobile']['slaves'] = TRY_SLAVES['macosx']
 BRANCHES['try']['platforms']['linux']['upload_symbols'] = False
 BRANCHES['try']['platforms']['linux64']['upload_symbols'] = False
 BRANCHES['try']['platforms']['linuxqt']['upload_symbols'] = False
 BRANCHES['try']['platforms']['macosx64']['upload_symbols'] = False
-BRANCHES['try']['platforms']['linux-android']['upload_symbols'] = False
-BRANCHES['try']['platforms']['linux-android-debug']['upload_symbols'] = False
+BRANCHES['try']['platforms']['android']['upload_symbols'] = False
+BRANCHES['try']['platforms']['android-xul']['upload_symbols'] = False
+BRANCHES['try']['platforms']['android-debug']['upload_symbols'] = False
 BRANCHES['try']['platforms']['linux-mobile']['upload_symbols'] = False
 BRANCHES['try']['platforms']['win32-mobile']['upload_symbols'] = False
 BRANCHES['try']['platforms']['macosx-mobile']['upload_symbols'] = False
 BRANCHES['try']['platforms']['win32']['upload_symbols'] = True
 BRANCHES['try']['platforms']['win32']['env']['SYMBOL_SERVER_USER'] = 'trybld'
 BRANCHES['try']['platforms']['win32']['env']['SYMBOL_SERVER_PATH'] = '/symbols/windows'
 BRANCHES['try']['platforms']['win32']['env']['SYMBOL_SERVER_SSH_KEY'] = '/c/Documents and Settings/cltbld/.ssh/trybld_dsa'
 BRANCHES['try']['platforms']['win64']['upload_symbols'] = False
@@ -1544,31 +1764,35 @@ for branch in ACTIVE_PROJECT_BRANCHES:
     #make sure it has an ending slash
     BRANCHES[branch]['l10nUploadPath'] = \
         '/home/ftp/pub/mozilla.org/firefox/nightly/latest-' + branch + '-l10n/' 
     BRANCHES[branch]['enUS_binaryURL'] = GLOBAL_VARS['download_base_url'] + branchConfig.get('enUS_binaryURL', '')
     if BRANCHES[branch]['platforms'].has_key('linux'):
         BRANCHES[branch]['platforms']['linux']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = branch
     if BRANCHES[branch]['platforms'].has_key('linux-mobile'):
         BRANCHES[branch]['platforms']['linux-mobile']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'linux-mobile-' + branch
+    if BRANCHES[branch]['platforms'].has_key('android'):
+        BRANCHES[branch]['platforms']['android']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'android-' + branch
+    if BRANCHES[branch]['platforms'].has_key('android-xul'):
+        BRANCHES[branch]['platforms']['android-xul']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'android-xul-' + branch
     if BRANCHES[branch]['platforms'].has_key('linux-android'):
         BRANCHES[branch]['platforms']['linux-android']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'android-' + branch
     if BRANCHES[branch]['platforms'].has_key('linuxqt'):
         BRANCHES[branch]['platforms']['linuxqt']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'linuxqt-' + branch
     if BRANCHES[branch]['platforms'].has_key('linux64'):
         BRANCHES[branch]['platforms']['linux64']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'linux64-' + branch
     if BRANCHES[branch]['platforms'].has_key('win32'):
         BRANCHES[branch]['platforms']['win32']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = branch
     if BRANCHES[branch]['platforms'].has_key('win64'):
         BRANCHES[branch]['platforms']['win64']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'win64-' + branch
     if BRANCHES[branch]['platforms'].has_key('macosx64'):
         BRANCHES[branch]['platforms']['macosx64']['env']['MOZ_SYMBOLS_EXTRA_BUILDID'] = 'macosx64-' + branch
     # point to the mozconfigs, default is generic
     for platform in BRANCHES[branch]['platforms']:
-        if platform.endswith('debug') and 'linux-android' not in platform:
+        if platform.endswith('debug') and 'android' not in platform:
             BRANCHES[branch]['platforms'][platform]['mozconfig'] = platform.split('-')[0] + '/' + branchConfig.get('mozconfig_dir', 'generic') + '/debug'
         elif platform.endswith('qt'):
             BRANCHES[branch]['platforms'][platform]['mozconfig'] = 'linux/' + branchConfig.get('mozconfig_dir', 'generic') + '/qt'
         else:
             BRANCHES[branch]['platforms'][platform]['mozconfig'] = platform + '/' + branchConfig.get('mozconfig_dir', 'generic') + '/nightly'
     BRANCHES[branch]['enable_valgrind'] = False
 
 # Bug 578880, remove the following block after gcc-4.5 switch
--- a/mozilla/preproduction_config.py
+++ b/mozilla/preproduction_config.py
@@ -10,16 +10,18 @@ LINUX64_IXS    = ['linux64-ix-slave%02i'
 SLAVES = {
     'linux':            LINUX_VMS + LINUX_IXS,
     'linux64':          LINUX64_VMS + LINUX64_IXS,
     'win32':            WIN32_IXS,
     'win64':            WIN64_IXS,
     'macosx':           MAC_MINIS + XSERVES,
     'macosx64':         MAC_SNOW_MINIS,
     'linux-android':    LINUX_VMS + LINUX_IXS,
+    'android':          LINUX_VMS + LINUX_IXS,
+    'android-xul':      LINUX_VMS + LINUX_IXS,
     'linux-mobile':     LINUX_VMS + LINUX_IXS,
     'macosx-mobile':    MAC_MINIS + XSERVES,
     'win32-mobile':     WIN32_IXS,
 }
 
 TRY_LINUX      = ['try-linux-slave%02i' % x for x in range (1,31)]
 TRY_LINUX_IXS  = []
 TRY_LINUX64    = ['try-linux64-slave%02i' % x for x in range (1,11)]
--- a/mozilla/production_config.py
+++ b/mozilla/production_config.py
@@ -17,16 +17,18 @@ WIN64_IXS      = ['w64-ix-slave%02i' % x
 SLAVES = {
     'linux':            LINUX_VMS + LINUX_IXS,
     'linux64':          LINUX64_VMS + LINUX64_IXS,
     'win32':            WIN32_IXS,
     'win64':            WIN64_IXS,
     'macosx':           MAC_MINIS + XSERVES,
     'macosx64':         MAC_SNOW_MINIS,
     'linux-android':    LINUX_VMS + LINUX_IXS,
+    'android':          LINUX_VMS + LINUX_IXS,
+    'android-xul':      LINUX_VMS + LINUX_IXS,
     'linux-mobile':     LINUX_VMS + LINUX_IXS,
     'macosx-mobile':    MAC_MINIS + XSERVES,
     'win32-mobile':     WIN32_IXS,
 }
 
 TRY_LINUX      = ['try-linux-slave%02i' % x for x in range(1,5) + range(6,31)] + \
                  ['moz2-linux-slave%02i' % x for x in range(47,51)]
 TRY_LINUX_IXS  = ['mv-moz2-linux-ix-slave%02i' % x for x in range(22,24)] + \
--- a/mozilla/project_branches.py
+++ b/mozilla/project_branches.py
@@ -35,17 +35,17 @@ PROJECT_BRANCHES = {
                 'dont_build': True,
             },
             'macosx': {
                 'slave_platforms': [],
             },
             'macosx64': {
                 'slave_platforms': ['snowleopard'],
             },
-            'linux-android': {
+            'android': {
                 'enable_opt_unittests': False,
                 'enable_debug_unittests': False,
                 'tegra_android': {},
             },
         },
     },
     'electrolysis': {
         'mozconfig_dir': 'electrolysis',
@@ -184,17 +184,17 @@ PROJECT_BRANCHES = {
         'enable_l10n': True,
         'enable_l10n_onchange': False,
         'l10n_repo_path': 'l10n-central',
         'create_snippet': True,
         'create_mobile_snippet': True,
         'create_partial': True,
         'lock_platforms': True,
         'platforms': {
-            'linux-android': {},
+            'android': {},
         },
         'l10n_platforms': [],
         'talos_suites': {
             'remote-tp4m': 0,
         },
     },
     'cedar': {},
     # customizations for windows update service changes (bug 481815)
--- a/mozilla/staging_config.py
+++ b/mozilla/staging_config.py
@@ -10,16 +10,18 @@ LINUX64_IXS    = ['linux64-ix-slave%02i'
 SLAVES = {
     'linux':            LINUX_VMS + LINUX_IXS,
     'linux64':          LINUX64_VMS + LINUX64_IXS,
     'win32':            WIN32_IXS,
     'win64':            WIN64_IXS,
     'macosx':           MAC_MINIS + XSERVES,
     'macosx64':         MAC_SNOW_MINIS,
     'linux-android':    LINUX_VMS + LINUX_IXS,
+    'android':          LINUX_VMS + LINUX_IXS,
+    'android-xul':      LINUX_VMS + LINUX_IXS,
     'linux-mobile':     LINUX_VMS + LINUX_IXS,
     'macosx-mobile':    MAC_MINIS + XSERVES,
     'win32-mobile':     WIN32_IXS,
 }
 
 TRY_LINUX      = ['try-linux-slave%02i' % x for x in range (1,31)]
 TRY_LINUX_IXS  = []
 TRY_LINUX64    = ['try-linux64-slave%02i' % x for x in range (1,11)]