Title: [225433] trunk/Tools
Revision
225433
Author
[email protected]
Date
2017-12-01 16:39:32 -0800 (Fri, 01 Dec 2017)

Log Message

[build.webkit.org] Move python code to load config from master.cfg in separate file
https://bugs.webkit.org/show_bug.cgi?id=180278

Reviewed by Daniel Bates.

* BuildSlaveSupport/build.webkit.org-config/master.cfg: Moved appropriate code to loadConfig.py
* BuildSlaveSupport/build.webkit.org-config/loadConfig.py: Ditto.
* BuildSlaveSupport/build.webkit.org-config/steps.py: Removed extra import.

Modified Paths

Added Paths

Diff

Copied: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/loadConfig.py (from rev 225432, trunk/Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg) (0 => 225433)


--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/loadConfig.py	                        (rev 0)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/loadConfig.py	2017-12-02 00:39:32 UTC (rev 225433)
@@ -0,0 +1,130 @@
+# Copyright (C) 2017 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1.  Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+# 2.  Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from buildbot.buildslave import BuildSlave
+from buildbot.scheduler import AnyBranchScheduler, Triggerable
+from buildbot.schedulers.forcesched import FixedParameter, ForceScheduler, StringParameter, BooleanParameter
+from buildbot.schedulers.filter import ChangeFilter
+from buildbot.process import buildstep, factory, properties
+
+from factories import *
+
+import re
+import json
+import operator
+
+from committer_auth import CommitterAuth
+import wkbuild
+
+trunk_filter = ChangeFilter(branch=["trunk", None])
+
+
+def pickLatestBuild(builder, requests):
+    return max(requests, key=operator.attrgetter("submittedAt"))
+
+
+def loadBuilderConfig(c):
+    # FIXME: These file handles are leaked.
+    passwords = json.load(open('passwords.json'))
+    config = json.load(open('config.json'))
+
+    c['slaves'] = [BuildSlave(slave['name'], passwords[slave['name']], max_builds=1) for slave in config['slaves']]
+
+    c['schedulers'] = []
+    for scheduler in config['schedulers']:
+        if "change_filter" in scheduler:
+            scheduler["change_filter"] = globals()[scheduler["change_filter"]]
+        kls = globals()[scheduler.pop('type')]
+        # Python 2.6 can't handle unicode keys as keyword arguments:
+        # http://bugs.python.org/issue2646.  Modern versions of json return
+        # unicode strings from json.load, so we map all keys to str objects.
+        scheduler = dict(map(lambda key_value_pair: (str(key_value_pair[0]), key_value_pair[1]), scheduler.items()))
+
+        c['schedulers'].append(kls(**scheduler))
+
+    forceScheduler = ForceScheduler(
+        name="force",
+        builderNames=[str(builder['name']) for builder in config['builders']],
+        reason=StringParameter(name="reason", default="", size=40),
+
+        # Validate SVN revision: number or empty string
+        revision=StringParameter(name="revision", default="", regex=re.compile(r'^(\d*)$')),
+
+        # Disable default enabled input fields: branch, repository, project, additional properties
+        branch=FixedParameter(name="branch"),
+        repository=FixedParameter(name="repository"),
+        project=FixedParameter(name="project"),
+        properties=[BooleanParameter(name="is_clean", label="Force Clean build")]
+    )
+    c['schedulers'].append(forceScheduler)
+
+    c['builders'] = []
+    for builder in config['builders']:
+        for slaveName in builder['slavenames']:
+            for slave in config['slaves']:
+                if slave['name'] != slaveName or slave['platform'] == '*':
+                    continue
+
+                if slave['platform'] != builder['platform']:
+                    raise Exception, "Builder %r is for platform %r but has slave %r for platform %r!" % (builder['name'], builder['platform'], slave['name'], slave['platform'])
+
+                break
+
+        platform = builder['platform']
+
+        builderType = builder.pop('type')
+        factory = globals()["%sFactory" % builderType]
+        factorykwargs = {}
+        for key in "platform", "configuration", "architectures", "triggers", "additionalArguments", "SVNMirror":
+            value = builder.pop(key, None)
+            if value:
+                factorykwargs[key] = value
+
+        builder["factory"] = factory(**factorykwargs)
+
+        if platform.startswith('mac'):
+            builder["category"] = 'AppleMac'
+        elif platform.startswith('ios'):
+            builder['category'] = 'iOS'
+        elif platform == 'win':
+            builder["category"] = 'AppleWin'
+        elif platform.startswith('gtk'):
+            builder["category"] = 'GTK'
+        elif platform.startswith('wpe'):
+            builder["category"] = 'WPE'
+        else:
+            builder["category"] = 'misc'
+
+        if (builder['category'] in ('AppleMac', 'AppleWin', 'iOS')) and builderType != 'Build':
+            builder['nextBuild'] = pickLatestBuild
+
+        c['builders'].append(builder)
+
+
+class PlatformSpecificScheduler(AnyBranchScheduler):
+    def __init__(self, platform, branch, **kwargs):
+        self.platform = platform
+        filter = ChangeFilter(branch=[branch, None], filter_fn=self.filter)
+        AnyBranchScheduler.__init__(self, name=platform, change_filter=filter, **kwargs)
+
+    def filter(self, change):
+        return wkbuild.should_build(self.platform, change.files)

Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg (225432 => 225433)


