jhbuild r2279 - in trunk: . buildbot buildbot/public_html jhbuild/buildbot



Author: fpeters
Date: Sun Aug 17 21:56:14 2008
New Revision: 2279
URL: http://svn.gnome.org/viewvc/jhbuild?rev=2279&view=rev

Log:
* buildbot/master.cfg, buildbot/public_html/lgo.css,
jhbuild/buildbot/scheduler.py: get a separate scheduler for on-commit
builds as triggering the cascading builds are a little bit too much.



Modified:
   trunk/ChangeLog
   trunk/buildbot/master.cfg
   trunk/buildbot/public_html/lgo.css
   trunk/jhbuild/buildbot/scheduler.py

Modified: trunk/buildbot/master.cfg
==============================================================================
--- trunk/buildbot/master.cfg	(original)
+++ trunk/buildbot/master.cfg	Sun Aug 17 21:56:14 2008
@@ -70,15 +70,18 @@
 ####### SCHEDULERS
 
 ## configure the Schedulers
-from jhbuild.buildbot.scheduler import SerialScheduler
+from jhbuild.buildbot.scheduler import SerialScheduler, OnCommitScheduler
 c['schedulers'] = []
 for slave in c['slaves']:
     s = None
     for project in c['projects']:
-        buildername = "%s-%s" % (project, slave.slavename)
+        buildername = str('%s-%s' % (project, slave.slavename))
         s = SerialScheduler(buildername, project, upstream=s,
                             builderNames=[buildername])
         c['schedulers'].append(s)
+        if jhbuild_config.jhbuildbot_svn_commits_box:
+            s2 = OnCommitScheduler('oc-' + buildername, project, builderNames=[buildername])
+            c['schedulers'].append(s2)
 
 ####### BUILDERS
 
@@ -105,7 +108,7 @@
 for project in c['projects']:
     for slave in c['slaves']:
         f = JHBuildFactory(project)
-	c['builders'].append({
+        c['builders'].append({
             'name' : "%s-%s" % (project, slave.slavename),
             'slavename' : slave.slavename,
             'builddir' : 'builddir/%s.%s' % (project, slave.slavename),
@@ -125,7 +128,7 @@
 c['status'].append(
     JHBuildWebStatus(
         jhbuild_config.moduleset,
-    	c['projects'],
+        c['projects'],
         [x.slavename for x in c['slaves']],
         http_port=8080, allowForce=True)
 )

Modified: trunk/buildbot/public_html/lgo.css
==============================================================================
--- trunk/buildbot/public_html/lgo.css	(original)
+++ trunk/buildbot/public_html/lgo.css	Sun Aug 17 21:56:14 2008
@@ -347,3 +347,19 @@
 ul#tests-summary li {
 	margin-bottom: 1ex;
 }
+
+li.changeset {
+	border: 1px dashed #555;
+	background: #eee;
+	padding: 1ex;
+	font-size: 80%;
+	margin-bottom: 1em;
+}
+
+li.changeset p {
+	margin: 0;
+}
+
+li.changeset pre {
+	margin: 0;
+}

Modified: trunk/jhbuild/buildbot/scheduler.py
==============================================================================
--- trunk/jhbuild/buildbot/scheduler.py	(original)
+++ trunk/jhbuild/buildbot/scheduler.py	Sun Aug 17 21:56:14 2008
@@ -23,7 +23,7 @@
 from twisted.python import log
 
 from twisted.internet import reactor
-from buildbot.scheduler import Periodic, BaseUpstreamScheduler
+from buildbot.scheduler import Periodic, BaseUpstreamScheduler, Scheduler
 from buildbot.sourcestamp import SourceStamp
 from buildbot import buildset, util
 
@@ -34,10 +34,15 @@
     return Serial(name, project, upstream, builderNames, branch)
 
 
-class ChangeNotification:
-    treeStableTimer = 180
-
-    def __init__(self):
+class OnCommitScheduler(Scheduler):
+    '''
+    Scheduler that will build a module when a change notification
+    (on svn-commits-list) is received.
+    '''
+    def __init__(self, name, project, builderNames, properties={}):
+        Scheduler.__init__(self, name, branch=None, treeStableTimer=180,
+                builderNames=builderNames, properties=properties)
+        self.project = project
         self.importantChanges = []
         self.unimportantChanges = []
         self.nextBuildTime = None
@@ -57,7 +62,6 @@
     def addChange(self, change):
         log.msg('adding a change')
         if change.project != self.project:
-            log.msg('ignoring change as %s != %s' % (change.project, self.project))
             return
         if change.branch != self.branch:
             return
@@ -66,53 +70,12 @@
         else:
             self.addUnimportantChange(change)
 
-    def addImportantChange(self, change):
-        log.msg("%s: change is important, adding %s" % (self, change))
-        self.importantChanges.append(change)
-        self.nextBuildTime = max(self.nextBuildTime,
-                                 change.when + self.treeStableTimer)
-        self.setTimer(self.nextBuildTime)
-
-    def addUnimportantChange(self, change):
-        log.msg("%s: change is not important, adding %s" % (self, change))
-        self.unimportantChanges.append(change)
-
-    def setTimer(self, when):
-        log.msg("%s: setting timer to %s" %
-                (self, time.strftime("%H:%M:%S", time.localtime(when))))
-        now = util.now()
-        if when < now:
-            when = now + 1
-        if self.timer:
-            self.timer.cancel()
-        self.timer = reactor.callLater(when - now, self.fireTimer)
-
-    def stopTimer(self):
-        if self.timer:
-            self.timer.cancel()
-            self.timer = None
-
-    def fireTimer(self):
-        # clear out our state
-        self.timer = None
-        self.nextBuildTime = None
-        changes = self.importantChanges + self.unimportantChanges
-        self.importantChanges = []
-        self.unimportantChanges = []
-
-        # create a BuildSet, submit it to the BuildMaster
-        bs = buildset.BuildSet(self.builderNames,
-                               SourceStamp(changes=changes),
-                               properties=self.properties)
-        self.submitBuildSet(bs)
-
 
-class StartSerial(ChangeNotification, Periodic):
+class StartSerial(Periodic):
 
     def __init__(self, name, project, builderNames, periodicBuildTimer,
                  branch=None):
         Periodic.__init__(self,name,builderNames,periodicBuildTimer,branch)
-        ChangeNotification.__init__(self)
         self.project = project
         self.finishedWatchers = []
 
@@ -130,14 +93,13 @@
             w(ss)
         Periodic.buildSetFinished(self,bss)
 
-class Serial(ChangeNotification, BaseUpstreamScheduler):
+class Serial(BaseUpstreamScheduler):
     """This scheduler runs some set of builds that should be run
     after the 'upstream' scheduler has completed (successfully or not)."""
     compare_attrs = ('name', 'upstream', 'builders', 'branch')
 
     def __init__(self, name, project, upstream, builderNames, branch):
         BaseUpstreamScheduler.__init__(self, name)
-        ChangeNotification.__init__(self)
         self.project = project
         self.upstream = upstream
         self.branch = branch



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]