From warner at users.sourceforge.net Wed Dec 6 08:15:44 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Wed, 06 Dec 2006 08:15:44 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.791,1.792 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv10465 Modified Files: ChangeLog Log Message: [project @ add a silly LogObserver example] Original author: warner at lothar.com Date: 2006-12-06 08:13:57 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.791 retrieving revision 1.792 diff -u -d -r1.791 -r1.792 --- ChangeLog 26 Nov 2006 08:31:36 -0000 1.791 +++ ChangeLog 6 Dec 2006 08:15:42 -0000 1.792 @@ -1,3 +1,9 @@ +2006-12-06 Brian Warner + + * docs/buildbot.texinfo (Adding LogObservers): add a somewhat + whimsical example pulled from a punch-drunk email I sent out late + one night. + 2006-11-26 Brian Warner * docs/buildbot.texinfo (Build Properties): remind users that From warner at users.sourceforge.net Wed Dec 6 08:15:44 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Wed, 06 Dec 2006 08:15:44 +0000 Subject: [Buildbot-commits] buildbot/docs buildbot.texinfo,1.88,1.89 Message-ID: Update of /cvsroot/buildbot/buildbot/docs In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv10465/docs Modified Files: buildbot.texinfo Log Message: [project @ add a silly LogObserver example] Original author: warner at lothar.com Date: 2006-12-06 08:13:57 Index: buildbot.texinfo =================================================================== RCS file: /cvsroot/buildbot/buildbot/docs/buildbot.texinfo,v retrieving revision 1.88 retrieving revision 1.89 diff -u -d -r1.88 -r1.89 --- buildbot.texinfo 26 Nov 2006 08:31:37 -0000 1.88 +++ buildbot.texinfo 6 Dec 2006 08:15:42 -0000 1.89 @@ -4368,6 +4368,208 @@ automatically given a reference to the step in its @code{.step} attribute. + at subheading A Somewhat Whimsical Example + +Let's say that we've got some snazzy new unit-test framework called +Framboozle. It's the hottest thing since sliced bread. It slices, it +dices, it runs unit tests like there's no tomorrow. Plus if your unit +tests fail, you can use its name for a Web 2.1 startup company, make +millions of dollars, and hire engineers to fix the bugs for you, while +you spend your afternoons lazily hang-gliding along a scenic pacific +beach, blissfully unconcerned about the state of your +tests. at footnote{framboozle.com is still available. Remember, I get 10% +:).} + +To run a Framboozle-enabled test suite, you just run the 'framboozler' +command from the top of your source code tree. The 'framboozler' +command emits a bunch of stuff to stdout, but the most interesting bit +is that it emits the line "FNURRRGH!" every time it finishes running a +test case at footnote{Framboozle gets very excited about running unit +tests.}. You'd like to have a test-case counting LogObserver that +watches for these lines and counts them, because counting them will +help the buildbot more accurately calculate how long the build will +take, and this will let you know exactly how long you can sneak out of +the office for your hang-gliding lessons without anyone noticing that +you're gone. + +This will involve writing a new BuildStep (probably named +"Framboozle") which inherits from ShellCommand. The BuildStep class +definition itself will look something like this: + + at example +# START +from buildbot.process.steps import ShellCommand, LogLineObserver +# note that in the upcoming 0.7.5 release, this should be: +#from buildbot.steps.shell import ShellCommand +#from buildbot.process.buildstep import LogLineObserver + +class FNURRRGHCounter(LogLineObserver): + numTests = 0 + def outLineReceived(self, line): + if "FNURRRGH!" in line: + self.numTests += 1 + self.step.setProgress('tests', self.numTests) + +class Framboozle(ShellCommand): + command = ["framboozler"] + + def __init__(self, **kwargs): + ShellCommand.__init__(self, **kwargs) # always upcall! + counter = FNURRRGHCounter()) + self.addLogObserver(counter) +# FINISH + at end example + +So that's the code that we want to wind up using. How do we actually +deploy it? + +You have a couple of different options. + +Option 1: The simplest technique is to simply put this text +(everything from START to FINISH) in your master.cfg file, somewhere +before the BuildFactory definition where you actually use it in a +clause like: + + at example +f = BuildFactory() +f.addStep(SVN, svnurl="stuff") +f.addStep(Framboozle) + at end example + +Remember that master.cfg is secretly just a python program with one +job: populating the BuildmasterConfig dictionary. And python programs +are allowed to define as many classes as they like. So you can define +classes and use them in the same file, just as long as the class is +defined before some other code tries to use it. + +This is easy, and it keeps the point of definition very close to the +point of use, and whoever replaces you after that unfortunate +hang-gliding accident will appreciate being able to easily figure out +what the heck this stupid "Framboozle" step is doing anyways. The +downside is that every time you reload the config file, the Framboozle +class will get redefined, which means that the buildmaster will think +that you've reconfigured all the Builders that use it, even though +nothing changed. Bleh. + +Option 2: Instead, we can put this code in a separate file, and import +it into the master.cfg file just like we would the normal buildsteps +like ShellCommand and SVN. + +Create a directory named ~/lib/python, put everything from START to +FINISH in ~/lib/python/framboozle.py, and run your buildmaster using: + + at example + PYTHONPATH=~/lib/python buildbot start MASTERDIR + at end example + +or use the @file{Makefile.buildbot} to control the way + at command{buildbot start} works. Or add something like this to +something like your ~/.bashrc or ~/.bash_profile or ~/.cshrc: + + at example + export PYTHONPATH=~/lib/python + at end example + +Once we've done this, our master.cfg can look like: + + at example +from framboozle import Framboozle +f = BuildFactory() +f.addStep(SVN, svnurl="stuff") +f.addStep(Framboozle) + at end example + +or: + + at example +import framboozle +f = BuildFactory() +f.addStep(SVN, svnurl="stuff") +f.addStep(framboozle.Framboozle) + at end example + +(check out the python docs for details about how "import" and "from A +import B" work). + +What we've done here is to tell python that every time it handles an +"import" statement for some named module, it should look in our +~/lib/python/ for that module before it looks anywhere else. After our +directories, it will try in a bunch of standard directories too +(including the one where buildbot is installed). By setting the +PYTHONPATH environment variable, you can add directories to the front +of this search list. + +Python knows that once it "import"s a file, it doesn't need to +re-import it again. This means that reconfiguring the buildmaster +(with "buildbot reconfig", for example) won't make it think the +Framboozle class has changed every time, so the Builders that use it +will not be spuriously restarted. On the other hand, you either have +to start your buildmaster in a slightly weird way, or you have to +modify your environment to set the PYTHONPATH variable. + + +Option 3: Install this code into a standard python library directory + +Find out what your python's standard include path is by asking it: + + at example +80:warner@@luther% python +Python 2.4.4c0 (#2, Oct 2 2006, 00:57:46) +[GCC 4.1.2 20060928 (prerelease) (Debian 4.1.1-15)] on linux2 +Type "help", "copyright", "credits" or "license" for more information. +>>> import sys +>>> print sys.path +['', '/usr/lib/python24.zip', '/usr/lib/python2.4', '/usr/lib/python2.4/plat-linux2', '/usr/lib/python2.4/lib-tk', '/usr/lib/python2.4/lib-dynload', '/usr/local/lib/python2.4/site-packages', '/usr/lib/python2.4/site-packages', '/usr/lib/python2.4/site-packages/Numeric', '/var/lib/python-support/python2.4', '/usr/lib/site-python'] +>>> + at end example + +In this case, putting the code into +/usr/local/lib/python2.4/site-packages/framboozle.py would work just +fine. We can use the same master.cfg "import framboozle" statement as +in Option 2. By putting it in a standard include directory (instead of +the decidedly non-standard ~/lib/python), we don't even have to set +PYTHONPATH to anything special. The downside is that you probably have +to be root to write to one of those standard include directories. + + +Option 4: Submit the code for inclusion in the Buildbot distribution + +Contribute the code in an Enhancement Request on SourceForge, via +http://buildbot.sf.net . Lobby, convince, coerce, bribe, badger, +harass, threaten, or otherwise encourage the author to accept the +patch. This lets you do something like: + + at example +from buildbot.steps import framboozle +f = BuildFactory() +f.addStep(SVN, svnurl="stuff") +f.addStep(framboozle.Framboozle) + at end example + +And then you don't even have to install framboozle.py anywhere on your +system, since it will ship with Buildbot. You don't have to be root, +you don't have to set PYTHONPATH. But you do have to make a good case +for Framboozle being worth going into the main distribution, you'll +probably have to provide docs and some unit test cases, you'll need to +figure out what kind of beer the author likes, and then you'll have to +wait until the next release. But in some environments, all this is +easier than getting root on your buildmaster box, so the tradeoffs may +actually be worth it. + + + +Putting the code in master.cfg (1) makes it available to that +buildmaster instance. Putting it in a file in a personal library +directory (2) makes it available for any buildmasters you might be +running. Putting it in a file in a system-wide shared library +directory (3) makes it available for any buildmasters that anyone on +that system might be running. Getting it into the buildbot's upstream +repository (4) makes it available for any buildmasters that anyone in +the world might be running. It's all a matter of how widely you want +to deploy that new class. + + + @node BuildStep URLs, , Adding LogObservers, Writing New BuildSteps @subsubsection BuildStep URLs From warner at users.sourceforge.net Wed Dec 6 08:40:11 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Wed, 06 Dec 2006 08:40:11 +0000 Subject: [Buildbot-commits] buildbot/docs buildbot.texinfo,1.89,1.90 Message-ID: Update of /cvsroot/buildbot/buildbot/docs In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv20091/docs Modified Files: buildbot.texinfo Log Message: [project @ document some of the other FileUpload/FileDownload arguments] Original author: warner at lothar.com Date: 2006-12-06 08:38:12 Index: buildbot.texinfo =================================================================== RCS file: /cvsroot/buildbot/buildbot/docs/buildbot.texinfo,v retrieving revision 1.89 retrieving revision 1.90 diff -u -d -r1.89 -r1.90 --- buildbot.texinfo 6 Dec 2006 08:15:42 -0000 1.89 +++ buildbot.texinfo 6 Dec 2006 08:40:09 -0000 1.90 @@ -4149,7 +4149,26 @@ f.addStep(ShellCommand, command=["make", "config"]) @end example - at c TODO: document other parameters +Like @code{FileUpload}, the @code{mastersrc=} argument is interpreted +relative to the buildmaster's base directory, and the + at code{slavedest=} argument is relative to the builder's working +directory. If the buildslave is running in @file{~buildslave}, and the +builder's ``builddir'' is something like @file{tests-i386}, then the +workdir is going to be @file{~buildslave/tests-i386/build}, and a + at code{slavedest=} of @file{foo/bar.html} will get put in + at file{~buildslave/tests-i386/build/foo/bar.html}. Remember that +neither of these commands will create missing directories for you. + + + at subheading Other Parameters + +The @code{maxsize=} argument lets you set a maximum size for the file +to be transferred. This may help to avoid surprises: transferring a +100MB coredump when you were expecting to move a 10kB status file +might take an awfully long time. The @code{blocksize=} argument +controls how the file is sent over the network: larger blocksizes are +slightly more efficient but also consume more memory on each end, and +there is a hard-coded limit of about 640kB. @node Writing New BuildSteps, , Transferring Files, Build Steps From warner at users.sourceforge.net Wed Dec 6 08:40:11 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Wed, 06 Dec 2006 08:40:11 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.792,1.793 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv20091 Modified Files: ChangeLog Log Message: [project @ document some of the other FileUpload/FileDownload arguments] Original author: warner at lothar.com Date: 2006-12-06 08:38:12 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.792 retrieving revision 1.793 diff -u -d -r1.792 -r1.793 --- ChangeLog 6 Dec 2006 08:15:42 -0000 1.792 +++ ChangeLog 6 Dec 2006 08:40:08 -0000 1.793 @@ -3,6 +3,7 @@ * docs/buildbot.texinfo (Adding LogObservers): add a somewhat whimsical example pulled from a punch-drunk email I sent out late one night. + (Transferring Files): document some of the other parameters 2006-11-26 Brian Warner From warner at users.sourceforge.net Wed Dec 6 08:46:12 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Wed, 06 Dec 2006 08:46:12 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.793,1.794 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv22472 Modified Files: ChangeLog Log Message: [project @ rename buildbot.changes.svnpoller.SvnSource to SVNPoller] Original author: warner at lothar.com Date: 2006-12-06 08:43:09 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.793 retrieving revision 1.794 diff -u -d -r1.793 -r1.794 --- ChangeLog 6 Dec 2006 08:40:08 -0000 1.793 +++ ChangeLog 6 Dec 2006 08:46:10 -0000 1.794 @@ -4,6 +4,9 @@ whimsical example pulled from a punch-drunk email I sent out late one night. (Transferring Files): document some of the other parameters + (SVNPoller): rename svnpoller.SvnSource to SVNPoller + * buildbot/test/test_svnpoller.py: same + * buildbot/changes/svnpoller.py (SVNPoller): same 2006-11-26 Brian Warner From warner at users.sourceforge.net Wed Dec 6 08:46:13 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Wed, 06 Dec 2006 08:46:13 +0000 Subject: [Buildbot-commits] buildbot/buildbot/changes svnpoller.py,1.3,1.4 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/changes In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv22472/buildbot/changes Modified Files: svnpoller.py Log Message: [project @ rename buildbot.changes.svnpoller.SvnSource to SVNPoller] Original author: warner at lothar.com Date: 2006-12-06 08:43:09 Index: svnpoller.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/changes/svnpoller.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- svnpoller.py 2 Oct 2006 00:13:26 -0000 1.3 +++ svnpoller.py 6 Dec 2006 08:46:10 -0000 1.4 @@ -42,7 +42,7 @@ return None -class SvnSource(base.ChangeSource, util.ComparableMixin): +class SVNPoller(base.ChangeSource, util.ComparableMixin): """This source will poll a Subversion repository for changes and submit them to the change master.""" @@ -188,7 +188,7 @@ return f(path) def startService(self): - log.msg("SvnSource(%s) starting" % self.svnurl) + log.msg("SVNPoller(%s) starting" % self.svnurl) base.ChangeSource.startService(self) # Don't start the loop just yet because the reactor isn't running. # Give it a chance to go and install our SIGCHLD handler before @@ -196,12 +196,12 @@ reactor.callLater(0, self.loop.start, self.pollinterval) def stopService(self): - log.msg("SvnSource(%s) shutting down" % self.svnurl) + log.msg("SVNPoller(%s) shutting down" % self.svnurl) self.loop.stop() return base.ChangeSource.stopService(self) def describe(self): - return "SvnSource watching %s" % self.svnurl + return "SVNPoller watching %s" % self.svnurl def checksvn(self): # Our return value is only used for unit testing. @@ -236,13 +236,13 @@ # whew. if self.working: - log.msg("SvnSource(%s) overrun: timer fired but the previous " + log.msg("SVNPoller(%s) overrun: timer fired but the previous " "poll had not yet finished.") self.overrun_counter += 1 return defer.succeed(None) self.working = True - log.msg("SvnSource polling") + log.msg("SVNPoller polling") if not self._prefix: # this sets self._prefix when it finishes. It fires with # self._prefix as well, because that makes the unit tests easier @@ -279,7 +279,7 @@ doc = xml.dom.minidom.parseString(output) except xml.parsers.expat.ExpatError: dbgMsg("_process_changes: ExpatError in %s" % output) - log.msg("SvnSource._determine_prefix_2: ExpatError in '%s'" + log.msg("SVNPoller._determine_prefix_2: ExpatError in '%s'" % output) raise rootnodes = doc.getElementsByTagName("root") @@ -297,7 +297,7 @@ self._prefix = self.svnurl[len(root):] if self._prefix.startswith("/"): self._prefix = self._prefix[1:] - log.msg("SvnSource: svnurl=%s, root=%s, so prefix=%s" % + log.msg("SVNPoller: svnurl=%s, root=%s, so prefix=%s" % (self.svnurl, root, self._prefix)) return self._prefix @@ -318,7 +318,7 @@ doc = xml.dom.minidom.parseString(output) except xml.parsers.expat.ExpatError: dbgMsg("_process_changes: ExpatError in %s" % output) - log.msg("SvnSource._parse_changes: ExpatError in '%s'" % output) + log.msg("SVNPoller._parse_changes: ExpatError in '%s'" % output) raise logentries = doc.getElementsByTagName("logentry") return logentries @@ -439,7 +439,7 @@ self.parent.addChange(c) def finished(self, res): - log.msg("SvnSource finished polling") + log.msg("SVNPoller finished polling") dbgMsg('_finished : %s' % res) assert self.working self.working = False From warner at users.sourceforge.net Wed Dec 6 08:46:13 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Wed, 06 Dec 2006 08:46:13 +0000 Subject: [Buildbot-commits] buildbot/buildbot/test test_svnpoller.py, 1.3, 1.4 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/test In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv22472/buildbot/test Modified Files: test_svnpoller.py Log Message: [project @ rename buildbot.changes.svnpoller.SvnSource to SVNPoller] Original author: warner at lothar.com Date: 2006-12-06 08:43:09 Index: test_svnpoller.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_svnpoller.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- test_svnpoller.py 2 Oct 2006 00:13:26 -0000 1.3 +++ test_svnpoller.py 6 Dec 2006 08:46:11 -0000 1.4 @@ -3,7 +3,7 @@ import time from twisted.internet import defer from twisted.trial import unittest -from buildbot.changes.svnpoller import SvnSource +from buildbot.changes.svnpoller import SVNPoller # this is the output of "svn info --xml # svn+ssh://svn.twistedmatrix.com/svn/Twisted/trunk" @@ -87,7 +87,7 @@ class ComputePrefix(unittest.TestCase): def test1(self): base = "svn+ssh://svn.twistedmatrix.com/svn/Twisted/trunk" - s = SvnSource(base + "/") + s = SVNPoller(base + "/") self.failUnlessEqual(s.svnurl, base) # certify slash-stripping prefix = s.determine_prefix(prefix_output) self.failUnlessEqual(prefix, "trunk") @@ -95,21 +95,21 @@ def test2(self): base = "svn+ssh://svn.twistedmatrix.com/svn/Twisted" - s = SvnSource(base) + s = SVNPoller(base) self.failUnlessEqual(s.svnurl, base) prefix = s.determine_prefix(prefix_output_2) self.failUnlessEqual(prefix, "") def test3(self): base = "file:///home/warner/stuff/Projects/BuildBot/trees/svnpoller/_trial_temp/test_vc/repositories/SVN-Repository" - s = SvnSource(base) + s = SVNPoller(base) self.failUnlessEqual(s.svnurl, base) prefix = s.determine_prefix(prefix_output_3) self.failUnlessEqual(prefix, "") def test4(self): base = "file:///home/warner/stuff/Projects/BuildBot/trees/svnpoller/_trial_temp/test_vc/repositories/SVN-Repository/sample/trunk" - s = SvnSource(base) + s = SVNPoller(base) self.failUnlessEqual(s.svnurl, base) prefix = s.determine_prefix(prefix_output_4) self.failUnlessEqual(prefix, "sample/trunk") @@ -228,9 +228,9 @@ return None, "/".join(pieces[1:]) raise RuntimeError("there shouldn't be any files like %s" % path) -class MySvnSource(SvnSource): +class MySVNPoller(SVNPoller): def __init__(self, *args, **kwargs): - SvnSource.__init__(self, *args, **kwargs) + SVNPoller.__init__(self, *args, **kwargs) self.pending_commands = [] self.finished_changes = [] @@ -245,7 +245,7 @@ class ComputeChanges(unittest.TestCase): def test1(self): base = "file:///home/warner/stuff/Projects/BuildBot/trees/svnpoller/_trial_temp/test_vc/repositories/SVN-Repository/sample" - s = SvnSource(base) + s = SVNPoller(base) s._prefix = "sample" output = make_changes_output(4) doc = s.parse_logs(output) @@ -268,7 +268,7 @@ def testChanges(self): base = "file:///home/warner/stuff/Projects/BuildBot/trees/svnpoller/_trial_temp/test_vc/repositories/SVN-Repository/sample" - s = SvnSource(base, split_file=split_file) + s = SVNPoller(base, split_file=split_file) s._prefix = "sample" doc = s.parse_logs(make_changes_output(3)) newlast, logentries = s._filter_new_logentries(doc, 1) @@ -295,20 +295,20 @@ def testFirstTime(self): base = "file:///home/warner/stuff/Projects/BuildBot/trees/svnpoller/_trial_temp/test_vc/repositories/SVN-Repository/sample" - s = SvnSource(base, split_file=split_file) + s = SVNPoller(base, split_file=split_file) s._prefix = "sample" doc = s.parse_logs(make_changes_output(4)) logentries = s.get_new_logentries(doc) - # SvnSource ignores all changes that happened before it was started + # SVNPoller ignores all changes that happened before it was started self.failUnlessEqual(len(logentries), 0) self.failUnlessEqual(s.last_change, 4) class Misc(unittest.TestCase): def testAlreadyWorking(self): base = "file:///home/warner/stuff/Projects/BuildBot/trees/svnpoller/_trial_temp/test_vc/repositories/SVN-Repository/sample" - s = MySvnSource(base) + s = MySVNPoller(base) d = s.checksvn() - # the SvnSource is now waiting for its getProcessOutput to finish + # the SVNPoller is now waiting for its getProcessOutput to finish self.failUnlessEqual(s.overrun_counter, 0) d2 = s.checksvn() self.failUnlessEqual(s.overrun_counter, 1) @@ -316,9 +316,9 @@ def testGetRoot(self): base = "svn+ssh://svn.twistedmatrix.com/svn/Twisted/trunk" - s = MySvnSource(base) + s = MySVNPoller(base) d = s.checksvn() - # the SvnSource is now waiting for its getProcessOutput to finish + # the SVNPoller is now waiting for its getProcessOutput to finish self.failUnlessEqual(len(s.pending_commands), 1) self.failUnlessEqual(s.pending_commands[0][0], ["info", "--xml", "--non-interactive", base]) @@ -331,9 +331,9 @@ class Everything(unittest.TestCase): def test1(self): - s = MySvnSource(sample_base, split_file=split_file) + s = MySVNPoller(sample_base, split_file=split_file) d = s.checksvn() - # the SvnSource is now waiting for its getProcessOutput to finish + # the SVNPoller is now waiting for its getProcessOutput to finish self.failUnlessEqual(len(s.pending_commands), 1) self.failUnlessEqual(s.pending_commands[0][0], ["info", "--xml", "--non-interactive", From warner at users.sourceforge.net Wed Dec 6 08:46:13 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Wed, 06 Dec 2006 08:46:13 +0000 Subject: [Buildbot-commits] buildbot/docs buildbot.texinfo,1.90,1.91 Message-ID: Update of /cvsroot/buildbot/buildbot/docs In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv22472/docs Modified Files: buildbot.texinfo Log Message: [project @ rename buildbot.changes.svnpoller.SvnSource to SVNPoller] Original author: warner at lothar.com Date: 2006-12-06 08:43:09 Index: buildbot.texinfo =================================================================== RCS file: /cvsroot/buildbot/buildbot/docs/buildbot.texinfo,v retrieving revision 1.90 retrieving revision 1.91 diff -u -d -r1.90 -r1.91 --- buildbot.texinfo 6 Dec 2006 08:40:09 -0000 1.90 +++ buildbot.texinfo 6 Dec 2006 08:46:11 -0000 1.91 @@ -153,7 +153,7 @@ * PBChangeSource:: * P4Source:: * BonsaiPoller:: -* SvnSource:: +* SVNPoller:: Build Process @@ -2512,6 +2512,7 @@ @item pb.PBChangeSource (listening for connections from a long-running @code{contrib/svn_watcher.py} or @code{contrib/svnpoller.py} polling process + at item svnpoller.SVNPoller (polling the SVN repository) @end itemize @item Darcs @@ -2540,7 +2541,6 @@ a suitable @code{MaildirSource}. -* SvnSource:: @menu * Choosing ChangeSources:: * CVSToys - PBService:: @@ -2549,7 +2549,7 @@ * PBChangeSource:: * P4Source:: * BonsaiPoller:: -* SvnSource:: +* SVNPoller:: @end menu @node Choosing ChangeSources, CVSToys - PBService, Change Sources, Change Sources @@ -2822,7 +2822,7 @@ )) @end example - at node BonsaiPoller, SvnSource, P4Source, Change Sources + at node BonsaiPoller, SVNPoller, P4Source, Change Sources @subsection BonsaiPoller @csindex buildbot.changes.bonsaipoller.BonsaiPoller @@ -2839,18 +2839,18 @@ arguments it accepts. - at node SvnSource, , BonsaiPoller, Change Sources - at subsection SvnSource + at node SVNPoller, , BonsaiPoller, Change Sources + at subsection SVNPoller - at csindex buildbot.changes.svnpoller.SvnSource + at csindex buildbot.changes.svnpoller.SVNPoller -The @code{buildbot.changes.svnpoller.SvnSource} is a ChangeSource +The @code{buildbot.changes.svnpoller.SVNPoller} is a ChangeSource which periodically polls a @uref{http://subversion.tigris.org/, Subversion} repository for new revisions, by running the @code{svn log} command in a subshell. It can watch a single branch or multiple branches. - at code{SvnSource} accepts the following arguments: + at code{SVNPoller} accepts the following arguments: @table @code @item svnurl @@ -2863,13 +2863,13 @@ to get to the repository), and the sub-path within the repository's virtual filesystem for the project and branch of interest. -The @code{SvnSource} will only pay attention to files inside the +The @code{SVNPoller} will only pay attention to files inside the subdirectory specified by the complete svnurl. @item split_file A function to convert pathnames into (branch, relative_pathname) tuples. Use this to explain your repository's branch-naming policy to - at code{SvnSource}. This function must accept a single string and return + at code{SVNPoller}. This function must accept a single string and return a two-entry tuple. There are a few utility functions in @code{buildbot.changes.svnpoller} that can be used as a @code{split_file} function, see below for details. @@ -2877,7 +2877,7 @@ The default value always returns (None, path), which indicates that all files are on the trunk. -Subclasses of @code{SvnSource} can override the @code{split_file} +Subclasses of @code{SVNPoller} can override the @code{split_file} method instead of using the @code{split_file=} argument. @item svnuser @@ -2899,7 +2899,7 @@ @item histmax The maximum number of changes to inspect at a time. Every POLLINTERVAL -seconds, the @code{SvnSource} asks for the last HISTMAX changes and +seconds, the @code{SVNPoller} asks for the last HISTMAX changes and looks through them for any ones it does not already know about. If more than HISTMAX revisions have been committed since the last poll, older changes will be silently ignored. Larger values of histmax will @@ -2909,7 +2909,7 @@ @item svnbin This controls the @code{svn} executable to use. If subversion is installed in a weird place on your system (outside of the -buildmaster's @code{$PATH}), use this to tell @code{SvnSource} where +buildmaster's @code{$PATH}), use this to tell @code{SVNPoller} where to find it. The default value of ``svn'' will almost always be sufficient. @@ -2920,9 +2920,9 @@ Each source file that is tracked by a Subversion repository has a fully-qualified SVN URL in the following form: (REPOURL)(PROJECT-plus-BRANCH)(FILEPATH). When you create the - at code{SvnSource}, you give it a @code{svnurl} value that includes all + at code{SVNPoller}, you give it a @code{svnurl} value that includes all of the REPOURL and possibly some portion of the PROJECT-plus-BRANCH -string. The @code{SvnSource} is responsible for producing Changes that +string. The @code{SVNPoller} is responsible for producing Changes that contain a branch name and a FILEPATH (which is relative to the top of a checked-out tree). The details of how these strings are split up depend upon how your repository names its branches. @@ -2954,16 +2954,16 @@ SVNURL for that file on a branch named ``1.5.x'' would be ``svn://svn.twistedmatrix.com/svn/Twisted/branches/1.5.x/bin/trial''. -To set up a @code{SvnSource} that watches the Twisted trunk (and +To set up a @code{SVNPoller} that watches the Twisted trunk (and nothing else), we would use the following: @example -from buildbot.changes.svnpoller import SvnSource -s = SvnSource("svn://svn.twistedmatrix.com/svn/Twisted/trunk") +from buildbot.changes.svnpoller import SVNPoller +s = SVNPoller("svn://svn.twistedmatrix.com/svn/Twisted/trunk") c['sources'].append(ss) @end example -In this case, every Change that our @code{SvnSource} produces will +In this case, every Change that our @code{SVNPoller} produces will have @code{.branch=None}, to indicate that the Change is on the trunk. No other sub-projects or branches will be tracked. @@ -2971,7 +2971,7 @@ two things. First we have to change our @code{svnurl=} argument to watch more than just ``.../Twisted/trunk''. We will set it to ``.../Twisted'' so that we'll see both the trunk and all the branches. -Second, we have to tell @code{SvnSource} how to split the +Second, we have to tell @code{SVNPoller} how to split the (PROJECT-plus-BRANCH)(FILEPATH) strings it gets from the repository out into (BRANCH) and (FILEPATH) pairs. @@ -2980,7 +2980,7 @@ ``branches/1.5.x/bin/trial'' into @code{branch}=''branches/1.5.x'' and @code{filepath}=''bin/trial''. This function is always given a string that names a file relative to the subdirectory pointed to by the - at code{SvnSource}'s @code{svnurl=} argument. It is expected to return a + at code{SVNPoller}'s @code{svnurl=} argument. It is expected to return a (BRANCHNAME, FILEPATH) tuple (in which FILEPATH is relative to the branch indicated), or None to indicate that the file is outside any project of interest. @@ -3008,12 +3008,12 @@ This function is provided as @code{buildbot.changes.svnpoller.split_file_branches} for your -convenience. So to have our Twisted-watching @code{SvnSource} follow +convenience. So to have our Twisted-watching @code{SVNPoller} follow multiple branches, we would use this: @example -from buildbot.changes.svnpoller import SvnSource, split_file_branches -s = SvnSource("svn://svn.twistedmatrix.com/svn/Twisted", +from buildbot.changes.svnpoller import SVNPoller, split_file_branches +s = SVNPoller("svn://svn.twistedmatrix.com/svn/Twisted", split_file=split_file_branches) c['sources'].append(ss) @end example @@ -3048,13 +3048,13 @@ trunk would be checked out using @code{http://divmod.org/svn/Divmod/trunk/Quotient}. -Now suppose we want to have an @code{SvnSource} that only cares about +Now suppose we want to have an @code{SVNPoller} that only cares about the Nevow trunk. This case looks just like the PROJECT/BRANCH layout described earlier: @example -from buildbot.changes.svnpoller import SvnSource -s = SvnSource("http://divmod.org/svn/Divmod/trunk/Nevow") +from buildbot.changes.svnpoller import SVNPoller +s = SVNPoller("http://divmod.org/svn/Divmod/trunk/Nevow") c['sources'].append(ss) @end example @@ -3067,8 +3067,8 @@ as figuring out which branch each one is on. @example -from buildbot.changes.svnpoller import SvnSource -s = SvnSource("http://divmod.org/svn/Divmod", +from buildbot.changes.svnpoller import SVNPoller +s = SVNPoller("http://divmod.org/svn/Divmod", split_file=my_file_splitter) c['sources'].append(ss) @end example From warner at users.sourceforge.net Wed Dec 6 08:51:25 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Wed, 06 Dec 2006 08:51:25 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.794,1.795 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv24400 Modified Files: ChangeLog Log Message: [project @ update addLogObserver example to use 0.7.5 buildbot.steps.* names] Original author: warner at lothar.com Date: 2006-12-06 08:49:40 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.794 retrieving revision 1.795 diff -u -d -r1.794 -r1.795 --- ChangeLog 6 Dec 2006 08:46:10 -0000 1.794 +++ ChangeLog 6 Dec 2006 08:51:23 -0000 1.795 @@ -4,6 +4,7 @@ whimsical example pulled from a punch-drunk email I sent out late one night. (Transferring Files): document some of the other parameters + (Adding LogObservers): update to 0.7.5 buildbot.steps.* (SVNPoller): rename svnpoller.SvnSource to SVNPoller * buildbot/test/test_svnpoller.py: same * buildbot/changes/svnpoller.py (SVNPoller): same From warner at users.sourceforge.net Wed Dec 6 08:51:25 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Wed, 06 Dec 2006 08:51:25 +0000 Subject: [Buildbot-commits] buildbot/docs buildbot.texinfo,1.91,1.92 Message-ID: Update of /cvsroot/buildbot/buildbot/docs In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv24400/docs Modified Files: buildbot.texinfo Log Message: [project @ update addLogObserver example to use 0.7.5 buildbot.steps.* names] Original author: warner at lothar.com Date: 2006-12-06 08:49:40 Index: buildbot.texinfo =================================================================== RCS file: /cvsroot/buildbot/buildbot/docs/buildbot.texinfo,v retrieving revision 1.91 retrieving revision 1.92 diff -u -d -r1.91 -r1.92 --- buildbot.texinfo 6 Dec 2006 08:46:11 -0000 1.91 +++ buildbot.texinfo 6 Dec 2006 08:51:23 -0000 1.92 @@ -4417,10 +4417,8 @@ @example # START -from buildbot.process.steps import ShellCommand, LogLineObserver -# note that in the upcoming 0.7.5 release, this should be: -#from buildbot.steps.shell import ShellCommand -#from buildbot.process.buildstep import LogLineObserver +from buildbot.steps.shell import ShellCommand +from buildbot.process.buildstep import LogLineObserver class FNURRRGHCounter(LogLineObserver): numTests = 0 From warner at users.sourceforge.net Wed Dec 6 09:17:33 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Wed, 06 Dec 2006 09:17:33 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.795,1.796 NEWS,1.60,1.61 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv2646 Modified Files: ChangeLog NEWS Log Message: [project @ more NEWS items] Original author: warner at lothar.com Date: 2006-12-06 09:15:41 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.795 retrieving revision 1.796 diff -u -d -r1.795 -r1.796 --- ChangeLog 6 Dec 2006 08:51:23 -0000 1.795 +++ ChangeLog 6 Dec 2006 09:17:31 -0000 1.796 @@ -1,5 +1,7 @@ 2006-12-06 Brian Warner + * NEWS: update with items for the next release + * docs/buildbot.texinfo (Adding LogObservers): add a somewhat whimsical example pulled from a punch-drunk email I sent out late one night. Index: NEWS =================================================================== RCS file: /cvsroot/buildbot/buildbot/NEWS,v retrieving revision 1.60 retrieving revision 1.61 diff -u -d -r1.60 -r1.61 --- NEWS 19 Nov 2006 20:22:20 -0000 1.60 +++ NEWS 6 Dec 2006 09:17:31 -0000 1.61 @@ -19,6 +19,29 @@ ** new features +*** reconfiguring a Builder no longer causes a disconnect/reconnect cycle + +This means that sending SIGHUP to the master or running 'buildbot reconfig +MASTERDIR' command no longer interrupts any current builds, nor does it lose +pending builds like it did before. This involved a fairly substantial +refactoring of the various internal BotPerspective/BotMaster/Builder classes. +Note that reconfiguring Schedulers still loses any Changes that were waiting +for the tree to become stable: hopefully this will be fixed in the next +release. + +*** 'buildbot start/restart/reconfig' now show logs until startup is complete + +These commands now have additional code to follow twistd.log and display all +the lines that are emitted from the beginning of the start/reconfig action +until it has completed. This gives you a chance to see any problems detected +in the config file without needing to manually look in twistd.log or use +another shell to 'tail -f' it. This also makes it clear which config file is +being used. This functionality is not available under windows. + +In addition, if any problems are detected during 'start' or 'restart' (but +not reconfig), the 'buildbot *' command will terminate with a non-zero exit +status, making it easier to use in scripts. Closes SF#1517975. + *** Locks now take maxCount=N to allow multiple simultaneous owners This allows Locks to be non-exclusive but still limit concurrency. Thanks to @@ -35,7 +58,10 @@ buildbot.steps.python.PyFlakes will run the simple 'pyflakes' static analysis tool and parse the results to tell you about undefined names, unused imports, -etc. +etc. You'll need to tell it how to run pyflakes, usually with something like +command=["pyflakes", "src/packagedir"] or the like. The default command is +"make pyflakes", which assumes that you have a suitable target in your +top-level Makefile. *** Monotone support @@ -102,7 +128,7 @@ Earlier versions of buildbot didn't explicitly close any logfiles= file handles when the build finished. On windows (where you cannot delete a file -that someone is reading), this could cause the next build to fail as the +that someone else is reading), this could cause the next build to fail as the source checkout step was unable to delete the old working directory. This has been fixed. Closes SF#1568415. @@ -112,6 +138,12 @@ EOF, the result was that logfiles= sometimes didn't work. Thanks to Mark Rowe for the patch. +** other changes + +The 'buildbot sighup MASTERDIR' command has been replaced with 'buildbot +reconfig MASTERDIR', since that seems to be a slightly more meaningful name. +The 'sighup' form will remain as an alias. + * Release 0.7.4 (23 Aug 2006) From warner at users.sourceforge.net Sat Dec 9 07:09:43 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Sat, 09 Dec 2006 07:09:43 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.796,1.797 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv11594 Modified Files: ChangeLog Log Message: [project @ make sure 'buildbot sendchange' doesn't hang if it can't get to the buildmaster] Original author: warner at lothar.com Date: 2006-12-09 07:08:45 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.796 retrieving revision 1.797 diff -u -d -r1.796 -r1.797 --- ChangeLog 6 Dec 2006 09:17:31 -0000 1.796 +++ ChangeLog 9 Dec 2006 07:09:40 -0000 1.797 @@ -1,3 +1,12 @@ +2006-12-08 Brian Warner + + * buildbot/scripts/runner.py (sendchange): halt the reactor on + both success *and* failure. Without this, the 'buildbot + sendchange' command would hang if it could not contact the + buildmaster or deliver the Change, which would generally cause the + user's commit/record/checkin command to hang too. Thanks to + Christian Unger for the catch. + 2006-12-06 Brian Warner * NEWS: update with items for the next release From warner at users.sourceforge.net Sat Dec 9 07:09:43 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Sat, 09 Dec 2006 07:09:43 +0000 Subject: [Buildbot-commits] buildbot/buildbot/scripts runner.py,1.49,1.50 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/scripts In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv11594/buildbot/scripts Modified Files: runner.py Log Message: [project @ make sure 'buildbot sendchange' doesn't hang if it can't get to the buildmaster] Original author: warner at lothar.com Date: 2006-12-09 07:08:45 Index: runner.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/scripts/runner.py,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- runner.py 26 Nov 2006 07:31:45 -0000 1.49 +++ runner.py 9 Dec 2006 07:09:41 -0000 1.50 @@ -546,7 +546,7 @@ d = s.send(branch, revision, comments, files) if runReactor: d.addCallbacks(s.printSuccess, s.printFailure) - d.addCallback(s.stop) + d.addBoth(s.stop) s.run() return d From warner at users.sourceforge.net Sat Dec 9 09:16:38 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Sat, 09 Dec 2006 09:16:38 +0000 Subject: [Buildbot-commits] buildbot/buildbot/test runutils.py, 1.16, 1.17 test_transfer.py, 1.3, 1.4 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/test In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28528/buildbot/test Modified Files: runutils.py test_transfer.py Log Message: [project @ cleanup/enhance transfer.FileUpload/FileDownload] Original author: warner at lothar.com Date: 2006-12-09 09:13:31 Index: runutils.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/runutils.py,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- runutils.py 17 Sep 2006 20:35:49 -0000 1.16 +++ runutils.py 9 Dec 2006 09:16:36 -0000 1.17 @@ -229,6 +229,10 @@ s3.stepStarted() return s3 +def fake_slaveVersion(command, oldversion=None): + from buildbot.slave.registry import commandRegistry + return commandRegistry[command] + def makeBuildStep(basedir, step_class=BuildStep, **kwargs): bss = setupBuildStepStatus(basedir) @@ -242,6 +246,7 @@ s = step_class(build=b, **kwargs) s.setStepStatus(bss) b.setupStatus(bss.getBuild()) + s.slaveVersion = fake_slaveVersion return s Index: test_transfer.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_transfer.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- test_transfer.py 24 Nov 2006 07:19:40 -0000 1.3 +++ test_transfer.py 9 Dec 2006 09:16:36 -0000 1.4 @@ -1,6 +1,7 @@ # -*- test-case-name: buildbot.test.test_transfer -*- import os +from stat import ST_MODE from twisted.trial import unittest from buildbot.twcompat import maybeWait from buildbot.steps.transfer import FileUpload, FileDownload @@ -20,8 +21,8 @@ return args def testSuccess(self): - self.slavebase = "testUpload.slave" - self.masterbase = "testUpload.master" + self.slavebase = "Upload.testSuccess.slave" + self.masterbase = "Upload.testSuccess.master" sb = self.makeSlaveBuilder() os.mkdir(os.path.join(self.slavebase, self.slavebuilderbase, "build")) @@ -37,6 +38,77 @@ self.slavebuilderbase, "build", "source.txt") + contents = "this is the source file\n" * 1000 + open(slavesrc, "w").write(contents) + f = open(masterdest, "w") + f.write("overwrite me\n") + f.close() + + d = self.runStep(step) + def _checkUpload(results): + step_status = step.step_status + #l = step_status.getLogs() + #if l: + # logtext = l[0].getText() + # print logtext + self.failUnlessEqual(results, SUCCESS) + self.failUnless(os.path.exists(masterdest)) + masterdest_contents = open(masterdest, "r").read() + self.failUnlessEqual(masterdest_contents, contents) + d.addCallback(_checkUpload) + return maybeWait(d) + + def testMaxsize(self): + self.slavebase = "Upload.testMaxsize.slave" + self.masterbase = "Upload.testMaxsize.master" + sb = self.makeSlaveBuilder() + os.mkdir(os.path.join(self.slavebase, self.slavebuilderbase, + "build")) + masterdest = os.path.join(self.masterbase, "dest2.text") + step = self.makeStep(FileUpload, + slavesrc="source.txt", + masterdest=masterdest, + maxsize=12345) + slavesrc = os.path.join(self.slavebase, + self.slavebuilderbase, + "build", + "source.txt") + contents = "this is the source file\n" * 1000 + open(slavesrc, "w").write(contents) + f = open(masterdest, "w") + f.write("overwrite me\n") + f.close() + + d = self.runStep(step) + def _checkUpload(results): + step_status = step.step_status + #l = step_status.getLogs() + #if l: + # logtext = l[0].getText() + # print logtext + self.failUnlessEqual(results, FAILURE) + self.failUnless(os.path.exists(masterdest)) + masterdest_contents = open(masterdest, "r").read() + self.failUnlessEqual(len(masterdest_contents), 12345) + self.failUnlessEqual(masterdest_contents, contents[:12345]) + d.addCallback(_checkUpload) + return maybeWait(d) + + def testMode(self): + self.slavebase = "Upload.testMode.slave" + self.masterbase = "Upload.testMode.master" + sb = self.makeSlaveBuilder() + os.mkdir(os.path.join(self.slavebase, self.slavebuilderbase, + "build")) + masterdest = os.path.join(self.masterbase, "dest3.text") + step = self.makeStep(FileUpload, + slavesrc="source.txt", + masterdest=masterdest, + mode=0755) + slavesrc = os.path.join(self.slavebase, + self.slavebuilderbase, + "build", + "source.txt") contents = "this is the source file\n" open(slavesrc, "w").write(contents) f = open(masterdest, "w") @@ -54,17 +126,22 @@ self.failUnless(os.path.exists(masterdest)) masterdest_contents = open(masterdest, "r").read() self.failUnlessEqual(masterdest_contents, contents) + # and with 0777 to ignore sticky bits + dest_mode = os.stat(masterdest)[ST_MODE] & 0777 + self.failUnlessEqual(dest_mode, 0755, + "target mode was %o, we wanted %o" % + (dest_mode, 0755)) d.addCallback(_checkUpload) return maybeWait(d) def testMissingFile(self): - self.slavebase = "testUploadMissingFile.slave" - self.masterbase = "testUploadMissingFile.master" + self.slavebase = "Upload.testMissingFile.slave" + self.masterbase = "Upload.testMissingFile.master" sb = self.makeSlaveBuilder() step = self.makeStep(FileUpload, slavesrc="MISSING.txt", masterdest="dest.txt") - masterdest = os.path.join(self.masterbase, "dest.txt") + masterdest = os.path.join(self.masterbase, "dest4.txt") d = self.runStep(step) def _checkUpload(results): @@ -88,8 +165,8 @@ return args def testSuccess(self): - self.slavebase = "testDownload.slave" - self.masterbase = "testDownload.master" + self.slavebase = "Download.testSuccess.slave" + self.masterbase = "Download.testSuccess.master" sb = self.makeSlaveBuilder() os.mkdir(os.path.join(self.slavebase, self.slavebuilderbase, "build")) @@ -101,6 +178,70 @@ step = self.makeStep(FileDownload, mastersrc=mastersrc, slavedest="dest.txt") + contents = "this is the source file\n" * 1000 # 24kb, so two blocks + open(mastersrc, "w").write(contents) + f = open(slavedest, "w") + f.write("overwrite me\n") + f.close() + + d = self.runStep(step) + def _checkDownload(results): + step_status = step.step_status + self.failUnlessEqual(results, SUCCESS) + self.failUnless(os.path.exists(slavedest)) + slavedest_contents = open(slavedest, "r").read() + self.failUnlessEqual(slavedest_contents, contents) + d.addCallback(_checkDownload) + return maybeWait(d) + + def testMaxsize(self): + self.slavebase = "Download.testMaxsize.slave" + self.masterbase = "Download.testMaxsize.master" + sb = self.makeSlaveBuilder() + os.mkdir(os.path.join(self.slavebase, self.slavebuilderbase, + "build")) + mastersrc = os.path.join(self.masterbase, "source.text") + slavedest = os.path.join(self.slavebase, + self.slavebuilderbase, + "build", + "dest.txt") + step = self.makeStep(FileDownload, + mastersrc=mastersrc, + slavedest="dest.txt", + maxsize=12345) + contents = "this is the source file\n" * 1000 # 24kb, so two blocks + open(mastersrc, "w").write(contents) + f = open(slavedest, "w") + f.write("overwrite me\n") + f.close() + + d = self.runStep(step) + def _checkDownload(results): + step_status = step.step_status + # the file should be truncated, and the step a FAILURE + self.failUnlessEqual(results, FAILURE) + self.failUnless(os.path.exists(slavedest)) + slavedest_contents = open(slavedest, "r").read() + self.failUnlessEqual(len(slavedest_contents), 12345) + self.failUnlessEqual(slavedest_contents, contents[:12345]) + d.addCallback(_checkDownload) + return maybeWait(d) + + def testMode(self): + self.slavebase = "Download.testMode.slave" + self.masterbase = "Download.testMode.master" + sb = self.makeSlaveBuilder() + os.mkdir(os.path.join(self.slavebase, self.slavebuilderbase, + "build")) + mastersrc = os.path.join(self.masterbase, "source.text") + slavedest = os.path.join(self.slavebase, + self.slavebuilderbase, + "build", + "dest.txt") + step = self.makeStep(FileDownload, + mastersrc=mastersrc, + slavedest="dest.txt", + mode=0755) contents = "this is the source file\n" open(mastersrc, "w").write(contents) f = open(slavedest, "w") @@ -114,12 +255,17 @@ self.failUnless(os.path.exists(slavedest)) slavedest_contents = open(slavedest, "r").read() self.failUnlessEqual(slavedest_contents, contents) + # and with 0777 to ignore sticky bits + dest_mode = os.stat(slavedest)[ST_MODE] & 0777 + self.failUnlessEqual(dest_mode, 0755, + "target mode was %o, we wanted %o" % + (dest_mode, 0755)) d.addCallback(_checkDownload) return maybeWait(d) def testMissingFile(self): - self.slavebase = "testDownloadMissingFile.slave" - self.masterbase = "testDownloadMissingFile.master" + self.slavebase = "Download.testMissingFile.slave" + self.masterbase = "Download.testMissingFile.master" sb = self.makeSlaveBuilder() os.mkdir(os.path.join(self.slavebase, self.slavebuilderbase, "build")) @@ -140,17 +286,14 @@ l = step_status.getLogs() logtext = l[0].getText().strip() self.failUnless(logtext.endswith(" not available at master")) - d.addCallback(_checkDownload) - return maybeWait(d) + d.addCallbacks(_checkDownload) + return maybeWait(d) # TODO: -# test relative paths +# test relative paths, ~/paths # need to implement expanduser() for slave-side # test error message when master-side file is in a missing directory -# test maxsize= # remove workdir= default? -# clean up command start/finish code -# detect slave-too-old From warner at users.sourceforge.net Sat Dec 9 09:16:38 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Sat, 09 Dec 2006 09:16:38 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.797,1.798 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28528 Modified Files: ChangeLog Log Message: [project @ cleanup/enhance transfer.FileUpload/FileDownload] Original author: warner at lothar.com Date: 2006-12-09 09:13:31 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.797 retrieving revision 1.798 diff -u -d -r1.797 -r1.798 --- ChangeLog 9 Dec 2006 07:09:40 -0000 1.797 +++ ChangeLog 9 Dec 2006 09:16:35 -0000 1.798 @@ -1,3 +1,13 @@ +2006-12-09 Brian Warner + + * buildbot/steps/transfer.py (FileUpload): cleanup + (FileDownload): same. Add tests for slave version, add mode=. + * buildbot/slave/commands.py (SlaveFileUploadCommand): same + (SlaveFileDownloadCommand): same + * buildbot/test/test_transfer.py: enhance tests + * buildbot/test/runutils.py (makeBuildStep): create a fake form of + step.slaveVersion + 2006-12-08 Brian Warner * buildbot/scripts/runner.py (sendchange): halt the reactor on From warner at users.sourceforge.net Sat Dec 9 09:16:38 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Sat, 09 Dec 2006 09:16:38 +0000 Subject: [Buildbot-commits] buildbot/docs buildbot.texinfo,1.92,1.93 Message-ID: Update of /cvsroot/buildbot/buildbot/docs In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28528/docs Modified Files: buildbot.texinfo Log Message: [project @ cleanup/enhance transfer.FileUpload/FileDownload] Original author: warner at lothar.com Date: 2006-12-09 09:13:31 Index: buildbot.texinfo =================================================================== RCS file: /cvsroot/buildbot/buildbot/docs/buildbot.texinfo,v retrieving revision 1.92 retrieving revision 1.93 diff -u -d -r1.92 -r1.93 --- buildbot.texinfo 6 Dec 2006 08:51:23 -0000 1.92 +++ buildbot.texinfo 9 Dec 2006 09:16:36 -0000 1.93 @@ -4170,6 +4170,16 @@ slightly more efficient but also consume more memory on each end, and there is a hard-coded limit of about 640kB. +The @code{mode=} argument allows you to control the access permissions +of the target file, traditionally expressed as an octal integer. The +most common value is probably 0755, which sets the ``x'' executable +bit on the file (useful for shell scripts and the like). The default +value for @code{mode=} is None, which means the permission bits will +default to whatever the umask of the writing process is. The default +umask tends to be fairly restrictive, but at least on the buildslave +you can make it less restrictive with a --umask command-line option at +creation time (@pxref{Buildslave Options}). + @node Writing New BuildSteps, , Transferring Files, Build Steps @subsection Writing New BuildSteps From warner at users.sourceforge.net Sat Dec 9 09:16:38 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Sat, 09 Dec 2006 09:16:38 +0000 Subject: [Buildbot-commits] buildbot/buildbot/steps transfer.py,1.5,1.6 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/steps In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28528/buildbot/steps Modified Files: transfer.py Log Message: [project @ cleanup/enhance transfer.FileUpload/FileDownload] Original author: warner at lothar.com Date: 2006-12-09 09:13:31 Index: transfer.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/steps/transfer.py,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- transfer.py 13 Oct 2006 09:08:25 -0000 1.5 +++ transfer.py 9 Dec 2006 09:16:36 -0000 1.6 @@ -6,34 +6,22 @@ from twisted.python import log from buildbot.process.buildstep import RemoteCommand, BuildStep from buildbot.process.buildstep import SUCCESS, FAILURE +from buildbot.interfaces import BuildSlaveTooOldError -class _FileIO(pb.Referenceable): - """ - Helper base class that acts as remote-accessible file-object - """ - - def __init__(self,fp): - self.fp = fp - - def remote_close(self): - """ - Called by remote slave to state that no more data will be transfered - """ - if self.fp is not None: - self.fp.close() - self.fp = None - -class _FileWriter(_FileIO): +class _FileWriter(pb.Referenceable): """ Helper class that acts as a file-object with write access """ - def __init__(self,fp, maxsize=None): - _FileIO.__init__(self,fp) - self.maxsize = maxsize + def __init__(self, destfile, maxsize, mode): + self.destfile = destfile + self.fp = open(destfile, "w") + if mode is not None: + os.chmod(destfile, mode) + self.remaining = maxsize - def remote_write(self,data): + def remote_write(self, data): """ Called from remote slave to write L{data} to L{fp} within boundaries of L{maxsize} @@ -41,35 +29,27 @@ @type data: C{string} @param data: String of data to write """ - if self.fp is not None: - if self.maxsize is not None: - if len(data) > self.maxsize: - data = data[:self.maxsize] - self.fp.write(data) - self.maxsize = self.maxsize - len(data) - else: - self.fp.write(data) - -class _FileReader(_FileIO): - """ - Helper class that acts as a file-object with read access - """ - - def remote_read(self,maxlength): - """ - Called from remote slave to read at most L{maxlength} bytes of data - - @type maxlength: C{integer} - @param maxlength: Maximum number of data bytes that can be returned + if self.remaining is not None: + if len(data) > self.remaining: + data = data[:self.remaining] + self.fp.write(data) + self.remaining = self.remaining - len(data) + else: + self.fp.write(data) - @return: Data read from L{fp} - @rtype: C{string} of bytes read from file - """ - if self.fp is None: - return '' + def remote_close(self): + """ + Called by remote slave to state that no more data will be transfered + """ + self.fp.close() + self.fp = None - data = self.fp.read(maxlength) - return data + def __del__(self): + # unclean shutdown, the file is probably truncated, so delete it + # altogether rather than deliver a corrupted file + if self.fp is not None: + self.fp.close() + os.unlink(self.destfile) class StatusRemoteCommand(RemoteCommand): @@ -99,13 +79,16 @@ base dir, default 'build' - ['maxsize'] maximum size of the file, default None (=unlimited) - ['blocksize'] maximum size of each block being transfered + - ['mode'] file access mode for the resulting master-side file. + The default (=None) is to leave it up to the umask of + the buildmaster process. """ name = 'upload' def __init__(self, build, slavesrc, masterdest, - workdir="build", maxsize=None, blocksize=16*1024, + workdir="build", maxsize=None, blocksize=16*1024, mode=None, **buildstep_kwargs): BuildStep.__init__(self, build, **buildstep_kwargs) @@ -114,8 +97,15 @@ self.workdir = workdir self.maxsize = maxsize self.blocksize = blocksize + assert isinstance(mode, (int, type(None))) + self.mode = mode def start(self): + version = self.slaveVersion("uploadFile") + if not version: + m = "slave is too old, does not know about uploadFile" + raise BuildSlaveTooOldError(m) + source = self.slavesrc masterdest = self.masterdest # we rely upon the fact that the buildmaster runs chdir'ed into its @@ -127,54 +117,98 @@ % (source, target)) self.step_status.setColor('yellow') - self.step_status.setText(['uploading', source]) + self.step_status.setText(['uploading', os.path.basename(source)]) - fp = open(self.masterdest, 'w') - self.fileWriter = _FileWriter(fp) + # we use maxsize to limit the amount of data on both sides + fileWriter = _FileWriter(self.masterdest, self.maxsize, self.mode) # default arguments args = { 'slavesrc': source, 'workdir': self.workdir, - 'writer': self.fileWriter, + 'writer': fileWriter, 'maxsize': self.maxsize, - 'blocksize': self.blocksize + 'blocksize': self.blocksize, } self.cmd = StatusRemoteCommand('uploadFile', args) d = self.runCommand(self.cmd) d.addCallback(self.finished).addErrback(self.failed) - def finished(self,result): + def finished(self, result): if self.cmd.stderr != '': self.addCompleteLog('stderr', self.cmd.stderr) - self.fileWriter = None - if self.cmd.rc is None or self.cmd.rc == 0: self.step_status.setColor('green') return BuildStep.finished(self, SUCCESS) self.step_status.setColor('red') return BuildStep.finished(self, FAILURE) + + + + +class _FileReader(pb.Referenceable): + """ + Helper class that acts as a file-object with read access + """ + + def __init__(self, fp): + self.fp = fp + + def remote_read(self, maxlength): + """ + Called from remote slave to read at most L{maxlength} bytes of data + + @type maxlength: C{integer} + @param maxlength: Maximum number of data bytes that can be returned + + @return: Data read from L{fp} + @rtype: C{string} of bytes read from file + """ + if self.fp is None: + return '' + + data = self.fp.read(maxlength) + return data + + def remote_close(self): + """ + Called by remote slave to state that no more data will be transfered + """ + if self.fp is not None: + self.fp.close() + self.fp = None + + class FileDownload(BuildStep): """ - Build step to download a file - arguments: + Download the first 'maxsize' bytes of a file, from the buildmaster to the + buildslave. Set the mode of the file - ['mastersrc'] filename of source file at master - ['slavedest'] filename of destination file at slave - ['workdir'] string with slave working directory relative to builder - base dir, default 'build' - ['maxsize'] maximum size of the file, default None (=unlimited) - ['blocksize'] maximum size of each block being transfered + Arguments:: + + ['mastersrc'] filename of source file at master + ['slavedest'] filename of destination file at slave + ['workdir'] string with slave working directory relative to builder + base dir, default 'build' + ['maxsize'] maximum size of the file, default None (=unlimited) + ['blocksize'] maximum size of each block being transfered + ['mode'] use this to set the access permissions of the resulting + buildslave-side file. This is traditionally an octal + integer, like 0644 to be world-readable (but not + world-writable), or 0600 to only be readable by + the buildslave account, or 0755 to be world-executable. + The default (=None) is to leave it up to the umask of + the buildslave process. """ name = 'download' def __init__(self, build, mastersrc, slavedest, - workdir="build", maxsize=None, blocksize=16*1024, + workdir="build", maxsize=None, blocksize=16*1024, mode=None, **buildstep_kwargs): BuildStep.__init__(self, build, **buildstep_kwargs) @@ -183,52 +217,60 @@ self.workdir = workdir self.maxsize = maxsize self.blocksize = blocksize + assert isinstance(mode, (int, type(None))) + self.mode = mode def start(self): + version = self.slaveVersion("downloadFile") + if not version: + m = "slave is too old, does not know about downloadFile" + raise BuildSlaveTooOldError(m) + + # we are currently in the buildmaster's basedir, so any non-absolute + # paths will be interpreted relative to that source = os.path.expanduser(self.mastersrc) slavedest = self.slavedest log.msg("FileDownload started, from master %r to slave %r" % (source, slavedest)) self.step_status.setColor('yellow') - self.step_status.setText(['downloading', slavedest]) + self.step_status.setText(['downloading', "to", + os.path.basename(slavedest)]) - # If file does not exist, bail out with an error - if not os.path.isfile(source): + # setup structures for reading the file + try: + fp = open(source, 'r') + except IOError: + # if file does not exist, bail out with an error self.addCompleteLog('stderr', 'File %r not available at master' % source) - reactor.callLater(0, self.reportFail) + # TODO: once BuildStep.start() gets rewritten to use + # maybeDeferred, just re-raise the exception here. + reactor.callLater(0, BuildStep.finished, self, FAILURE) return - - # setup structures for reading the file - fp = open(source, 'r') - self.fileReader = _FileReader(fp) + fileReader = _FileReader(fp) # default arguments args = { 'slavedest': self.slavedest, 'maxsize': self.maxsize, - 'reader': self.fileReader, + 'reader': fileReader, 'blocksize': self.blocksize, 'workdir': self.workdir, + 'mode': self.mode, } self.cmd = StatusRemoteCommand('downloadFile', args) d = self.runCommand(self.cmd) d.addCallback(self.finished).addErrback(self.failed) - def finished(self,result): + def finished(self, result): if self.cmd.stderr != '': self.addCompleteLog('stderr', self.cmd.stderr) - self.fileReader = None - if self.cmd.rc is None or self.cmd.rc == 0: self.step_status.setColor('green') return BuildStep.finished(self, SUCCESS) - return self.reportFail() - - def reportFail(self): self.step_status.setColor('red') return BuildStep.finished(self, FAILURE) From warner at users.sourceforge.net Sat Dec 9 09:16:38 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Sat, 09 Dec 2006 09:16:38 +0000 Subject: [Buildbot-commits] buildbot/buildbot/slave commands.py,1.71,1.72 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/slave In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28528/buildbot/slave Modified Files: commands.py Log Message: [project @ cleanup/enhance transfer.FileUpload/FileDownload] Original author: warner at lothar.com Date: 2006-12-09 09:13:31 Index: commands.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/slave/commands.py,v retrieving revision 1.71 retrieving revision 1.72 diff -u -d -r1.71 -r1.72 --- commands.py 24 Nov 2006 07:16:35 -0000 1.71 +++ commands.py 9 Dec 2006 09:16:36 -0000 1.72 @@ -684,41 +684,44 @@ """ debug = False - def setup(self,args): + def setup(self, args): self.workdir = args['workdir'] - self.filename = os.path.basename(args['slavesrc']) + self.filename = args['slavesrc'] self.writer = args['writer'] - self.maxsize = args['maxsize'] + self.remaining = args['maxsize'] self.blocksize = args['blocksize'] self.stderr = None self.rc = 0 + def start(self): if self.debug: log.msg('SlaveFileUploadCommand started') # Open file self.path = os.path.join(self.builder.basedir, self.workdir, - self.filename) + os.path.expanduser(self.filename)) try: self.fp = open(self.path, 'r') if self.debug: log.msg('Opened %r for upload' % self.path) except: + # TODO: this needs cleanup self.fp = None self.stderr = 'Cannot open file %r for upload' % self.path self.rc = 1 if self.debug: log.msg('Cannot open file %r for upload' % self.path) + self.sendStatus({'header': "sending %s" % self.path}) - def start(self): - self.cmd = defer.Deferred() - reactor.callLater(0, self._writeBlock) - - return self.cmd + d = defer.Deferred() + d.addCallback(self._writeBlock) + d.addBoth(self.finished) + reactor.callLater(0, d.callback, None) + return d - def _writeBlock(self): + def _writeBlock(self, res): """ Write a block of data to the remote writer """ @@ -726,12 +729,11 @@ if self.debug: log.msg('SlaveFileUploadCommand._writeBlock(): end') d = self.writer.callRemote('close') - d.addCallback(lambda _: self.finished()) - return + return d length = self.blocksize - if self.maxsize is not None and length > self.maxsize: - length = self.maxsize + if self.remaining is not None and length > self.remaining: + length = self.remaining if length <= 0: if self.stderr is None: @@ -744,17 +746,17 @@ if self.debug: log.msg('SlaveFileUploadCommand._writeBlock(): '+ - 'allowed=%d readlen=%d' % (length,len(data))) + 'allowed=%d readlen=%d' % (length, len(data))) if len(data) == 0: d = self.writer.callRemote('close') - d.addCallback(lambda _: self.finished()) - else: - if self.maxsize is not None: - self.maxsize = self.maxsize - len(data) - assert self.maxsize >= 0 - d = self.writer.callRemote('write',data) - d.addCallback(lambda _: self._writeBlock()) + return d + if self.remaining is not None: + self.remaining = self.remaining - len(data) + assert self.remaining >= 0 + d = self.writer.callRemote('write', data) + d.addCallback(self._writeBlock) + return d def interrupt(self): if self.debug: @@ -765,17 +767,16 @@ self.stderr = 'Upload of %r interrupted' % self.path self.rc = 1 self.interrupted = True - self.finished() - + # the next _writeBlock call will notice the .interrupted flag - def finished(self): + def finished(self, res): if self.debug: - log.msg('finished: stderr=%r, rc=%r' % (self.stderr,self.rc)) + log.msg('finished: stderr=%r, rc=%r' % (self.stderr, self.rc)) if self.stderr is None: - self.sendStatus({'rc':self.rc}) + self.sendStatus({'rc': self.rc}) else: - self.sendStatus({'stderr':self.stderr, 'rc':self.rc}) - self.cmd.callback(0) + self.sendStatus({'stderr': self.stderr, 'rc': self.rc}) + return res registerSlaveCommand("uploadFile", SlaveFileUploadCommand, command_version) @@ -790,44 +791,56 @@ - ['reader']: RemoteReference to a transfer._FileReader object - ['maxsize']: max size (in bytes) of file to write - ['blocksize']: max size for each data block + - ['mode']: access mode for the new file """ debug = False - def setup(self,args): + def setup(self, args): self.workdir = args['workdir'] - self.filename = os.path.basename(args['slavedest']) + self.filename = args['slavedest'] self.reader = args['reader'] - self.maxsize = args['maxsize'] + self.bytes_remaining = args['maxsize'] self.blocksize = args['blocksize'] + self.mode = args['mode'] self.stderr = None self.rc = 0 + def start(self): if self.debug: - log.msg('SlaveFileDownloadCommand started') + log.msg('SlaveFileDownloadCommand starting') # Open file self.path = os.path.join(self.builder.basedir, self.workdir, - self.filename) + os.path.expanduser(self.filename)) try: self.fp = open(self.path, 'w') if self.debug: log.msg('Opened %r for download' % self.path) + if self.mode is not None: + # note: there is a brief window during which the new file + # will have the buildslave's default (umask) mode before we + # set the new one. Don't use this mode= feature to keep files + # private: use the buildslave's umask for that instead. (it + # is possible to call os.umask() before and after the open() + # call, but cleaning up from exceptions properly is more of a + # nuisance that way). + os.chmod(self.path, self.mode) except IOError: + # TODO: this still needs cleanup self.fp = None self.stderr = 'Cannot open file %r for download' % self.path self.rc = 1 if self.debug: log.msg('Cannot open file %r for download' % self.path) + d = defer.Deferred() + d.addCallback(self._readBlock) + d.addBoth(self.finished) + reactor.callLater(0, d.callback, None) + return d - def start(self): - self.cmd = defer.Deferred() - reactor.callLater(0, self._readBlock) - - return self.cmd - - def _readBlock(self): + def _readBlock(self, res): """ Read a block of data from the remote reader """ @@ -835,12 +848,11 @@ if self.debug: log.msg('SlaveFileDownloadCommand._readBlock(): end') d = self.reader.callRemote('close') - d.addCallback(lambda _: self.finished()) - return + return d length = self.blocksize - if self.maxsize is not None and length > self.maxsize: - length = self.maxsize + if self.bytes_remaining is not None and length > self.bytes_remaining: + length = self.bytes_remaining if length <= 0: if self.stderr is None: @@ -848,25 +860,25 @@ % self.path self.rc = 1 d = self.reader.callRemote('close') - d.addCallback(lambda _: self.finished()) else: d = self.reader.callRemote('read', length) d.addCallback(self._writeData) + return d - def _writeData(self,data): + def _writeData(self, data): if self.debug: - log.msg('SlaveFileDownloadCommand._readBlock(): '+ - 'readlen=%d' % len(data)) + log.msg('SlaveFileDownloadCommand._readBlock(): readlen=%d' % + len(data)) if len(data) == 0: d = self.reader.callRemote('close') - d.addCallback(lambda _: self.finished()) - else: - if self.maxsize is not None: - self.maxsize = self.maxsize - len(data) - assert self.maxsize >= 0 - self.fp.write(data) - self._readBlock() # setup call back for next block (or finish) + return d + if self.bytes_remaining is not None: + self.bytes_remaining = self.bytes_remaining - len(data) + assert self.bytes_remaining >= 0 + self.fp.write(data) + d = self._readBlock(None) # setup call back for next block (or finish) + return d def interrupt(self): if self.debug: @@ -877,21 +889,20 @@ self.stderr = 'Download of %r interrupted' % self.path self.rc = 1 self.interrupted = True - self.finished() - + # now we wait for the next read request to return. _readBlock will + # abandon the file when it sees self.interrupted set. - def finished(self): + def finished(self, res): if self.fp is not None: self.fp.close() if self.debug: - log.msg('finished: stderr=%r, rc=%r' % (self.stderr,self.rc)) + log.msg('finished: stderr=%r, rc=%r' % (self.stderr, self.rc)) if self.stderr is None: - self.sendStatus({'rc':self.rc}) + self.sendStatus({'rc': self.rc}) else: - self.sendStatus({'stderr':self.stderr, 'rc':self.rc}) - self.cmd.callback(0) - + self.sendStatus({'stderr': self.stderr, 'rc': self.rc}) + return res registerSlaveCommand("downloadFile", SlaveFileDownloadCommand, command_version) From warner at users.sourceforge.net Sat Dec 9 09:19:50 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Sat, 09 Dec 2006 09:19:50 +0000 Subject: [Buildbot-commits] buildbot/buildbot/scripts startup.py,1.2,1.3 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/scripts In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv29703/buildbot/scripts Modified Files: startup.py Log Message: [project @ scripts.startip: add missing import statement] Original author: warner at lothar.com Date: 2006-12-09 09:16:00 Index: startup.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/scripts/startup.py,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- startup.py 26 Nov 2006 07:36:50 -0000 1.2 +++ startup.py 9 Dec 2006 09:19:48 -0000 1.3 @@ -22,7 +22,7 @@ def _failure(self, why): from twisted.internet import reactor from buildbot.scripts.logwatcher import BuildmasterTimeoutError, \ - ReconfigError, BuildslaveTimeoutError + ReconfigError, BuildslaveTimeoutError, BuildSlaveDetectedError if why.check(BuildmasterTimeoutError): print """ The buildmaster took more than 5 seconds to start, so we were unable to From warner at users.sourceforge.net Sat Dec 9 09:19:50 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Sat, 09 Dec 2006 09:19:50 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.798,1.799 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv29703 Modified Files: ChangeLog Log Message: [project @ scripts.startip: add missing import statement] Original author: warner at lothar.com Date: 2006-12-09 09:16:00 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.798 retrieving revision 1.799 diff -u -d -r1.798 -r1.799 --- ChangeLog 9 Dec 2006 09:16:35 -0000 1.798 +++ ChangeLog 9 Dec 2006 09:19:48 -0000 1.799 @@ -1,5 +1,8 @@ 2006-12-09 Brian Warner + * buildbot/scripts/startup.py (Follower._failure): add missing + import statement for BuildSlaveDetectedError + * buildbot/steps/transfer.py (FileUpload): cleanup (FileDownload): same. Add tests for slave version, add mode=. * buildbot/slave/commands.py (SlaveFileUploadCommand): same From warner at users.sourceforge.net Sat Dec 9 19:25:58 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Sat, 09 Dec 2006 19:25:58 +0000 Subject: [Buildbot-commits] buildbot/buildbot/steps transfer.py,1.6,1.7 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/steps In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv6667/buildbot/steps Modified Files: transfer.py Log Message: [project @ filetransfer: handle errors better] Original author: warner at lothar.com Date: 2006-12-09 19:19:51 Index: transfer.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/steps/transfer.py,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- transfer.py 9 Dec 2006 09:16:36 -0000 1.6 +++ transfer.py 9 Dec 2006 19:25:56 -0000 1.7 @@ -47,8 +47,9 @@ def __del__(self): # unclean shutdown, the file is probably truncated, so delete it # altogether rather than deliver a corrupted file - if self.fp is not None: - self.fp.close() + fp = getattr(self, "fp", None) + if fp: + fp.close() os.unlink(self.destfile) From warner at users.sourceforge.net Sat Dec 9 19:25:58 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Sat, 09 Dec 2006 19:25:58 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.799,1.800 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv6667 Modified Files: ChangeLog Log Message: [project @ filetransfer: handle errors better] Original author: warner at lothar.com Date: 2006-12-09 19:19:51 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.799 retrieving revision 1.800 diff -u -d -r1.799 -r1.800 --- ChangeLog 9 Dec 2006 09:19:48 -0000 1.799 +++ ChangeLog 9 Dec 2006 19:25:56 -0000 1.800 @@ -1,5 +1,8 @@ 2006-12-09 Brian Warner + * buildbot/steps/transfer.py (_FileWriter.__del__): handle errors + better when we can't open the masterdst file + * buildbot/scripts/startup.py (Follower._failure): add missing import statement for BuildSlaveDetectedError From warner at users.sourceforge.net Mon Dec 11 04:41:00 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 04:41:00 +0000 Subject: [Buildbot-commits] buildbot/buildbot/clients debug.py,1.5,1.6 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/clients In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv13123/buildbot/clients Modified Files: debug.py Log Message: [project @ debugclient: update gtk.main_quit() usage] Original author: warner at lothar.com Date: 2006-12-11 04:24:30 Index: debug.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/clients/debug.py,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- debug.py 24 Nov 2006 07:19:48 -0000 1.5 +++ debug.py 11 Dec 2006 04:40:58 -0000 1.6 @@ -28,7 +28,7 @@ self.filename = g('filename') self.connectbutton = g('connectbutton') self.connectlabel = g('connectlabel') - g('window1').connect('destroy', lambda win: gtk.mainquit()) + g('window1').connect('destroy', lambda win: gtk.main_quit()) # put the master info in the window's titlebar g('window1').set_title("Buildbot Debug Tool: %s" % master) c = xml.signal_connect From warner at users.sourceforge.net Mon Dec 11 04:41:00 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 04:41:00 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.800,1.801 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv13123 Modified Files: ChangeLog Log Message: [project @ debugclient: update gtk.main_quit() usage] Original author: warner at lothar.com Date: 2006-12-11 04:24:30 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.800 retrieving revision 1.801 diff -u -d -r1.800 -r1.801 --- ChangeLog 9 Dec 2006 19:25:56 -0000 1.800 +++ ChangeLog 11 Dec 2006 04:40:57 -0000 1.801 @@ -1,3 +1,8 @@ +2006-12-10 Brian Warner + + * buildbot/clients/debug.py: update to use gtk.main_quit() rather + than the old/deprecated gtk.mainquit() + 2006-12-09 Brian Warner * buildbot/steps/transfer.py (_FileWriter.__del__): handle errors From warner at users.sourceforge.net Mon Dec 11 04:43:24 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 04:43:24 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.801,1.802 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv14249 Modified Files: ChangeLog Log Message: [project @ LogFile.finish: forget about subscribers when we close the log] Original author: warner at lothar.com Date: 2006-12-11 04:30:28 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.801 retrieving revision 1.802 diff -u -d -r1.801 -r1.802 --- ChangeLog 11 Dec 2006 04:40:57 -0000 1.801 +++ ChangeLog 11 Dec 2006 04:43:22 -0000 1.802 @@ -1,5 +1,10 @@ 2006-12-10 Brian Warner + * buildbot/status/builder.py (LogFile.finish): forget about all + subscribers once the log has finished, since after that point + we're never going to use them again. This might help free up some + memory somewhere. + * buildbot/clients/debug.py: update to use gtk.main_quit() rather than the old/deprecated gtk.mainquit() From warner at users.sourceforge.net Mon Dec 11 04:43:25 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 04:43:25 +0000 Subject: [Buildbot-commits] buildbot/buildbot/status builder.py,1.90,1.91 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/status In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv14249/buildbot/status Modified Files: builder.py Log Message: [project @ LogFile.finish: forget about subscribers when we close the log] Original author: warner at lothar.com Date: 2006-12-11 04:30:28 Index: builder.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/builder.py,v retrieving revision 1.90 retrieving revision 1.91 diff -u -d -r1.90 -r1.91 --- builder.py 24 Nov 2006 07:16:48 -0000 1.90 +++ builder.py 11 Dec 2006 04:43:22 -0000 1.91 @@ -425,6 +425,7 @@ self.finishedWatchers = [] for w in watchers: w.callback(self) + self.watchers = [] # persistence stuff def __getstate__(self): From warner at users.sourceforge.net Mon Dec 11 05:09:53 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 05:09:53 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.802,1.803 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv24232 Modified Files: ChangeLog Log Message: [project @ test_config: inhibit the usual read-config-on-startup behavior to avoid a spurious flunked test] Original author: warner at lothar.com Date: 2006-12-11 05:08:31 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.802 retrieving revision 1.803 diff -u -d -r1.802 -r1.803 --- ChangeLog 11 Dec 2006 04:43:22 -0000 1.802 +++ ChangeLog 11 Dec 2006 05:09:51 -0000 1.803 @@ -1,5 +1,9 @@ 2006-12-10 Brian Warner + * buildbot/test/test_config.py (StartService.testStartService): + inhibit the usual read-config-on-startup behavior, since otherwise + the log.err that gets recorded causes the test to fail + * buildbot/status/builder.py (LogFile.finish): forget about all subscribers once the log has finished, since after that point we're never going to use them again. This might help free up some From warner at users.sourceforge.net Mon Dec 11 05:09:53 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 05:09:53 +0000 Subject: [Buildbot-commits] buildbot/buildbot/test test_config.py, 1.39, 1.40 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/test In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv24232/buildbot/test Modified Files: test_config.py Log Message: [project @ test_config: inhibit the usual read-config-on-startup behavior to avoid a spurious flunked test] Original author: warner at lothar.com Date: 2006-12-11 05:08:31 Index: test_config.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_config.py,v retrieving revision 1.39 retrieving revision 1.40 diff -u -d -r1.39 -r1.40 --- test_config.py 17 Sep 2006 20:43:39 -0000 1.39 +++ test_config.py 11 Dec 2006 05:09:51 -0000 1.40 @@ -1051,6 +1051,8 @@ def testStartService(self): os.mkdir("test_ss") self.master = m = BuildMaster("test_ss") + # inhibit the usual read-config-on-startup behavior + m.readConfig = True m.startService() d = m.loadConfig(startableEmptyCfg % 0) d.addCallback(self._testStartService_0) From warner at users.sourceforge.net Mon Dec 11 05:21:42 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 05:21:42 +0000 Subject: [Buildbot-commits] buildbot/buildbot/slave commands.py,1.72,1.73 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/slave In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv29027/buildbot/slave Modified Files: commands.py Log Message: [project @ update things for release] Original author: warner at lothar.com Date: 2006-12-11 05:16:16 Index: commands.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/slave/commands.py,v retrieving revision 1.72 retrieving revision 1.73 diff -u -d -r1.72 -r1.73 --- commands.py 9 Dec 2006 09:16:36 -0000 1.72 +++ commands.py 11 Dec 2006 05:21:40 -0000 1.73 @@ -32,7 +32,7 @@ # ShellCommand accepts new arguments (logfiles=, initialStdin=, # keepStdinOpen=) and no longer accepts stdin=) # (release 0.7.4) -# >= 2.2: added monotone, uploadFile, and downloadFile +# >= 2.2: added monotone, uploadFile, and downloadFile (release 0.7.5) class CommandInterrupted(Exception): pass From warner at users.sourceforge.net Mon Dec 11 05:21:42 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 05:21:42 +0000 Subject: [Buildbot-commits] buildbot ChangeLog, 1.803, 1.804 NEWS, 1.61, 1.62 README, 1.33, 1.34 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv29027 Modified Files: ChangeLog NEWS README Log Message: [project @ update things for release] Original author: warner at lothar.com Date: 2006-12-11 05:16:16 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.803 retrieving revision 1.804 diff -u -d -r1.803 -r1.804 --- ChangeLog 11 Dec 2006 05:09:51 -0000 1.803 +++ ChangeLog 11 Dec 2006 05:21:39 -0000 1.804 @@ -1,5 +1,10 @@ 2006-12-10 Brian Warner + * README (REQUIREMENTS): update for release + * NEWS: update for release + * buildbot/slave/commands.py (command_version): mention that this + version (2.2) was released with buildbot-0.7.5 + * buildbot/test/test_config.py (StartService.testStartService): inhibit the usual read-config-on-startup behavior, since otherwise the log.err that gets recorded causes the test to fail Index: NEWS =================================================================== RCS file: /cvsroot/buildbot/buildbot/NEWS,v retrieving revision 1.61 retrieving revision 1.62 diff -u -d -r1.61 -r1.62 --- NEWS 6 Dec 2006 09:17:31 -0000 1.61 +++ NEWS 11 Dec 2006 05:21:39 -0000 1.62 @@ -1,21 +1,32 @@ -User visible changes in Buildbot. +User visible changes in Buildbot. -*- outline -*- -* Release ?.?.? (?) +* Release 0.7.5 (10 Dec 2006) ** Things You Need To Know *** The Great BuildStep Renaming -All BuildSteps have moved from being classes in buildbot.process.step to -separate modules in buildbot.steps.* . They have been split out into separate -categories: for example, the source checkout steps are now -buildbot.steps.source.CVS, buildbot.steps.source.Darcs, etc. The most +All BuildSteps have moved! They used to be classes in buildbot.process.step, +but now they all have separate modules in buildbot.steps.* . They have been +split out into separate categories: for example, the source checkout steps +are now buildbot.steps.source.CVS, buildbot.steps.source.Darcs, etc. The most commonly used one is probably buildbot.steps.shell.ShellCommand . The python-specific steps are in buildbot.steps.python, and the Twisted-specific steps are in buildbot.steps.python_twisted . -The old names are deprecated and will be removed altogether in the next -release. +You will need to update your master.cfg files to use the new names. The old +names are deprecated and will be removed altogether in the next release. + +*** Compatibility + +Buildbot now requires python-2.3 or later. Buildbot now requires +Twisted-2.0.0 or later. Support for earlier versions of both has finally been +removed. If you discover it works with unsupported versions, please return +your Buildbot to the factory for repairs :-). + +Buildbot has *not* yet been tested against the recent python-2.5 release. It +has been tested against the latest SVN version of Twisted, but only in +conjunction with python-2.4 . ** new features @@ -39,13 +50,13 @@ being used. This functionality is not available under windows. In addition, if any problems are detected during 'start' or 'restart' (but -not reconfig), the 'buildbot *' command will terminate with a non-zero exit +not reconfig), the buildbot command will terminate with a non-zero exit status, making it easier to use in scripts. Closes SF#1517975. *** Locks now take maxCount=N to allow multiple simultaneous owners -This allows Locks to be non-exclusive but still limit concurrency. Thanks to -James Knight for the patch. Closes SF#1434997. +This allows Locks to be non-exclusive but still limit maximum concurrency. +Thanks to James Knight for the patch. Closes SF#1434997. *** filetransfer steps Index: README =================================================================== RCS file: /cvsroot/buildbot/buildbot/README,v retrieving revision 1.33 retrieving revision 1.34 diff -u -d -r1.33 -r1.34 --- README 23 Aug 2006 07:04:36 -0000 1.33 +++ README 11 Dec 2006 05:21:39 -0000 1.34 @@ -43,20 +43,17 @@ The PyCon paper has a good description of the overall architecture. It is available in HTML form in docs/PyCon-2003/buildbot.html, or on the web page. -docs/buildbot.info contains the beginnings of the User's Manual, and the -Installation chapter is the best guide to use for setup instructions. The -.texinfo source can also be turned into printed documentation. +The User's Manual is in docs/buildbot.info, and the Installation chapter is +the best guide to use for setup instructions. The .texinfo source can also be +turned into printed documentation. An HTML representation is available on the +Buildbot home page. REQUIREMENTS: Python: http://www.python.org - Buildbot requires python-2.2 or later, and is primarily developed against - python-2.3. Specifically, it requires generators, and a version of Twisted - which only works with python-2.2 or later. Certain features (like the - inclusion of build logs in status emails) require python-2.2.2 or later, - while the IRC 'force' command requires python-2.3 . It has been tested - against python-2.4 . + Buildbot requires python-2.3 or later, and is primarily developed against + python-2.4 . It has *not* yet been tested against python-2.5 . Twisted: http://twistedmatrix.com @@ -64,12 +61,12 @@ As always, the most recent version is recommended. It has been tested against Twisted-2.4.0 and Twisted SVN as of the date of release. - When using the split subpackages of Twisted-2.x.x, you'll need at least + Twisted is delivered as a collection of subpackages. You'll need at least "Twisted" (the core package), and you'll also want TwistedMail, TwistedWeb, and TwistedWords (for sending email, serving a web status page, and delivering build status via IRC, respectively). You might also - want TwistedConch (for the encrypted Manhole debug port). Note that recent - Twisteds require ZopeInterface to be installed as well. + want TwistedConch (for the encrypted Manhole debug port). Note that + Twisted requires ZopeInterface to be installed as well. ACCESSORIES: @@ -97,7 +94,8 @@ Nothing should fail (at least under unix), a few might be skipped. If any of the tests fail, you should stop and investigate the cause before continuing the installation process, as it will probably be easier to track down the bug -early. +early. There are a few known failures under windows and OS-X, but please +report these to the mailing list so we can isolate and resolve them. Neither CVS nor SVN support file based repositories on network filesystem (or network drives in Windows parlance). Therefore it is recommended to run From warner at users.sourceforge.net Mon Dec 11 05:21:50 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 05:21:50 +0000 Subject: [Buildbot-commits] buildbot/docs buildbot.texinfo,1.93,1.94 Message-ID: Update of /cvsroot/buildbot/buildbot/docs In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv29047/docs Modified Files: buildbot.texinfo Log Message: [project @ release buildbot-0.7.5] Original author: warner at lothar.com Date: 2006-12-11 05:20:59 Index: buildbot.texinfo =================================================================== RCS file: /cvsroot/buildbot/buildbot/docs/buildbot.texinfo,v retrieving revision 1.93 retrieving revision 1.94 diff -u -d -r1.93 -r1.94 --- buildbot.texinfo 9 Dec 2006 09:16:36 -0000 1.93 +++ buildbot.texinfo 11 Dec 2006 05:21:48 -0000 1.94 @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @c %**start of header @setfilename buildbot.info - at settitle BuildBot Manual 0.7.4+ + at settitle BuildBot Manual 0.7.5 @defcodeindex cs @defcodeindex sl @defcodeindex bf From warner at users.sourceforge.net Mon Dec 11 05:21:50 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 05:21:50 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.804,1.805 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv29047 Modified Files: ChangeLog Log Message: [project @ release buildbot-0.7.5] Original author: warner at lothar.com Date: 2006-12-11 05:20:59 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.804 retrieving revision 1.805 diff -u -d -r1.804 -r1.805 --- ChangeLog 11 Dec 2006 05:21:39 -0000 1.804 +++ ChangeLog 11 Dec 2006 05:21:48 -0000 1.805 @@ -1,5 +1,10 @@ 2006-12-10 Brian Warner + * buildbot/__init__.py (version): Releasing buildbot-0.7.5 + * docs/buildbot.texinfo: set version to match + +2006-12-10 Brian Warner + * README (REQUIREMENTS): update for release * NEWS: update for release * buildbot/slave/commands.py (command_version): mention that this From warner at users.sourceforge.net Mon Dec 11 05:21:50 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 05:21:50 +0000 Subject: [Buildbot-commits] buildbot/buildbot __init__.py,1.26,1.27 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv29047/buildbot Modified Files: __init__.py Log Message: [project @ release buildbot-0.7.5] Original author: warner at lothar.com Date: 2006-12-11 05:20:59 Index: __init__.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/__init__.py,v retrieving revision 1.26 retrieving revision 1.27 diff -u -d -r1.26 -r1.27 --- __init__.py 23 Aug 2006 22:41:17 -0000 1.26 +++ __init__.py 11 Dec 2006 05:21:48 -0000 1.27 @@ -1,3 +1,3 @@ #! /usr/bin/python -version = "0.7.4+" +version = "0.7.5" From warner at users.sourceforge.net Mon Dec 11 08:12:23 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:12:23 +0000 Subject: [Buildbot-commits] buildbot/docs buildbot.texinfo,1.94,1.95 Message-ID: Update of /cvsroot/buildbot/buildbot/docs In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv30396/docs Modified Files: buildbot.texinfo Log Message: [project @ bump version to 0.7.5+ while between releases] Original author: warner at lothar.com Date: 2006-12-11 08:10:15 Index: buildbot.texinfo =================================================================== RCS file: /cvsroot/buildbot/buildbot/docs/buildbot.texinfo,v retrieving revision 1.94 retrieving revision 1.95 diff -u -d -r1.94 -r1.95 --- buildbot.texinfo 11 Dec 2006 05:21:48 -0000 1.94 +++ buildbot.texinfo 11 Dec 2006 08:12:21 -0000 1.95 @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @c %**start of header @setfilename buildbot.info - at settitle BuildBot Manual 0.7.5 + at settitle BuildBot Manual 0.7.5+ @defcodeindex cs @defcodeindex sl @defcodeindex bf From warner at users.sourceforge.net Mon Dec 11 08:12:23 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:12:23 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.805,1.806 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv30396 Modified Files: ChangeLog Log Message: [project @ bump version to 0.7.5+ while between releases] Original author: warner at lothar.com Date: 2006-12-11 08:10:15 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.805 retrieving revision 1.806 diff -u -d -r1.805 -r1.806 --- ChangeLog 11 Dec 2006 05:21:48 -0000 1.805 +++ ChangeLog 11 Dec 2006 08:12:21 -0000 1.806 @@ -1,3 +1,9 @@ +2006-12-11 Brian Warner + + * buildbot/__init__.py (version): bump to 0.7.5+ while between + releases + * docs/buildbot.texinfo: same + 2006-12-10 Brian Warner * buildbot/__init__.py (version): Releasing buildbot-0.7.5 From warner at users.sourceforge.net Mon Dec 11 08:12:23 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:12:23 +0000 Subject: [Buildbot-commits] buildbot/buildbot __init__.py,1.27,1.28 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv30396/buildbot Modified Files: __init__.py Log Message: [project @ bump version to 0.7.5+ while between releases] Original author: warner at lothar.com Date: 2006-12-11 08:10:15 Index: __init__.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/__init__.py,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- __init__.py 11 Dec 2006 05:21:48 -0000 1.27 +++ __init__.py 11 Dec 2006 08:12:21 -0000 1.28 @@ -1,3 +1,3 @@ #! /usr/bin/python -version = "0.7.5" +version = "0.7.5+" From warner at users.sourceforge.net Mon Dec 11 08:23:31 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:23:31 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.806,1.807 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv2276 Modified Files: ChangeLog Log Message: [project @ remove all uses of buildbot.twcompat.maybeWait, now that we don't need to maintain Twisted-1.3.0 compatibility] Original author: warner at lothar.com Date: 2006-12-11 08:21:51 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.806 retrieving revision 1.807 diff -u -d -r1.806 -r1.807 --- ChangeLog 11 Dec 2006 08:12:21 -0000 1.806 +++ ChangeLog 11 Dec 2006 08:23:28 -0000 1.807 @@ -1,5 +1,11 @@ 2006-12-11 Brian Warner + * buildbot/twcompat.py (maybeWait): remove this method, now that + we no longer maintain compatibility with Twisted<=1.3.0 . + Twisted-2.0.0 and later allow trial methods to return Deferreds + directly. + * buildbot/test/*: remove all uses of maybeWait + * buildbot/__init__.py (version): bump to 0.7.5+ while between releases * docs/buildbot.texinfo: same From warner at users.sourceforge.net Mon Dec 11 08:23:31 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:23:31 +0000 Subject: [Buildbot-commits] buildbot/buildbot twcompat.py,1.8,1.9 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv2276/buildbot Modified Files: twcompat.py Log Message: [project @ remove all uses of buildbot.twcompat.maybeWait, now that we don't need to maintain Twisted-1.3.0 compatibility] Original author: warner at lothar.com Date: 2006-12-11 08:21:51 Index: twcompat.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/twcompat.py,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- twcompat.py 6 Sep 2006 00:41:54 -0000 1.8 +++ twcompat.py 11 Dec 2006 08:23:29 -0000 1.9 @@ -41,30 +41,6 @@ from twisted.python.components import Interface providedBy = components.implements -# are we using a version of Trial that allows setUp/testFoo/tearDown to -# return Deferreds? -oldtrial = version.startswith("1.3") - -# use this at the end of setUp/testFoo/tearDown methods -def maybeWait(d, timeout="none"): - from twisted.python import failure - from twisted.trial import unittest - if oldtrial: - # this is required for oldtrial (twisted-1.3.0) compatibility. When we - # move to retrial (twisted-2.0.0), replace these with a simple 'return - # d'. - try: - if timeout == "none": - unittest.deferredResult(d) - else: - unittest.deferredResult(d, timeout) - except failure.Failure, f: - if f.check(unittest.SkipTest): - raise f.value - raise - return None - return d - # waitForDeferred and getProcessOutputAndValue are twisted-2.0 things. If # we're running under 1.3, patch them into place. These versions are copied # from twisted somewhat after 2.0.1 . From warner at users.sourceforge.net Mon Dec 11 08:23:31 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:23:31 +0000 Subject: [Buildbot-commits] buildbot/buildbot/test runutils.py, 1.17, 1.18 test_changes.py, 1.9, 1.10 test_config.py, 1.40, 1.41 test_control.py, 1.13, 1.14 test_dependencies.py, 1.5, 1.6 test_locks.py, 1.7, 1.8 test_p4poller.py, 1.3, 1.4 test_properties.py, 1.5, 1.6 test_run.py, 1.42, 1.43 test_scheduler.py, 1.11, 1.12 test_shell.py, 1.4, 1.5 test_slavecommand.py, 1.23, 1.24 test_slaves.py, 1.5, 1.6 test_status.py, 1.35, 1.36 test_steps.py, 1.34, 1.35 test_transfer.py, 1.4, 1.5 test_vc.py, 1.69, 1.70 test_web.py, 1.37, 1.38 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/test In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv2276/buildbot/test Modified Files: runutils.py test_changes.py test_config.py test_control.py test_dependencies.py test_locks.py test_p4poller.py test_properties.py test_run.py test_scheduler.py test_shell.py test_slavecommand.py test_slaves.py test_status.py test_steps.py test_transfer.py test_vc.py test_web.py Log Message: [project @ remove all uses of buildbot.twcompat.maybeWait, now that we don't need to maintain Twisted-1.3.0 compatibility] Original author: warner at lothar.com Date: 2006-12-11 08:21:51 Index: runutils.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/runutils.py,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- runutils.py 9 Dec 2006 09:16:36 -0000 1.17 +++ runutils.py 11 Dec 2006 08:23:29 -0000 1.18 @@ -5,7 +5,6 @@ from twisted.python import log, util from buildbot import master, interfaces -from buildbot.twcompat import maybeWait from buildbot.slave import bot from buildbot.process.builder import Builder from buildbot.process.base import BuildRequest, Build @@ -137,7 +136,7 @@ d = self.shutdownAllSlaves() d.addCallback(self._tearDown_1) d.addCallback(self._tearDown_2) - return maybeWait(d) + return d def _tearDown_1(self, res): if self.master: return defer.maybeDeferred(self.master.stopService) Index: test_changes.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_changes.py,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- test_changes.py 6 Sep 2006 00:41:55 -0000 1.9 +++ test_changes.py 11 Dec 2006 08:23:29 -0000 1.10 @@ -4,7 +4,6 @@ from twisted.internet import defer, reactor from buildbot import master -from buildbot.twcompat import maybeWait from buildbot.changes import pb from buildbot.scripts import runner @@ -122,7 +121,7 @@ # This iterate() is a quick hack to deal with the problem. I need to # investigate more thoroughly and find a better solution. d.addCallback(self.stall, 0.1) - return maybeWait(d) + return d def stall(self, res, timeout): d = defer.Deferred() @@ -136,7 +135,7 @@ # have to load it twice. Clean this up. d = self.master.loadConfig(config_sender) d.addCallback(self._testSender_1) - return maybeWait(d) + return d def _testSender_1(self, res): self.cm = cm = self.master.change_svc Index: test_config.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_config.py,v retrieving revision 1.40 retrieving revision 1.41 diff -u -d -r1.40 -r1.41 --- test_config.py 11 Dec 2006 05:09:51 -0000 1.40 +++ test_config.py 11 Dec 2006 08:23:29 -0000 1.41 @@ -14,7 +14,7 @@ except ImportError: pass -from buildbot.twcompat import providedBy, maybeWait +from buildbot.twcompat import providedBy from buildbot.master import BuildMaster from buildbot import scheduler from twisted.application import service, internet @@ -515,7 +515,7 @@ d = master.loadConfig(self.sourcesCfg) d.addCallback(self._testSources_1) - return maybeWait(d) + return d def _testSources_1(self, res): self.failUnlessEqual(len(list(self.buildmaster.change_svc)), 1) @@ -629,7 +629,7 @@ d.addCallback(_loadConfig, badcfg) d.addBoth(_shouldBeFailure, "Schedulers must have unique names") - return maybeWait(d) + return d def testSchedulers(self): master = self.buildmaster @@ -639,7 +639,7 @@ d = self.buildmaster.loadConfig(schedulersCfg) d.addCallback(self._testSchedulers_1) - return maybeWait(d) + return d def _testSchedulers_1(self, res): sch = self.buildmaster.allSchedulers() @@ -806,7 +806,7 @@ d.addCallback(lambda res: master.loadConfig(ircCfg1)) e5 = {'irc.us.freenode.net': ('buildbot', ['twisted'])} d.addCallback(lambda res: self.checkIRC(master, e5)) - return maybeWait(d) + return d def testWebPortnum(self): master = self.buildmaster @@ -814,7 +814,7 @@ d = master.loadConfig(webCfg1) d.addCallback(self._testWebPortnum_1) - return maybeWait(d) + return d def _testWebPortnum_1(self, res): ports = self.checkPorts(self.buildmaster, [(9999, pb.PBServerFactory), (9980, Site)]) @@ -857,7 +857,7 @@ d = master.loadConfig(webNameCfg1) d.addCallback(self._testWebPathname_1) - return maybeWait(d) + return d def _testWebPathname_1(self, res): self.checkPorts(self.buildmaster, [(9999, pb.PBServerFactory), @@ -1056,7 +1056,7 @@ m.startService() d = m.loadConfig(startableEmptyCfg % 0) d.addCallback(self._testStartService_0) - return maybeWait(d) + return d def _testStartService_0(self, res): m = self.master Index: test_control.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_control.py,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- test_control.py 24 Nov 2006 07:19:55 -0000 1.13 +++ test_control.py 11 Dec 2006 08:23:29 -0000 1.14 @@ -7,7 +7,7 @@ from buildbot import master, interfaces from buildbot.sourcestamp import SourceStamp -from buildbot.twcompat import providedBy, maybeWait +from buildbot.twcompat import providedBy from buildbot.slave import bot from buildbot.status.builder import SUCCESS from buildbot.process import base @@ -70,7 +70,7 @@ dl.append(defer.maybeDeferred(self.slave.stopService)) if self.master: dl.append(defer.maybeDeferred(self.master.stopService)) - return maybeWait(defer.DeferredList(dl)) + return defer.DeferredList(dl) def testRequest(self): m = self.master @@ -78,7 +78,7 @@ m.startService() d = self.connectSlave() d.addCallback(self._testRequest_1) - return maybeWait(d) + return d def _testRequest_1(self, res): c = interfaces.IControl(self.master) req = base.BuildRequest("I was bored", SourceStamp()) Index: test_dependencies.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_dependencies.py,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- test_dependencies.py 15 Sep 2006 14:47:41 -0000 1.5 +++ test_dependencies.py 11 Dec 2006 08:23:29 -0000 1.6 @@ -5,7 +5,6 @@ from twisted.internet import reactor, defer from buildbot.test.runutils import RunMixin -from buildbot.twcompat import maybeWait from buildbot.status import base config_1 = """ @@ -68,7 +67,7 @@ self.master.startService() d = self.connectSlave(["slowpass", "fastfail", "fastpass", "b3", "b4", "b5"]) - return maybeWait(d) + return d def findScheduler(self, name): for s in self.master.allSchedulers(): @@ -96,7 +95,7 @@ d = defer.Deferred() d.addCallback(self._testRun_Fail_1) reactor.callLater(5, d.callback, None) - return maybeWait(d) + return d def _testRun_Fail_1(self, res): # 'slowpass' and 'fastfail' should have run one build each @@ -138,7 +137,7 @@ d = defer.Deferred() d.addCallback(self._testRun_Pass_1) reactor.callLater(5, d.callback, None) - return maybeWait(d) + return d def _testRun_Pass_1(self, res): # 'fastpass' and 'slowpass' should have run one build each Index: test_locks.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_locks.py,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- test_locks.py 15 Sep 2006 14:47:41 -0000 1.7 +++ test_locks.py 11 Dec 2006 08:23:29 -0000 1.8 @@ -10,7 +10,6 @@ from buildbot.sourcestamp import SourceStamp from buildbot.process.base import BuildRequest from buildbot.test.runutils import RunMixin -from buildbot.twcompat import maybeWait from buildbot import locks def claimHarder(lock, owner): @@ -47,13 +46,13 @@ lock = locks.BaseLock("name") d = claimHarder(lock, "owner1") d.addCallback(lambda lock: lock.release("owner1")) - return maybeWait(d) + return d def testCompetition(self): lock = locks.BaseLock("name") d = claimHarder(lock, "owner1") d.addCallback(self._claim1) - return maybeWait(d) + return d def _claim1(self, lock): # we should have claimed it by now self.failIf(lock.isAvailable()) @@ -85,7 +84,7 @@ dl.append(d) d = defer.DeferredList(dl) d.addCallback(self._cleanup, lock) - return maybeWait(d) + return d class Multi(unittest.TestCase): def testNow(self): @@ -108,7 +107,7 @@ d.addCallback(lambda lock: lock.release("owner3")) lock.release("owner2") lock.release("owner1") - return maybeWait(d) + return d def _cleanup(self, res, lock, count): dl = [] @@ -140,7 +139,7 @@ dl.append(d) d = defer.DeferredList(dl) d.addCallback(self._cleanup, lock, COUNT) - return maybeWait(d) + return d class Dummy: pass @@ -333,7 +332,7 @@ ["full1a", "full1b", "full1c", "full1d", "full2a", "full2b"])) - return maybeWait(d) + return d def testLock1(self): self.control.getBuilder("full1a").requestBuild(self.req1) @@ -341,7 +340,7 @@ d = defer.DeferredList([self.req1.waitUntilFinished(), self.req2.waitUntilFinished()]) d.addCallback(self._testLock1_1) - return maybeWait(d) + return d def _testLock1_1(self, res): # full1a should complete its step before full1b starts it @@ -355,7 +354,7 @@ # in which full1a and full1b wind up with distinct Lock instances. d = self.master.loadConfig(config_1a) d.addCallback(self._testLock1a_1) - return maybeWait(d) + return d def _testLock1a_1(self, res): self.control.getBuilder("full1a").requestBuild(self.req1) self.control.getBuilder("full1b").requestBuild(self.req2) @@ -378,7 +377,7 @@ d = defer.DeferredList([self.req1.waitUntilFinished(), self.req2.waitUntilFinished()]) d.addCallback(self._testLock2_1) - return maybeWait(d) + return d def _testLock2_1(self, res): # full2a should start its step before full1a finishes it. They run on @@ -394,7 +393,7 @@ d = defer.DeferredList([self.req1.waitUntilFinished(), self.req2.waitUntilFinished()]) d.addCallback(self._testLock3_1) - return maybeWait(d) + return d def _testLock3_1(self, res): # full2b should not start until after full1c finishes. The builds run @@ -414,7 +413,7 @@ self.req2.waitUntilFinished(), self.req3.waitUntilFinished()]) d.addCallback(self._testLock4_1) - return maybeWait(d) + return d def _testLock4_1(self, res): # full1a starts, then full1d starts (because they do not interfere). Index: test_p4poller.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_p4poller.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- test_p4poller.py 6 Sep 2006 00:41:55 -0000 1.3 +++ test_p4poller.py 11 Dec 2006 08:23:29 -0000 1.4 @@ -4,7 +4,6 @@ from twisted.internet import defer from twisted.trial import unittest -from buildbot.twcompat import maybeWait from buildbot.changes.changes import Change from buildbot.changes.p4poller import P4Source, get_simple_split @@ -105,7 +104,7 @@ # The first time, it just learns the change to start at. self.assert_(self.t.last_change is None) self.assert_(not self.t.working) - return maybeWait(self.t.checkp4().addCallback(self._testCheck2)) + return self.t.checkp4().addCallback(self._testCheck2) def _testCheck2(self, res): self.assertEquals(self.changes, []) @@ -161,7 +160,7 @@ self.t.parent = self d = self.t.checkp4() d.addBoth(self._testFailedChanges2) - return maybeWait(d) + return d def _testFailedChanges2(self, f): self.assert_(isinstance(f, failure.Failure)) @@ -177,7 +176,7 @@ self.t.parent = self d = self.t.checkp4() d.addCallback(self._testFailedDescribe2) - return maybeWait(d) + return d def _testFailedDescribe2(self, res): # first time finds nothing; check again. Index: test_properties.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_properties.py,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- test_properties.py 15 Sep 2006 14:47:41 -0000 1.5 +++ test_properties.py 11 Dec 2006 08:23:29 -0000 1.6 @@ -4,7 +4,6 @@ from twisted.trial import unittest -from buildbot.twcompat import maybeWait from buildbot.sourcestamp import SourceStamp from buildbot.process import base from buildbot.steps.shell import ShellCommand, WithProperties @@ -161,7 +160,7 @@ self.failUnless(os.path.exists(f)) return res d.addCallback(_check_touch) - return maybeWait(d) + return d # we test got_revision in test_vc Index: test_run.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_run.py,v retrieving revision 1.42 retrieving revision 1.43 diff -u -d -r1.42 -r1.43 --- test_run.py 24 Nov 2006 07:19:55 -0000 1.42 +++ test_run.py 11 Dec 2006 08:23:29 -0000 1.43 @@ -9,7 +9,6 @@ from buildbot.changes import changes from buildbot.status import builder from buildbot.process.base import BuildRequest -from buildbot.twcompat import maybeWait from buildbot.test.runutils import RunMixin, rmtree @@ -89,7 +88,7 @@ self.failUnless(s.timer) # halting the service will also stop the timer d = defer.maybeDeferred(m.stopService) - return maybeWait(d) + return d class Ping(RunMixin, unittest.TestCase): def testPing(self): @@ -99,7 +98,7 @@ d = self.connectSlave() d.addCallback(self._testPing_1) - return maybeWait(d) + return d def _testPing_1(self, res): d = interfaces.IControl(self.master).getBuilder("dummy").ping(1) @@ -149,7 +148,7 @@ d = self.connectSlave() d.addCallback(self._disconnectSetup_1) - return maybeWait(d) + return d def _disconnectSetup_1(self, res): self.failUnlessEqual(self.s1.getState(), ("idle", [])) @@ -203,7 +202,7 @@ d = defer.Deferred() d.addCallback(self._testIdle2_1, req) reactor.callLater(3, d.callback, None) - return maybeWait(d, 5) + return d testIdle2.timeout = 5 def _testIdle2_1(self, res, req): @@ -219,7 +218,7 @@ # d = self.submitBuild() d.addCallback(self._testBuild1_1) - return maybeWait(d) + return d def _testBuild1_1(self, bc): bs = bc.getStatus() @@ -248,7 +247,7 @@ # this next sequence is timing-dependent d = self.submitBuild() d.addCallback(self._testBuild1_1) - return maybeWait(d, 30) + return d testBuild2.timeout = 30 def _testBuild1_1(self, bc): @@ -278,7 +277,7 @@ # this next sequence is timing-dependent d = self.submitBuild() d.addCallback(self._testBuild3_1) - return maybeWait(d, 30) + return d testBuild3.timeout = 30 def _testBuild3_1(self, bc): @@ -305,7 +304,7 @@ # this next sequence is timing-dependent d = self.submitBuild() d.addCallback(self._testBuild4_1) - return maybeWait(d, 30) + return d testBuild4.timeout = 30 def _testBuild4_1(self, bc): @@ -330,7 +329,7 @@ # this next sequence is timing-dependent d = self.submitBuild() d.addCallback(self._testInterrupt_1) - return maybeWait(d, 30) + return d testInterrupt.timeout = 30 def _testInterrupt_1(self, bc): @@ -351,7 +350,7 @@ # ping should succeed d = bc.ping(1) d.addCallback(self._testDisappear_1, bc) - return maybeWait(d) + return d def _testDisappear_1(self, res, bc): self.failUnlessEqual(res, True) @@ -383,7 +382,7 @@ # now let the new slave take over self.connectSlave2() d.addCallback(self._testDuplicate_1, ss) - return maybeWait(d, 2) + return d testDuplicate.timeout = 5 def _testDuplicate_1(self, res, ss): @@ -420,7 +419,7 @@ d = self.connectSlaveFastTimeout() d.addCallback(self._setup_disconnect2_1) - return maybeWait(d) + return d def _setup_disconnect2_1(self, res): self.failUnlessEqual(self.s1.getState(), ("idle", [])) @@ -438,7 +437,7 @@ d = defer.Deferred() reactor.callLater(5, d.callback, None) d.addCallback(self._testSlaveTimeout_1) - return maybeWait(d, 20) + return d testSlaveTimeout.timeout = 20 def _testSlaveTimeout_1(self, res): @@ -478,7 +477,7 @@ d = self.connectSlave() d.addCallback(self._testChangeBuilddir_1) - return maybeWait(d) + return d def _testChangeBuilddir_1(self, res): self.bot = bot = self.slaves['bot1'].bot Index: test_scheduler.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_scheduler.py,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- test_scheduler.py 30 Sep 2006 22:36:22 -0000 1.11 +++ test_scheduler.py 11 Dec 2006 08:23:29 -0000 1.12 @@ -8,7 +8,6 @@ from twisted.spread import pb from buildbot import scheduler, sourcestamp, buildset, status -from buildbot.twcompat import maybeWait from buildbot.changes.changes import Change from buildbot.scripts import tryclient @@ -30,7 +29,7 @@ def tearDown(self): d = self.master.stopService() - return maybeWait(d) + return d def addScheduler(self, s): s.setServiceParent(self.master) @@ -40,7 +39,7 @@ d = defer.Deferred() reactor.callLater(5, d.callback, None) d.addCallback(self._testPeriodic1_1) - return maybeWait(d) + return d def _testPeriodic1_1(self, res): self.failUnless(len(self.master.sets) > 1) s1 = self.master.sets[0] @@ -115,7 +114,7 @@ d = defer.Deferred() reactor.callLater(4, d.callback, None) d.addCallback(self._testBranch_1) - return maybeWait(d) + return d def _testBranch_1(self, res): self.failUnlessEqual(len(self.master.sets), 1) s = self.master.sets[0].source @@ -149,7 +148,7 @@ d = defer.Deferred() reactor.callLater(2, d.callback, None) d.addCallback(self._testAnyBranch_1) - return maybeWait(d) + return d def _testAnyBranch_1(self, res): self.failUnlessEqual(len(self.master.sets), 3) self.master.sets.sort(lambda a,b: cmp(a.source.branch, @@ -193,7 +192,7 @@ d = defer.Deferred() reactor.callLater(2, d.callback, None) d.addCallback(self._testAnyBranch2_1) - return maybeWait(d) + return d def _testAnyBranch2_1(self, res): self.failUnlessEqual(len(self.master.sets), 2) self.master.sets.sort(lambda a,b: cmp(a.source.branch, @@ -253,7 +252,7 @@ # N.B.: if we don't have DNotify, we poll every 10 seconds, so don't # set a .timeout here shorter than that. TODO: make it possible to # set the polling interval, so we can make it shorter. - return maybeWait(d, 5) + return d def _testTryJobdir_1(self, bs): self.failUnlessEqual(bs.builderNames, ["a", "b"]) @@ -279,7 +278,7 @@ d2 = self.master.d = defer.Deferred() d = t.deliverJob() d.addCallback(self._testTryUserpass_1, t, d2) - return maybeWait(d, 5) + return d testTryUserpass.timeout = 5 def _testTryUserpass_1(self, res, t, d2): # at this point, the Try object should have a RemoteReference to the Index: test_shell.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_shell.py,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- test_shell.py 6 Sep 2006 00:41:55 -0000 1.4 +++ test_shell.py 11 Dec 2006 08:23:29 -0000 1.5 @@ -7,7 +7,6 @@ from twisted.internet import reactor, defer from twisted.python import util from buildbot.slave.commands import SlaveShellCommand -from buildbot.twcompat import maybeWait from buildbot.test.runutils import SlaveCommandTestBase class SlaveSide(SlaveCommandTestBase, unittest.TestCase): @@ -24,7 +23,7 @@ self.failUnlessEqual(logs['stdout'], "this is stdout\n") self.failUnlessEqual(logs['stderr'], "this is stderr\n") d.addCallback(_check) - return maybeWait(d) + return d # TODO: move test_slavecommand.Shell and .ShellPTY over here @@ -106,7 +105,7 @@ self._generateText("log3")) d.addCallback(_check) d.addBoth(self._maybePrintError) - return maybeWait(d) + return d def _check_and_wait(self, res=None): self._check_timeout -= 1 Index: test_slavecommand.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_slavecommand.py,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- test_slavecommand.py 6 Sep 2006 00:41:55 -0000 1.23 +++ test_slavecommand.py 11 Dec 2006 08:23:29 -0000 1.24 @@ -3,7 +3,6 @@ from twisted.trial import unittest from twisted.internet import reactor, interfaces from twisted.python import runtime, failure, util -from buildbot.twcompat import maybeWait import os, sys @@ -88,7 +87,7 @@ def _check_targetfile(res): self.failUnless(os.path.exists(targetfile)) d.addCallback(_check_targetfile) - return maybeWait(d) + return d def _checkPass(self, res, expected, rc): self.checkOutput(expected) @@ -102,7 +101,7 @@ expected = [('stdout', "this is stdout\n"), ('stderr', "this is stderr\n")] d.addCallback(self._checkPass, expected, 0) - return maybeWait(d) + return d def testShellRC(self): cmd = [sys.executable, self.emitcmd, "1"] @@ -112,7 +111,7 @@ expected = [('stdout', "this is stdout\n"), ('stderr', "this is stderr\n")] d.addCallback(self._checkPass, expected, 1) - return maybeWait(d) + return d def testShellEnv(self): cmd = "%s %s 0" % (sys.executable, self.emitcmd) @@ -125,7 +124,7 @@ ('stdout', "EMIT_TEST: envtest\n"), ] d.addCallback(self._checkPass, expected, 0) - return maybeWait(d) + return d def testShellSubdir(self): targetfile = os.path.join(self.basedir, "subdir", "log1.out") @@ -141,7 +140,7 @@ def _check_targetfile(res): self.failUnless(os.path.exists(targetfile)) d.addCallback(_check_targetfile) - return maybeWait(d) + return d def testShellMissingCommand(self): args = {'command': "/bin/EndWorldHungerAndMakePigsFly", @@ -151,7 +150,7 @@ c = SlaveShellCommand(self.builder, None, args) d = c.start() d.addCallback(self._testShellMissingCommand_1) - return maybeWait(d) + return d def _testShellMissingCommand_1(self, res): self.failIfEqual(self.getrc(), 0) # we used to check the error message to make sure it said something @@ -165,7 +164,7 @@ c = SlaveShellCommand(self.builder, None, args) d = c.start() d.addCallback(self._testTimeout_1) - return maybeWait(d) + return d def _testTimeout_1(self, res): self.failIfEqual(self.getrc(), 0) got = self.getfile('header') @@ -186,7 +185,7 @@ d = c.start() reactor.callLater(1, c.interrupt) d.addCallback(self._testInterrupt1_1) - return maybeWait(d) + return d def _testInterrupt1_1(self, res): self.failIfEqual(self.getrc(), 0) got = self.getfile('header') @@ -216,7 +215,7 @@ c.command.KILL = None reactor.callLater(1, c.interrupt) d.addBoth(self._testInterrupt2_1) - return maybeWait(d) + return d def _testInterrupt2_1(self, res): # the slave should raise a TimeoutError exception. In a normal build # process (i.e. one that uses step.RemoteShellCommand), this Index: test_slaves.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_slaves.py,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- test_slaves.py 24 Nov 2006 07:16:35 -0000 1.5 +++ test_slaves.py 11 Dec 2006 08:23:29 -0000 1.6 @@ -1,7 +1,6 @@ # -*- test-case-name: buildbot.test.test_slaves -*- from twisted.trial import unittest -from buildbot.twcompat import maybeWait from twisted.internet import defer, reactor from twisted.python import log @@ -49,7 +48,7 @@ self.master.startService() d = self.connectSlave(["b1"]) d.addCallback(lambda res: self.connectSlave(["b1"], "bot2")) - return maybeWait(d) + return d def doBuild(self, buildername): br = BuildRequest("forced", SourceStamp()) @@ -72,7 +71,7 @@ d = self.doBuild("b1") d.addCallback(self._testSequence_1) - return maybeWait(d) + return d def _testSequence_1(self, res): self.failUnlessEqual(res.getResults(), SUCCESS) self.failUnlessEqual(res.getSlavename(), "bot1") @@ -89,7 +88,7 @@ d1 = self.doBuild("b1") d2 = self.doBuild("b1") d1.addCallback(self._testSimultaneous_1, d2) - return maybeWait(d1) + return d1 def _testSimultaneous_1(self, res, d2): self.failUnlessEqual(res.getResults(), SUCCESS) self.failUnlessEqual(res.getSlavename(), "bot1") @@ -104,7 +103,7 @@ # slave instead d = self.shutdownSlave("bot1", "b1") d.addCallback(self._testFallback1_1) - return maybeWait(d) + return d def _testFallback1_1(self, res): attached_slaves = [c for c in self.master.botmaster.slaves.values() if c.slave] @@ -129,7 +128,7 @@ self.disappearSlave("bot1", "b1") d = self.doBuild("b1") d.addCallback(self._testFallback2_1) - return maybeWait(d) + return d def _testFallback2_1(self, res): self.failUnlessEqual(res.getResults(), SUCCESS) self.failUnlessEqual(res.getSlavename(), "bot2") @@ -159,7 +158,7 @@ d2 = defer.Deferred() d2.addCallback(self._testDontClaimPingingSlave_1, d1, s1, timers) reactor.callLater(1, d2.callback, None) - return maybeWait(d2) + return d2 def _testDontClaimPingingSlave_1(self, res, d1, s1, timers): # now the first build is running (waiting on the ping), so start the # second build. This should claim the second slave, not the first, @@ -224,7 +223,7 @@ self.master.loadConfig(config_3) self.master.startService() d = self.connectSlave(["b1"]) - return maybeWait(d) + return d def _one_started(self): log.msg("testReconfig._one_started") @@ -413,7 +412,7 @@ # build has already started. d = self.connectSlave(["b1"], opts={"failPingOnce": True}) d.addCallback(self._testFirstComeFirstServed_1, d1, d2) - return maybeWait(d) + return d def _testFirstComeFirstServed_1(self, res, d1, d2): # the master has send the slaveping. When this is received, it will # fail, causing the master to hang up on the slave. When it Index: test_status.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_status.py,v retrieving revision 1.35 retrieving revision 1.36 diff -u -d -r1.35 -r1.36 --- test_status.py 15 Sep 2006 14:48:53 -0000 1.35 +++ test_status.py 11 Dec 2006 08:23:29 -0000 1.36 @@ -8,7 +8,7 @@ from buildbot import interfaces from buildbot.sourcestamp import SourceStamp from buildbot.process.base import BuildRequest -from buildbot.twcompat import implements, providedBy, maybeWait +from buildbot.twcompat import implements, providedBy from buildbot.status import builder, base mail = None @@ -360,7 +360,7 @@ # otherwise a malicious SMTP server could make us consume lots of # memory. d.addCallback(self.stall, 0.1) - return maybeWait(d) + return d if not mail: Mail.skip = "the Twisted Mail package is not installed" @@ -629,7 +629,8 @@ s = MyLogConsumer() d = l1.subscribeConsumer(s) d.addCallback(self._testConsumer_1, s) - return maybeWait(d, 5) + return d + testConsumer.timeout = 5 def _testConsumer_1(self, res, s): self.failIf(s.chunks) self.failUnless(s.finished) @@ -721,7 +722,7 @@ # NetstringReceiver.dataReceived where it does # self.transport.loseConnection() because of the NetstringParseError, # however self.transport is None - return maybeWait(d, 5) + return d testLargeSummary.timeout = 5 config_base = """ @@ -859,7 +860,7 @@ d = self.connectSlave(builders=["dummy", "testdummy"]) d.addCallback(self._testSlave_1, t1) - return maybeWait(d) + return d def _testSlave_1(self, res, t1): self.failUnlessEqual(len(t1.events), 2) Index: test_steps.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_steps.py,v retrieving revision 1.34 retrieving revision 1.35 diff -u -d -r1.34 -r1.35 --- test_steps.py 24 Nov 2006 07:19:40 -0000 1.34 +++ test_steps.py 11 Dec 2006 08:23:29 -0000 1.35 @@ -26,7 +26,6 @@ from buildbot.status.builder import SUCCESS, FAILURE from buildbot.test.runutils import RunMixin, rmtree from buildbot.test.runutils import makeBuildStep, StepTester -from buildbot.twcompat import maybeWait from buildbot.slave import commands, registry @@ -307,7 +306,7 @@ self.master.loadConfig(version_config) self.master.startService() d = self.connectSlave(["quick"]) - return maybeWait(d) + return d def doBuild(self, buildername): br = base.BuildRequest("forced", SourceStamp()) @@ -338,7 +337,7 @@ def testCompare(self): self.master._checker = self.checkCompare d = self.doBuild("quick") - return maybeWait(d) + return d class ReorgCompatibility(unittest.TestCase): @@ -398,7 +397,7 @@ self.failUnless(sb.flag) self.failUnlessEqual(sb.flag_args, {"arg1": "value"}) d.addCallback(_checkSimple) - return maybeWait(d) + return d class Python(StepTester, unittest.TestCase): def testPyFlakes1(self): Index: test_transfer.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_transfer.py,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- test_transfer.py 9 Dec 2006 09:16:36 -0000 1.4 +++ test_transfer.py 11 Dec 2006 08:23:29 -0000 1.5 @@ -3,7 +3,6 @@ import os from stat import ST_MODE from twisted.trial import unittest -from buildbot.twcompat import maybeWait from buildbot.steps.transfer import FileUpload, FileDownload from buildbot.test.runutils import StepTester from buildbot.status.builder import SUCCESS, FAILURE @@ -56,7 +55,7 @@ masterdest_contents = open(masterdest, "r").read() self.failUnlessEqual(masterdest_contents, contents) d.addCallback(_checkUpload) - return maybeWait(d) + return d def testMaxsize(self): self.slavebase = "Upload.testMaxsize.slave" @@ -92,7 +91,7 @@ self.failUnlessEqual(len(masterdest_contents), 12345) self.failUnlessEqual(masterdest_contents, contents[:12345]) d.addCallback(_checkUpload) - return maybeWait(d) + return d def testMode(self): self.slavebase = "Upload.testMode.slave" @@ -132,7 +131,7 @@ "target mode was %o, we wanted %o" % (dest_mode, 0755)) d.addCallback(_checkUpload) - return maybeWait(d) + return d def testMissingFile(self): self.slavebase = "Upload.testMissingFile.slave" @@ -153,7 +152,7 @@ self.failUnless(logtext.startswith("Cannot open file")) self.failUnless(logtext.endswith("for upload")) d.addCallback(_checkUpload) - return maybeWait(d) + return d @@ -192,7 +191,7 @@ slavedest_contents = open(slavedest, "r").read() self.failUnlessEqual(slavedest_contents, contents) d.addCallback(_checkDownload) - return maybeWait(d) + return d def testMaxsize(self): self.slavebase = "Download.testMaxsize.slave" @@ -225,7 +224,7 @@ self.failUnlessEqual(len(slavedest_contents), 12345) self.failUnlessEqual(slavedest_contents, contents[:12345]) d.addCallback(_checkDownload) - return maybeWait(d) + return d def testMode(self): self.slavebase = "Download.testMode.slave" @@ -261,7 +260,7 @@ "target mode was %o, we wanted %o" % (dest_mode, 0755)) d.addCallback(_checkDownload) - return maybeWait(d) + return d def testMissingFile(self): self.slavebase = "Download.testMissingFile.slave" @@ -288,7 +287,7 @@ self.failUnless(logtext.endswith(" not available at master")) d.addCallbacks(_checkDownload) - return maybeWait(d) + return d # TODO: Index: test_vc.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_vc.py,v retrieving revision 1.69 retrieving revision 1.70 diff -u -d -r1.69 -r1.70 --- test_vc.py 18 Sep 2006 02:14:45 -0000 1.69 +++ test_vc.py 11 Dec 2006 08:23:29 -0000 1.70 @@ -22,7 +22,7 @@ from buildbot.steps import source from buildbot.changes import changes from buildbot.sourcestamp import SourceStamp -from buildbot.twcompat import maybeWait, which +from buildbot.twcompat import which from buildbot.scripts import tryclient from buildbot.test.runutils import SignalMixin @@ -423,7 +423,7 @@ def setUp(self): d = VCS.skipIfNotCapable(self.vc_name) d.addCallback(self._setUp1) - return maybeWait(d) + return d def _setUp1(self, res): self.helper = VCS.getHelper(self.vc_name) @@ -1073,7 +1073,7 @@ http._logDateTimeStop() # shut down the internal timer. DUMB! d.addCallback(lambda res: stopHTTPTimer()) d.addCallback(lambda res: self.tearDown2()) - return maybeWait(d) + return d def tearDown2(self): pass @@ -1209,19 +1209,19 @@ def testCheckout(self): d = self.do_vctest() - return maybeWait(d) + return d def testPatch(self): d = self.do_patch() - return maybeWait(d) + return d def testCheckoutBranch(self): d = self.do_branch() - return maybeWait(d) + return d def testTry(self): d = self.do_getpatch(doBranch=False) - return maybeWait(d) + return d VCS.registerVC(CVS.vc_name, CVSHelper()) @@ -1352,21 +1352,21 @@ # baseURL/defaultBranch style in testPatch and testCheckoutBranch. self.helper.vcargs = { 'svnurl': self.helper.svnurl_trunk } d = self.do_vctest() - return maybeWait(d) + return d def testPatch(self): self.helper.vcargs = { 'baseURL': self.helper.svnurl + "/", 'defaultBranch': "sample/trunk", } d = self.do_patch() - return maybeWait(d) + return d def testCheckoutBranch(self): self.helper.vcargs = { 'baseURL': self.helper.svnurl + "/", 'defaultBranch': "sample/trunk", } d = self.do_branch() - return maybeWait(d) + return d def testTry(self): # extract the base revision and patch from a modified tree, use it to @@ -1375,7 +1375,7 @@ 'defaultBranch': "sample/trunk", } d = self.do_getpatch() - return maybeWait(d) + return d VCS.registerVC(SVN.vc_name, SVNHelper()) @@ -1516,7 +1516,7 @@ def tearDownClass(self): if self.helper: - return maybeWait(self.helper.shutdown_p4d()) + return self.helper.shutdown_p4d() def testCheckout(self): self.helper.vcargs = { 'p4port': self.helper.p4port, @@ -1525,21 +1525,21 @@ d = self.do_vctest(testRetry=False) # TODO: like arch and darcs, sync does nothing when server is not # changed. - return maybeWait(d) + return d def testCheckoutBranch(self): self.helper.vcargs = { 'p4port': self.helper.p4port, 'p4base': '//depot/', 'defaultBranch': 'trunk' } d = self.do_branch() - return maybeWait(d) + return d def testPatch(self): self.helper.vcargs = { 'p4port': self.helper.p4port, 'p4base': '//depot/', 'defaultBranch': 'trunk' } d = self.do_patch() - return maybeWait(d) + return d VCS.registerVC(P4.vc_name, P4Helper()) @@ -1650,32 +1650,32 @@ # TODO: testRetry has the same problem with Darcs as it does for # Arch - return maybeWait(d) + return d def testPatch(self): self.helper.vcargs = { 'baseURL': self.helper.darcs_base + "/", 'defaultBranch': "trunk" } d = self.do_patch() - return maybeWait(d) + return d def testCheckoutBranch(self): self.helper.vcargs = { 'baseURL': self.helper.darcs_base + "/", 'defaultBranch': "trunk" } d = self.do_branch() - return maybeWait(d) + return d def testCheckoutHTTP(self): self.serveHTTP() repourl = "http://localhost:%d/Darcs-Repository/trunk" % self.httpPort self.helper.vcargs = { 'repourl': repourl } d = self.do_vctest(testRetry=False) - return maybeWait(d) + return d def testTry(self): self.helper.vcargs = { 'baseURL': self.helper.darcs_base + "/", 'defaultBranch': "trunk" } d = self.do_getpatch() - return maybeWait(d) + return d VCS.registerVC(Darcs.vc_name, DarcsHelper()) @@ -1944,7 +1944,7 @@ # some better test logic, probably involving a copy of the # repository that has a few changes checked in. - return maybeWait(d) + return d def testCheckoutHTTP(self): self.serveHTTP() @@ -1952,25 +1952,25 @@ self.helper.vcargs = { 'url': url, 'version': "testvc--mainline--1" } d = self.do_vctest(testRetry=False) - return maybeWait(d) + return d def testPatch(self): self.helper.vcargs = {'url': self.helper.archrep, 'version': self.helper.defaultbranch } d = self.do_patch() - return maybeWait(d) + return d def testCheckoutBranch(self): self.helper.vcargs = {'url': self.helper.archrep, 'version': self.helper.defaultbranch } d = self.do_branch() - return maybeWait(d) + return d def testTry(self): self.helper.vcargs = {'url': self.helper.archrep, 'version': self.helper.defaultbranch } d = self.do_getpatch() - return maybeWait(d) + return d VCS.registerVC(Arch.vc_name, TlaHelper()) @@ -2017,7 +2017,7 @@ # some better test logic, probably involving a copy of the # repository that has a few changes checked in. - return maybeWait(d) + return d def testCheckoutHTTP(self): self.serveHTTP() @@ -2027,7 +2027,7 @@ 'version': self.helper.defaultbranch, } d = self.do_vctest(testRetry=False) - return maybeWait(d) + return d def testPatch(self): self.helper.vcargs = {'url': self.helper.archrep, @@ -2036,7 +2036,7 @@ 'version': self.helper.defaultbranch, } d = self.do_patch() - return maybeWait(d) + return d def testCheckoutBranch(self): self.helper.vcargs = {'url': self.helper.archrep, @@ -2045,7 +2045,7 @@ 'version': self.helper.defaultbranch, } d = self.do_branch() - return maybeWait(d) + return d def testTry(self): self.helper.vcargs = {'url': self.helper.archrep, @@ -2054,7 +2054,7 @@ 'version': self.helper.defaultbranch, } d = self.do_getpatch() - return maybeWait(d) + return d def fixRepository(self): self.fixtimer = None @@ -2088,7 +2088,7 @@ } d = self.do_vctest_once(True) d.addCallback(self._testRetry_1) - return maybeWait(d) + return d def _testRetry_1(self, bs): # make sure there was mention of the retry attempt in the logs l = bs.getLogs()[0] @@ -2117,7 +2117,7 @@ } d = self.do_vctest_once(False) d.addCallback(self._testRetryFails_1) - return maybeWait(d) + return d def _testRetryFails_1(self, bs): self.failUnlessEqual(bs.getResults(), FAILURE) @@ -2246,26 +2246,26 @@ # TODO: testRetry has the same problem with Mercurial as it does for # Arch - return maybeWait(d) + return d def testPatch(self): self.helper.vcargs = { 'baseURL': self.helper.hg_base + "/", 'defaultBranch': "trunk" } d = self.do_patch() - return maybeWait(d) + return d def testCheckoutBranch(self): self.helper.vcargs = { 'baseURL': self.helper.hg_base + "/", 'defaultBranch': "trunk" } d = self.do_branch() - return maybeWait(d) + return d def testCheckoutHTTP(self): self.serveHTTP() repourl = "http://localhost:%d/Mercurial-Repository/trunk/.hg" % self.httpPort self.helper.vcargs = { 'repourl': repourl } d = self.do_vctest(testRetry=False) - return maybeWait(d) + return d # TODO: The easiest way to publish hg over HTTP is by running 'hg serve' # as a child process while the test is running. (you can also use a CGI # script, which sounds difficult, or you can publish the files directly, @@ -2276,7 +2276,7 @@ self.helper.vcargs = { 'baseURL': self.helper.hg_base + "/", 'defaultBranch': "trunk" } d = self.do_getpatch() - return maybeWait(d) + return d VCS.registerVC(Mercurial.vc_name, MercurialHelper()) @@ -2382,7 +2382,7 @@ sendRC=False, initialStdin=p0_diff) d = c.start() d.addCallback(self._testPatch_1) - return maybeWait(d) + return d def _testPatch_1(self, res): # make sure the file actually got patched Index: test_web.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_web.py,v retrieving revision 1.37 retrieving revision 1.38 diff -u -d -r1.37 -r1.38 --- test_web.py 17 Sep 2006 20:35:49 -0000 1.37 +++ test_web.py 11 Dec 2006 08:23:29 -0000 1.38 @@ -11,7 +11,7 @@ from twisted.web import client from buildbot import master, interfaces, sourcestamp -from buildbot.twcompat import providedBy, maybeWait +from buildbot.twcompat import providedBy from buildbot.status import html, builder from buildbot.changes.changes import Change from buildbot.process import base @@ -119,7 +119,7 @@ stopHTTPLog() if self.master: d = self.master.stopService() - return maybeWait(d) + return d def find_waterfall(self, master): return filter(lambda child: isinstance(child, html.Waterfall), @@ -138,7 +138,7 @@ d = client.getPage("http://localhost:%d/" % port) d.addCallback(self._test_webPortnum_1) - return maybeWait(d) + return d test_webPortnum.timeout = 10 def _test_webPortnum_1(self, page): #print page @@ -158,7 +158,7 @@ d = client.getPage("http://localhost:%d/remote/" % p.portnum) d.addCallback(self._test_webPathname_1, p) - return maybeWait(d) + return d test_webPathname.timeout = 10 def _test_webPathname_1(self, page, p): #print page @@ -179,7 +179,7 @@ d = client.getPage("http://localhost:%d/remote/" % p.portnum) d.addCallback(self._test_webPathname_port_1, p) - return maybeWait(d) + return d test_webPathname_port.timeout = 10 def _test_webPathname_port_1(self, page, p): self.failUnlessIn("BuildBot", page) @@ -213,7 +213,7 @@ d = client.getPage("http://localhost:%d/" % port) d.addCallback(self._test_waterfall_1) - return maybeWait(d) + return d test_waterfall.timeout = 10 def _test_waterfall_1(self, page): self.failUnless(page) @@ -316,7 +316,7 @@ self.master.loadConfig(geturl_config) self.master.startService() d = self.connectSlave(["b1"]) - return maybeWait(d) + return d def tearDown(self): stopHTTPLog() @@ -340,7 +340,7 @@ noweb_config1 = geturl_config + "del c['buildbotURL']\n" d = self.master.loadConfig(noweb_config1) d.addCallback(self._testMissingBase_1) - return maybeWait(d) + return d def _testMissingBase_1(self, res): s = self.status self.assertNoURL(s) @@ -367,7 +367,7 @@ d = self.doBuild("b1") # maybe check IBuildSetStatus here? d.addCallback(self._testBuild_1) - return maybeWait(d) + return d def _testBuild_1(self, res): s = self.status @@ -447,7 +447,7 @@ def test_logfile1(self): d = client.getPage("http://localhost:%d/" % self.port) d.addCallback(self._test_logfile1_1) - return maybeWait(d) + return d test_logfile1.timeout = 20 def _test_logfile1_1(self, page): self.failUnless(page) @@ -456,7 +456,7 @@ logurl = self.getLogURL("setup", 0) d = client.getPage(logurl) d.addCallback(self._test_logfile2_1) - return maybeWait(d) + return d def _test_logfile2_1(self, logbody): self.failUnless(logbody) @@ -464,7 +464,7 @@ logurl = self.getLogURL("setup", 0) d = client.getPage(logurl + "/text") d.addCallback(self._test_logfile3_1) - return maybeWait(d) + return d def _test_logfile3_1(self, logtext): self.failUnlessEqual(logtext, "some stdout\n") @@ -472,7 +472,7 @@ logurl = self.getLogURL("setup", 1) d = client.getPage(logurl) d.addCallback(self._test_logfile4_1) - return maybeWait(d) + return d def _test_logfile4_1(self, logbody): self.failUnlessEqual(logbody, "ouch") @@ -487,7 +487,7 @@ c = reactor.connectTCP("localhost", self.port, f) d = p.d d.addCallback(self._test_logfile5_1, p) - return maybeWait(d, 10) + return d test_logfile5.timeout = 10 def _test_logfile5_1(self, res, p): self.failUnlessIn("big log", p.data) @@ -504,7 +504,7 @@ c = reactor.connectTCP("localhost", self.port, f) d = p.d d.addCallback(self._test_logfile6_1, p) - return maybeWait(d, 10) + return d test_logfile6.timeout = 10 def _test_logfile6_1(self, res, p): self.failUnlessIn("big2 log", p.data) From warner at users.sourceforge.net Mon Dec 11 08:40:19 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:40:19 +0000 Subject: [Buildbot-commits] buildbot/buildbot/changes changes.py,1.28,1.29 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/changes In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv8921/buildbot/changes Modified Files: changes.py Log Message: [project @ more post-Twisted-1.3.0 cleanup: remove twcompat.providedBy, use zope.interface native methods instead] Original author: warner at lothar.com Date: 2006-12-11 08:34:42 Index: changes.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/changes/changes.py,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- changes.py 6 Sep 2006 00:41:54 -0000 1.28 +++ changes.py 11 Dec 2006 08:40:17 -0000 1.29 @@ -14,7 +14,7 @@ from twisted.web import html from buildbot import interfaces, util -from buildbot.twcompat import implements, providedBy +from buildbot.twcompat import implements html_tmpl = """

