Bug 965151 - Setup tooltool in valgrind builds. r=nthomas
authorMike Hommey <mh@glandium.org>
Wed, 29 Oct 2014 13:26:16 +0900 (2014-10-29)
changeset 3928 0fefa828e5f9a170255a1946337f4b11ab2b2edf
parent 3926 a2841db14eaff8d3e570e19fad0b97f69113c546
child 3932 4ee7c1d4d9ae94c36ca44147836a2a8ebfcaf544
child 3933 d230027f84a325c95b5ba5809490d1a6755ebb85
push id3238
push usermh@glandium.org
push dateWed, 29 Oct 2014 04:26:35 +0000 (2014-10-29)
reviewersnthomas
bugs965151
Bug 965151 - Setup tooltool in valgrind builds. r=nthomas
misc.py
process/factory.py
--- a/misc.py
+++ b/misc.py
@@ -2356,16 +2356,19 @@ def generateBranchObjects(config, name, 
                 mock_packages=pf.get('mock_packages'),
                 mock_copyin_files=pf.get('mock_copyin_files'),
                 env=valgrind_env,
                 reboot_command=['python',
                                 'scripts/buildfarm/maintenance/count_and_reboot.py',
                                 '-f', './reboot_count.txt',
                                 '-n', '0',
                                 '-z'],
+                tooltool_manifest_src=pf.get('tooltool_manifest_src'),
+                tooltool_script=pf.get('tooltool_script'),
+                tooltool_url_list=config.get('tooltool_url_list', []),
             )
             mozilla2_valgrind_builder = {
                 'name': '%s valgrind' % pf['base_name'],
                 'slavenames': pf['slaves'],
                 'builddir': '%s-%s-valgrind' % (name, platform),
                 'slavebuilddir': normalizeName('%s-%s-valgrind' % (name, platform), pf['stage_product']),
                 'factory': mozilla2_valgrind_factory,
                 'category': name,
--- a/process/factory.py
+++ b/process/factory.py
@@ -5235,41 +5235,52 @@ def extractJSONProperties(rv, stdout, st
     props = {}
     try:
         stdout = stdout.strip()
         props.update(json.loads(stdout))
     finally:
         return props
 
 
-class ScriptFactory(RequestSortingBuildFactory):
+class ScriptFactory(RequestSortingBuildFactory, TooltoolMixin):
 
     def __init__(self, scriptRepo, scriptName, cwd=None, interpreter=None,
                  extra_data=None, extra_args=None, use_credentials_file=False,
                  script_timeout=1200, script_maxtime=None, log_eval_func=None,
                  reboot_command=None, hg_bin='hg', platform=None,
                  use_mock=False, mock_target=None,
                  mock_packages=None, mock_copyin_files=None,
                  triggered_schedulers=None, env={}, copy_properties=None,
-                 properties_file='buildprops.json'):
+                 properties_file='buildprops.json',
+                 tooltool_manifest_src=None,
+                 tooltool_bootstrap="setup.sh",
+                 tooltool_url_list=None,
+                 tooltool_script=None):
         BuildFactory.__init__(self)
         self.script_timeout = script_timeout
         self.log_eval_func = log_eval_func
         self.script_maxtime = script_maxtime
         self.reboot_command = reboot_command
         self.platform = platform
         self.use_mock = use_mock
         self.mock_target = mock_target
         self.mock_packages = mock_packages
         self.mock_copyin_files = mock_copyin_files
         self.get_basedir_cmd = ['bash', '-c', 'pwd']
         self.triggered_schedulers = triggered_schedulers
         self.env = env.copy()
         self.use_credentials_file = use_credentials_file
         self.copy_properties = copy_properties or []
+        self.tooltool_manifest_src = tooltool_manifest_src
+        self.tooltool_url_list = tooltool_url_list or []
+        self.tooltool_script = tooltool_script or ['/tools/tooltool.py']
+        self.tooltool_bootstrap = tooltool_bootstrap
+
+        assert len(self.tooltool_url_list) <= 1, "multiple urls not currently supported by tooltool"
+
         if platform and 'win' in platform:
             self.get_basedir_cmd = ['cd']
         if scriptName[0] == '/':
             script_path = scriptName
         else:
             script_path = 'scripts/%s' % scriptName
         if interpreter:
             if isinstance(interpreter, (tuple, list)):
@@ -5350,16 +5361,18 @@ class ScriptFactory(RequestSortingBuildF
                 flunkOnFailure=False,
             ))
         self.addStep(OutputStep(
             name='tinderboxprint_script_revlink',
             data=WithProperties(
                 'TinderboxPrint: %s_revlink: %s/rev/%%(script_repo_revision)s' %
                 (scriptRepo.split('/')[-1], scriptRepo)),
         ))
+        if self.tooltool_manifest_src:
+            self.addTooltoolStep()
         self.runScript()
         self.addCleanupSteps()
         self.reboot()
 
     def addCleanupSteps(self):
         # remove oauth.txt file, we don't wanna to leave keys lying around
         if self.use_credentials_file:
             self.addStep(ShellCommand(