--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg	2017-12-02 00:29:26 UTC (rev 225432)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg	2017-12-02 00:39:32 UTC (rev 225433)
@@ -1,27 +1,13 @@
 # -*- python -*-
 # ex: set syntax=python:
 
-from buildbot.buildslave import BuildSlave
 from buildbot.changes.pb import PBChangeSource
-from buildbot.scheduler import AnyBranchScheduler, Triggerable
-from buildbot.schedulers.forcesched import FixedParameter, ForceScheduler, StringParameter, BooleanParameter
-from buildbot.schedulers.filter import ChangeFilter
 from buildbot.status import html
 from buildbot.status.web.authz import Authz
-from buildbot.process import buildstep, factory, properties
 
-from factories import *
-from twisted.internet import defer
-
-import re
-import json
-import operator
-
 from committer_auth import CommitterAuth
-import wkbuild
+from loadConfig import *
 
-APPLE_WEBKIT_AWS_PROXY = "http://54.190.50.182:873"
-S3URL = "https://s3-us-west-2.amazonaws.com/"
 
 c = BuildmasterConfig = {}
 
@@ -57,96 +43,4 @@
 c['buildCacheSize'] = 60
 
 
-def pickLatestBuild(builder, requests):
-    return max(requests, key=operator.attrgetter("submittedAt"))
-
-
-class PlatformSpecificScheduler(AnyBranchScheduler):
-    def __init__(self, platform, branch, **kwargs):
-        self.platform = platform
-        filter = ChangeFilter(branch=[branch, None], filter_fn=self.filter)
-        AnyBranchScheduler.__init__(self, name=platform, change_filter=filter, **kwargs)
-
-    def filter(self, change):
-        return wkbuild.should_build(self.platform, change.files)
-
-trunk_filter = ChangeFilter(branch=["trunk", None])
-
-def loadBuilderConfig(c):
-    # FIXME: These file handles are leaked.
-    passwords = json.load(open('passwords.json'))
-    config = json.load(open('config.json'))
-
-    c['slaves'] = [BuildSlave(slave['name'], passwords[slave['name']], max_builds=1) for slave in config['slaves']]
-
-    c['schedulers'] = []
-    for scheduler in config['schedulers']:
-        if "change_filter" in scheduler:
-            scheduler["change_filter"] = globals()[scheduler["change_filter"]]
-        kls = globals()[scheduler.pop('type')]
-        # Python 2.6 can't handle unicode keys as keyword arguments:
-        # http://bugs.python.org/issue2646.  Modern versions of json return
-        # unicode strings from json.load, so we map all keys to str objects.
-        scheduler = dict(map(lambda key_value_pair: (str(key_value_pair[0]), key_value_pair[1]), scheduler.items()))
-
-        c['schedulers'].append(kls(**scheduler))
-
-    forceScheduler = ForceScheduler(
-        name="force",
-        builderNames=[str(builder['name']) for builder in config['builders']],
-        reason=StringParameter(name="reason", default="", size=40),
-
-        # Validate SVN revision: number or empty string
-        revision=StringParameter(name="revision", default="", regex=re.compile(r'^(\d*)$')),
-
-        # Disable default enabled input fields: branch, repository, project, additional properties
-        branch=FixedParameter(name="branch"),
-        repository=FixedParameter(name="repository"),
-        project=FixedParameter(name="project"),
-        properties=[BooleanParameter(name="is_clean", label="Force Clean build")]
-    )
-    c['schedulers'].append(forceScheduler)
-
-    c['builders'] = []
-    for builder in config['builders']:
-        for slaveName in builder['slavenames']:
-            for slave in config['slaves']:
-                if slave['name'] != slaveName or slave['platform'] == '*':
-                    continue
-
-                if slave['platform'] != builder['platform']:
-                    raise Exception, "Builder %r is for platform %r but has slave %r for platform %r!" % (builder['name'], builder['platform'], slave['name'], slave['platform'])
-
-                break
-
-        platform = builder['platform']
-
-        builderType = builder.pop('type')
-        factory = globals()["%sFactory" % builderType]
-        factorykwargs = {}
-        for key in "platform", "configuration", "architectures", "triggers", "additionalArguments", "SVNMirror":
-            value = builder.pop(key, None)
-            if value:
-                factorykwargs[key] = value
-
-        builder["factory"] = factory(**factorykwargs)
-
-        if platform.startswith('mac'):
-            builder["category"] = 'AppleMac'
-        elif platform.startswith('ios'):
-            builder['category'] = 'iOS'
-        elif platform == 'win':
-            builder["category"] = 'AppleWin'
-        elif platform.startswith('gtk'):
-            builder["category"] = 'GTK'
-        elif platform.startswith('wpe'):
-            builder["category"] = 'WPE'
-        else:
-            builder["category"] = 'misc'
-
-        if (builder['category'] in ('AppleMac', 'AppleWin', 'iOS')) and builderType != 'Build':
-            builder['nextBuild'] = pickLatestBuild
-
-        c['builders'].append(builder)
-
 loadBuilderConfig(c)

Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/steps.py (225432 => 225433)