Changed by: %(who)s
@@ -180,8 +180,8 @@ self.nextNumber = 1 def addSource(self, source): - assert providedBy(source, interfaces.IChangeSource) - assert providedBy(source, service.IService) + assert interfaces.IChangeSource.providedBy(source) + assert service.IService.providedBy(source) if self.debug: print "ChangeMaster.addSource", source source.setServiceParent(self) From warner at users.sourceforge.net Mon Dec 11 08:40:19 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:40:19 +0000 Subject: [Buildbot-commits] buildbot/buildbot/process buildstep.py,1.2,1.3 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/process In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv8921/buildbot/process Modified Files: buildstep.py Log Message: [project @ more post-Twisted-1.3.0 cleanup: remove twcompat.providedBy, use zope.interface native methods instead] Original author: warner at lothar.com Date: 2006-12-11 08:34:42 Index: buildstep.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/process/buildstep.py,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- buildstep.py 17 Sep 2006 20:39:43 -0000 1.2 +++ buildstep.py 11 Dec 2006 08:40:17 -0000 1.3 @@ -8,7 +8,7 @@ from twisted.web.util import formatFailure from buildbot import interfaces -from buildbot.twcompat import implements, providedBy +from buildbot.twcompat import implements from buildbot import util from buildbot.status import progress from buildbot.status.builder import SUCCESS, WARNINGS, FAILURE, SKIPPED, \ @@ -285,7 +285,7 @@ """ - assert providedBy(loog, interfaces.ILogFile) + assert interfaces.ILogFile.providedBy(loog) if not logfileName: logfileName = loog.getName() assert logfileName not in self.logs @@ -366,7 +366,7 @@ self.step = step def setLog(self, loog): - assert providedBy(loog, interfaces.IStatusLog) + assert interfaces.IStatusLog.providedBy(loog) loog.subscribe(self, True) def logChunk(self, build, step, log, channel, text): @@ -844,7 +844,7 @@ self._connectPendingLogObservers() def addLogObserver(self, logname, observer): - assert providedBy(observer, interfaces.ILogObserver) + assert interfaces.ILogObserver.providedBy(observer) observer.setStep(self) self._pendingLogObservers.append((logname, observer)) self._connectPendingLogObservers() From warner at users.sourceforge.net Mon Dec 11 08:40:19 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:40:19 +0000 Subject: [Buildbot-commits] buildbot/buildbot master.py, 1.101, 1.102 scheduler.py, 1.22, 1.23 twcompat.py, 1.9, 1.10 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv8921/buildbot Modified Files: master.py scheduler.py twcompat.py Log Message: [project @ more post-Twisted-1.3.0 cleanup: remove twcompat.providedBy, use zope.interface native methods instead] Original author: warner at lothar.com Date: 2006-12-11 08:34:42 Index: master.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/master.py,v retrieving revision 1.101 retrieving revision 1.102 diff -u -d -r1.101 -r1.102 --- master.py 24 Nov 2006 08:23:27 -0000 1.101 +++ master.py 11 Dec 2006 08:40:17 -0000 1.102 @@ -874,11 +874,8 @@ return d def allSchedulers(self): - # TODO: when twisted-1.3 compatibility is dropped, switch to the - # providedBy form, because it's faster (no actual adapter lookup) return [child for child in self - #if interfaces.IScheduler.providedBy(child)] - if interfaces.IScheduler(child, None)] + if interfaces.IScheduler.providedBy(child)] def loadConfig_Schedulers(self, newschedulers): Index: scheduler.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/scheduler.py,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- scheduler.py 26 Nov 2006 08:05:24 -0000 1.22 +++ scheduler.py 11 Dec 2006 08:40:17 -0000 1.23 @@ -11,7 +11,7 @@ from buildbot import interfaces, buildset, util, pbutil from buildbot.status import builder -from buildbot.twcompat import implements, providedBy +from buildbot.twcompat import implements from buildbot.sourcestamp import SourceStamp from buildbot.changes import maildirtwisted @@ -290,7 +290,7 @@ compare_attrs = ('name', 'upstream', 'builders') def __init__(self, name, upstream, builderNames): - assert providedBy(upstream, interfaces.IUpstreamScheduler) + assert interfaces.IUpstreamScheduler.providedBy(upstream) BaseUpstreamScheduler.__init__(self, name) self.upstream = upstream self.builderNames = builderNames Index: twcompat.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/twcompat.py,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- twcompat.py 11 Dec 2006 08:23:29 -0000 1.9 +++ twcompat.py 11 Dec 2006 08:40:17 -0000 1.10 @@ -17,10 +17,6 @@ Interface: from buildbot.tcompat import Interface class IFoo(Interface) - -providedBy: - from buildbot.tcompat import providedBy - assert providedBy(obj, IFoo) """ import os @@ -34,12 +30,9 @@ # yes from zope.interface import implements from zope.interface import Interface - def providedBy(obj, iface): - return iface.providedBy(obj) else: # nope from twisted.python.components import Interface - providedBy = components.implements # waitForDeferred and getProcessOutputAndValue are twisted-2.0 things. If # we're running under 1.3, patch them into place. These versions are copied From warner at users.sourceforge.net Mon Dec 11 08:40:19 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:40:19 +0000 Subject: [Buildbot-commits] buildbot/buildbot/test test_config.py, 1.41, 1.42 test_control.py, 1.14, 1.15 test_status.py, 1.36, 1.37 test_web.py, 1.38, 1.39 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/test In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv8921/buildbot/test Modified Files: test_config.py test_control.py test_status.py test_web.py Log Message: [project @ more post-Twisted-1.3.0 cleanup: remove twcompat.providedBy, use zope.interface native methods instead] Original author: warner at lothar.com Date: 2006-12-11 08:34:42 Index: test_config.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_config.py,v retrieving revision 1.41 retrieving revision 1.42 diff -u -d -r1.41 -r1.42 --- test_config.py 11 Dec 2006 08:23:29 -0000 1.41 +++ test_config.py 11 Dec 2006 08:40:17 -0000 1.42 @@ -14,7 +14,6 @@ except ImportError: pass -from buildbot.twcompat import providedBy from buildbot.master import BuildMaster from buildbot import scheduler from twisted.application import service, internet @@ -392,7 +391,7 @@ # twisted.application.internet.TCPServer, then extract their .args # values to find the TCP ports they want to listen on for child in s: - if providedBy(child, service.IServiceCollection): + if service.IServiceCollection.providedBy(child): for gc in self.servers(child, types): yield gc if isinstance(child, types): Index: test_control.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_control.py,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- test_control.py 11 Dec 2006 08:23:29 -0000 1.14 +++ test_control.py 11 Dec 2006 08:40:17 -0000 1.15 @@ -7,7 +7,6 @@ from buildbot import master, interfaces from buildbot.sourcestamp import SourceStamp -from buildbot.twcompat import providedBy from buildbot.slave import bot from buildbot.status.builder import SUCCESS from buildbot.process import base @@ -91,13 +90,13 @@ return d def _testRequest_2(self, build_control): - self.failUnless(providedBy(build_control, interfaces.IBuildControl)) + self.failUnless(interfaces.IBuildControl.providedBy(build_control)) d = build_control.getStatus().waitUntilFinished() d.addCallback(self._testRequest_3) return d def _testRequest_3(self, bs): - self.failUnless(providedBy(bs, interfaces.IBuildStatus)) + self.failUnless(interfaces.IBuildStatus.providedBy(bs)) self.failUnless(bs.isFinished()) self.failUnlessEqual(bs.getResults(), SUCCESS) #self.failUnlessEqual(bs.getResponsibleUsers(), ["bob"]) # TODO Index: test_status.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_status.py,v retrieving revision 1.36 retrieving revision 1.37 diff -u -d -r1.36 -r1.37 --- test_status.py 11 Dec 2006 08:23:29 -0000 1.36 +++ test_status.py 11 Dec 2006 08:40:17 -0000 1.37 @@ -8,7 +8,7 @@ from buildbot import interfaces from buildbot.sourcestamp import SourceStamp from buildbot.process.base import BuildRequest -from buildbot.twcompat import implements, providedBy +from buildbot.twcompat import implements from buildbot.status import builder, base mail = None @@ -394,7 +394,7 @@ res = b.getTestResults() self.failUnlessEqual(res.keys(), [testname]) t = res[testname] - self.failUnless(providedBy(t, interfaces.ITestResult)) + self.failUnless(interfaces.ITestResult.providedBy(t)) self.failUnlessEqual(t.getName(), testname) self.failUnlessEqual(t.getResults(), builder.SUCCESS) self.failUnlessEqual(t.getText(), ["passed"]) Index: test_web.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_web.py,v retrieving revision 1.38 retrieving revision 1.39 diff -u -d -r1.38 -r1.39 --- test_web.py 11 Dec 2006 08:23:29 -0000 1.38 +++ test_web.py 11 Dec 2006 08:40:17 -0000 1.39 @@ -11,7 +11,6 @@ from twisted.web import client from buildbot import master, interfaces, sourcestamp -from buildbot.twcompat import providedBy from buildbot.status import html, builder from buildbot.changes.changes import Change from buildbot.process import base @@ -146,7 +145,7 @@ def test_webPathname(self): # running a t.web.distrib server over a UNIX socket - if not providedBy(reactor, IReactorUNIX): + if not IReactorUNIX.providedBy(reactor): raise unittest.SkipTest("UNIX sockets not supported here") config = (base_config + "c['status'] = [html.Waterfall(distrib_port='.web-pb')]\n") From warner at users.sourceforge.net Mon Dec 11 08:40:19 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:40:19 +0000 Subject: [Buildbot-commits] buildbot/buildbot/status builder.py, 1.91, 1.92 mail.py, 1.28, 1.29 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/status In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv8921/buildbot/status Modified Files: builder.py mail.py Log Message: [project @ more post-Twisted-1.3.0 cleanup: remove twcompat.providedBy, use zope.interface native methods instead] Original author: warner at lothar.com Date: 2006-12-11 08:34:42 Index: builder.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/builder.py,v retrieving revision 1.91 retrieving revision 1.92 diff -u -d -r1.91 -r1.92 --- builder.py 11 Dec 2006 04:43:22 -0000 1.91 +++ builder.py 11 Dec 2006 08:40:17 -0000 1.92 @@ -20,7 +20,7 @@ # sibling imports from buildbot import interfaces, util, sourcestamp -from buildbot.twcompat import implements, providedBy +from buildbot.twcompat import implements SUCCESS, WARNINGS, FAILURE, SKIPPED, EXCEPTION = range(5) Results = ["success", "warnings", "failure", "skipped", "exception"] @@ -1791,21 +1791,21 @@ prefix = self.getBuildbotURL() if not prefix: return None - if providedBy(thing, interfaces.IStatus): + if interfaces.IStatus.providedBy(thing): return prefix - if providedBy(thing, interfaces.ISchedulerStatus): + if interfaces.ISchedulerStatus.providedBy(thing): pass - if providedBy(thing, interfaces.IBuilderStatus): + if interfaces.IBuilderStatus.providedBy(thing): builder = thing return prefix + urllib.quote(builder.getName(), safe='') - if providedBy(thing, interfaces.IBuildStatus): + if interfaces.IBuildStatus.providedBy(thing): build = thing builder = build.getBuilder() return "%s%s/builds/%d" % ( prefix, urllib.quote(builder.getName(), safe=''), build.getNumber()) - if providedBy(thing, interfaces.IBuildStepStatus): + if interfaces.IBuildStepStatus.providedBy(thing): step = thing build = step.getBuild() builder = build.getBuilder() @@ -1819,14 +1819,14 @@ # ISlaveStatus # IStatusEvent - if providedBy(thing, interfaces.IStatusEvent): + if interfaces.IStatusEvent.providedBy(thing): from buildbot.changes import changes # TODO: this is goofy, create IChange or something if isinstance(thing, changes.Change): change = thing return "%schanges/%d" % (prefix, change.number) - if providedBy(thing, interfaces.IStatusLog): + if interfaces.IStatusLog.providedBy(thing): log = thing step = log.getStep() build = step.getBuild() Index: mail.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/mail.py,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- mail.py 25 Sep 2006 02:43:56 -0000 1.28 +++ mail.py 11 Dec 2006 08:40:17 -0000 1.29 @@ -20,7 +20,7 @@ from twisted.python import log from buildbot import interfaces, util -from buildbot.twcompat import implements, providedBy +from buildbot.twcompat import implements from buildbot.status import base from buildbot.status.builder import FAILURE, SUCCESS, WARNINGS @@ -155,7 +155,7 @@ if lookup is not None: if type(lookup) is str: lookup = Domain(lookup) - assert providedBy(lookup, interfaces.IEmailLookup) + assert interfaces.IEmailLookup.providedBy(lookup) self.lookup = lookup self.watched = [] self.status = None From warner at users.sourceforge.net Mon Dec 11 08:40:19 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:40:19 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.807,1.808 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv8921 Modified Files: ChangeLog Log Message: [project @ more post-Twisted-1.3.0 cleanup: remove twcompat.providedBy, use zope.interface native methods instead] Original author: warner at lothar.com Date: 2006-12-11 08:34:42 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.807 retrieving revision 1.808 diff -u -d -r1.807 -r1.808 --- ChangeLog 11 Dec 2006 08:23:28 -0000 1.807 +++ ChangeLog 11 Dec 2006 08:40:17 -0000 1.808 @@ -1,5 +1,9 @@ 2006-12-11 Brian Warner + * buildbot/twcompat.py (providedBy): remove this method + * buildbot/*: turn all uses of providedBy(obj, iface) into + iface.providedBy(obj) + * buildbot/twcompat.py (maybeWait): remove this method, now that we no longer maintain compatibility with Twisted<=1.3.0 . Twisted-2.0.0 and later allow trial methods to return Deferreds From warner at users.sourceforge.net Mon Dec 11 08:46:41 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:46:41 +0000 Subject: [Buildbot-commits] buildbot/buildbot/status client.py, 1.27, 1.28 html.py, 1.92, 1.93 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/status In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv11319/buildbot/status Modified Files: client.py html.py Log Message: [project @ get Interface from zope.interface directly, not from twcompat] Original author: warner at lothar.com Date: 2006-12-11 08:37:50 Index: client.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/client.py,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- client.py 6 Sep 2006 00:41:55 -0000 1.27 +++ client.py 11 Dec 2006 08:46:39 -0000 1.28 @@ -7,7 +7,8 @@ from twisted.cred import portal, checkers from buildbot import interfaces -from buildbot.twcompat import Interface, implements +from zope.interface import Interface +from buildbot.twcompat import implements from buildbot.status import builder, base from buildbot.changes import changes Index: html.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/html.py,v retrieving revision 1.92 retrieving revision 1.93 diff -u -d -r1.92 -r1.93 --- html.py 2 Oct 2006 00:13:32 -0000 1.92 +++ html.py 11 Dec 2006 08:46:39 -0000 1.93 @@ -12,8 +12,8 @@ from twisted.web.util import Redirect, DeferredResource from twisted.application import strports from twisted.spread import pb - -from buildbot.twcompat import implements, Interface +from zope.interface import Interface +from buildbot.twcompat import implements import sys, string, types, time, os.path From warner at users.sourceforge.net Mon Dec 11 08:46:41 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:46:41 +0000 Subject: [Buildbot-commits] buildbot/buildbot interfaces.py, 1.49, 1.50 twcompat.py, 1.10, 1.11 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv11319/buildbot Modified Files: interfaces.py twcompat.py Log Message: [project @ get Interface from zope.interface directly, not from twcompat] Original author: warner at lothar.com Date: 2006-12-11 08:37:50 Index: interfaces.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/interfaces.py,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- interfaces.py 24 Nov 2006 07:19:55 -0000 1.49 +++ interfaces.py 11 Dec 2006 08:46:39 -0000 1.50 @@ -5,7 +5,7 @@ Define the interfaces that are implemented by various buildbot classes. """ -from buildbot.twcompat import Interface +from zope.interface import Interface # exceptions that can be raised while trying to start a build class NoSlaveError(Exception): Index: twcompat.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/twcompat.py,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- twcompat.py 11 Dec 2006 08:40:17 -0000 1.10 +++ twcompat.py 11 Dec 2006 08:46:39 -0000 1.11 @@ -29,10 +29,9 @@ if hasattr(components, "interface"): # yes from zope.interface import implements - from zope.interface import Interface else: # nope - from twisted.python.components import Interface + pass # waitForDeferred and getProcessOutputAndValue are twisted-2.0 things. If # we're running under 1.3, patch them into place. These versions are copied From warner at users.sourceforge.net Mon Dec 11 08:46:41 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:46:41 +0000 Subject: [Buildbot-commits] buildbot/buildbot/slave interfaces.py,1.2,1.3 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/slave In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv11319/buildbot/slave Modified Files: interfaces.py Log Message: [project @ get Interface from zope.interface directly, not from twcompat] Original author: warner at lothar.com Date: 2006-12-11 08:37:50 Index: interfaces.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/slave/interfaces.py,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- interfaces.py 15 Jul 2006 08:50:35 -0000 1.2 +++ interfaces.py 11 Dec 2006 08:46:39 -0000 1.3 @@ -1,6 +1,6 @@ #! /usr/bin/python -from buildbot.twcompat import Interface +from zope.interface import Interface class ISlaveCommand(Interface): """This interface is implemented by all of the buildslave's Command From warner at users.sourceforge.net Mon Dec 11 08:46:41 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:46:41 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.808,1.809 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv11319 Modified Files: ChangeLog Log Message: [project @ get Interface from zope.interface directly, not from twcompat] Original author: warner at lothar.com Date: 2006-12-11 08:37:50 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.808 retrieving revision 1.809 diff -u -d -r1.808 -r1.809 --- ChangeLog 11 Dec 2006 08:40:17 -0000 1.808 +++ ChangeLog 11 Dec 2006 08:46:39 -0000 1.809 @@ -1,5 +1,8 @@ 2006-12-11 Brian Warner + * buildbot/twcompat.py (Interface): remove this import + * buildbot/*: import Interface from zope.interface directly + * buildbot/twcompat.py (providedBy): remove this method * buildbot/*: turn all uses of providedBy(obj, iface) into iface.providedBy(obj) From warner at users.sourceforge.net Mon Dec 11 08:49:42 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:49:42 +0000 Subject: [Buildbot-commits] buildbot/buildbot/status mail.py,1.29,1.30 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/status In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv12492/buildbot/status Modified Files: mail.py Log Message: [project @ status.mail doesn't need to fall back to twisted.protocols.smtp.sendmail in a Twisted>=2.0.0 world] Original author: warner at lothar.com Date: 2006-12-11 08:47:11 Index: mail.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/mail.py,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- mail.py 11 Dec 2006 08:40:17 -0000 1.29 +++ mail.py 11 Dec 2006 08:49:40 -0000 1.30 @@ -13,10 +13,7 @@ import urllib from twisted.internet import defer -try: - from twisted.mail.smtp import sendmail # Twisted-2.0 -except ImportError: - from twisted.protocols.smtp import sendmail # Twisted-1.3 +from twisted.mail.smtp import sendmail from twisted.python import log from buildbot import interfaces, util From warner at users.sourceforge.net Mon Dec 11 08:49:42 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 08:49:42 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.809,1.810 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv12492 Modified Files: ChangeLog Log Message: [project @ status.mail doesn't need to fall back to twisted.protocols.smtp.sendmail in a Twisted>=2.0.0 world] Original author: warner at lothar.com Date: 2006-12-11 08:47:11 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.809 retrieving revision 1.810 diff -u -d -r1.809 -r1.810 --- ChangeLog 11 Dec 2006 08:46:39 -0000 1.809 +++ ChangeLog 11 Dec 2006 08:49:40 -0000 1.810 @@ -1,5 +1,9 @@ 2006-12-11 Brian Warner + * buildbot/status/mail.py: stop falling back to importing + twisted.protocols.smtp.sendmail, now that we don't need tw-1.3.0 + support + * buildbot/twcompat.py (Interface): remove this import * buildbot/*: import Interface from zope.interface directly From warner at users.sourceforge.net Mon Dec 11 09:06:36 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:06:36 +0000 Subject: [Buildbot-commits] buildbot/buildbot/changes base.py, 1.2, 1.3 changes.py, 1.29, 1.30 freshcvs.py, 1.22, 1.23 mail.py, 1.22, 1.23 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/changes In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19328/buildbot/changes Modified Files: base.py changes.py freshcvs.py mail.py Log Message: [project @ get implements() from zope.interface directly, not from twcompat] Original author: warner at lothar.com Date: 2006-12-11 08:53:40 Index: base.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/changes/base.py,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- base.py 6 Sep 2006 00:41:54 -0000 1.2 +++ base.py 11 Dec 2006 09:06:34 -0000 1.3 @@ -1,13 +1,11 @@ #! /usr/bin/python +from zope.interface import implements from twisted.application import service -from buildbot.twcompat import implements from buildbot.interfaces import IChangeSource from buildbot import util class ChangeSource(service.Service, util.ComparableMixin): - if implements: - implements(IChangeSource) - else: - __implements__ = IChangeSource, service.Service.__implements__ + implements(IChangeSource) + Index: changes.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/changes/changes.py,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- changes.py 11 Dec 2006 08:40:17 -0000 1.29 +++ changes.py 11 Dec 2006 09:06:34 -0000 1.30 @@ -8,13 +8,13 @@ except ImportError: import pickle +from zope.interface import implements from twisted.python import log from twisted.internet import defer from twisted.application import service from twisted.web import html from buildbot import interfaces, util -from buildbot.twcompat import implements html_tmpl = """