--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/steps.py	2017-12-02 00:29:26 UTC (rev 225432)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/steps.py	2017-12-02 00:39:32 UTC (rev 225433)
@@ -24,8 +24,6 @@
 from buildbot.steps import master, shell, source, transfer, trigger
 from buildbot.status.builder import SUCCESS, FAILURE, WARNINGS, SKIPPED, EXCEPTION
 
-from factories import *
-
 from twisted.internet import defer
 
 import os

Modified: trunk/Tools/ChangeLog (225432 => 225433)


--- trunk/Tools/ChangeLog	2017-12-02 00:29:26 UTC (rev 225432)
+++ trunk/Tools/ChangeLog	2017-12-02 00:39:32 UTC (rev 225433)
@@ -1,3 +1,14 @@
+2017-12-01  Aakash Jain  <[email protected]>
+
+        [build.webkit.org] Move python code to load config from master.cfg in separate file
+        https://bugs.webkit.org/show_bug.cgi?id=180278
+
+        Reviewed by Daniel Bates.
+
+        * BuildSlaveSupport/build.webkit.org-config/master.cfg: Moved appropriate code to loadConfig.py
+        * BuildSlaveSupport/build.webkit.org-config/loadConfig.py: Ditto.
+        * BuildSlaveSupport/build.webkit.org-config/steps.py: Removed extra import.
+
 2017-12-01  Brian Burg  <[email protected]>
 
         Web Inspector: move Inspector::Protocol::Array<T> to JSON namespace
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to