Changed by: %(who)s
@@ -51,10 +51,7 @@ chronologically increasing order. Out-of-order changes will probably cause the html.Waterfall display to be corrupted.""" - if implements: - implements(interfaces.IStatusEvent) - else: - __implements__ = interfaces.IStatusEvent, + implements(interfaces.IStatusEvent) number = None Index: freshcvs.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/changes/freshcvs.py,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- freshcvs.py 25 Nov 2005 00:36:41 -0000 1.22 +++ freshcvs.py 11 Dec 2006 09:06:34 -0000 1.23 @@ -2,6 +2,7 @@ import os.path +from zope.interface import implements from twisted.cred import credentials from twisted.spread import pb from twisted.application.internet import TCPClient @@ -9,7 +10,6 @@ import cvstoys.common # to make sure VersionedPatch gets registered -from buildbot.twcompat import implements from buildbot.interfaces import IChangeSource from buildbot.pbutil import ReconnectingPBClientFactory from buildbot.changes.changes import Change @@ -61,10 +61,7 @@ does not, later versions might. """ - if implements: - implements(IChangeSource) - else: - __implements__ = IChangeSource, TCPClient.__implements__ + implements(IChangeSource) compare_attrs = ["host", "port", "username", "password", "prefix"] changemaster = None # filled in when we're added Index: mail.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/changes/mail.py,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- mail.py 25 Sep 2006 06:51:36 -0000 1.22 +++ mail.py 11 Dec 2006 09:06:34 -0000 1.23 @@ -7,7 +7,6 @@ from rfc822 import Message from buildbot import util -from buildbot.twcompat import implements from buildbot.changes import base, changes, maildirtwisted def parseFreshCVSMail(self, fd, prefix=None, sep="/"): @@ -299,12 +298,6 @@ """This source will watch a maildir that is subscribed to a FreshCVS change-announcement mailing list. """ - # we need our own implements() here, at least for twisted-1.3, because - # the double-inheritance of Service shadows __implements__ from - # ChangeSource. - if not implements: - __implements__ = base.ChangeSource.__implements__ - compare_attrs = ["basedir", "newdir", "pollinterval", "parser"] parser = None name = None From warner at users.sourceforge.net Mon Dec 11 09:06:37 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:06:37 +0000 Subject: [Buildbot-commits] buildbot/buildbot/slave commands.py,1.73,1.74 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/slave In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19328/buildbot/slave Modified Files: commands.py Log Message: [project @ get implements() from zope.interface directly, not from twcompat] Original author: warner at lothar.com Date: 2006-12-11 08:53:40 Index: commands.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/slave/commands.py,v retrieving revision 1.73 retrieving revision 1.74 diff -u -d -r1.73 -r1.74 --- commands.py 11 Dec 2006 05:21:40 -0000 1.73 +++ commands.py 11 Dec 2006 09:06:35 -0000 1.74 @@ -3,11 +3,12 @@ import os, re, signal, shutil, types, time from stat import ST_CTIME, ST_MTIME, ST_SIZE +from zope.interface import implements from twisted.internet.protocol import ProcessProtocol from twisted.internet import reactor, defer, task from twisted.python import log, failure, runtime -from buildbot.twcompat import implements, which +from buildbot.twcompat import which from buildbot.slave.interfaces import ISlaveCommand from buildbot.slave.registry import registerSlaveCommand @@ -537,10 +538,7 @@ class Command: - if implements: - implements(ISlaveCommand) - else: - __implements__ = ISlaveCommand + implements(ISlaveCommand) """This class defines one command that can be invoked by the build master. The command is executed on the slave side, and always sends back a From warner at users.sourceforge.net Mon Dec 11 09:06:36 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:06:36 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.810,1.811 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19328 Modified Files: ChangeLog Log Message: [project @ get implements() from zope.interface directly, not from twcompat] Original author: warner at lothar.com Date: 2006-12-11 08:53:40 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.810 retrieving revision 1.811 diff -u -d -r1.810 -r1.811 --- ChangeLog 11 Dec 2006 08:49:40 -0000 1.810 +++ ChangeLog 11 Dec 2006 09:06:33 -0000 1.811 @@ -1,5 +1,8 @@ 2006-12-11 Brian Warner + * buildbot/twcompat.py (implements): remove this method + * buildbot/*: import implements() from zope.interface directly + * buildbot/status/mail.py: stop falling back to importing twisted.protocols.smtp.sendmail, now that we don't need tw-1.3.0 support From warner at users.sourceforge.net Mon Dec 11 09:06:36 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:06:36 +0000 Subject: [Buildbot-commits] buildbot/buildbot master.py, 1.102, 1.103 scheduler.py, 1.23, 1.24 sourcestamp.py, 1.2, 1.3 twcompat.py, 1.11, 1.12 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19328/buildbot Modified Files: master.py scheduler.py sourcestamp.py twcompat.py Log Message: [project @ get implements() from zope.interface directly, not from twcompat] Original author: warner at lothar.com Date: 2006-12-11 08:53:40 Index: master.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/master.py,v retrieving revision 1.102 retrieving revision 1.103 diff -u -d -r1.102 -r1.103 --- master.py 11 Dec 2006 08:40:17 -0000 1.102 +++ master.py 11 Dec 2006 09:06:34 -0000 1.103 @@ -12,6 +12,7 @@ except ImportError: import pickle +from zope.interface import implements from twisted.python import log, components from twisted.internet import defer, reactor from twisted.spread import pb @@ -20,7 +21,6 @@ from twisted.persisted import styles # sibling imports -from buildbot.twcompat import implements from buildbot.util import now from buildbot.pbutil import NewCredPerspective from buildbot.process.builder import Builder, IDLE @@ -432,10 +432,7 @@ print "debug", msg class Dispatcher(styles.Versioned): - if implements: - implements(portal.IRealm) - else: - __implements__ = portal.IRealm, + implements(portal.IRealm) persistenceVersion = 2 def __init__(self): @@ -999,10 +996,7 @@ class Control: - if implements: - implements(interfaces.IControl) - else: - __implements__ = interfaces.IControl, + implements(interfaces.IControl) def __init__(self, master): self.master = master Index: scheduler.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/scheduler.py,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- scheduler.py 11 Dec 2006 08:40:17 -0000 1.23 +++ scheduler.py 11 Dec 2006 09:06:34 -0000 1.24 @@ -2,6 +2,7 @@ import time, os.path +from zope.interface import implements from twisted.internet import reactor from twisted.application import service, internet, strports from twisted.python import log, runtime @@ -11,17 +12,12 @@ from buildbot import interfaces, buildset, util, pbutil from buildbot.status import builder -from buildbot.twcompat import implements from buildbot.sourcestamp import SourceStamp from buildbot.changes import maildirtwisted class BaseScheduler(service.MultiService, util.ComparableMixin): - if implements: - implements(interfaces.IScheduler) - else: - __implements__ = (interfaces.IScheduler, - service.MultiService.__implements__) + implements(interfaces.IScheduler) def __init__(self, name): service.MultiService.__init__(self) @@ -38,11 +34,7 @@ pass class BaseUpstreamScheduler(BaseScheduler): - if implements: - implements(interfaces.IUpstreamScheduler) - else: - __implements__ = (interfaces.IUpstreamScheduler, - BaseScheduler.__implements__) + implements(interfaces.IUpstreamScheduler) def __init__(self, name): BaseScheduler.__init__(self, name) @@ -518,11 +510,7 @@ class TryBase(service.MultiService, util.ComparableMixin): - if implements: - implements(interfaces.IScheduler) - else: - __implements__ = (interfaces.IScheduler, - service.MultiService.__implements__) + implements(interfaces.IScheduler) def __init__(self, name, builderNames): service.MultiService.__init__(self) @@ -638,12 +626,7 @@ class Try_Userpass(TryBase): compare_attrs = ["name", "builderNames", "port", "userpass"] - - if implements: - implements(portal.IRealm) - else: - __implements__ = (portal.IRealm, - TryBase.__implements__) + implements(portal.IRealm) def __init__(self, name, builderNames, port, userpass): TryBase.__init__(self, name, builderNames) Index: sourcestamp.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/sourcestamp.py,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- sourcestamp.py 12 Mar 2006 11:28:04 -0000 1.2 +++ sourcestamp.py 11 Dec 2006 09:06:34 -0000 1.3 @@ -1,6 +1,6 @@ +from zope.interface import implements from buildbot import util, interfaces -from buildbot.twcompat import implements class SourceStamp(util.ComparableMixin): """This is a tuple of (branch, revision, patchspec, changes). @@ -27,10 +27,7 @@ compare_attrs = ('branch', 'revision', 'patch', 'changes') - if implements: - implements(interfaces.ISourceStamp) - else: - __implements__ = interfaces.ISourceStamp, + implements(interfaces.ISourceStamp) def __init__(self, branch=None, revision=None, patch=None, changes=None): Index: twcompat.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/twcompat.py,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- twcompat.py 11 Dec 2006 08:46:39 -0000 1.11 +++ twcompat.py 11 Dec 2006 09:06:34 -0000 1.12 @@ -5,33 +5,11 @@ """ utilities to be compatible with both Twisted-1.3 and 2.0 -implements. Use this like the following. - -from buildbot.twcompat import implements -class Foo: - if implements: - implements(IFoo) - else: - __implements__ = IFoo, - -Interface: - from buildbot.tcompat import Interface - class IFoo(Interface) """ import os from twisted.copyright import version -from twisted.python import components - -# does our Twisted use zope.interface? -implements = None -if hasattr(components, "interface"): - # yes - from zope.interface import implements -else: - # nope - pass # waitForDeferred and getProcessOutputAndValue are twisted-2.0 things. If # we're running under 1.3, patch them into place. These versions are copied From warner at users.sourceforge.net Mon Dec 11 09:06:37 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:06:37 +0000 Subject: [Buildbot-commits] buildbot/buildbot/process base.py, 1.72, 1.73 builder.py, 1.40, 1.41 buildstep.py, 1.3, 1.4 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/process In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19328/buildbot/process Modified Files: base.py builder.py buildstep.py Log Message: [project @ get implements() from zope.interface directly, not from twcompat] Original author: warner at lothar.com Date: 2006-12-11 08:53:40 Index: base.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/process/base.py,v retrieving revision 1.72 retrieving revision 1.73 diff -u -d -r1.72 -r1.73 --- base.py 24 Nov 2006 07:16:35 -0000 1.72 +++ base.py 11 Dec 2006 09:06:34 -0000 1.73 @@ -2,12 +2,12 @@ import types +from zope.interface import implements from twisted.python import log from twisted.python.failure import Failure from twisted.internet import reactor, defer, error from buildbot import interfaces -from buildbot.twcompat import implements from buildbot.status.builder import SUCCESS, WARNINGS, FAILURE, EXCEPTION from buildbot.status.builder import Results, BuildRequestStatus from buildbot.status.progress import BuildProgress @@ -50,10 +50,7 @@ builder = None startCount = 0 # how many times we have tried to start this build - if implements: - implements(interfaces.IBuildRequestControl) - else: - __implements__ = interfaces.IBuildRequestControl, + implements(interfaces.IBuildRequestControl) def __init__(self, reason, source, builderName=None): # TODO: remove the =None on builderName, it is there so I don't have @@ -155,10 +152,7 @@ collects our status """ - if implements: - implements(interfaces.IBuildControl) - else: - __implements__ = interfaces.IBuildControl, + implements(interfaces.IBuildControl) workdir = "build" build_status = None Index: builder.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/process/builder.py,v retrieving revision 1.40 retrieving revision 1.41 diff -u -d -r1.40 -r1.41 --- builder.py 24 Nov 2006 07:19:55 -0000 1.40 +++ builder.py 11 Dec 2006 09:06:34 -0000 1.41 @@ -2,12 +2,12 @@ import warnings +from zope.interface import implements from twisted.python import log, components from twisted.spread import pb from twisted.internet import reactor, defer from buildbot import interfaces, sourcestamp -from buildbot.twcompat import implements from buildbot.status.progress import Expectations from buildbot.util import now from buildbot.process import base @@ -638,10 +638,7 @@ class BuilderControl(components.Adapter): - if implements: - implements(interfaces.IBuilderControl) - else: - __implements__ = interfaces.IBuilderControl, + implements(interfaces.IBuilderControl) def requestBuild(self, req): """Submit a BuildRequest to this Builder.""" Index: buildstep.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/process/buildstep.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- buildstep.py 11 Dec 2006 08:40:17 -0000 1.3 +++ buildstep.py 11 Dec 2006 09:06:34 -0000 1.4 @@ -1,5 +1,6 @@ # -*- test-case-name: buildbot.test.test_steps -*- +from zope.interface import implements from twisted.internet import reactor, defer, error from twisted.protocols import basic from twisted.spread import pb @@ -8,7 +9,6 @@ from twisted.web.util import formatFailure from buildbot import interfaces -from buildbot.twcompat import implements from buildbot import util from buildbot.status import progress from buildbot.status.builder import SUCCESS, WARNINGS, FAILURE, SKIPPED, \ @@ -357,10 +357,7 @@ class LogObserver: - if implements: - implements(interfaces.ILogObserver) - else: - __implements__ = interfaces.ILogObserver, + implements(interfaces.ILogObserver) def setStep(self, step): self.step = step From warner at users.sourceforge.net Mon Dec 11 09:06:38 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:06:38 +0000 Subject: [Buildbot-commits] buildbot/buildbot/test test_status.py, 1.37, 1.38 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/test In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19328/buildbot/test Modified Files: test_status.py Log Message: [project @ get implements() from zope.interface directly, not from twcompat] Original author: warner at lothar.com Date: 2006-12-11 08:53:40 Index: test_status.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_status.py,v retrieving revision 1.37 retrieving revision 1.38 diff -u -d -r1.37 -r1.38 --- test_status.py 11 Dec 2006 08:40:17 -0000 1.37 +++ test_status.py 11 Dec 2006 09:06:36 -0000 1.38 @@ -2,13 +2,13 @@ import email, os +from zope.interface import implements from twisted.internet import defer, reactor from twisted.trial import unittest from buildbot import interfaces from buildbot.sourcestamp import SourceStamp from buildbot.process.base import BuildRequest -from buildbot.twcompat import implements from buildbot.status import builder, base mail = None @@ -109,10 +109,7 @@ return self.testlogs class MyLookup: - if implements: - implements(interfaces.IEmailLookup) - else: - __implements__ = interfaces.IEmailLookup, + implements(interfaces.IEmailLookup) def getAddress(self, user): d = defer.Deferred() From warner at users.sourceforge.net Mon Dec 11 09:06:38 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:06:38 +0000 Subject: [Buildbot-commits] buildbot/buildbot/status base.py, 1.5, 1.6 builder.py, 1.92, 1.93 client.py, 1.28, 1.29 html.py, 1.93, 1.94 mail.py, 1.30, 1.31 tinderbox.py, 1.3, 1.4 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/status In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19328/buildbot/status Modified Files: base.py builder.py client.py html.py mail.py tinderbox.py Log Message: [project @ get implements() from zope.interface directly, not from twcompat] Original author: warner at lothar.com Date: 2006-12-11 08:53:40 Index: base.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/base.py,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- base.py 6 Sep 2006 00:41:55 -0000 1.5 +++ base.py 11 Dec 2006 09:06:35 -0000 1.6 @@ -1,16 +1,13 @@ #! /usr/bin/python +from zope.interface import implements from twisted.application import service -from buildbot.twcompat import implements from buildbot.interfaces import IStatusReceiver from buildbot import util, pbutil class StatusReceiver: - if implements: - implements(IStatusReceiver) - else: - __implements__ = IStatusReceiver, + implements(IStatusReceiver) def buildsetSubmitted(self, buildset): pass @@ -53,18 +50,12 @@ class StatusReceiverMultiService(StatusReceiver, service.MultiService, util.ComparableMixin): - if implements: - implements(IStatusReceiver) - else: - __implements__ = IStatusReceiver, service.MultiService.__implements__ + implements(IStatusReceiver) def __init__(self): service.MultiService.__init__(self) class StatusReceiverPerspective(StatusReceiver, pbutil.NewCredPerspective): - if implements: - implements(IStatusReceiver) - else: - __implements__ = (IStatusReceiver, - pbutil.NewCredPerspective.__implements__) + implements(IStatusReceiver) + Index: builder.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/builder.py,v retrieving revision 1.92 retrieving revision 1.93 diff -u -d -r1.92 -r1.93 --- builder.py 11 Dec 2006 08:40:17 -0000 1.92 +++ builder.py 11 Dec 2006 09:06:35 -0000 1.93 @@ -2,6 +2,7 @@ from __future__ import generators +from zope.interface import implements from twisted.python import log from twisted.persisted import styles from twisted.internet import reactor, defer @@ -20,7 +21,6 @@ # sibling imports from buildbot import interfaces, util, sourcestamp -from buildbot.twcompat import implements SUCCESS, WARNINGS, FAILURE, SKIPPED, EXCEPTION = range(5) Results = ["success", "warnings", "failure", "skipped", "exception"] @@ -205,10 +205,7 @@ so users who go from 0.6.5 back to 0.6.4 don't have to lose their logs.""" - if implements: - implements(interfaces.IStatusLog, interfaces.ILogFile) - else: - __implements__ = (interfaces.IStatusLog, interfaces.ILogFile) + implements(interfaces.IStatusLog, interfaces.ILogFile) finished = False length = 0 @@ -462,10 +459,7 @@ class HTMLLogFile: - if implements: - implements(interfaces.IStatusLog) - else: - __implements__ = interfaces.IStatusLog, + implements(interfaces.IStatusLog) filename = None @@ -512,10 +506,7 @@ class Event: - if implements: - implements(interfaces.IStatusEvent) - else: - __implements__ = interfaces.IStatusEvent, + implements(interfaces.IStatusEvent) started = None finished = None @@ -536,10 +527,7 @@ self.finished = util.now() class TestResult: - if implements: - implements(interfaces.ITestResult) - else: - __implements__ = interfaces.ITestResult, + implements(interfaces.ITestResult) def __init__(self, name, results, text, logs): assert isinstance(name, tuple) @@ -562,10 +550,7 @@ class BuildSetStatus: - if implements: - implements(interfaces.IBuildSetStatus) - else: - __implements__ = interfaces.IBuildSetStatus, + implements(interfaces.IBuildSetStatus) def __init__(self, source, reason, builderNames, bsid=None): self.source = source @@ -631,10 +616,7 @@ return d class BuildRequestStatus: - if implements: - implements(interfaces.IBuildRequestStatus) - else: - __implements__ = interfaces.IBuildRequestStatus, + implements(interfaces.IBuildRequestStatus) def __init__(self, source, builderName): self.source = source @@ -684,10 +666,7 @@ """ # note that these are created when the Build is set up, before each # corresponding BuildStep has started. - if implements: - implements(interfaces.IBuildStepStatus, interfaces.IStatusEvent) - else: - __implements__ = interfaces.IBuildStepStatus, interfaces.IStatusEvent + implements(interfaces.IBuildStepStatus, interfaces.IStatusEvent) persistenceVersion = 1 started = None @@ -917,10 +896,7 @@ class BuildStatus(styles.Versioned): - if implements: - implements(interfaces.IBuildStatus, interfaces.IStatusEvent) - else: - __implements__ = interfaces.IBuildStatus, interfaces.IStatusEvent + implements(interfaces.IBuildStatus, interfaces.IStatusEvent) persistenceVersion = 2 source = None @@ -1317,10 +1293,7 @@ used to filter on in status clients """ - if implements: - implements(interfaces.IBuilderStatus) - else: - __implements__ = interfaces.IBuilderStatus, + implements(interfaces.IBuilderStatus) persistenceVersion = 1 # these limit the amount of memory we consume, as well as the size of the @@ -1720,10 +1693,7 @@ self.subscribers.remove(client) class SlaveStatus: - if implements: - implements(interfaces.ISlaveStatus) - else: - __implements__ = interfaces.ISlaveStatus, + implements(interfaces.ISlaveStatus) admin = None host = None @@ -1752,10 +1722,7 @@ """ I represent the status of the buildmaster. """ - if implements: - implements(interfaces.IStatus) - else: - __implements__ = interfaces.IStatus, + implements(interfaces.IStatus) def __init__(self, botmaster, basedir): """ Index: client.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/client.py,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- client.py 11 Dec 2006 08:46:39 -0000 1.28 +++ client.py 11 Dec 2006 09:06:35 -0000 1.29 @@ -7,8 +7,7 @@ from twisted.cred import portal, checkers from buildbot import interfaces -from zope.interface import Interface -from buildbot.twcompat import implements +from zope.interface import Interface, implements from buildbot.status import builder, base from buildbot.changes import changes @@ -538,11 +537,7 @@ """I am a listener for PB-based status clients.""" compare_attrs = ["port", "cred"] - if implements: - implements(portal.IRealm) - else: - __implements__ = (portal.IRealm, - base.StatusReceiverMultiService.__implements__) + implements(portal.IRealm) def __init__(self, port, user="statusClient", passwd="clientpw"): base.StatusReceiverMultiService.__init__(self) Index: html.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/html.py,v retrieving revision 1.93 retrieving revision 1.94 diff -u -d -r1.93 -r1.94 --- html.py 11 Dec 2006 08:46:39 -0000 1.93 +++ html.py 11 Dec 2006 09:06:35 -0000 1.94 @@ -12,8 +12,7 @@ from twisted.web.util import Redirect, DeferredResource from twisted.application import strports from twisted.spread import pb -from zope.interface import Interface -from buildbot.twcompat import implements +from zope.interface import Interface, implements import sys, string, types, time, os.path @@ -691,10 +690,7 @@ """ class ChunkConsumer: - if implements: - implements(interfaces.IStatusLogConsumer) - else: - __implements__ = interfaces.IStatusLogConsumer, + implements(interfaces.IStatusLogConsumer) def __init__(self, original, textlog): self.original = original @@ -716,10 +712,7 @@ class TextLog(Resource): # a new instance of this Resource is created for each client who views # it, so we can afford to track the request in the Resource. - if implements: - implements(IHTMLLog) - else: - __implements__ = IHTMLLog, + implements(IHTMLLog) asText = False subscribed = False @@ -803,11 +796,7 @@ class HTMLLog(Resource): - if implements: - implements(IHTMLLog) - else: - __implements__ = IHTMLLog, - + implements(IHTMLLog) def __init__(self, original): Resource.__init__(self) @@ -822,10 +811,7 @@ class CurrentBox(components.Adapter): # this provides the "current activity" box, just above the builder name - if implements: - implements(ICurrentBox) - else: - __implements__ = ICurrentBox, + implements(ICurrentBox) def formatETA(self, eta): if eta is None: @@ -899,10 +885,7 @@ components.registerAdapter(CurrentBox, builder.BuilderStatus, ICurrentBox) class ChangeBox(components.Adapter): - if implements: - implements(IBox) - else: - __implements__ = IBox, + implements(IBox) def getBox(self): url = "changes/%d" % self.original.number @@ -912,10 +895,7 @@ class BuildBox(components.Adapter): # this provides the yellow "starting line" box for each build - if implements: - implements(IBox) - else: - __implements__ = IBox, + implements(IBox) def getBox(self): b = self.original @@ -937,10 +917,7 @@ components.registerAdapter(BuildBox, builder.BuildStatus, IBox) class StepBox(components.Adapter): - if implements: - implements(IBox) - else: - __implements__ = IBox, + implements(IBox) def getBox(self): b = self.original.getBuild() @@ -972,10 +949,7 @@ components.registerAdapter(StepBox, builder.BuildStepStatus, IBox) class EventBox(components.Adapter): - if implements: - implements(IBox) - else: - __implements__ = IBox, + implements(IBox) def getBox(self): text = self.original.getText() @@ -990,10 +964,7 @@ class BuildTopBox(components.Adapter): # this provides a per-builder box at the very top of the display, # showing the results of the most recent build - if implements: - implements(IBox) - else: - __implements__ = IBox, + implements(IBox) def getBox(self): assert interfaces.IBuilderStatus(self.original) @@ -1017,10 +988,7 @@ self.finished = finish class SpacerBox(components.Adapter): - if implements: - implements(IBox) - else: - __implements__ = IBox, + implements(IBox) def getBox(self): #b = Box(["spacer"], "white") Index: mail.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/mail.py,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- mail.py 11 Dec 2006 08:49:40 -0000 1.30 +++ mail.py 11 Dec 2006 09:06:35 -0000 1.31 @@ -12,21 +12,18 @@ canDoAttachments = False import urllib +from zope.interface import implements from twisted.internet import defer from twisted.mail.smtp import sendmail from twisted.python import log from buildbot import interfaces, util -from buildbot.twcompat import implements from buildbot.status import base from buildbot.status.builder import FAILURE, SUCCESS, WARNINGS class Domain(util.ComparableMixin): - if implements: - implements(interfaces.IEmailLookup) - else: - __implements__ = interfaces.IEmailLookup + implements(interfaces.IEmailLookup) compare_attrs = ["domain"] def __init__(self, domain): @@ -56,11 +53,7 @@ MailNotifiers. """ - if implements: - implements(interfaces.IEmailSender) - else: - __implements__ = (interfaces.IEmailSender, - base.StatusReceiverMultiService.__implements__) + implements(interfaces.IEmailSender) compare_attrs = ["extraRecipients", "lookup", "fromaddr", "mode", "categories", "builders", "addLogs", "relayhost", Index: tinderbox.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/tinderbox.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- tinderbox.py 5 Nov 2006 05:13:06 -0000 1.3 +++ tinderbox.py 11 Dec 2006 09:06:35 -0000 1.4 @@ -2,10 +2,10 @@ from email.Message import Message from email.Utils import formatdate +from zope.interface import implements from twisted.internet import defer from buildbot import interfaces -from buildbot.twcompat import implements from buildbot.status import base, mail from buildbot.status.builder import SUCCESS, WARNINGS @@ -29,11 +29,7 @@ tinderbox option. """ - if implements: - implements(interfaces.IEmailSender) - else: - __implements__ = (interfaces.IEmailSender, - base.StatusReceiverMultiService.__implements__) + implements(interfaces.IEmailSender) compare_attrs = ["extraRecipients", "fromaddr", "categories", "builders", "addLogs", "relayhost", "subject", "binaryURL", "tree", From warner at users.sourceforge.net Mon Dec 11 09:11:12 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:11:12 +0000 Subject: [Buildbot-commits] buildbot/buildbot twcompat.py,1.12,1.13 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21313/buildbot Modified Files: twcompat.py Log Message: [project @ remove the monkeypatched defer.waitForDeferred, unnecessary with twisted-2.0.0 and later] Original author: warner at lothar.com Date: 2006-12-11 08:58:09 Index: twcompat.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/twcompat.py,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- twcompat.py 11 Dec 2006 09:06:34 -0000 1.12 +++ twcompat.py 11 Dec 2006 09:11:10 -0000 1.13 @@ -11,152 +11,6 @@ from twisted.copyright import version -# waitForDeferred and getProcessOutputAndValue are twisted-2.0 things. If -# we're running under 1.3, patch them into place. These versions are copied -# from twisted somewhat after 2.0.1 . - -from twisted.internet import defer -if not hasattr(defer, 'waitForDeferred'): - Deferred = defer.Deferred - class waitForDeferred: - """ - API Stability: semi-stable - - Maintainer: U{Christopher Armstrong} - - waitForDeferred and deferredGenerator help you write - Deferred-using code that looks like it's blocking (but isn't - really), with the help of generators. - - There are two important functions involved: waitForDeferred, and - deferredGenerator. - - def thingummy(): - thing = waitForDeferred(makeSomeRequestResultingInDeferred()) - yield thing - thing = thing.getResult() - print thing #the result! hoorj! - thingummy = deferredGenerator(thingummy) - - waitForDeferred returns something that you should immediately yield; - when your generator is resumed, calling thing.getResult() will either - give you the result of the Deferred if it was a success, or raise an - exception if it was a failure. - - deferredGenerator takes one of these waitForDeferred-using - generator functions and converts it into a function that returns a - Deferred. The result of the Deferred will be the last - value that your generator yielded (remember that 'return result' won't - work; use 'yield result; return' in place of that). - - Note that not yielding anything from your generator will make the - Deferred result in None. Yielding a Deferred from your generator - is also an error condition; always yield waitForDeferred(d) - instead. - - The Deferred returned from your deferred generator may also - errback if your generator raised an exception. - - def thingummy(): - thing = waitForDeferred(makeSomeRequestResultingInDeferred()) - yield thing - thing = thing.getResult() - if thing == 'I love Twisted': - # will become the result of the Deferred - yield 'TWISTED IS GREAT!' - return - else: - # will trigger an errback - raise Exception('DESTROY ALL LIFE') - thingummy = deferredGenerator(thingummy) - - Put succinctly, these functions connect deferred-using code with this - 'fake blocking' style in both directions: waitForDeferred converts from - a Deferred to the 'blocking' style, and deferredGenerator converts from - the 'blocking' style to a Deferred. - """ - def __init__(self, d): - if not isinstance(d, Deferred): - raise TypeError("You must give waitForDeferred a Deferred. You gave it %r." % (d,)) - self.d = d - - def getResult(self): - if hasattr(self, 'failure'): - self.failure.raiseException() - return self.result - - def _deferGenerator(g, deferred=None, result=None): - """ - See L{waitForDeferred}. - """ - while 1: - if deferred is None: - deferred = defer.Deferred() - try: - result = g.next() - except StopIteration: - deferred.callback(result) - return deferred - except: - deferred.errback() - return deferred - - # Deferred.callback(Deferred) raises an error; we catch this case - # early here and give a nicer error message to the user in case - # they yield a Deferred. Perhaps eventually these semantics may - # change. - if isinstance(result, defer.Deferred): - return defer.fail(TypeError("Yield waitForDeferred(d), not d!")) - - if isinstance(result, waitForDeferred): - waiting=[True, None] - # Pass vars in so they don't get changed going around the loop - def gotResult(r, waiting=waiting, result=result): - result.result = r - if waiting[0]: - waiting[0] = False - waiting[1] = r - else: - _deferGenerator(g, deferred, r) - def gotError(f, waiting=waiting, result=result): - result.failure = f - if waiting[0]: - waiting[0] = False - waiting[1] = f - else: - _deferGenerator(g, deferred, f) - result.d.addCallbacks(gotResult, gotError) - if waiting[0]: - # Haven't called back yet, set flag so that we get reinvoked - # and return from the loop - waiting[0] = False - return deferred - else: - result = waiting[1] - - def func_metamerge(f, g): - """ - Merge function metadata from f -> g and return g - """ - try: - g.__doc__ = f.__doc__ - g.__dict__.update(f.__dict__) - g.__name__ = f.__name__ - except (TypeError, AttributeError): - pass - return g - - def deferredGenerator(f): - """ - See L{waitForDeferred}. - """ - def unwindGenerator(*args, **kwargs): - return _deferGenerator(f(*args, **kwargs)) - return func_metamerge(f, unwindGenerator) - - defer.waitForDeferred = waitForDeferred - defer.deferredGenerator = deferredGenerator - from twisted.internet import utils if not hasattr(utils, "getProcessOutputAndValue"): from twisted.internet import reactor, protocol From warner at users.sourceforge.net Mon Dec 11 09:11:12 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:11:12 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.811,1.812 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21313 Modified Files: ChangeLog Log Message: [project @ remove the monkeypatched defer.waitForDeferred, unnecessary with twisted-2.0.0 and later] Original author: warner at lothar.com Date: 2006-12-11 08:58:09 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.811 retrieving revision 1.812 diff -u -d -r1.811 -r1.812 --- ChangeLog 11 Dec 2006 09:06:33 -0000 1.811 +++ ChangeLog 11 Dec 2006 09:11:10 -0000 1.812 @@ -1,5 +1,8 @@ 2006-12-11 Brian Warner + * buildbot/twcompat.py (waitForDeferred): remove the monkeypatch, + tw-2.0.0 and newer have the method we need. + * buildbot/twcompat.py (implements): remove this method * buildbot/*: import implements() from zope.interface directly From warner at users.sourceforge.net Mon Dec 11 09:11:20 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:11:20 +0000 Subject: [Buildbot-commits] buildbot/buildbot twcompat.py,1.13,1.14 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21333/buildbot Modified Files: twcompat.py Log Message: [project @ remove the monkeypatched t.i.utils.getProcessOutputAndValue, unnecessary with twisted-2.0.0 and later] Original author: warner at lothar.com Date: 2006-12-11 08:59:19 Index: twcompat.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/twcompat.py,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- twcompat.py 11 Dec 2006 09:11:10 -0000 1.13 +++ twcompat.py 11 Dec 2006 09:11:18 -0000 1.14 @@ -11,49 +11,6 @@ from twisted.copyright import version -from twisted.internet import utils -if not hasattr(utils, "getProcessOutputAndValue"): - from twisted.internet import reactor, protocol - _callProtocolWithDeferred = utils._callProtocolWithDeferred - try: - import cStringIO - StringIO = cStringIO - except ImportError: - import StringIO - - class _EverythingGetter(protocol.ProcessProtocol): - - def __init__(self, deferred): - self.deferred = deferred - self.outBuf = StringIO.StringIO() - self.errBuf = StringIO.StringIO() - self.outReceived = self.outBuf.write - self.errReceived = self.errBuf.write - - def processEnded(self, reason): - out = self.outBuf.getvalue() - err = self.errBuf.getvalue() - e = reason.value - code = e.exitCode - if e.signal: - self.deferred.errback((out, err, e.signal)) - else: - self.deferred.callback((out, err, code)) - - def getProcessOutputAndValue(executable, args=(), env={}, path='.', - reactor=reactor): - """Spawn a process and returns a Deferred that will be called back - with its output (from stdout and stderr) and it's exit code as (out, - err, code) If a signal is raised, the Deferred will errback with the - stdout and stderr up to that point, along with the signal, as (out, - err, signalNum) - """ - return _callProtocolWithDeferred(_EverythingGetter, - executable, args, env, path, - reactor) - utils.getProcessOutputAndValue = getProcessOutputAndValue - - # copied from Twisted circa 2.2.0 def _which(name, flags=os.X_OK): """Search PATH for executable files with the given name. From warner at users.sourceforge.net Mon Dec 11 09:11:20 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:11:20 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.812,1.813 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21333 Modified Files: ChangeLog Log Message: [project @ remove the monkeypatched t.i.utils.getProcessOutputAndValue, unnecessary with twisted-2.0.0 and later] Original author: warner at lothar.com Date: 2006-12-11 08:59:19 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.812 retrieving revision 1.813 diff -u -d -r1.812 -r1.813 --- ChangeLog 11 Dec 2006 09:11:10 -0000 1.812 +++ ChangeLog 11 Dec 2006 09:11:17 -0000 1.813 @@ -2,6 +2,7 @@ * buildbot/twcompat.py (waitForDeferred): remove the monkeypatch, tw-2.0.0 and newer have the method we need. + (getProcessOutputAndValue): same * buildbot/twcompat.py (implements): remove this method * buildbot/*: import implements() from zope.interface directly From warner at users.sourceforge.net Mon Dec 11 09:11:28 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:11:28 +0000 Subject: [Buildbot-commits] buildbot/buildbot/scripts tryclient.py, 1.16, 1.17 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/scripts In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21360/buildbot/scripts Modified Files: tryclient.py Log Message: [project @ remove which(), twisted-2.0.0 and later has it] Original author: warner at lothar.com Date: 2006-12-11 09:02:04 Index: tryclient.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/scripts/tryclient.py,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- tryclient.py 30 Sep 2006 21:12:08 -0000 1.16 +++ tryclient.py 11 Dec 2006 09:11:26 -0000 1.17 @@ -5,12 +5,12 @@ from twisted.spread import pb from twisted.cred import credentials from twisted.python import log +from twisted.python.procutils import which from buildbot.sourcestamp import SourceStamp from buildbot.scripts import runner from buildbot.util import now from buildbot.status import builder -from buildbot.twcompat import which class SourceStampExtractor: From warner at users.sourceforge.net Mon Dec 11 09:11:28 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:11:28 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.813,1.814 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21360 Modified Files: ChangeLog Log Message: [project @ remove which(), twisted-2.0.0 and later has it] Original author: warner at lothar.com Date: 2006-12-11 09:02:04 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.813 retrieving revision 1.814 diff -u -d -r1.813 -r1.814 --- ChangeLog 11 Dec 2006 09:11:17 -0000 1.813 +++ ChangeLog 11 Dec 2006 09:11:26 -0000 1.814 @@ -3,6 +3,7 @@ * buildbot/twcompat.py (waitForDeferred): remove the monkeypatch, tw-2.0.0 and newer have the method we need. (getProcessOutputAndValue): same + (which): remove this method, tw-2.0.0 t.p.procutils has it * buildbot/twcompat.py (implements): remove this method * buildbot/*: import implements() from zope.interface directly From warner at users.sourceforge.net Mon Dec 11 09:11:29 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:11:29 +0000 Subject: [Buildbot-commits] buildbot/buildbot/slave commands.py,1.74,1.75 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/slave In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21360/buildbot/slave Modified Files: commands.py Log Message: [project @ remove which(), twisted-2.0.0 and later has it] Original author: warner at lothar.com Date: 2006-12-11 09:02:04 Index: commands.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/slave/commands.py,v retrieving revision 1.74 retrieving revision 1.75 diff -u -d -r1.74 -r1.75 --- commands.py 11 Dec 2006 09:06:35 -0000 1.74 +++ commands.py 11 Dec 2006 09:11:26 -0000 1.75 @@ -7,8 +7,8 @@ from twisted.internet.protocol import ProcessProtocol from twisted.internet import reactor, defer, task from twisted.python import log, failure, runtime +from twisted.python.procutils import which -from buildbot.twcompat import which from buildbot.slave.interfaces import ISlaveCommand from buildbot.slave.registry import registerSlaveCommand From warner at users.sourceforge.net Mon Dec 11 09:11:29 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:11:29 +0000 Subject: [Buildbot-commits] buildbot/buildbot twcompat.py,1.14,1.15 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21360/buildbot Modified Files: twcompat.py Log Message: [project @ remove which(), twisted-2.0.0 and later has it] Original author: warner at lothar.com Date: 2006-12-11 09:02:04 Index: twcompat.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/twcompat.py,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- twcompat.py 11 Dec 2006 09:11:18 -0000 1.14 +++ twcompat.py 11 Dec 2006 09:11:27 -0000 1.15 @@ -10,35 +10,3 @@ import os from twisted.copyright import version - -# copied from Twisted circa 2.2.0 -def _which(name, flags=os.X_OK): - """Search PATH for executable files with the given name. - - @type name: C{str} - @param name: The name for which to search. - - @type flags: C{int} - @param flags: Arguments to L{os.access}. - - @rtype: C{list} - @return: A list of the full paths to files found, in the - order in which they were found. - """ - result = [] - exts = filter(None, os.environ.get('PATHEXT', '').split(os.pathsep)) - for p in os.environ['PATH'].split(os.pathsep): - p = os.path.join(p, name) - if os.access(p, flags): - result.append(p) - for e in exts: - pext = p + e - if os.access(pext, flags): - result.append(pext) - return result - -which = _which -try: - from twisted.python.procutils import which -except ImportError: - pass From warner at users.sourceforge.net Mon Dec 11 09:11:29 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:11:29 +0000 Subject: [Buildbot-commits] buildbot/buildbot/test test_vc.py,1.70,1.71 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/test In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21360/buildbot/test Modified Files: test_vc.py Log Message: [project @ remove which(), twisted-2.0.0 and later has it] Original author: warner at lothar.com Date: 2006-12-11 09:02:04 Index: test_vc.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_vc.py,v retrieving revision 1.70 retrieving revision 1.71 diff -u -d -r1.70 -r1.71 --- test_vc.py 11 Dec 2006 08:23:29 -0000 1.70 +++ test_vc.py 11 Dec 2006 09:11:27 -0000 1.71 @@ -8,6 +8,7 @@ from twisted.trial import unittest from twisted.internet import defer, reactor, utils, protocol, error from twisted.python import failure +from twisted.python.procutils import which #defer.Deferred.debug = True @@ -22,13 +23,11 @@ from buildbot.steps import source from buildbot.changes import changes from buildbot.sourcestamp import SourceStamp -from buildbot.twcompat import which from buildbot.scripts import tryclient from buildbot.test.runutils import SignalMixin #step.LoggedRemoteCommand.debug = True -# buildbot.twcompat will patch these into t.i.defer if necessary from twisted.internet.defer import waitForDeferred, deferredGenerator # Most of these tests (all but SourceStamp) depend upon having a set of From warner at users.sourceforge.net Mon Dec 11 09:11:36 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:11:36 +0000 Subject: [Buildbot-commits] buildbot/buildbot twcompat.py,1.15,NONE Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21413/buildbot Removed Files: twcompat.py Log Message: [project @ remove the now-empty twcompat.py] Original author: warner at lothar.com Date: 2006-12-11 09:03:45 --- twcompat.py DELETED --- From warner at users.sourceforge.net Mon Dec 11 09:11:36 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:11:36 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.814,1.815 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21413 Modified Files: ChangeLog Log Message: [project @ remove the now-empty twcompat.py] Original author: warner at lothar.com Date: 2006-12-11 09:03:45 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.814 retrieving revision 1.815 diff -u -d -r1.814 -r1.815 --- ChangeLog 11 Dec 2006 09:11:26 -0000 1.814 +++ ChangeLog 11 Dec 2006 09:11:34 -0000 1.815 @@ -1,5 +1,7 @@ 2006-12-11 Brian Warner + * buildbot/twcompat.py: remove the empty file, yay it is gone + * buildbot/twcompat.py (waitForDeferred): remove the monkeypatch, tw-2.0.0 and newer have the method we need. (getProcessOutputAndValue): same From warner at users.sourceforge.net Mon Dec 11 09:14:40 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:14:40 +0000 Subject: [Buildbot-commits] buildbot/buildbot/process step.py, 1.112, NONE step_twisted.py, 1.86, NONE Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/process In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv22599/buildbot/process Removed Files: step.py step_twisted.py Log Message: [project @ remove deprecated backwards-compatibility buildbot.process.step aliases] Original author: warner at lothar.com Date: 2006-12-11 09:08:33 --- step.py DELETED --- --- step_twisted.py DELETED --- From warner at users.sourceforge.net Mon Dec 11 09:14:40 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:14:40 +0000 Subject: [Buildbot-commits] buildbot/buildbot/test test_steps.py,1.35,1.36 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/test In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv22599/buildbot/test Modified Files: test_steps.py Log Message: [project @ remove deprecated backwards-compatibility buildbot.process.step aliases] Original author: warner at lothar.com Date: 2006-12-11 09:08:33 Index: test_steps.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_steps.py,v retrieving revision 1.35 retrieving revision 1.36 diff -u -d -r1.35 -r1.36 --- test_steps.py 11 Dec 2006 08:23:29 -0000 1.35 +++ test_steps.py 11 Dec 2006 09:14:38 -0000 1.36 @@ -340,37 +340,6 @@ return d -class ReorgCompatibility(unittest.TestCase): - def testCompat(self): - from buildbot.process.step import LogObserver, LogLineObserver - from buildbot.process.step import RemoteShellCommand - from buildbot.process.step import BuildStep, LoggingBuildStep - from buildbot.process.step import ShellCommand, WithProperties - from buildbot.process.step import TreeSize - from buildbot.process.step import Configure - from buildbot.process.step import Compile - from buildbot.process.step import Test - from buildbot.process.step import CVS - from buildbot.process.step import SVN - from buildbot.process.step import Darcs - from buildbot.process.step import Git - from buildbot.process.step import Arch - from buildbot.process.step import Bazaar - from buildbot.process.step import Mercurial - from buildbot.process.step import P4 - from buildbot.process.step import P4Sync - from buildbot.process.step import Dummy - from buildbot.process.step import FailingDummy - from buildbot.process.step import RemoteDummy - - # now trick pyflakes into thinking we care - unused = [LogObserver, LogLineObserver, RemoteShellCommand, - BuildStep, LoggingBuildStep, ShellCommand, WithProperties, - TreeSize, Configure, Compile, Test, CVS, SVN, Darcs, - Git, Arch, Bazaar, Mercurial, P4, P4Sync, - Dummy, FailingDummy, RemoteDummy] - - class _SimpleBuildStep(buildstep.BuildStep): def start(self): args = {"arg1": "value"} From warner at users.sourceforge.net Mon Dec 11 09:14:39 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Mon, 11 Dec 2006 09:14:39 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.815,1.816 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv22599 Modified Files: ChangeLog Log Message: [project @ remove deprecated backwards-compatibility buildbot.process.step aliases] Original author: warner at lothar.com Date: 2006-12-11 09:08:33 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.815 retrieving revision 1.816 diff -u -d -r1.815 -r1.816 --- ChangeLog 11 Dec 2006 09:11:34 -0000 1.815 +++ ChangeLog 11 Dec 2006 09:14:37 -0000 1.816 @@ -1,5 +1,10 @@ 2006-12-11 Brian Warner + * buildbot/process/step.py: remove this file, these names were + deprecated in 0.7.5 and are now being removed. + * buildbot/process/step_twisted.py: same + * buildbot/test/test_steps.py (ReorgCompatibility): remove test + * buildbot/twcompat.py: remove the empty file, yay it is gone * buildbot/twcompat.py (waitForDeferred): remove the monkeypatch, From warner at users.sourceforge.net Tue Dec 12 03:24:05 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Dec 2006 03:24:05 +0000 Subject: [Buildbot-commits] buildbot/buildbot/changes bonsaipoller.py, 1.3, 1.4 svnpoller.py, 1.4, 1.5 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/changes In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28878/buildbot/changes Modified Files: bonsaipoller.py svnpoller.py Log Message: [project @ remove some unused imports] Original author: warner at lothar.com Date: 2006-12-12 03:11:01 Index: bonsaipoller.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/changes/bonsaipoller.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- bonsaipoller.py 5 Nov 2006 05:13:14 -0000 1.3 +++ bonsaipoller.py 12 Dec 2006 03:24:03 -0000 1.4 @@ -1,6 +1,6 @@ import time from urllib import urlopen -from xml.dom import minidom, Node +from xml.dom import minidom from twisted.python import log, failure from twisted.internet import defer, reactor Index: svnpoller.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/changes/svnpoller.py,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- svnpoller.py 6 Dec 2006 08:46:10 -0000 1.4 +++ svnpoller.py 12 Dec 2006 03:24:03 -0000 1.5 @@ -4,8 +4,6 @@ # Changed to svn (using xml.dom.minidom) by Niklaus Giger # Hacked beyond recognition by Brian Warner -import time - from twisted.python import log from twisted.internet import defer, reactor, utils from twisted.internet.task import LoopingCall From warner at users.sourceforge.net Tue Dec 12 03:24:05 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Dec 2006 03:24:05 +0000 Subject: [Buildbot-commits] buildbot/buildbot/process builder.py, 1.41, 1.42 buildstep.py, 1.4, 1.5 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/process In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28878/buildbot/process Modified Files: builder.py buildstep.py Log Message: [project @ remove some unused imports] Original author: warner at lothar.com Date: 2006-12-12 03:11:01 Index: builder.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/process/builder.py,v retrieving revision 1.41 retrieving revision 1.42 diff -u -d -r1.41 -r1.42 --- builder.py 11 Dec 2006 09:06:34 -0000 1.41 +++ builder.py 12 Dec 2006 03:24:03 -0000 1.42 @@ -1,7 +1,5 @@ #! /usr/bin/python -import warnings - from zope.interface import implements from twisted.python import log, components from twisted.spread import pb Index: buildstep.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/process/buildstep.py,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- buildstep.py 11 Dec 2006 09:06:34 -0000 1.4 +++ buildstep.py 12 Dec 2006 03:24:03 -0000 1.5 @@ -9,7 +9,6 @@ from twisted.web.util import formatFailure from buildbot import interfaces -from buildbot import util from buildbot.status import progress from buildbot.status.builder import SUCCESS, WARNINGS, FAILURE, SKIPPED, \ EXCEPTION From warner at users.sourceforge.net Tue Dec 12 03:24:05 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Dec 2006 03:24:05 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.816,1.817 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28878 Modified Files: ChangeLog Log Message: [project @ remove some unused imports] Original author: warner at lothar.com Date: 2006-12-12 03:11:01 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.816 retrieving revision 1.817 diff -u -d -r1.816 -r1.817 --- ChangeLog 11 Dec 2006 09:14:37 -0000 1.816 +++ ChangeLog 12 Dec 2006 03:24:03 -0000 1.817 @@ -1,5 +1,14 @@ 2006-12-11 Brian Warner + * buildbot/changes/bonsaipoller.py: remove unused imports + * buildbot/changes/svnpoller.py: same + * buildbot/process/builder.py: same + * buildbot/process/buildstep.py: same + * buildbot/slave/bot.py: hush pyflakes warning + * buildbot/status/tests.py: remove unused imports + * buildbot/status/tinderbox.py: same + * buildbot/steps/python_twisted.py: same + * buildbot/process/step.py: remove this file, these names were deprecated in 0.7.5 and are now being removed. * buildbot/process/step_twisted.py: same From warner at users.sourceforge.net Tue Dec 12 03:24:05 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Dec 2006 03:24:05 +0000 Subject: [Buildbot-commits] buildbot/buildbot/slave bot.py,1.24,1.25 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/slave In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28878/buildbot/slave Modified Files: bot.py Log Message: [project @ remove some unused imports] Original author: warner at lothar.com Date: 2006-12-12 03:11:01 Index: bot.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/slave/bot.py,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- bot.py 25 Nov 2006 07:57:32 -0000 1.24 +++ bot.py 12 Dec 2006 03:24:03 -0000 1.25 @@ -11,8 +11,11 @@ from buildbot.util import now from buildbot.pbutil import ReconnectingPBClientFactory from buildbot.slave import registry -# make sure the standard commands get registered +# make sure the standard commands get registered. This import is performed +# for its side-effects. from buildbot.slave import commands +# and make pyflakes think we aren't being stupid +commands = commands class NoCommandRunning(pb.Error): pass From warner at users.sourceforge.net Tue Dec 12 03:24:06 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Dec 2006 03:24:06 +0000 Subject: [Buildbot-commits] buildbot/buildbot/steps python_twisted.py, 1.2, 1.3 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/steps In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28878/buildbot/steps Modified Files: python_twisted.py Log Message: [project @ remove some unused imports] Original author: warner at lothar.com Date: 2006-12-12 03:11:01 Index: python_twisted.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/steps/python_twisted.py,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- python_twisted.py 17 Sep 2006 20:35:49 -0000 1.2 +++ python_twisted.py 12 Dec 2006 03:24:03 -0000 1.3 @@ -2,7 +2,7 @@ from twisted.python import log -from buildbot.status import tests, builder +from buildbot.status import builder from buildbot.status.builder import SUCCESS, FAILURE, WARNINGS, SKIPPED from buildbot.process.buildstep import LogLineObserver, OutputProgressObserver from buildbot.process.buildstep import RemoteShellCommand From warner at users.sourceforge.net Tue Dec 12 03:24:05 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Dec 2006 03:24:05 +0000 Subject: [Buildbot-commits] buildbot/buildbot/status tests.py, 1.1, 1.2 tinderbox.py, 1.4, 1.5 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/status In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28878/buildbot/status Modified Files: tests.py tinderbox.py Log Message: [project @ remove some unused imports] Original author: warner at lothar.com Date: 2006-12-12 03:11:01 Index: tests.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/tests.py,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- tests.py 25 Apr 2003 23:59:50 -0000 1.1 +++ tests.py 12 Dec 2006 03:24:03 -0000 1.2 @@ -2,7 +2,6 @@ from twisted.web import resource from twisted.web.error import NoResource -from twisted.web.html import PRE # these are our test result types. Steps are responsible for mapping results # into these values. Index: tinderbox.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/status/tinderbox.py,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- tinderbox.py 11 Dec 2006 09:06:35 -0000 1.4 +++ tinderbox.py 12 Dec 2006 03:24:03 -0000 1.5 @@ -6,7 +6,7 @@ from twisted.internet import defer from buildbot import interfaces -from buildbot.status import base, mail +from buildbot.status import mail from buildbot.status.builder import SUCCESS, WARNINGS import zlib, bz2, base64 From warner at users.sourceforge.net Tue Dec 12 03:28:16 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Dec 2006 03:28:16 +0000 Subject: [Buildbot-commits] buildbot/buildbot/slave trial.py,1.3,NONE Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/slave In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv30696/buildbot/slave Removed Files: trial.py Log Message: [project @ remove unfinished TrialReporter] Original author: warner at lothar.com Date: 2006-12-12 03:22:35 --- trial.py DELETED --- From warner at users.sourceforge.net Tue Dec 12 03:28:16 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Dec 2006 03:28:16 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.817,1.818 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv30696 Modified Files: ChangeLog Log Message: [project @ remove unfinished TrialReporter] Original author: warner at lothar.com Date: 2006-12-12 03:22:35 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.817 retrieving revision 1.818 diff -u -d -r1.817 -r1.818 --- ChangeLog 12 Dec 2006 03:24:03 -0000 1.817 +++ ChangeLog 12 Dec 2006 03:28:14 -0000 1.818 @@ -1,5 +1,10 @@ 2006-12-11 Brian Warner + * buildbot/slave/trial.py: remove an unused/incomplete/buggy file, + that was meant to provide a special Reporter to run inside trial + and give the buildslave lots of machine-readable status. We never + finished this project. + * buildbot/changes/bonsaipoller.py: remove unused imports * buildbot/changes/svnpoller.py: same * buildbot/process/builder.py: same From warner at users.sourceforge.net Tue Dec 12 03:33:44 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Dec 2006 03:33:44 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.818,1.819 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv32684 Modified Files: ChangeLog Log Message: [project @ remove more unused imports] Original author: warner at lothar.com Date: 2006-12-12 03:29:05 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.818 retrieving revision 1.819 diff -u -d -r1.818 -r1.819 --- ChangeLog 12 Dec 2006 03:28:14 -0000 1.818 +++ ChangeLog 12 Dec 2006 03:33:42 -0000 1.819 @@ -1,5 +1,8 @@ 2006-12-11 Brian Warner + * buildbot/clients/debug.py: remove an unnecessary gnome.ui import + * buildbot/clients/gtkPanes.py: remove unused import + * buildbot/slave/trial.py: remove an unused/incomplete/buggy file, that was meant to provide a special Reporter to run inside trial and give the buildslave lots of machine-readable status. We never From warner at users.sourceforge.net Tue Dec 12 03:33:44 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Dec 2006 03:33:44 +0000 Subject: [Buildbot-commits] buildbot/buildbot/clients debug.py, 1.6, 1.7 gtkPanes.py, 1.12, 1.13 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/clients In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv32684/buildbot/clients Modified Files: debug.py gtkPanes.py Log Message: [project @ remove more unused imports] Original author: warner at lothar.com Date: 2006-12-12 03:29:05 Index: debug.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/clients/debug.py,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- debug.py 11 Dec 2006 04:40:58 -0000 1.6 +++ debug.py 12 Dec 2006 03:33:42 -0000 1.7 @@ -6,7 +6,7 @@ from twisted.python import util from twisted.spread import pb from twisted.cred import credentials -import gtk, gtk.glade, gnome.ui +import gtk, gtk.glade import sys, re class DebugWidget: Index: gtkPanes.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/clients/gtkPanes.py,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- gtkPanes.py 2 Jun 2006 03:32:29 -0000 1.12 +++ gtkPanes.py 12 Dec 2006 03:33:42 -0000 1.13 @@ -3,8 +3,6 @@ from twisted.internet import gtk2reactor gtk2reactor.install() -from twisted.internet import reactor - import sys, time import pygtk From warner at users.sourceforge.net Tue Dec 12 03:33:55 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Dec 2006 03:33:55 +0000 Subject: [Buildbot-commits] buildbot/buildbot/process maxq.py,1.7,NONE Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/process In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv32717/buildbot/process Removed Files: maxq.py Log Message: [project @ remove old process/maxq.py, it now lives in buildbot.steps.maxq] Original author: warner at lothar.com Date: 2006-12-12 03:30:36 --- maxq.py DELETED --- From warner at users.sourceforge.net Tue Dec 12 03:33:55 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Dec 2006 03:33:55 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.819,1.820 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv32717 Modified Files: ChangeLog Log Message: [project @ remove old process/maxq.py, it now lives in buildbot.steps.maxq] Original author: warner at lothar.com Date: 2006-12-12 03:30:36 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.819 retrieving revision 1.820 diff -u -d -r1.819 -r1.820 --- ChangeLog 12 Dec 2006 03:33:42 -0000 1.819 +++ ChangeLog 12 Dec 2006 03:33:53 -0000 1.820 @@ -1,5 +1,8 @@ 2006-12-11 Brian Warner + * buildbot/process/maxq.py: remove this, the functionality now + lives in buildbot.steps.maxq + * buildbot/clients/debug.py: remove an unnecessary gnome.ui import * buildbot/clients/gtkPanes.py: remove unused import From warner at users.sourceforge.net Tue Dec 12 03:44:39 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Dec 2006 03:44:39 +0000 Subject: [Buildbot-commits] buildbot ChangeLog,1.820,1.821 Message-ID: Update of /cvsroot/buildbot/buildbot In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv4469 Modified Files: ChangeLog Log Message: [project @ mark buildbot.changes.freshcvsmail as deprecated] Original author: warner at lothar.com Date: 2006-12-12 03:43:28 Index: ChangeLog =================================================================== RCS file: /cvsroot/buildbot/buildbot/ChangeLog,v retrieving revision 1.820 retrieving revision 1.821 diff -u -d -r1.820 -r1.821 --- ChangeLog 12 Dec 2006 03:33:53 -0000 1.820 +++ ChangeLog 12 Dec 2006 03:44:37 -0000 1.821 @@ -1,5 +1,10 @@ 2006-12-11 Brian Warner + * buildbot/changes/freshcvsmail.py: mark this file as deprecated, + scheduled for removal in 0.7.7 . The FCMaildirSource was moved to + buildbot.changes.mail a long time ago, but I forgot to add the + DeprecationWarning until now. + * buildbot/process/maxq.py: remove this, the functionality now lives in buildbot.steps.maxq From warner at users.sourceforge.net Tue Dec 12 03:44:39 2006 From: warner at users.sourceforge.net (Brian Warner) Date: Tue, 12 Dec 2006 03:44:39 +0000 Subject: [Buildbot-commits] buildbot/buildbot/changes freshcvsmail.py, 1.3, 1.4 Message-ID: Update of /cvsroot/buildbot/buildbot/buildbot/changes In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv4469/buildbot/changes Modified Files: freshcvsmail.py Log Message: [project @ mark buildbot.changes.freshcvsmail as deprecated] Original author: warner at lothar.com Date: 2006-12-12 03:43:28 Index: freshcvsmail.py =================================================================== RCS file: /cvsroot/buildbot/buildbot/buildbot/changes/freshcvsmail.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- freshcvsmail.py 28 Jul 2003 07:22:00 -0000 1.3 +++ freshcvsmail.py 12 Dec 2006 03:44:37 -0000 1.4 @@ -2,4 +2,9 @@ # leftover import for compatibility +import warnings + +warnings.warn("buildbot.changes.freshcvsmail is deprecated as of 0.7.6 . Please import buildbot.changes.mail.FCMaildirSource instead. This compatibility import will be removed in 0.7.7", + DeprecationWarning) + from buildbot.changes.mail import FCMaildirSource