зеркало из https://github.com/mozilla/pjs.git
7332 строки
296 KiB
Plaintext
7332 строки
296 KiB
Plaintext
|
2006-12-10 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py (version): Releasing buildbot-0.7.5
|
||
|
* docs/buildbot.texinfo: set version to match
|
||
|
|
||
|
2006-12-10 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* 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
|
||
|
|
||
|
* 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()
|
||
|
|
||
|
2006-12-09 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* 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
|
||
|
|
||
|
* 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 <warner@lothar.com>
|
||
|
|
||
|
* 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 <warner@lothar.com>
|
||
|
|
||
|
* 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.
|
||
|
(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
|
||
|
|
||
|
2006-11-26 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/buildbot.texinfo (Build Properties): remind users that
|
||
|
WithProperties must appear in a command= list, not as a top-level
|
||
|
instance.
|
||
|
* buildbot/steps/shell.py (ShellCommand.start): and assert that
|
||
|
we're sending a list or a single string to the RemoteShellCommand
|
||
|
|
||
|
* buildbot/scheduler.py (Nightly): Improve docs slightly.
|
||
|
|
||
|
* buildbot/scripts/startup.py (start): skip the whole
|
||
|
watch-the-logfile thing under windows, since it needs os.fork()
|
||
|
|
||
|
* buildbot/scripts/runner.py (restart): remove the old message
|
||
|
that got printed after the buildbot was restarted.. it most cases
|
||
|
it didn't get printed at the right time anyways
|
||
|
|
||
|
2006-11-25 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/runner.py: enhance 'start' and 'restart' to
|
||
|
follow twistd.log and print lines until the process has started
|
||
|
started properly. For the buildmaster, this means until the config
|
||
|
file has been parsed and accepted. For the buildslave, this means
|
||
|
until we've connected to the master. We give up after 5 seconds in
|
||
|
any case. Helpful error messages and troubleshooting suggestions
|
||
|
are printed when we don't see a successful startup. This closes the
|
||
|
remainder of SF#1517975.
|
||
|
* buildbot/scripts/startup.py: moved app startup code to here
|
||
|
* buildbot/scripts/logwatcher.py: utility class to follow log
|
||
|
* buildbot/scripts/reconfig.py: rewrite to use LogWatcher
|
||
|
* buildbot/slave/bot.py: announce our BuildSlaveness to the log
|
||
|
so the LogWatcher can tell the difference between a buildmaster
|
||
|
and a buildslave
|
||
|
|
||
|
2006-11-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: update to match the version
|
||
|
in use on twistedmatrix.com
|
||
|
(IRC): re-enable IRC bot. The 'irc.us.freenode.net' hostname I
|
||
|
was using before stopped working, but 'irc.freenode.net' works
|
||
|
just fine.
|
||
|
|
||
|
* buildbot/scripts/runner.py (run): oops, forgot to enable the new
|
||
|
'reconfig' command
|
||
|
|
||
|
* buildbot/clients/base.py (TextClient.not_connected): upon
|
||
|
UnauthorizedLogin failures, remind the user to connect to the
|
||
|
PBListener port instead of the slaveport.
|
||
|
(TextClient.disconnected): shut down more quietly
|
||
|
* docs/buildbot.texinfo (statuslog): add another reminder
|
||
|
|
||
|
* buildbot/scripts/runner.py (Options.subCommands): rename
|
||
|
'buildbot sighup DIR' to 'buildbot reconfig DIR', but keep
|
||
|
'sighup' as an alias.
|
||
|
* buildbot/scripts/reconfig.py (Reconfigurator): enhance the
|
||
|
reconfig command to follow twistd.log and print all of the lines
|
||
|
from the start of the config-file reload to its completion. This
|
||
|
should make it a lot easier to discover bugs in the config file.
|
||
|
Use --quiet to disable this behavior. This addresses half of
|
||
|
SF#1517975, the other half will be to add this same utility to
|
||
|
'buildbot start' and 'buildbot restart'.
|
||
|
* docs/buildbot.texinfo (Loading the Config File): same
|
||
|
(Shutdown): same
|
||
|
|
||
|
* buildbot/interfaces.py (IBuilderControl.forceBuild): remove this
|
||
|
method, it has been deprecated for a long time. Use
|
||
|
IBuilderControl.requestBuild instead.
|
||
|
* buildbot/process/builder.py (BuilderControl.forceBuild): remove
|
||
|
* buildbot/master.py (BotPerspective.perspective_forceBuild): same
|
||
|
* buildbot/slave/bot.py (Bot.debug_forceBuild): same
|
||
|
* buildbot/test/test_control.py (Force.testForce): same
|
||
|
* buildbot/test/test_run.py: use requestBuild instead
|
||
|
|
||
|
* buildbot/clients/debug.py: replace 'Force Build' button with
|
||
|
'Request Build' (which just adds one to the queue), add Ping
|
||
|
Builder, add branch/revision fields to Request Build.
|
||
|
* buildbot/clients/debug.glade: same
|
||
|
* buildbot/master.py: update interface to match. This creates an
|
||
|
incompatibility between new debugclients and old buildmasters.
|
||
|
|
||
|
* buildbot/process/builder.py (Builder._attached): delay the call
|
||
|
to maybeStartBuild for a reactor turn, to avoid starting a build
|
||
|
in the middle of a reconfig (say, if the new Builder uses a new
|
||
|
slave which is already connected).
|
||
|
|
||
|
2006-11-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_transfer.py: appease pyflakes
|
||
|
* buildbot/test/test_steps.py: same
|
||
|
|
||
|
* buildbot/test/test_bonsaipoller.py: remove the 'import *' that
|
||
|
keeps pyflakes from finding undefined names
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig_Builders): changing a
|
||
|
Builder no longer induces a disconnect/reconnect cycle. This means
|
||
|
that any builds currently in progress will not be interrupted, and
|
||
|
any builds which are queued in the Builder will not be lost. This
|
||
|
is implemented by having the new Builder extract the state (i.e.
|
||
|
all pending Builds and any desired SlaveBuilders) from the old
|
||
|
Builder.
|
||
|
(BotPerspective): refactor. The BotPerspective no longer keeps
|
||
|
track of all the Builders that want to use this slave; instead, it
|
||
|
asks the BotMaster each time it needs this list. This removes
|
||
|
addBuilder and removeBuilder. Clean up attached() to acquire all
|
||
|
the slave's information in a more atomic fashion. updateSlave() is
|
||
|
now the way to make sure the slave is using the right set of
|
||
|
Builders: just call it after everything else has been
|
||
|
reconfigured.
|
||
|
(BotMaster): refactor, removing addBuilder/removeBuilder and
|
||
|
replacing them with an all-at-once setBuilders() call.
|
||
|
|
||
|
* buildbot/test/test_slaves.py (Reconfig): new test case to
|
||
|
exercise this functionality
|
||
|
* buildbot/steps/dummy.py (Wait): new dummy BuildStep for the test
|
||
|
* buildbot/slave/commands.py (WaitCommand): same
|
||
|
|
||
|
* docs/buildbot.texinfo (Loading the Config File): document the
|
||
|
changes
|
||
|
|
||
|
* buildbot/process/builder.py (SlaveBuilder): refactor. Allow the
|
||
|
SlaveBuilder to have its parent Builder changed.
|
||
|
(SlaveBuilder.isAvailable): new method to give access to state,
|
||
|
which is now a private attribute
|
||
|
(SlaveBuilder.buildStarted,buildFinished): new methods to inform
|
||
|
the SlaveBuilder about how it is being used. These methods update
|
||
|
its internal state. buildFinished() is now the place that invokes
|
||
|
maybeStartBuild() on its parent Builder.
|
||
|
(Builder.consumeTheSoulOfYourPredecessor): new method to allow a
|
||
|
new Builder to take over for an old one, transferring state from
|
||
|
the old one.
|
||
|
(Buider): refactor the way that SlaveBuilders are used to match,
|
||
|
giving them a bit more autonomy.
|
||
|
(Builder.buildFinished): this no longer calls maybeStartBuild():
|
||
|
instead the SlaveBuilder calls it on whoever its parent Builder is
|
||
|
at the time. This way, when an old Builder is replaced by a new
|
||
|
one, and there was a build in progress during the transition, when
|
||
|
that build finishes, it will be the new Builder that is told about
|
||
|
the newly available slave so it can start a new build.
|
||
|
|
||
|
* buildbot/process/base.py (Build.startBuild._release_slave): when
|
||
|
the Build finishes, tell the SlaveBuilder that they've been
|
||
|
released.
|
||
|
|
||
|
* buildbot/status/builder.py (SlaveStatus): add some new setter
|
||
|
methods for use by BotPerspective, to keep some attributes more
|
||
|
private
|
||
|
|
||
|
* buildbot/slave/bot.py (Bot.remote_getDirs): this is no longer
|
||
|
called by the buildmaster.
|
||
|
(Bot.setBuilderList): instead, we locally announce any leftover
|
||
|
directories based upon which Builders we were told about. The
|
||
|
master doesn't really care; it's the local admin who may or may not
|
||
|
wish to delete them.
|
||
|
|
||
|
|
||
|
* contrib/svn_buildbot.py: use /usr/bin/python, not /usr/bin/env,
|
||
|
to allow use of python2.4 or whatever. This tool still requires
|
||
|
python2.3 or newer.
|
||
|
|
||
|
2006-11-19 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS (IStatusLog.readlines): more news items
|
||
|
|
||
|
2006-11-18 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: start collecting items for the next release.
|
||
|
|
||
|
2006-11-04 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/changes/bonsaipoller.py: apply updates from Ben
|
||
|
Hearsum. Closes SF#1590310.
|
||
|
* buildbot/test/test_bonsaipoller.py: and tests
|
||
|
|
||
|
* buildbot/status/tinderbox.py
|
||
|
(TinderboxMailNotifier.buildMessage): send out a "testfailed"
|
||
|
status when the build results in WARNINGS. Patch from Dave
|
||
|
Liebreich. Closes SF#1587352.
|
||
|
|
||
|
* buildbot/slave/commands.py (LogFileWatcher.poll): overcome a
|
||
|
linux-vs-osx behavior difference w.r.t. reading from files that
|
||
|
have reached EOF. This should fix LogFileWatcher on OS-X. Thanks
|
||
|
to Mark Rowe for the patch.
|
||
|
|
||
|
2006-10-15 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/interfaces.py (IStatus.getURLForThing): oops, the
|
||
|
method name was misspelled in the interface definition. Thanks to
|
||
|
Roy Rapoport for the catch.
|
||
|
|
||
|
2006-10-13 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/buildbot.texinfo (Adding LogObservers): update sample code
|
||
|
to match the great Steps renaming
|
||
|
|
||
|
* buildbot/steps/transfer.py (FileUpload.start): Fix stupid error.
|
||
|
Maybe I should run my own unit tests before recording a big
|
||
|
change. Good thing I've got a buildbot to remind me.
|
||
|
|
||
|
2006-10-12 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/steps/transfer.py: rework __init__ and args setup
|
||
|
* buildbot/slave/commands.py (SlaveFileDownloadCommand): minor
|
||
|
docs improvements
|
||
|
* buildbot/slave/commands.py (SlaveFileDownloadCommand.setup):
|
||
|
when opening the target file, only catch IOError (to report via
|
||
|
stderr/rc!=0), let the others be reported as normal exceptions
|
||
|
|
||
|
2006-10-08 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* contrib/svn_watcher.py: fix security holes by using proper argv
|
||
|
arrays and subprocess.Popen() rather than commands.getoutput().
|
||
|
Thanks to Nick Mathewson for the patch. Note that svn_watcher.py
|
||
|
is deprecated in favor of buildbot/changes/svnpoller.py, and will
|
||
|
probably be removed by the next release.
|
||
|
* CREDITS: add Nick
|
||
|
|
||
|
2006-10-04 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/steps/python.py (PyFlakes.createSummary): skip any
|
||
|
initial lines that weren't emitted by pyflakes. When the pyflakes
|
||
|
command is run under a Makefile, 'make' will echo the command it
|
||
|
runs to stdio, and that was getting logged as a "misc" warning.
|
||
|
* buildbot/test/test_steps.py (Python.testPyFlakes2): test it
|
||
|
* buildbot/test/test_steps.py (testPyFlakes3): another test
|
||
|
|
||
|
2006-10-01 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/html.py (HtmlResource.render): if we get a
|
||
|
unicode object from our content() method, encode it into utf-8
|
||
|
like we've been claiming to all along. This allows the comments
|
||
|
and author names from svnpoller.py to be delivered properly.
|
||
|
|
||
|
* buildbot/changes/svnpoller.py (SvnSource.create_changes):
|
||
|
de-unicodify filenames before creating the Change, because the
|
||
|
rest of buildbot is unlikely to handle them well. Leave the 'who'
|
||
|
field as a unicode object.. I don't think there's anything that
|
||
|
will break very soon, and it will probably nudge us towards
|
||
|
accepting unicode everywhere sooner or later. Stop using the
|
||
|
"date" field that comes out of SVN, since it is using the
|
||
|
repository's clock (and timezone) and what we care about is the
|
||
|
buildmaster's (otherwise Changes from the future show up later
|
||
|
than the builds they triggered).
|
||
|
* buildbot/test/test_svnpoller.py (Everything.test1): match the
|
||
|
change to .when
|
||
|
|
||
|
* buildbot/changes/svnpoller.py (SvnSource): added Niklaus Giger's
|
||
|
Suvbersion repository polling ChangeSource. I've hacked it up
|
||
|
considerably: any bugs are entirely my own fault. Thank you
|
||
|
Niklaus!
|
||
|
* buildbot/test/test_svnpoller.py: tests for it
|
||
|
* docs/buildbot.texinfo (SvnSource): document it
|
||
|
|
||
|
2006-09-30 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scheduler.py (Periodic): submit a reason= to the
|
||
|
BuildSet to indicate which Scheduler triggered the build. Thanks
|
||
|
to Mateusz Loskot for the suggestion.
|
||
|
(Nightly): same
|
||
|
* buildbot/test/test_scheduler.py (Scheduling.testPeriodic1): test it
|
||
|
|
||
|
* buildbot/changes/p4poller.py (P4Source): some minor stylistic
|
||
|
changes: set self.loop in __init__, remove unused volatile=
|
||
|
|
||
|
* docs/buildbot.texinfo (.buildbot config directory): add more
|
||
|
docs on the .buildbot/options keys used by "buildbot try"
|
||
|
* buildbot/scripts/tryclient.py (Try.createJob): remove dead code
|
||
|
(Try.deliverJob): same
|
||
|
|
||
|
* buildbot/changes/bonsaipoller.py (BonsaiParser): more updates
|
||
|
from Robert Helmer
|
||
|
(BonsaiPoller): same
|
||
|
|
||
|
* buildbot/slave/commands.py (LogFileWatcher.stop): explicitly
|
||
|
close the filehandle when we stop watching the file. Before, the
|
||
|
filehandle was only closed when the LogFileWatcher was
|
||
|
garbage-collected, which could be quite a while in the future. If
|
||
|
it was still open by the time the next build started, windows will
|
||
|
refuse to let the new build delete the old build/ directory. Fixes
|
||
|
SF#1568415, thanks to <scmikes>, <FireMoth>, and <radix> on
|
||
|
#twisted for the catch.
|
||
|
|
||
|
2006-09-29 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/tinderbox.py (TinderboxMailNotifier): updates
|
||
|
from Robert Helmer
|
||
|
|
||
|
2006-09-25 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py: the new buildbot.steps module wasn't being installed.
|
||
|
Thanks to Jose Dapena Paz for the catch, fixes SF#1560631.
|
||
|
(testmsgs): add the extra stuff from buildbot/test/* so you can
|
||
|
run unit tests on an installed copy of buildbot, not just from
|
||
|
the source tree.
|
||
|
|
||
|
* contrib/svn_buildbot.py (ChangeSender.getChanges): the first *4*
|
||
|
columns of 'svnlook changed' output contain status information, so
|
||
|
strip [:4] instead of [:6]. Depending upon what the status flags
|
||
|
were, this would sometimes lead to mangled filenames. Thanks to
|
||
|
Riccardo Magliocchetti for the patch. Closes SF#1545146.
|
||
|
|
||
|
* buildbot/steps/source.py (Monotone): initial Monotone support,
|
||
|
contributed by Nathaniel Smith. Still needs docs and tests, but
|
||
|
this code has been in use on the Monotone buildbot for a long
|
||
|
time now.
|
||
|
* buildbot/slave/commands.py (Monotone): slave-side support
|
||
|
* buildbot/changes/monotone.py (MonotoneSource): polling change
|
||
|
source
|
||
|
|
||
|
* buildbot/changes/bonsaipoller.py (BonsaiPoller): Ben also
|
||
|
contributed a Change Source that polls a Bonsai server (a
|
||
|
kind of web-based viewcvs CGI script).
|
||
|
|
||
|
* buildbot/status/tinderbox.py (TinderboxMailNotifier): Ben
|
||
|
Hearsum contributed a status plugin which sends email in the same
|
||
|
format that Tinderbox does: this allows a number of tinderbox
|
||
|
tools to be driven by Buildbot instead. Thanks Ben!
|
||
|
|
||
|
2006-09-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/changes/mail.py (parseBonsaiMail): fix the parser.
|
||
|
Thanks to Robert Helmer for the patch.
|
||
|
|
||
|
* buildbot/process/base.py (Build.setupSlaveBuilder): tell our
|
||
|
BuildStatus about the buildslave name at the *beginning* of the
|
||
|
build, rather than at the end. Thanks to Alexander Lorenz for the
|
||
|
patch.
|
||
|
* buildbot/status/html.py (StatusResourceBuild.body): always
|
||
|
include the slavename in the build page, not just when the build
|
||
|
has finished.
|
||
|
* buildbot/status/mail.py (MailNotifier.buildMessage): include the
|
||
|
slavename in the email message
|
||
|
|
||
|
2006-09-21 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/sample.cfg: update to use new BuildStep classes
|
||
|
from buildbot.steps
|
||
|
* docs/examples/glib_master.cfg: same
|
||
|
* docs/examples/hello.cfg: same
|
||
|
* docs/examples/twisted_master.cfg: same, update to current usage
|
||
|
|
||
|
2006-09-19 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/steps/python.py (PyFlakes): refactor, add summary logs
|
||
|
(PyFlakes.createSummary): make it compatible with python-2.2
|
||
|
|
||
|
* buildbot/test/test_steps.py (Python.testPyFlakes): add a test
|
||
|
for at least the output-parsing parts of PyFlakes
|
||
|
|
||
|
2006-09-18 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/steps/python.py: oops, fix import of StringIO
|
||
|
|
||
|
2006-09-17 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py (VCBase._do_vctest_update_retry_1): it
|
||
|
turns out that SVN-1.4.0 doesn't fail to update once you've
|
||
|
replaced a file with a directory, unlike older versions of SVN and
|
||
|
pretty much every other VC tool we support. Since what we really
|
||
|
care about is that the update succeeds anyway, stop checking that
|
||
|
the tree got clobbered and just assert that the build succeeded.
|
||
|
(VCBase.printLogs): add a utility function for debugging
|
||
|
|
||
|
* buildbot/process/step.py: oops, added extra imports by mistake
|
||
|
|
||
|
* buildbot/changes/p4poller.py (P4Source._process_describe): do an
|
||
|
rstrip() on the first line coming out of the 'p4 describe'
|
||
|
process, to remove the stray ^M that Wade Brainerd reports seeing
|
||
|
in the 'when' field. Fixes SF#1555985.
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): improve the error
|
||
|
message logged when c['schedulers'] is not right
|
||
|
* buildbot/scheduler.py (Scheduler.__init__): improve error
|
||
|
message when a Scheduler() is created with the wrong arguments
|
||
|
* buildbot/test/test_config.py (ConfigTest.testSchedulerErrors):
|
||
|
verify that these error messages are emitted
|
||
|
|
||
|
* buildbot/process/buildstep.py: rename step.py to buildstep.py .
|
||
|
The idea is that all the base classes (like BuildStep and
|
||
|
RemoteCommand and LogObserver) live in b.p.buildstep, and b.p.step
|
||
|
will be a leftover backwards-compatibility file that only contains
|
||
|
aliases for the steps that were moved out to buildbot.steps.*
|
||
|
* lots: change imports to match
|
||
|
* buildbot/process/step.py: add a DeprecationWarning if it ever
|
||
|
gets imported
|
||
|
|
||
|
2006-09-12 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scheduler.py (Scheduler.__init__): make sure that
|
||
|
builderNames= is actually a sequence, since if you happen to give
|
||
|
it a single builder-specification dictionary instead, it won't get
|
||
|
caught by the existing assert. Thanks to Brett Neely for the
|
||
|
catch.
|
||
|
|
||
|
* buildbot/steps/python.py (BuildEPYDoc, PyFlakes): add new steps. No
|
||
|
tests yet, alas.
|
||
|
* docs/buildbot.texinfo (Python BuildSteps): document them
|
||
|
(sendchange): include a link to PBChangeSource, since you need one
|
||
|
|
||
|
* buildbot/steps/shell.py: clean up test-case-name line, remove some
|
||
|
unnecessary imports
|
||
|
* buildbot/steps/dummy.py: same
|
||
|
|
||
|
2006-09-08 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/steps/transfer.py (FileUpload,FileDownload): new
|
||
|
BuildStep which lets you transfer files from the master to the
|
||
|
slave or vice versa. Thanks to Albert Hofkamp for the original
|
||
|
patch. Fixes SF#1504631.
|
||
|
* buildbot/slave/commands.py (SlaveFileUploadCommand): slave-side
|
||
|
support for it
|
||
|
(SlaveFileDownloadCommand): same
|
||
|
* docs/buildbot.texinfo (Transferring Files): document it
|
||
|
* buildbot/test/test_transfer.py: test it
|
||
|
* buildbot/test/runutils.py (StepTester): new utility class for
|
||
|
testing BuildSteps and RemoteCommands without Builds or Bots or PB
|
||
|
* buildbot/test/test_steps.py (CheckStepTester): validate that the
|
||
|
utility class works
|
||
|
|
||
|
* buildbot/interfaces.py (IStatusLog.readlines): make it easier to
|
||
|
walk through StatusLogs one line at a time, mostly for the benefit
|
||
|
of ShellCommand.createSummary methods. You can either walk through
|
||
|
STDOUT or STDERR, but the default is STDOUT.
|
||
|
|
||
|
* buildbot/status/builder.py (LogFile.readlines): implement it.
|
||
|
Note that this is not yet memory-efficient, it just pulls the
|
||
|
whole file into RAM and then splits it up with a StringIO.
|
||
|
Eventually this should be a generator that only pulls chunks from
|
||
|
disk as necessary.
|
||
|
* buildbot/test/test_status.py (Log.testReadlines): test it
|
||
|
|
||
|
* docs/buildbot.texinfo: update to match changes
|
||
|
* buildbot/process/factory.py: stop using old definitions
|
||
|
* buildbot/process/process_twisted.py: same
|
||
|
* buildbot/test/test_*.py: same
|
||
|
|
||
|
* buildbot/process/step_twisted.py: move definition to..
|
||
|
* buildbot/steps/python_twisted.py: .. here, unfortunately python's
|
||
|
relative-import mechanisms prevent this from being named 'twisted'
|
||
|
or 'python/twisted' as I would have preferred.
|
||
|
|
||
|
* buildbot/process/maxq.py: move definition to..
|
||
|
* buildbot/steps/maxq.py: .. here, leave a compatibility import
|
||
|
|
||
|
* buildbot/process/step.py: split the user-visible BuildSteps into
|
||
|
separate files, all under buildbot/steps/
|
||
|
* buildbot/steps/source.py: this holds VC-checkout steps like SVN
|
||
|
* buildbot/steps/shell.py: this holds ShellCommand and friends
|
||
|
* buildbot/steps/dummy.py: this holds the testing steps like Dummy
|
||
|
|
||
|
2006-09-05 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* lots: run pyflakes, removed a lot of unused imports, changed the
|
||
|
form of some conditional imports to remove false pyflakes
|
||
|
warnings. There are still a number of warnings left, mostly from
|
||
|
imports that are done for their side-effects.
|
||
|
* buildbot/test/test_vc.py: import twisted.python.failure, since it
|
||
|
was missing
|
||
|
|
||
|
2006-08-26 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_locks.py (Unit.testLater): make the tests
|
||
|
compatible with twisted-1.3.0, for some reason I just can't seem
|
||
|
to let go of the past.
|
||
|
|
||
|
2006-08-25 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/mail.py (MailNotifier.__init__): fix typo in docs
|
||
|
|
||
|
* buildbot/process/step.py (LoggingBuildStep.startCommand): set up
|
||
|
all logfiles= in startCommand(), rather than in start() . This
|
||
|
makes it easier to have the 'stdio' log come before any secondary
|
||
|
logfiles, which I feel makes the waterfall display more
|
||
|
understandable.
|
||
|
(LoggingBuildStep.setupLogfiles): move the addLog/cmd.useLog code
|
||
|
from ShellCommand up into LoggingBuildStep
|
||
|
(LoggingBuildStep.__init__): move the handling of logfiles= from
|
||
|
ShellCommand up to LoggingBuildStep, because startCommand is
|
||
|
provided by LoggingBuildStep, whereas start() was specific to
|
||
|
subclasses like ShellCommand and Source. This removes code
|
||
|
duplication in those subclasses.
|
||
|
(ShellCommand.__init__): same
|
||
|
(ShellCommand.checkForOldSlaveAndLogfiles): split out the check
|
||
|
for a slave that's too old to understand logfiles= into a separate
|
||
|
method, so it can live in ShellCommand. The rest of
|
||
|
setupLogfiles() can live in LoggingBuildStep.
|
||
|
|
||
|
2006-08-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/locks.py (BaseLock): you can now configure Locks to
|
||
|
allow multiple simultaneous owners. They still default to
|
||
|
maxCount=1. Fixes SF#1434997. Thanks to James Knight (foom) for
|
||
|
the patch.
|
||
|
* docs/buildbot.texinfo (Interlocks): document the new options
|
||
|
* buildbot/test/test_locks.py: add a bunch of new unit tests
|
||
|
* buildbot/process/base.py (Build.acquireLocks): locks now offer
|
||
|
waitUntilMaybeAvailable, not waitUntilAvailable
|
||
|
* buildbot/process/step.py (BuildStep.acquireLocks): same
|
||
|
* buildbot/master.py (BotMaster.getLockByID): real locks now use
|
||
|
the whole lockid in their constructor, not just the name. Also,
|
||
|
keep track of which real locks we've handed out by the full
|
||
|
lockid, not just class+name, otherwise changing just the maxCount=
|
||
|
in the master.cfg file would not actually cause a behavioral
|
||
|
change
|
||
|
|
||
|
2006-08-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py (version): bump to 0.7.4+ while between
|
||
|
releases
|
||
|
* docs/buildbot.texinfo: same
|
||
|
|
||
|
2006-08-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py (version): Releasing buildbot-0.7.4
|
||
|
* docs/buildbot.texinfo: set version to match
|
||
|
* NEWS: update for 0.7.4
|
||
|
* buildbot/slave/commands.py (command_version): mention that this
|
||
|
version (2.1) was released with buildbot-0.7.4
|
||
|
|
||
|
2006-08-22 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* README: update
|
||
|
|
||
|
* CREDITS: new file, list of people who have helped. Thanks!
|
||
|
* MANIFEST.in: ship it
|
||
|
|
||
|
* MANIFEST.in: stop shipping the old PyCon-2003 paper.. with the
|
||
|
new diagrams, the user's manual is more informative than it was.
|
||
|
Start shipping the .html user's manual (and generated .png
|
||
|
images).
|
||
|
* Makefile: update 'release' target to match
|
||
|
|
||
|
* buildbot/test/test_web.py (GetURL.testBrokenStuff): delete this
|
||
|
test.. I think the web-parts effort will render it pointless well
|
||
|
before it ever actually starts to work.
|
||
|
|
||
|
2006-08-20 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/changes/pb.py (PBChangeSource): fix and simplify
|
||
|
meaning of the prefix= argument. It is now just a string which is
|
||
|
stripped from the beginning of the filename. If prefix= is set but
|
||
|
not found on any given filename, that filename is ignored. If all
|
||
|
filenames in a Change are ignored, the Change is dropped. This is
|
||
|
much simpler than the previous sep= nonsense, and I should have
|
||
|
implemented it this way from the beginning. Effectively resolves
|
||
|
SF#1217699 and SF#1381867. Thanks to Gary Granger and Marius
|
||
|
Gedminas for the catch and suggested fixes.
|
||
|
(ChangePerspective.perspective_addChange): implement the actual
|
||
|
prefix comparison
|
||
|
* buildbot/test/test_changes.py (TestChangePerspective): test it
|
||
|
* docs/buildbot.texinfo (PBChangeSource): document it, explain
|
||
|
how to properly use prefix=
|
||
|
* docs/examples/twisted_master.cfg (source): update prefix= by
|
||
|
adding the trailing slash
|
||
|
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: update to actual practice
|
||
|
|
||
|
* buildbot/test/test_web.py (WaterfallSteps.test_urls): oops,
|
||
|
update test case to match new link text.. the HREF has both a
|
||
|
class= setting and an enclosing [] pair that I didn't match in the
|
||
|
test.
|
||
|
|
||
|
* docs/buildbot.texinfo (ShellCommand.command=): explain why a
|
||
|
list of strings is preferred over a single string with embedded
|
||
|
spaces
|
||
|
(ShellCommand.description=): explain that either single strings or
|
||
|
a list of strings is acceptable, and why you might prefer one over
|
||
|
the other. Add an example. Fixes SF#1524659, thanks to Paul
|
||
|
Winkler for the catch.
|
||
|
(Build Steps): update to use f.addStep() rather than using s()
|
||
|
and the constructor list
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommand): accept either a single
|
||
|
string or a list of strings in both description= and
|
||
|
descriptionDone=
|
||
|
* buildbot/test/test_steps.py (Steps.test_description): test it
|
||
|
* buildbot/test/runutils.py (makeBuildStep): support for that test
|
||
|
|
||
|
* contrib/CSS/*.css: add some contributed CSS stylesheets, to make
|
||
|
the Waterfall display a bit less ugly. Thanks to John O'Duinn for
|
||
|
collecting the files and creating the patch.
|
||
|
|
||
|
* docs/buildbot.texinfo (BuildStep URLs): document new feature:
|
||
|
per-step URLs that will be displayed on the waterfall display,
|
||
|
for things like the HTML output of code-coverage tools, when
|
||
|
the results are hosted elsewhere.
|
||
|
* buildbot/interfaces.py (IBuildStepStatus.getURLs): document the
|
||
|
way to retrieve these URLs
|
||
|
* buildbot/status/builder.py (BuildStepStatus.getURLs): implement
|
||
|
the method to retrieve these URLs. Also provide backwards
|
||
|
compatibility for saved BuildStepStatus instances that didn't have
|
||
|
the .urls attribute
|
||
|
* buildbot/process/step.py (BuildStep.addURL): method to set these
|
||
|
URLs from within a BuildStep
|
||
|
* buildbot/status/html.py (StepBox.getBox): emit links to the URLs
|
||
|
(StepBox.getBox): give these external links a distinct CSS class
|
||
|
named "BuildStep external" so a .css file can display them
|
||
|
differently
|
||
|
|
||
|
* buildbot/test/test_web.py (WaterfallSteps): test that we really
|
||
|
do emit those links
|
||
|
* buildbot/test/test_steps.py (Steps): test that we can all the
|
||
|
URLs. Also add a bunch of other tests on methods that can be
|
||
|
called from within BuildSteps
|
||
|
* buildbot/test/runutils.py (makeBuildStep): add utility function
|
||
|
|
||
|
2006-08-13 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/buildbot.texinfo (BuildStep LogFiles): document them
|
||
|
|
||
|
2006-08-10 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/buildbot.texinfo (Index of master.cfg keys): add another
|
||
|
index, this one of things like c['sources'] and c['schedulers']
|
||
|
(indices): it looks like my clever idea of putting the @fooindex
|
||
|
commands in between the @node and the @subsection (to make the
|
||
|
HREF anchor jump to slightly above the section title, which works
|
||
|
much better in html) confused texinfo horribly, so I'm moving the
|
||
|
index tags back to be just after the @subsection marker. I also
|
||
|
added extra lines between the @node/@section paragraph and the
|
||
|
index tags, since I think maybe texinfo wants to see these be
|
||
|
separate paragraphs.
|
||
|
|
||
|
* docs/Makefile (images): make sure images get built when
|
||
|
rendering the manual
|
||
|
* docs/images/Makefile: same
|
||
|
|
||
|
* buildbot/scripts/runner.py: rename 'buildbot master' to
|
||
|
'buildbot create-master', and 'buildbot slave' to 'buildbot
|
||
|
create-slave'
|
||
|
* docs/buildbot.texinfo: same
|
||
|
* README: same
|
||
|
|
||
|
* docs/buildbot.texinfo: reimplement the "useful classes" index
|
||
|
with actual texinfo indices. The .info rendering is a bit
|
||
|
weird-looking but it works well, and the HTML rendering is quite
|
||
|
nice. This also puts the index targets in the regular flow of the
|
||
|
text, which is easier to maintain.
|
||
|
|
||
|
2006-08-06 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slave/commands.py (ShellCommand.__init__): patch from
|
||
|
Kevin Turner to prefer the environ= argument be a list rather than
|
||
|
a string. If it is a list, it will be joined with a platform-local
|
||
|
os.pathsep delimiter, and then prepended to any existing
|
||
|
$PYTHONPATH value. This works better in cross-platform (i.e.
|
||
|
windows buildslaves) environments when you need to push multiple
|
||
|
directories onto the front of the path.
|
||
|
(SlaveShellCommand): documented the new magic
|
||
|
* docs/buildbot.texinfo (ShellCommand): documented the new magic
|
||
|
in a user-visible form
|
||
|
|
||
|
* buildbot/test/test_vc.py (BaseHelper.dovc): patch from Kevin
|
||
|
Turner to prefer lists over strings when creating/running VC
|
||
|
commands during unit tests. This is clearly necessary to survive
|
||
|
vcexe containing spaces, like "C:\Program Files\darcs.exe". I
|
||
|
renamed the wq() function to qw() though, since that's how it's
|
||
|
spelled in perl. Eventually I'd prefer all commands to be
|
||
|
specified with lists.
|
||
|
|
||
|
* buildbot/slave/commands.py (LogFileWatcher): handle logfiles
|
||
|
which are deleted (or not yet created) correctly. Also add
|
||
|
failsafe code to not explode if the file-watching poller doesn't
|
||
|
get started. Thanks to JP Calderone for the catch and the poller
|
||
|
patch.
|
||
|
* buildbot/test/test_shell.py (SlaveSide._testLogFiles): add test
|
||
|
for that case
|
||
|
* buildbot/test/emitlogs.py: same
|
||
|
|
||
|
* NEWS: summarize recent changes
|
||
|
|
||
|
* docs/buildbot.texinfo (Debug options): suggest an .ssh/options
|
||
|
clause to avoid the "host key mismatch" warning
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial.start): if the
|
||
|
buildslave is too old to understand logfiles=, fall back to
|
||
|
running 'cat _trial_temp/test.log' like before.
|
||
|
(Trial.commandComplete): same. this takes advantage of the
|
||
|
LoggingBuildStep refactoring to stall commandComplete long enough
|
||
|
to run a second RemoteShellCommand.
|
||
|
|
||
|
* buildbot/process/step.py (LoggingBuildStep.startCommand):
|
||
|
refactor command-completion handling, to allow methods like
|
||
|
commandComplete/createSummary/evaluateCommand to return Deferreds.
|
||
|
(LoggingBuildStep._commandComplete): delete the refactored method
|
||
|
(ShellCommand.setupLogfiles): if the buildslave is too old to
|
||
|
understand logfiles=, put a warning message both into twistd.log
|
||
|
and into the otherwise empty user-visible LogFiles.
|
||
|
|
||
|
* buildbot/process/step.py (LoggedRemoteCommand.useLog): allow
|
||
|
callers to provide the slave-side logfile name, rather than
|
||
|
forcing it to come from the local name of the LogFile.
|
||
|
(BuildStep.getSlaveName): new method
|
||
|
|
||
|
* buildbot/process/base.py (Build.getSlaveName): new method, so
|
||
|
steps can find out which buildslave they're running on
|
||
|
|
||
|
* buildbot/test/test_steps.py (Version.checkCompare): oops, update
|
||
|
to match the s/cvs_ver/command_version/ change
|
||
|
|
||
|
2006-08-05 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slave/commands.py (command_version): replace the CVS
|
||
|
auto-updated cvs_ver keyword with a manually-updated variable,
|
||
|
since CVS is no longer the master repository. Add a description of
|
||
|
the remote API change starting in this version (2.1), specifically
|
||
|
the fact that SlaveShellCommand now accepts 'initial_stdin',
|
||
|
'keep_stdin_open', and 'logfiles'.
|
||
|
|
||
|
2006-07-31 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/buildbot.texinfo (System Architecture): Finally add lots of
|
||
|
diagrams to describe how the whole system fits together. The
|
||
|
images themselves are kept in SVG files, with ascii-art versions
|
||
|
in corresponding .txt files. Texinfo knows how to interpolate the
|
||
|
text version into .info files, reference the .png versions from
|
||
|
.html files, and include .eps versions in the .ps format.
|
||
|
* docs/images/Makefile: tools to create .png and .eps
|
||
|
* docs/images/*.svg: created pictures with Inkscape.
|
||
|
* .darcs-boring: ignore the generated .eps and .png files
|
||
|
|
||
|
2006-07-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): check for duplicate
|
||
|
Scheduler names, since they cause setServiceParent to explode
|
||
|
later.
|
||
|
* buildbot/test/test_config.py (ConfigTest._testSchedulers_7): test it
|
||
|
|
||
|
2006-07-20 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/sample.cfg: simplify the sample BuildFactory,
|
||
|
which runs the buildbot unit tests
|
||
|
|
||
|
* docs/buildbot.texinfo (Index of Useful Classes): add a table of
|
||
|
classes that are useful in master.cfg
|
||
|
|
||
|
2006-07-15 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* Makefile (some-apidocs): new target to build only some epydocs
|
||
|
|
||
|
* setup.py: minor comment.. does the classifiers= argument prevent
|
||
|
the setup.py script from working on python2.2/2.3?
|
||
|
|
||
|
* buildbot/scripts/sample.cfg: update manhole example, arrange into
|
||
|
major sections
|
||
|
|
||
|
* buildbot/twcompat.py: fix minor typo in comments
|
||
|
|
||
|
* buildbot/manhole.py: move all Manhole-related code out to this
|
||
|
module. Implement SSH-based manholes (with TwistedConch), and move
|
||
|
to conch's nifty line-editing syntax-coloring REPL shell instead
|
||
|
of the boring non-editing monochromatic (and deprecated) old
|
||
|
'telnet' protocol.
|
||
|
* buildbot/master.py: remove all Manhole-related code
|
||
|
(BuildMaster.loadConfig._add): make sure the old manhole is
|
||
|
removed before we add the new one
|
||
|
* docs/buildbot.texinfo (Debug options): document new Manhole options
|
||
|
|
||
|
* buildbot/twcompat.py (_which): fix some epydoc issues
|
||
|
* buildbot/status/html.py (Waterfall.__init__): same
|
||
|
|
||
|
2006-06-29 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/interfaces.py: get Interface from b.twcompat to hush
|
||
|
deprecation warnings under newer Twisteds (by using
|
||
|
zope.interface.Interface instead of old twisted.python.components
|
||
|
stuff)
|
||
|
* buildbot/slave/interfaces.py: same
|
||
|
|
||
|
2006-06-28 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slave/commands.py (SVN): add --non-interactive to all
|
||
|
svn commands, so it will fail immediately instead of hanging while
|
||
|
it waits for a username/password to be typed in.
|
||
|
|
||
|
* buildbot/slave/bot.py (SlaveBuilder.commandComplete): add minor
|
||
|
log message if the step was shut down
|
||
|
|
||
|
* buildbot/scripts/runner.py (SlaveOptions.longdesc): remove
|
||
|
obsolete reference to mktap.
|
||
|
|
||
|
2006-06-20 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_steps.py (BuildStep.testShellCommand1): update
|
||
|
test to include new 'logfiles' argument sent from master to slave
|
||
|
|
||
|
2006-06-19 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial): track Progress from
|
||
|
_trial_temp/test.log too
|
||
|
|
||
|
* buildbot/process/step.py (OutputProgressObserver): generalize
|
||
|
the earlier StdioProgressObserver into an OutputProgressObserver
|
||
|
that can track LogFiles other than stdio.
|
||
|
(LoggingBuildStep.__init__): same
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial): use logfiles= to track
|
||
|
_trial_temp/test.log, not a separate 'cat' command. TODO: this
|
||
|
will fail under windows because of os.sep issues. It might have
|
||
|
worked before if 'cat' was doing cygwin path conversion.
|
||
|
|
||
|
* buildbot/slave/commands.py (LogFileWatcher.__init__): note the
|
||
|
creation of LogFileWatchers
|
||
|
(ShellCommand._startCommand): and record the files that were
|
||
|
watched in the 'headers' section of the ShellCommand output
|
||
|
|
||
|
* buildbot/process/step.py (RemoteShellCommand.__init__): duh, you
|
||
|
need to actually pass it to the slave if you want it to work.
|
||
|
(ShellCommand): document it a bit
|
||
|
|
||
|
* buildbot/test/test_shell.py: new test to validate LogFiles
|
||
|
* buildbot/test/runutils.py (SlaveCommandTestBase): updates to
|
||
|
test LogFiles
|
||
|
* buildbot/test/emitlogs.py: enhance to wait for a line on stdin
|
||
|
before printing the last batch of lines, to test that the polling
|
||
|
logic is working properly
|
||
|
|
||
|
* buildbot/process/step.py (LoggedRemoteCommand): improve LogFile
|
||
|
handling, making it possible to track multiple logs for a single
|
||
|
RemoteCommand. The previous single logfile is now known as the
|
||
|
'stdio' log.
|
||
|
(LoggedRemoteCommand.remoteUpdate): accept key='log' updates
|
||
|
(RemoteShellCommand.__init__): accept logfiles=
|
||
|
(LoggingBuildStep.startCommand): stdio_log is now one of many
|
||
|
(ShellCommand): added logfiles= argument, as well as a class-level
|
||
|
.logfiles attribute, which will be merged together to figure out
|
||
|
which logfiles should be tracked. The latter maybe be useful for
|
||
|
subclasses of ShellCommand which know they will aways produce
|
||
|
secondary logfiles in the same location.
|
||
|
|
||
|
* buildbot/slave/commands.py (ShellCommandPP): add writeStdin()
|
||
|
and closeStdin() methods, preparing to make it possible to write
|
||
|
to a ShellCommand's stdin at any time, not just at startup. These
|
||
|
writes are buffered if the child process hasn't started yet.
|
||
|
(LogFileWatcher): new helper class to watch arbitrary logfiles
|
||
|
while a ShellCommand runs. This class polls the file every two
|
||
|
seconds, and sends back 10k chunks to the buildmaster.
|
||
|
(ShellCommand): rename stdin= to initialStdin=, and add
|
||
|
keepStdinOpen= and logfiles= to arguments. Set up LogFileWatchers
|
||
|
at startup.
|
||
|
(ShellCommand.addLogfile): LogFile text is sent in updates with a
|
||
|
key of "log" and a value of (logname, data).
|
||
|
(SlaveShellCommand): add 'initial_stdin', 'keep_stdin_open', and
|
||
|
'logfiles' to the master-visible args dictionary.
|
||
|
(SourceBase.doPatch): match s/stdin/initialStdin/ change
|
||
|
(CVS.start): same
|
||
|
(P4.doVCFull): same
|
||
|
* buildbot/test/test_vc.py (Patch.testPatch): same
|
||
|
|
||
|
|
||
|
* buildbot/test/emit.py: write to a logfile in the current
|
||
|
directory. We use this to figure out what was used as a basedir
|
||
|
rather than looking to see which copy of emit.py gets run, so that
|
||
|
we can run the commands from inside _trial_temp rather than inside
|
||
|
buildbot/test
|
||
|
* buildbot/test/subdir/emit.py: same
|
||
|
* buildbot/test/runutils.py (FakeSlaveBuilder): take a 'basedir'
|
||
|
argument rather than running from buildbot/test/
|
||
|
(SlaveCommandTestBase.setUpBuilder): explicitly set up the Builder
|
||
|
rather than using an implicit setUp()
|
||
|
* buildbot/test/test_slavecommand.py (ShellBase.setUp): same
|
||
|
(ShellBase.testShell1, etc): use explicit path to emit.py instead
|
||
|
of assuming that we're running in buildbot/test/ (and that '.' is
|
||
|
on our $PATH)
|
||
|
|
||
|
* buildbot/slave/commands.py (Command.doStart): refactor Command
|
||
|
startup/completion a bit: now the SlaveBuilder calls doStart(),
|
||
|
which is not meant for overridding by subclasses, and doStart()
|
||
|
calls start(), which is. Likewise the SlaveBuilder calls
|
||
|
doInterrupt(), and subclasses override interrupt(). This also puts
|
||
|
responsibility for maintaining .running in Command rather than in
|
||
|
SlaveBuilder.
|
||
|
(Command.doInterrupt): same
|
||
|
(Command.commandComplete): same, this is called when the deferred
|
||
|
returned by start() completes.
|
||
|
* buildbot/slave/bot.py (SlaveBuilder.remote_startCommand): same
|
||
|
(SlaveBuilder.remote_interruptCommand): same
|
||
|
(SlaveBuilder.stopCommand): same
|
||
|
|
||
|
2006-06-16 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_shell.py: new test file to contain everything
|
||
|
relating to ShellCommand
|
||
|
(SlaveSide.testLogFiles): (todo) test for the upcoming "watch
|
||
|
multiple logfiles in realtime" feature, not yet implemented
|
||
|
* buildbot/test/emitlogs.py: support file for testLogFiles
|
||
|
* docs/buildbot.texinfo (ShellCommand): document the feature
|
||
|
|
||
|
* buildbot/test/test_steps.py (BuildStep.setUp): rmtree refactoring
|
||
|
|
||
|
* buildbot/test/runutils.py (SlaveCommandTestBase): utility class
|
||
|
for tests which exercise SlaveCommands in isolation.
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py: Move some utilities like
|
||
|
SignalMixin and FakeSlaveBuilder from here ..
|
||
|
* buildbot/test/runutils.py: .. to here, so they can be used by
|
||
|
other test classes too
|
||
|
* buildbot/test/test_vc.py: more SignalMixin refactoring
|
||
|
* buildbot/test/test_control.py: same
|
||
|
* buildbot/test/test_run.py: and some rmtree refactoring
|
||
|
|
||
|
2006-06-15 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py (P4.testCheckoutBranch): rename from
|
||
|
'testBranch' to match other VC tests and have the tests run in
|
||
|
roughly increasing order of dependency
|
||
|
|
||
|
* buildbot/test/test_steps.py (LogObserver): new test to verify
|
||
|
LogObservers can be created at various times and still get
|
||
|
connected up properly
|
||
|
|
||
|
* buildbot/test/runutils.py (setupBuildStepStatus): utility method
|
||
|
to create BuildStepStatus instances that actually work.
|
||
|
|
||
|
* buildbot/process/step.py (LogObserver): add outReceived and
|
||
|
errReceived base methods, to be overridden
|
||
|
|
||
|
* buildbot/status/builder.py (BuildStatus.addStepWithName): change
|
||
|
API to take a name instead of a step, reducing the coupling
|
||
|
somewhat. This returns the BuildStepStatus object so it can be
|
||
|
passed to the new Step, instead of jamming it directly into the
|
||
|
Step.
|
||
|
* buildbot/process/step.py (BuildStep.setStepStatus): add a setter
|
||
|
method
|
||
|
* buildbot/process/base.py (Build.setupBuild): use both methods
|
||
|
* buildbot/test/test_web.py (Logfile.setUp): rearrange the setup
|
||
|
process a bit to match
|
||
|
|
||
|
2006-06-14 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/buildbot.texinfo (Adding LogObservers): add some limited
|
||
|
docs on writing new LogObserver classes
|
||
|
(Writing New Status Plugins): brief docs on how Status Plugins fit
|
||
|
together
|
||
|
|
||
|
* buildbot/process/step_twisted.py (TrialTestCaseCounter):
|
||
|
implement a LogObserver that counts how many unit tests have been
|
||
|
run so far
|
||
|
(Trial.__init__): wire it in
|
||
|
* buildbot/test/test_twisted.py (Counter): unit test for it
|
||
|
|
||
|
* buildbot/process/step_twisted.py (HLint.commandComplete): update
|
||
|
to new cmd.logs['stdio'] scheme
|
||
|
(Trial.commandComplete): same
|
||
|
(BuildDebs.commandComplete): same
|
||
|
|
||
|
* buildbot/process/step.py (LoggedRemoteCommand): use a dict of
|
||
|
LogFiles, instead of just a single one. The old single logfile is
|
||
|
now called "stdio". LoggedRemoteCommand no longer creates a
|
||
|
LogFile for you (the code to do that was broken anyway). If you
|
||
|
don't create a "stdio" LogFile, then stdout/stderr will be
|
||
|
discarded.
|
||
|
(LogObserver): implement "LogObservers", which a BuildStep can add
|
||
|
to parse the output of a command in real-time. The primary use is
|
||
|
to provide more useful information to the Progress code, allowing
|
||
|
better ETA estimates.
|
||
|
(LogLineObserver): utility subclass which feeds complete lines to
|
||
|
the parser instead of bytes.
|
||
|
(BuildStep.progressMetrics): this is safer as a tuple
|
||
|
(BuildStep.setProgress): utility method, meant to be called by
|
||
|
LogObservers
|
||
|
(BuildStep.addLogObserver): new method, to be called at any time
|
||
|
during the BuildStep (even before any LogFiles have been created),
|
||
|
to attach (or schedule for eventual attachment) a LogObserver to a
|
||
|
LogFile.
|
||
|
(StdioProgressObserver): new LogObserver which replaces the old
|
||
|
"output" progress gatherer
|
||
|
(LoggingBuildStep.__init__): same
|
||
|
(LoggingBuildStep.startCommand): set up the "stdio" LogFile
|
||
|
(LoggingBuildStep._commandComplete): must use logs['stdio']
|
||
|
instead of the old single ".log" attribute.
|
||
|
* buildbot/status/builder.py (LogFile): remove old logProgressTo
|
||
|
functionality, now subsumed into StdioProgressObserver
|
||
|
* buildbot/test/test_status.py (Subscription._testSlave_2): the
|
||
|
log name changed from "output" to "stdio".
|
||
|
|
||
|
|
||
|
* buildbot/interfaces.py (ILogFile): add the Interface used from
|
||
|
the BuildStep towards the LogFile
|
||
|
(ILogObserver): and the one provided by a LogObserver
|
||
|
* buildbot/status/builder.py (LogFile): implement it
|
||
|
|
||
|
* buildbot/interfaces.py (LOG_CHANNEL_*): move STDOUT / STDERR /
|
||
|
HEADER constants here ..
|
||
|
* buildbot/status/builder.py (STDOUT): .. from here
|
||
|
|
||
|
2006-06-13 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_p4poller.py (TestP4Poller.failUnlessIn): fix
|
||
|
compatibility with python2.2, which doesn't have the 'substr in
|
||
|
str' feature.
|
||
|
(TestP4Poller.makeTime): utility function to construct the
|
||
|
timestamp using the same strptime() approach as p4poller does. It
|
||
|
turns out that time.mktime() behaves slightly differently under
|
||
|
python2.2, probably something to do with the DST flag, and that
|
||
|
causes the test to fail under python2.2. (changing the mktime()
|
||
|
arguments to have dst=0 instead of -1 caused it to fail under
|
||
|
python2.3. Go figure.)
|
||
|
(TestP4Poller._testCheck3): use our makeTime() instead of mktime()
|
||
|
|
||
|
2006-06-12 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step.py (P4): merge in patch SF#1473939, adding
|
||
|
proper Perforce (P4) support. Many many thanks to Scott Lamb for
|
||
|
contributing such an excellent patch, including docs and unit
|
||
|
tests! This makes it *so* much easier to apply. I had to update
|
||
|
test_vc.py to handle some recent refactorings, but everything else
|
||
|
applied smoothly. The only remaining thing I'd like to fix would
|
||
|
be to remove the hard-wired port 1666 used by p4d, and allow it to
|
||
|
claim any unused port. This would allow two copies of the test
|
||
|
suite to run on the same host at the same time, as well as
|
||
|
allowing the test suite to run while a real (production) p4d was
|
||
|
running on the same host. Oh, and maybe we should add a warning to
|
||
|
step.P4 that gets emitted if the slave is too old to provide the
|
||
|
'p4' SlaveCommand. Otherwise it looks great. (closes: SF#1473939).
|
||
|
* buildbot/slave/commands.py (P4): same
|
||
|
(P4Sync): same, some minor updates
|
||
|
* buildbot/changes/p4poller.py: same
|
||
|
* docs/buildbot.texinfo: same
|
||
|
* buildbot/test/test_p4poller.py: same
|
||
|
* buildbot/test/test_vc.py (P4): same
|
||
|
|
||
|
* setup.py: add Trove classifiers for PyPI
|
||
|
|
||
|
2006-06-08 Brian Warner <warner@allmydata.com>
|
||
|
|
||
|
* buildbot/status/client.py
|
||
|
(RemoteBuilder.remote_getCurrentBuilds): oops, I screwed up when
|
||
|
changing this from getCurrentBuild() to getCurrentBuilds(). Each
|
||
|
build needs to be IRemote'd separately, rather than IRemote'ing
|
||
|
the whole list at once. I can't wait until newpb's serialization
|
||
|
adapters make this unnecessary.
|
||
|
|
||
|
2006-06-06 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step.py (WithProperties): make this inherit
|
||
|
from ComparableMixin, so that reloading an unchanged config file
|
||
|
doesn't cause us to spuriously reload any Builders which use them.
|
||
|
* buildbot/test/test_config.py (ConfigTest.testWithProperties):
|
||
|
add a test for it
|
||
|
|
||
|
2006-06-03 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* contrib/windows/{setup.py, buildbot_service.py}: add support for
|
||
|
running py2exe on windows, contributed by Mark Hammond. Addresses
|
||
|
SF#1401121, but I think we still need to include
|
||
|
buildbot/scripts/sample.cfg
|
||
|
* setup.py: include buildbot_service.py as a script under windows
|
||
|
* buildbot/status/html.py: when sys.frozen (i.e. we're running in
|
||
|
a py2exe application), get the icon/css datafiles from a different
|
||
|
place than usual.
|
||
|
|
||
|
* buildbot/status/mail.py (MailNotifier.buildMessage): don't
|
||
|
double-escape the build URL. Thanks to Olivier Bonnet for the
|
||
|
patch. Fixes SF#1452801.
|
||
|
|
||
|
2006-06-02 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* contrib/svn_buildbot.py (ChangeSender.getChanges): ignore the
|
||
|
first six columns of 'svnlook' output, not just the first column,
|
||
|
since property changes appear in the other five. Thanks to Olivier
|
||
|
Bonnet for the patch. Fixes SF#1398174.
|
||
|
|
||
|
2006-06-01 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_web.py (Logfile.setUp): set the .reason on
|
||
|
the fake build, so that title= has something to be set to
|
||
|
|
||
|
* buildbot/status/html.py (BuildBox.getBox): set the 'title='
|
||
|
attribute of the "Build #NN" link in the yellow start-the-build
|
||
|
box to the build's reason. This means that you get a little
|
||
|
tooltip explaining why the build was done when you hover over the
|
||
|
yellow box. Thanks to Zandr Milewski for the suggestion.
|
||
|
|
||
|
* buildbot/clients/gtkPanes.py (Box.setColor): ignore color=None
|
||
|
(Box.setETA): handle ETA=None (by stopping the timer)
|
||
|
(Box.update): make the [soon] text less different than the usual
|
||
|
text, so the rest of the text doesn't flop around so much. It
|
||
|
would be awfully nice to figure out how to center this stuff.
|
||
|
(ThreeRowBuilder.stepETAUpdate): more debugging printouts
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommand): set flunkOnFailure=True
|
||
|
by default, so that any ShellCommand which fails marks the overall
|
||
|
build as a failure. I should have done this from the beginning.
|
||
|
Add flunkOnFailure=False to the arguments if you want to turn off
|
||
|
this behavior.
|
||
|
|
||
|
2006-05-30 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/clients/gtkPanes.py: add a third row: now it shows
|
||
|
last-build/current-build/current-step. Show what step is currently
|
||
|
running. Show ETA for both the overall build and the current step.
|
||
|
Update GTK calls to modern non-deprecated forms. There's still a
|
||
|
lot of dead code and debug noise to remove.
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial): set the step name, so it
|
||
|
shows up properly in status displays
|
||
|
|
||
|
2006-05-28 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_properties.py (Run.testInterpolate): on the
|
||
|
build we use to verify that WithProperties works:
|
||
|
|
||
|
** set flunkOnFailure=True so that build failures get noticed
|
||
|
** set workdir='.' so that the build succeeds, otherwise it is trying
|
||
|
to touch 'build/something', and 'build/' doesn't exist because
|
||
|
usually that's created by a Source step
|
||
|
** set timeout=10, because Twisted-1.3.0 has a race condition that
|
||
|
this test somehow triggers, in which the 'touch' process becomes
|
||
|
a zombie and we wait for th etimeout before giving up on it.
|
||
|
|
||
|
* buildbot/test/runutils.py (RunMixin.logBuildResults): utility method
|
||
|
to log the Build results and step logs to the twisted log.
|
||
|
(RunMixin.failUnlessBuildSucceeded): use logBuildResults to record
|
||
|
what went wrong if a build was expected to succeed but didn't.
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial): set the default
|
||
|
trialMode to '--reporter=bwverbose', which specifies verbose
|
||
|
black-and-white text. Back in twisted-1.3/2.0 days we had to use
|
||
|
'-to', but those are completely missing in modern Twisteds.
|
||
|
|
||
|
* buildbot/scripts/sample.cfg: make the sample Manhole config use
|
||
|
a localhost-only port, to encourage better security
|
||
|
|
||
|
* docs/buildbot.texinfo (Change Sources): mention
|
||
|
darcs_buildbot.py
|
||
|
|
||
|
* .darcs-boring: add a Darcs boringfile
|
||
|
|
||
|
* README (REQUIREMENTS): stop claiming compatibility with
|
||
|
Twisted-1.3.0
|
||
|
|
||
|
* contrib/darcs_buildbot.py: write a darcs-commit-hook change
|
||
|
sender
|
||
|
|
||
|
2006-05-27 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py: bump to 0.7.3+ while between releases
|
||
|
* docs/buildbot.texinfo: same
|
||
|
|
||
|
2006-05-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py (version): Releasing buildbot-0.7.3
|
||
|
* docs/buildbot.texinfo: set version to match
|
||
|
* NEWS: update for 0.7.3
|
||
|
|
||
|
* docs/buildbot.texinfo (Change Sources): mention hg_buildbot.py,
|
||
|
give a quick mapping from VC system to possible ChangeSources
|
||
|
(Build Properties): add 'buildername'
|
||
|
|
||
|
* buildbot/process/base.py (Build.setupStatus): oops, set
|
||
|
'buildername' and 'buildnumber' properties
|
||
|
* buildbot/test/test_properties.py (Interpolate.testBuildNumber):
|
||
|
test them
|
||
|
|
||
|
2006-05-22 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/buildbot.texinfo (Build Properties): explain the syntax of
|
||
|
property interpolation better
|
||
|
|
||
|
* README (INSTALLATION): remove old '-v' argument from recommended
|
||
|
trial command line
|
||
|
|
||
|
* docs/buildbot.texinfo (ShellCommand): add docs for description=
|
||
|
and descriptionDone= arguments. Thanks to Niklaus Giger for the
|
||
|
patch. SF#1475494.
|
||
|
|
||
|
* buildbot/slave/commands.py (SVN.parseGotRevision._parse): use
|
||
|
'svnversion' instead of grepping the output of 'svn info', much
|
||
|
simpler and avoids CR/LF problems on windows. Thanks to Olivier
|
||
|
Bonnet for the suggestion.
|
||
|
(SVN.parseGotRevision): oops, older verisons of 'svnversion'
|
||
|
require the WC_PATH argument, so run 'svnversion .' instead.
|
||
|
|
||
|
* buildbot/interfaces.py (IChangeSource): methods in Interfaces
|
||
|
aren't supposed to have 'self' in their argument list
|
||
|
|
||
|
2006-05-21 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommand.start): make
|
||
|
testInterpolate pass. I was passing the uninterpolated command to
|
||
|
the RemoteShellCommand constructor
|
||
|
(ShellCommand._interpolateProperties): oops, handle non-list
|
||
|
commands (i.e. strings with multiple words separated by spaces in
|
||
|
them) properly, instead of forgetting about them.
|
||
|
|
||
|
* buildbot/test/test_properties.py (Run.testInterpolate): new test
|
||
|
to actually try to use build properties in a real build. This test
|
||
|
fails.
|
||
|
* buildbot/test/runutils.py (RunMixin.requestBuild): utility methods
|
||
|
to start and evaluate builds
|
||
|
|
||
|
* buildbot/test/test__versions.py: add a pseudo-test to record
|
||
|
what version of Twisted/Python/Buildbot are running. This should
|
||
|
show up at the beginning of _trial_tmp/test.log, and exists to help
|
||
|
debug other problems.
|
||
|
|
||
|
* buildbot/status/html.py (Waterfall): add 'robots_txt=' argument,
|
||
|
a filename to be served as 'robots.txt' to discourage web spiders.
|
||
|
Adapted from a patch by Tobi Vollebregt, thanks!
|
||
|
* buildbot/test/test_web.py (Waterfall._test_waterfall_5): test it
|
||
|
(Waterfall.test_waterfall): tweak the way that filenames are put
|
||
|
into the config file, to accomodate windows pathnames better.
|
||
|
|
||
|
* docs/buildbot.texinfo (HTML Waterfall): document it
|
||
|
|
||
|
* buildbot/process/process_twisted.py
|
||
|
(QuickTwistedBuildFactory.__init__): recent versions of Twisted
|
||
|
changed the build process. The new setup.py no longer takes the
|
||
|
'all' argument.
|
||
|
(FullTwistedBuildFactory.__init__): same
|
||
|
(TwistedReactorsBuildFactory.__init__): same
|
||
|
|
||
|
* contrib/hg_buildbot.py: wrote a commit script for mercurial, to
|
||
|
be placed in the [hooks] section of the central repository (the
|
||
|
one that everybody pushes changes to).
|
||
|
|
||
|
2006-05-20 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slave/commands.py (Darcs.doVCFull): when writing the
|
||
|
.darcs-context file, use binary mode. I think this was causing a
|
||
|
Darcs failure under windows.
|
||
|
|
||
|
2006-05-19 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/tryclient.py (CVSExtractor.getBaseRevision):
|
||
|
use a timezone string of +0000 and gmtime, since this timestamp is
|
||
|
sent to a buildmaster and %z is broken.
|
||
|
|
||
|
* buildbot/test/test_vc.py (CVSHelper.getdate): use no timezone
|
||
|
string and localtime, since this timestamp will only be consumed
|
||
|
locally, and %z is broken.
|
||
|
|
||
|
* buildbot/slave/commands.py (CVS.parseGotRevision): use +0000 and
|
||
|
gmtime, since this timestamp is returned to the buildmaster, and
|
||
|
%z is broken.
|
||
|
|
||
|
2006-05-18 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: update in preparation for next release
|
||
|
|
||
|
* buildbot/test/test_vc.py (VCS_Helper): factor out all the
|
||
|
setup-repository and do-we-have-the-vc-tools code into a separate
|
||
|
"helper" class, which sticks around in a single module-level
|
||
|
object. This seems more likely to continue to work in the future
|
||
|
than having it hide in the TestCase and hope that TestCases stick
|
||
|
around for a long time.
|
||
|
|
||
|
* buildbot/test/test_vc.py (MercurialSupport.vc_create): 'hg
|
||
|
addremove' has been deprecated in recent versions of mercurial, so
|
||
|
use 'hg add' instead
|
||
|
|
||
|
2006-05-07 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scheduler.py (Try_Jobdir.messageReceived): when
|
||
|
operating under windows, move the file before opening it, since
|
||
|
you can't rename a file that somebody has open.
|
||
|
|
||
|
* buildbot/process/base.py (Build.setupBuild): if something goes
|
||
|
wrong while creating a Step, log the name and arguments, since the
|
||
|
error message when you get the number of arguments wrong is really
|
||
|
opaque.
|
||
|
|
||
|
2006-05-06 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial.setupEnvironment): more
|
||
|
bugs in twisted-specific code not covered by my unit tests, this
|
||
|
time use 'cmd' argument instead of self.cmd
|
||
|
|
||
|
* buildbot/process/process_twisted.py (TwistedBuild.isFileImportant):
|
||
|
fix stupid braino: either use startwith or find()==0, not both.
|
||
|
(TwistedReactorsBuildFactory.__init__): another dumb typo
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py (ShellBase.testInterrupt1):
|
||
|
mark this test as TODO under windows, since process-killing seems
|
||
|
dodgy there. We'll come back to this later and try to fix it
|
||
|
properly.
|
||
|
|
||
|
* buildbot/test/test_vc.py (CVSSupport.getdate): use localtime,
|
||
|
and don't include a timezone
|
||
|
(CVSSupport.vc_try_checkout): stop trying to strip the timezone.
|
||
|
This should avoid the windows-with-verbose-timezone-name problem
|
||
|
altogether.
|
||
|
(Patch.testPatch): add a test which runs 'patch' with less
|
||
|
overhead than the full VCBase.do_patch sequence, to try to isolate
|
||
|
a windows test failure. This one uses slave.commands.ShellCommand
|
||
|
and 'patch', but none of the VC code.
|
||
|
|
||
|
* buildbot/slave/commands.py (getCommand): use which() to find the
|
||
|
executables for 'cvs', 'svn', etc. This ought to help under
|
||
|
windows.
|
||
|
|
||
|
* buildbot/test/test_vc.py (VCBase.do_getpatch): Delete the
|
||
|
working directory before starting. If an earlier test failed, the
|
||
|
leftover directory would mistakenly flunk a later test.
|
||
|
(ArchCommon.registerRepository): fix some tla-vs-baz problems.
|
||
|
Make sure that we use the right commandlines if which("tla") picks
|
||
|
up "tla.exe" (as it does under windows).
|
||
|
(TlaSupport.do_get): factor out this tla-vs-baz difference
|
||
|
(TlaSupport.vc_create): more tla-vs-baz differences
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py
|
||
|
(ShellBase.testShellMissingCommand): stop trying to assert
|
||
|
anything about the error message: different shells on different
|
||
|
OSes with different languages makes it hard, and it really isn't
|
||
|
that interesting of a thing to test anyway.
|
||
|
|
||
|
* buildbot/test/test_vc.py (CVSSupport.capable): skip CVS tests if
|
||
|
we detect cvs-1.10 (which is the version shipped with OS-X 10.3
|
||
|
"Panther"), because it has a bug which flunks a couple tests in
|
||
|
weird ways. I've checked that cvs-1.12.9 (as shipped with debian)
|
||
|
is ok. OS-X 10.4 "Tiger" ships with cvs-1.11, but I haven't been
|
||
|
able to test that yet.
|
||
|
|
||
|
2006-04-30 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py (VCBase.runCommand): set $LC_ALL="C" to
|
||
|
make sure child commands emit messages in english, so our regexps
|
||
|
will match. Thanks to Nikaus Giger for identifying the problems.
|
||
|
(VCBase._do_vctest_export_1): mode="export" is not responsible
|
||
|
for setting the "got_revision" property, since in many cases it is
|
||
|
not convenient to determine.
|
||
|
(SVNSupport.capable): when running 'svn --version' to check for
|
||
|
ra_local, we want error messages in english
|
||
|
* buildbot/test/test_slavecommand.py
|
||
|
(ShellBase.testShellMissingCommand): set $LC_ALL="C" to get bash
|
||
|
to emit the error message in english
|
||
|
|
||
|
* buildbot/slave/commands.py (SourceBase.setup): stash a copy of
|
||
|
the environment with $LC_ALL="C" so that Commands which need to
|
||
|
parse the output of their child processes can obtain it in
|
||
|
english.
|
||
|
(SVN.parseGotRevision): call "svn info" afterwards instead of
|
||
|
watching the output of the "svn update" or "svn checkout".
|
||
|
(Darcs.parseGotRevision): use $LC_ALL="C" when running the command
|
||
|
(Arch.parseGotRevision): same
|
||
|
(Bazaar.parseGotRevision): same
|
||
|
(Mercurial.parseGotRevision): same
|
||
|
|
||
|
* buildbot/scripts/tryclient.py (SourceStampExtractor.dovc): set
|
||
|
$LC_ALL="C" when running commands under 'buildbot try', too
|
||
|
|
||
|
* buildbot/test/__init__.py: remove the global os.environ()
|
||
|
setting, instead we do it just for the tests that run commands and
|
||
|
need to parse their output.
|
||
|
|
||
|
* buildbot/test/test_scheduler.py (Scheduling.testTryJobdir):
|
||
|
remove the overly-short .timeout on this test, because non-DNotify
|
||
|
platforms must fall back to polling which happens at 10 second
|
||
|
intervals, so a 5 second timeout would never succeed.
|
||
|
|
||
|
2006-04-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/buildbot.texinfo (Installing the code): update trial
|
||
|
invocation, SF#1469116 by Niklaus Giger.
|
||
|
(Attributes of Changes): updated branch-name examples to be
|
||
|
a bit more realistic, SF#1475240 by Stephen Davis.
|
||
|
|
||
|
* contrib/windows/buildbot2.bat: utility wrapper for windows
|
||
|
developers, contributed by Nick Trout (after a year of neglect..
|
||
|
sorry!). SF#1194231.
|
||
|
|
||
|
* buildbot/test/test_vc.py (*.capable): store the actual VC
|
||
|
binary's pathname in VCS[vcname], so it can be retrieved later
|
||
|
(CVSSupport.vc_try_checkout): incorporate Niklaus Giger's patch to
|
||
|
strip out non-numeric timezone information, specifically the funky
|
||
|
German string that his system produced that confuses CVS.
|
||
|
(DarcsSupport.vc_create): use dovc() instead of vc(), this should
|
||
|
allow Darcs tests to work on windows
|
||
|
* buildbot/scripts/tryclient.py (SourceStampExtractor): use
|
||
|
procutils.which() everywhere, to allow tryclient to work under
|
||
|
windows. Also from Niklaus Giger, SF#1463394.
|
||
|
|
||
|
* buildbot/twcompat.py (which): move the replacement for a missing
|
||
|
twisted.python.procutils.which from test_vc.py to here, so it can
|
||
|
be used in other places too (specifically tryclient.py)
|
||
|
|
||
|
2006-04-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceBuild.body): replace the
|
||
|
bare buildbotURL/projectName line with a proper DIV, along with a
|
||
|
CSS class of "title", from Stefan Seefeld (SF#1461675).
|
||
|
(WaterfallStatusResource.body0): remove the redundant 'table'
|
||
|
class from the table
|
||
|
(WaterfallStatusResource.body): same. Also add class="LastBuild"
|
||
|
to the top-row TR, and class="Activity" to the second-row TR,
|
||
|
rather than putting them in the individual TD nodes.
|
||
|
|
||
|
* buildbot/test/test_vc.py (VCBase.checkGotRevision): test
|
||
|
'got_revision' build property for all VC systems that implement
|
||
|
accurate ones: SVN, Darcs, Arch, Bazaar, Mercurial.
|
||
|
|
||
|
* buildbot/slave/commands.py (SourceBase._handleGotRevision): try
|
||
|
to determine which revision we actually obtained
|
||
|
(CVS.parseGotRevision): implement this for CVS, which just means
|
||
|
to grab a timestamp. Not ideal, and it depends upon the buildslave
|
||
|
having a clock that is reasonably well syncronized with the server,
|
||
|
but it's better than nothing.
|
||
|
(SVN.parseGotRevision): implement it for SVN, which is accurate
|
||
|
(Darcs.parseGotRevision): same
|
||
|
(Arch.parseGotRevision): same
|
||
|
(Bazaar.parseGotRevision): same
|
||
|
(Mercurial.parseGotRevision): same
|
||
|
|
||
|
* buildbot/process/step.py (LoggedRemoteCommand.remoteUpdate):
|
||
|
keep a record of all non-stdout/stderr/header/rc status updates,
|
||
|
for the benefit of RemoteCommands that send other useful things,
|
||
|
like got_revision
|
||
|
(Source.commandComplete): put any 'got_revision' status values
|
||
|
into a build property of the same name
|
||
|
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial): update to deal with
|
||
|
new ShellCommand refactoring
|
||
|
|
||
|
* docs/buildbot.texinfo (Build Properties): document new feature
|
||
|
that allows BuildSteps to get/set Build-wide properties like which
|
||
|
revision was requested and/or checked out.
|
||
|
|
||
|
* buildbot/interfaces.py (IBuildStatus.getProperty): new method
|
||
|
* buildbot/status/builder.py (BuildStatus.getProperty): implement
|
||
|
it. Note that this bumps the persistenceVersion of the saved Build
|
||
|
object, so add the necessary upgrade-old-version logic to include
|
||
|
an empty properties dict.
|
||
|
|
||
|
* buildbot/process/base.py (Build.setProperty): implement it
|
||
|
(Build.getProperty): same
|
||
|
(Build.startBuild): change build startup to set 'branch',
|
||
|
'revision', and 'slavename' properties at the right time
|
||
|
|
||
|
* buildbot/process/step.py (BuildStep.__init__): change setup to
|
||
|
require 'build' argument in a better way
|
||
|
(LoggingBuildStep): split ShellCommand into two pieces, for better
|
||
|
subclassing elsewhere. LoggingBuildStep is a BuildStep which runs
|
||
|
a single RemoteCommand that sends stdout/stderr status text. It
|
||
|
also provides the usual commandComplete / createSummary /
|
||
|
evaluateCommand / getText methods to be overridden...
|
||
|
(ShellCommand): .. whereas ShellCommand is specifically for
|
||
|
running RemoteShellCommands. Other shell-like BuildSteps (like
|
||
|
Source) can inherit from LoggingBuildStep instead of ShellCommand
|
||
|
(WithProperties): marker class to do build-property interpolation
|
||
|
(Source): inherit from LoggingBuildStep instead of ShellCommand
|
||
|
(RemoteDummy): same
|
||
|
|
||
|
* buildbot/test/test_properties.py: test new functionality
|
||
|
|
||
|
2006-04-21 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py: rename testBranch to
|
||
|
testCheckoutBranch to keep the tests in about the right
|
||
|
alphabetical order
|
||
|
|
||
|
2006-04-18 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/buildbot.texinfo (PBListener): improve cross-references
|
||
|
between PBListener and 'buildbot statusgui', thanks to John Pye
|
||
|
for the suggestion.
|
||
|
|
||
|
2006-04-17 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/twcompat.py (maybeWait): handle SkipTest properly when
|
||
|
running under Twisted-1.3.0, otherwise skipped tests are reported
|
||
|
as errors.
|
||
|
|
||
|
* all: use isinstance() instead of 'type(x) is foo', suggested by
|
||
|
Neal Norwitz
|
||
|
|
||
|
* buildbot/process/process_twisted.py (QuickTwistedBuildFactory):
|
||
|
oops, fix a brain-fade from the other week, when making the
|
||
|
addStep changes. I changed all the __init__ upcalls to use the
|
||
|
wrong superclass name.
|
||
|
(FullTwistedBuildFactory.__init__): same
|
||
|
(TwistedDebsBuildFactory.__init__): same
|
||
|
(TwistedReactorsBuildFactory.__init__): same
|
||
|
(TwistedBuild.isFileImportant): use .startswith for clarity,
|
||
|
thanks to Neal Norwitz for the suggestions.
|
||
|
|
||
|
* contrib/viewcvspoll.py: script to poll a viewcvs database for
|
||
|
changes, then deliver them over PB to a remote buildmaster.
|
||
|
|
||
|
* contrib/svnpoller.py: added script by John Pye to poll a remote
|
||
|
SVN repository (by running 'svn log') from a cronjob, and run
|
||
|
'buildbot sendchange' to deliver the changes to a remote
|
||
|
buildmaster.
|
||
|
* contrib/svn_watcher.py: added script by Niklaus Giger (a
|
||
|
modification of svnpoller.py), same purpose, but this one loops
|
||
|
internally (rather than expecting to run from a cronjob) and works
|
||
|
under windows.
|
||
|
* contrib/README.txt: same
|
||
|
|
||
|
2006-04-11 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* all: fix a number of incorrect names and missing imports, thanks
|
||
|
to Anthony Baxter for the patch.
|
||
|
* buildbot/status/html.py (WaterfallStatusResource.statusToHTML):
|
||
|
remove unused buggy method.
|
||
|
* buildbot/status/builder.py (BuildStatus.saveYourself): rmtree
|
||
|
comes from shutil, not "shutils"
|
||
|
* buildbot/process/step.py (TreeSize.evaluateCommand): fix bad name
|
||
|
(Arch.checkSlaveVersion): same
|
||
|
* buildbot/process/step_twisted.py (Trial.commandComplete): same, in
|
||
|
some disabled code
|
||
|
* buildbot/process/step_twisted2.py: add some missing imports
|
||
|
* buildbot/twcompat.py (_deferGenerator): fix cut-and-paste error,
|
||
|
this code used to live in twisted.internet.defer
|
||
|
|
||
|
2006-04-10 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step.py (Mercurial): add Mercurial support
|
||
|
* buildbot/slave/commands.py (Mercurial): same
|
||
|
* buildbot/scripts/tryclient.py (MercurialExtractor): same
|
||
|
* buildbot/test/test_vc.py (Mercurial): same, checkout over HTTP is
|
||
|
not yet tested, but 'try' support *is* covered
|
||
|
* docs/buildbot.texinfo (Mercurial): document it
|
||
|
|
||
|
* buildbot/process/step.py (LoggedRemoteCommand.remoteUpdate): add
|
||
|
some debugging messages (turned off)
|
||
|
* buildbot/test/test_vc.py: improve debug messages
|
||
|
|
||
|
2006-04-07 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py (which): define our own which() in case
|
||
|
we can't import twisted.python.procutils, because procutils doesn't
|
||
|
exist in Twisted-1.3
|
||
|
|
||
|
* docs/buildbot.texinfo (Interlocks): fix some typos, mention use
|
||
|
of SlaveLocks for performance tests
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: update to match current usage
|
||
|
|
||
|
* buildbot/changes/p4poller.py (P4Source): add new arguments:
|
||
|
password, p4 binary, pollinterval, maximum history to check.
|
||
|
Patch from an anonymous sf.net contributor, SF#1219384.
|
||
|
* buildbot/process/step.py (P4Sync.__init__): add username,
|
||
|
password, and client arguments.
|
||
|
* buildbot/slave/commands.py (P4Sync): same
|
||
|
|
||
|
2006-04-05 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/factory.py (BuildFactory.addStep): new method
|
||
|
to add steps to a BuildFactory. Use it instead of f.steps.append,
|
||
|
and you can probably avoid using the s() convenience function.
|
||
|
Patch from Neal Norwitz, sf.net #1412605.
|
||
|
(other): update all factories to use addStep
|
||
|
* buildbot/process/process_twisted.py: update all factories to use
|
||
|
addStep.
|
||
|
|
||
|
2006-04-03 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py: modified find-the-VC-command logic to
|
||
|
work under windows too. Adapted from a patch by Niklaus Giger,
|
||
|
addresses SF#1463399.
|
||
|
|
||
|
* buildbot/test/__init__.py: set $LANG to 'C', to insure that
|
||
|
spawned commands emit parseable results in english and not some
|
||
|
other language. Patch from Niklaus Giger, SF#1463395.
|
||
|
|
||
|
* README (INSTALLATION): discourage users from running unit tests on
|
||
|
a "network drive", patch from Niklaus Giger, SF#1463394.
|
||
|
|
||
|
2006-03-22 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* contrib/svn_buildbot.py: rearrange, add an easy-to-change
|
||
|
function to turn a repository-relative pathname into a (branch,
|
||
|
branch-relative-filename) tuple. Change this function to handle
|
||
|
the branch naming policy used by your Subversion repository.
|
||
|
Thanks to AllMyData.com for sponsoring this work.
|
||
|
|
||
|
2006-03-16 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/sample.cfg: add python-mode declaration for
|
||
|
vim. Thanks to John Pye for the patch.
|
||
|
|
||
|
* docs/buildbot.texinfo (Launching the daemons): fix @reboot job
|
||
|
command line, mention the importance of running 'crontab' as the
|
||
|
buildmaster/buildslave user. Thanks to John Pye for the catch.
|
||
|
|
||
|
2006-03-13 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/words.py (IRC): add an optional password=
|
||
|
argument, which will be sent to Nickserv in an IDENTIFY message at
|
||
|
login, to claim the nickname. freenode requires this before the
|
||
|
bot can sent (or reply to) private messages. Thanks to Clement
|
||
|
Stenac for the patch.
|
||
|
* docs/buildbot.texinfo (IRC Bot): document it
|
||
|
|
||
|
* buildbot/status/builder.py (LogFile.merge): don't write chunks
|
||
|
larger than chunkSize. Fixes SF#1349253.
|
||
|
* buildbot/test/test_status.py (Log.testLargeSummary): test it
|
||
|
(Log.testConsumer): update to match new internal chunking behavior
|
||
|
|
||
|
2006-03-12 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py: remove the last use of waitForDeferred
|
||
|
|
||
|
* buildbot/test/test_maildir.py (MaildirTest): rename the
|
||
|
'timeout' method, as it collides with trial's internals
|
||
|
|
||
|
* buildbot/scripts/runner.py: add 'buildbot restart' command
|
||
|
(stop): don't sys.exit() out of here, otherwise restart can't work
|
||
|
* docs/buildbot.texinfo (Shutdown): document it
|
||
|
|
||
|
* buildbot/buildset.py (BuildSet.__init__): clean up docstring
|
||
|
* buildbot/status/html.py (Waterfall.__init__): same
|
||
|
* buildbot/process/builder.py (Builder.startBuild): same
|
||
|
* buildbot/process/base.py (BuildRequest): same
|
||
|
* buildbot/sourcestamp.py (SourceStamp): same
|
||
|
* buildbot/scheduler.py (Nightly): same
|
||
|
|
||
|
* buildbot/__init__.py (version): bump to 0.7.2+ while between
|
||
|
releases
|
||
|
* docs/buildbot.texinfo: same
|
||
|
|
||
|
2006-02-17 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py (version): Releasing buildbot-0.7.2
|
||
|
* docs/buildbot.texinfo: set version number to match
|
||
|
* NEWS: update for 0.7.2
|
||
|
|
||
|
2006-02-16 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/buildbot.texinfo (Build Dependencies): add cindex tag
|
||
|
|
||
|
2006-02-09 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/buildbot.texinfo (How Different VC Systems Specify Sources):
|
||
|
add text to explain per-build branch parameters
|
||
|
* NEWS: mention --umask
|
||
|
|
||
|
2006-02-08 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/runner.py (Maker.makeSlaveTAC): remove unused
|
||
|
method
|
||
|
(SlaveOptions.optParameters): add --umask, to make it possible to
|
||
|
make buildslave-generated files (including build products) be
|
||
|
world-readable
|
||
|
(slaveTAC): same
|
||
|
* buildbot/slave/bot.py (BuildSlave.startService): same
|
||
|
|
||
|
2006-01-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/builder.py: urllib.quote() all URLs that include
|
||
|
Builder names, so that builders can include characters like '/'
|
||
|
and ' ' without completely breaking the resulting HTML. Thanks to
|
||
|
Kevin Turner for the patch.
|
||
|
* buildbot/status/html.py: same
|
||
|
* buildbot/test/test_web.py (GetURL.testBuild): match changes
|
||
|
|
||
|
* NEWS: update in preparation for upcoming release
|
||
|
|
||
|
2006-01-18 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: update to match the Twisted
|
||
|
buildbot: remove python2.2, switch to exarkun's buildslaves,
|
||
|
disable the .deb builder until we figure out how to build twisted
|
||
|
.debs from SVN, add some ktrace debugging to the OS-X build
|
||
|
process and remove the qt build, remove threadless builders,
|
||
|
change freebsd builder to use landonf's buildslave.
|
||
|
|
||
|
2006-01-12 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/master.py (Manhole.__init__): let port= be a strports
|
||
|
specification string, but handle a regular int for backwards
|
||
|
compatibility. This allows "tcp:12345:interface=127.0.0.1" to be
|
||
|
used in master.cfg to limit connections to just the local host.
|
||
|
(BuildMaster.loadConfig): same for c['slavePortnum']
|
||
|
* buildbot/scheduler.py (Try_Userpass.__init__): same
|
||
|
* buildbot/status/client.py (PBListener.__init__): same
|
||
|
* buildbot/status/html.py (Waterfall.__init__): same, for both
|
||
|
http_port and distrib_port. Include backwards-compatibility checks
|
||
|
so distrib_port can be a filename string and still mean unix:/foo
|
||
|
* docs/buildbot.texinfo (Setting the slaveport): document it
|
||
|
(Debug options): same
|
||
|
(HTML Waterfall): same
|
||
|
(PBListener): same
|
||
|
(try): same
|
||
|
* buildbot/test/test_config.py (ConfigTest): test it
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): wait for the
|
||
|
slaveport's disownServiceParent deferred to fire before opening
|
||
|
the new one. Fixes an annoying bug in the unit tests.
|
||
|
|
||
|
2006-01-03 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/master.py (BuildMaster): remove the .schedulers
|
||
|
attribute, replacing it with an allSchedulers() method that looks
|
||
|
for all IService children that implement IScheduler. Having only
|
||
|
one parent/child relationship means fewer opportunities for bugs.
|
||
|
(BuildMaster.allSchedulers): new method
|
||
|
(BuildMaster.loadConfig_Schedulers): update to use allSchedulers,
|
||
|
also fix ugly bug that caused any config-file reload to
|
||
|
half-forget about the earlier Schedulers, causing an exception
|
||
|
when a Change arrived and was handed to a half-connected
|
||
|
Scheduler. The exception was in scheduler.py line 54ish:
|
||
|
self.parent.submitBuildSet(bs)
|
||
|
exceptions.AttributeError: 'NoneType' object has no attribute
|
||
|
'submitBuildSet'
|
||
|
(BuildMaster.addChange): update to use allSchedulers()
|
||
|
|
||
|
* buildbot/scheduler.py (BaseScheduler.__implements__): fix this
|
||
|
to work properly with twisted-1.3.0, where you must explicitly
|
||
|
include the __implements__ from parent classes
|
||
|
(BaseScheduler.__repr__): make it easier to distinguish distinct
|
||
|
instances
|
||
|
(BaseUpstreamScheduler.__implements__): same
|
||
|
|
||
|
* buildbot/status/builder.py (Status.getSchedulers): update to
|
||
|
use allSchedulers()
|
||
|
* buildbot/test/test_run.py (Run.testMaster): same
|
||
|
* buildbot/test/test_dependencies.py (Dependencies.findScheduler): same
|
||
|
* buildbot/test/test_config.py (ConfigTest.testSchedulers): same,
|
||
|
make sure Scheduler instances are left alone when an identical
|
||
|
config file is reloaded
|
||
|
(ConfigElements.testSchedulers): make sure Schedulers are properly
|
||
|
comparable
|
||
|
|
||
|
* Makefile (TRIALARGS): my local default Twisted version is now
|
||
|
2.1.0, update the trial arguments accordingly
|
||
|
|
||
|
2005-12-22 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: merge changes from pyr: add
|
||
|
new win32 builders
|
||
|
|
||
|
* buildbot/scheduler.py (BaseScheduler.addChange): include a dummy
|
||
|
addChange in the parent class, although I suspect this should be
|
||
|
fixed better in the future.
|
||
|
|
||
|
2005-11-26 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scheduler.py (AnyBranchScheduler.addChange): don't
|
||
|
explode when branch==None, thanks to Kevin Turner for the catch
|
||
|
* buildbot/test/test_scheduler.py (Scheduling.testAnyBranch): test
|
||
|
it
|
||
|
|
||
|
* buildbot/__init__.py (version): bump to 0.7.1+ while between
|
||
|
releases
|
||
|
* docs/buildbot.texinfo: same
|
||
|
|
||
|
2005-11-26 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py (version): Releasing buildbot-0.7.1
|
||
|
* docs/buildbot.texinfo: set version number to match
|
||
|
|
||
|
2005-11-26 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: update for 0.7.1
|
||
|
|
||
|
* buildbot/status/builder.py (BuildStepStatus.unsubscribe): make
|
||
|
sure that unsubscribe works even if we never sent an ETA update.
|
||
|
Also, don't explode on duplicate unsubscribe.
|
||
|
(BuildStepStatus.addLog): make the convenience "return self"-added
|
||
|
watcher automatically unsubscribe when the Step finishes.
|
||
|
(BuildStatus.unsubscribe): same handle-duplicate-unsubscribe
|
||
|
(BuildStatus.stepStarted): same auto-unsubscribe
|
||
|
(BuilderStatus.buildStarted): same auto-unsubscribe
|
||
|
|
||
|
* buildbot/interfaces.py (IStatusReceiver.buildStarted): document
|
||
|
auto-unsubscribe
|
||
|
(IStatusReceiver.stepStarted): same
|
||
|
(IStatusReceiver.logStarted): same
|
||
|
|
||
|
* buildbot/test/test_run.py (Status): move the Status test..
|
||
|
* buildbot/test/test_status.py (Subscription): .. to here
|
||
|
|
||
|
2005-11-25 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: more updates
|
||
|
|
||
|
* buildbot/locks.py: fix the problem in which loading a master.cfg
|
||
|
file that changes some Builders (but not all of them) can result
|
||
|
in having multiple copies of the same Lock. Now, the real Locks
|
||
|
are kept in a table inside the BotMaster, and the Builders/Steps
|
||
|
use "LockIDs", which are still instances of MasterLock and
|
||
|
SlaveLock. The real Locks are instances of the new RealMasterLock
|
||
|
and RealSlaveLock classes.
|
||
|
* buildbot/master.py (BotMaster.getLockByID): new method to
|
||
|
convert LockIDs into real Locks.
|
||
|
* buildbot/process/base.py (Build.startBuild): convert LockIDs
|
||
|
into real Locks before building
|
||
|
* buildbot/process/step.py (BuildStep.startStep): same
|
||
|
* buildbot/test/test_locks.py (Locks.testLock1a): add a test which
|
||
|
exercises the problem
|
||
|
|
||
|
|
||
|
* docs/buildbot.texinfo (Scheduler Types): give a few hints about
|
||
|
what Schedulers are available
|
||
|
|
||
|
* buildbot/scheduler.py (Nightly): add new Scheduler based upon
|
||
|
work by Dobes Vandermeer and hacked mercilessly by me. This offers
|
||
|
'cron'-style build scheduling at certain times of day, week,
|
||
|
month, or year.
|
||
|
* buildbot/test/test_scheduler.py (Scheduling.testNightly): test it
|
||
|
|
||
|
* buildbot/scheduler.py (Scheduler): change fileIsImportant
|
||
|
handling: treat self.fileIsImportant more as an attribute that
|
||
|
contains a callable than as a method. If the attribute is None,
|
||
|
don't call it and assume all filenames are important. It is still
|
||
|
possible to provide a fileIsImportant method in a subclass,
|
||
|
however.
|
||
|
(AnyBranchScheduler): handle fileIsImportant=None, previously it
|
||
|
was broken
|
||
|
* buildbot/test/test_scheduler.py (Scheduling.testAnyBranch2):
|
||
|
test using AnyBranchScheduler with fileIsImportant=None
|
||
|
|
||
|
2005-11-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_config.py (StartService): don't claim a fixed
|
||
|
port number, instead set slavePort=0 on the first pass, figure out
|
||
|
what port was allocated, then switch to a config file that uses
|
||
|
the allocated port.
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): close the old
|
||
|
slaveport before opening the new one, because unit tests might
|
||
|
replace slavePort=0 with the same allocated portnumber, and if we
|
||
|
don't wait for the old port to close first, we get a "port already
|
||
|
in use" error. There is a tiny race condition here, but the only
|
||
|
threat is from other programs that bind (statically) to the same
|
||
|
port number we happened to be allocated, and only if those
|
||
|
programs use SO_REUSEADDR, and only if they get control in between
|
||
|
reactor turns.
|
||
|
|
||
|
* Makefile (TRIALARGS): update to handle Twisted > 2.1.0
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig_Sources): remove all
|
||
|
deleted ChangeSources before adding any new ones
|
||
|
* buildbot/changes/freshcvs.py (FreshCVSSourceNewcred): fix
|
||
|
compare_attrs, to make sure that a config-file reload does not
|
||
|
unnecessarily replace an unmodified ChangeSource instance
|
||
|
* buildbot/test/test_config.py (ConfigTest.testSources): update
|
||
|
|
||
|
* buildbot/scheduler.py (AnyBranchScheduler): fix branches=[] to
|
||
|
mean "don't build anything", and add a warning if it gets used
|
||
|
because it isn't actually useful.
|
||
|
|
||
|
* contrib/svn_buildbot.py: update example usage to match the port
|
||
|
number that gets used by the PBChangeSource
|
||
|
* buildbot/scripts/sample.cfg: add example of PBChangeSource
|
||
|
|
||
|
2005-11-22 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: start collecting items for next release
|
||
|
|
||
|
* buildbot/process/step.py (SVN.computeSourceRevision): assume
|
||
|
revisions are strings
|
||
|
(P4Sync.computeSourceRevision): same
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceBuild.body): add a link
|
||
|
to the Buildbot's overall status page
|
||
|
(StatusResourceBuilder.body): same
|
||
|
|
||
|
2005-11-15 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): serialize the
|
||
|
config-file loading, specifically to make sure old StatusTargets
|
||
|
are finished shutting down before new ones start up (thus
|
||
|
resolving a bug in which changing the Waterfall object would fail
|
||
|
because both new and old instances were claiming the same
|
||
|
listening port). Also load new Schedulers after all the new
|
||
|
Builders are set up, in case they fire off a new build right away.
|
||
|
* buildbot/test/test_config.py (StartService): test it
|
||
|
|
||
|
* buildbot/status/mail.py (MailNotifier.buildMessage): oops, add
|
||
|
the branch name to the mail body
|
||
|
|
||
|
* buildbot/changes/pb.py (PBChangeSource.compare_attrs): add this.
|
||
|
Without it, a config-file reload fails to update an existing
|
||
|
PBChangeSource.
|
||
|
* buildbot/changes/freshcvs.py (FreshCVSSourceNewcred): add
|
||
|
username/passwd to compare_attrs, for the same reason
|
||
|
* buildbot/status/html.py (Waterfall): add favicon to
|
||
|
compare_attrs, same reason
|
||
|
|
||
|
2005-11-05 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/tryclient.py (createJobfile): stringify the
|
||
|
baserev before stuffing it in the jobfile. This resolves problems
|
||
|
under SVN (and probably Arch) where revisions are expressed as
|
||
|
numbers. I'm inclined to use string-based revisions everywhere in
|
||
|
the future, but this fix should be safe for now. Thanks to Steven
|
||
|
Walter for the patch.
|
||
|
|
||
|
* buildbot/changes/changes.py (ChangeMaster.saveYourself): use
|
||
|
binary mode when opening pickle files, to make windows work
|
||
|
better. Thanks to Dobes Vandermeer for the catch.
|
||
|
* buildbot/status/builder.py (BuildStatus.saveYourself): same
|
||
|
(BuilderStatus.getBuildByNumber): same
|
||
|
(Status.builderAdded): same
|
||
|
* buildbot/master.py (BuildMaster.loadChanges): same
|
||
|
|
||
|
* buildbot/util.py (Swappable): delete unused leftover code
|
||
|
|
||
|
* buildbot/process/step.py (SVN): when building on a non-default
|
||
|
branch, add the word "[branch]" to the VC step's description, so
|
||
|
it is obvious that we're not building the usual stuff. Likewise,
|
||
|
when we are building a specific revision, add the text "rNNN" to
|
||
|
indicate what that revision number is. Thanks to Brad Hards and
|
||
|
Nathaniel Smith for the suggestion.
|
||
|
(Darcs.startVC): same
|
||
|
(Arch.startVC): same
|
||
|
(Bazaar.startVC): same
|
||
|
|
||
|
* buildbot/process/factory.py (GNUAutoconf.__init__): fix a silly
|
||
|
typo, caught by Mark Dillavou, closes SF#1216636.
|
||
|
|
||
|
* buildbot/test/test_status.py (Log.TODO_testDuplicate): add notes
|
||
|
about a test to add some day
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: update: bot1 can now handle
|
||
|
the 'full-2.3' build, and the 'reactors' build is now run under
|
||
|
python-2.4 because the buildslave no longer has gtk/etc bindings
|
||
|
for earlier versions.
|
||
|
|
||
|
2005-11-03 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/interfaces.py (IBuilderControl.resubmitBuild): new
|
||
|
method, takes an IBuildStatus and rebuilds it. It might make more
|
||
|
sense to add this to IBuildControl instead, but that instance goes
|
||
|
away completely once the build has finished, and resubmitting
|
||
|
builds can take place weeks later.
|
||
|
* buildbot/process/builder.py (BuilderControl.resubmitBuild): same
|
||
|
* buildbot/status/html.py (StatusResourceBuild): also stash an
|
||
|
IBuilderControl so we can use resubmitBuild.
|
||
|
(StatusResourceBuild.body): render "resubmit" button if we can.
|
||
|
Also add hrefs for each BuildStep
|
||
|
(StatusResourceBuild.rebuild): add action for "resubmit" button
|
||
|
(StatusResourceBuilder.getChild): give it an IBuilderControl
|
||
|
|
||
|
* buildbot/status/builder.py (Status.getURLForThing): change the
|
||
|
URL for BuildSteps to have a "step-" prefix, so the magic URLs
|
||
|
that live as targets of buttons like "stop" and "rebuild" can't
|
||
|
collide with them.
|
||
|
* buildbot/status/builder.py (Status.getURLForThing): same
|
||
|
* buildbot/status/html.py (StatusResourceBuild.getChild): same
|
||
|
(StepBox.getBox): same
|
||
|
* buildbot/test/test_web.py (GetURL): same
|
||
|
(Logfile): same
|
||
|
|
||
|
* buildbot/process/step.py (SVN.__init__): put svnurl/baseURL
|
||
|
exclusivity checks after Source.__init__ upcall, so misspelled
|
||
|
arguments will be reported more usefully
|
||
|
(Darcs.__init__): same
|
||
|
|
||
|
2005-10-29 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: don't double-fire the 'quick'
|
||
|
builder. Move the Try scheduler off to a separate port.
|
||
|
|
||
|
2005-10-27 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/clients/gtkPanes.py
|
||
|
(TwoRowClient.remote_builderRemoved): disappearing Builders used
|
||
|
to cause the app to crash, now they don't.
|
||
|
|
||
|
* buildbot/clients/debug.py: display the buildmaster's location
|
||
|
in the window's title bar
|
||
|
|
||
|
2005-10-26 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/mail.py (MailNotifier): urllib.escape the URLs
|
||
|
in case they have spaces or whatnot. Patch from Dobes Vandermeer.
|
||
|
* buildbot/test/test_status.py (MyStatus.getURLForThing): fix it
|
||
|
|
||
|
* buildbot/status/html.py (td): put a single non-breaking space
|
||
|
inside otherwise empty <td> elements, as a workaround for buggy
|
||
|
browsers which would optimize them away (along with any associated
|
||
|
styles, like the kind that create the waterfall grid borders).
|
||
|
Patch from Frerich Raabe.
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial): expose the trialMode=
|
||
|
argv-list as an argument, defaulting to ["-to"], which is
|
||
|
appropriate for the Trial that comes with Twisted-2.1.0 and
|
||
|
earlier. The Trial in current Twisted SVN wants
|
||
|
["--reporter=bwverbose"] instead. Also expose trialArgs=, which
|
||
|
defaults to an empty list.
|
||
|
* buildbot/process/process_twisted.py (TwistedTrial.trialMode):
|
||
|
match it, now that trialMode= is a list instead of a single string
|
||
|
|
||
|
* buildbot/__init__.py (version): bump to 0.7.0+ while between
|
||
|
releases
|
||
|
* docs/buildbot.texinfo: same
|
||
|
|
||
|
2005-10-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py (version): Releasing buildbot-0.7.0
|
||
|
* docs/buildbot.texinfo: set version number to match
|
||
|
|
||
|
2005-10-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* README: update for 0.7.0
|
||
|
* NEWS: same
|
||
|
* docs/buildbot.texinfo: move the freshcvs stuff out of the README
|
||
|
|
||
|
* buildbot/clients/debug.glade: add 'branch' box to fake-commit
|
||
|
* buildbot/clients/debug.py (DebugWidget.do_commit): same. Don't
|
||
|
send the branch= argument unless the user really provided one, to
|
||
|
retain compatibility with older buildmasters that don't accept
|
||
|
that argument.
|
||
|
* buildbot/master.py (DebugPerspective.perspective_fakeChange):
|
||
|
same
|
||
|
|
||
|
* docs/buildbot.texinfo: update lots of stuff
|
||
|
|
||
|
* buildbot/scripts/runner.py (sendchange): add a --branch argument
|
||
|
to the 'buildbot sendchange' command
|
||
|
* buildbot/clients/sendchange.py (Sender.send): same
|
||
|
* buildbot/changes/pb.py (ChangePerspective): same
|
||
|
* buildbot/test/test_changes.py (Sender.testSender): test it
|
||
|
|
||
|
* buildbot/process/step.py (SVN.__init__): change 'base_url' and
|
||
|
'default_branch' argument names to 'baseURL' and 'defaultBranch',
|
||
|
for consistency with other BuildStep arguments that use camelCase.
|
||
|
Well, at least more of them use camelCase (like flunkOnWarnings)
|
||
|
than don't.. I wish I'd picked one style and stuck with it
|
||
|
earlier. Annoying, but it's best done before the release, since
|
||
|
these arguments didn't exist at all in 0.6.6 .
|
||
|
(Darcs): same
|
||
|
* buildbot/test/test_vc.py (SVN.testCheckout): same
|
||
|
(Darcs.testPatch): same
|
||
|
* docs/buildbot.texinfo (SVN): document the change
|
||
|
(Darcs): same, add some build-on-branch docs
|
||
|
* docs/examples/twisted_master.cfg: match change
|
||
|
|
||
|
* buildbot/process/step.py (BuildStep): rename
|
||
|
slaveVersionNewEnough to slaveVersionIsOlderThan, because that's
|
||
|
how it is normally used.
|
||
|
* buildbot/test/test_steps.py (Version.checkCompare): same
|
||
|
|
||
|
* buildbot/process/step.py (CVS.startVC): refuse to build
|
||
|
update/copy -style builds on a non-default branch with an old
|
||
|
buildslave (<=0.6.6) that doesn't know how to do it properly. The
|
||
|
concern is that it will do a VC 'update' in an existing tree when
|
||
|
it is supposed to be switching branches (and therefore clobbering
|
||
|
the tree to do a full checkout), thus building the wrong source.
|
||
|
This used to be a warning, but I think the confusion it is likely
|
||
|
to cause warrants making it an error.
|
||
|
(SVN.startVC): same, also make mode=export on old slaves an error
|
||
|
(Darcs.startVC): same
|
||
|
(Git.startVC): improve error message for non-Git-enabled slaves
|
||
|
(Arch.checkSlaveVersion): same. continue to emit a warning when a
|
||
|
specific revision is built on a slave that doesn't pay attention
|
||
|
to args['revision'], because for slowly-changing trees it will
|
||
|
probably do the right thing, and because we have no way to tell
|
||
|
whether we're asking it to build the most recent version or not.
|
||
|
* buildbot/interfaces.py (BuildSlaveTooOldError): new exception
|
||
|
|
||
|
* buildbot/scripts/runner.py (SlaveOptions.postOptions): assert
|
||
|
that 'master' is in host:portnum format, to catch errors sooner
|
||
|
|
||
|
2005-10-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (ProcessDocs.createSummary):
|
||
|
when creating the list of warning messages, include the line
|
||
|
immediately after each WARNING: line, since that's usually where
|
||
|
the file and line number wind up.
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: OS-X slave now does QT, add a
|
||
|
TryScheduler
|
||
|
|
||
|
* NEWS: update
|
||
|
|
||
|
2005-10-22 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/html.py (HtmlResource): incorporate valid-HTML
|
||
|
patch from Brad Hards
|
||
|
* buildbot/status/classic.css: same
|
||
|
* buildbot/test/test_web.py (Waterfall): match changes
|
||
|
|
||
|
* buildbot/test/test_steps.py (BuildStep.setUp): set
|
||
|
nextBuildNumber so the test passes
|
||
|
* buildbot/test/test_status.py (MyBuilder): same
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceBuild.body): revision
|
||
|
might be numeric, so stringify it before html-escapifying it
|
||
|
(CurrentBox.getBox): add a "waiting" state, and show a countdown
|
||
|
timer for the upcoming build
|
||
|
* buildbot/status/classic.css: add background-color attributes for
|
||
|
offline/waiting/building classes
|
||
|
|
||
|
* buildbot/status/builder.py (BuildStatus): derive from
|
||
|
styles.Versioned, fix upgrade of .sourceStamp attribute. Also set
|
||
|
the default (i.e. unknown) .slavename to "???" instead of None,
|
||
|
since even unknown slavenames need to be printed eventually.
|
||
|
(BuilderStatus): also derive from styles.Versioned . More
|
||
|
importantly, determine .nextBuildNumber at creation/unpickling
|
||
|
time by scanning the directory of saved BuildStatus instances and
|
||
|
choosing one larger than the highest-numbered one found. This
|
||
|
should fix the problem where random errors during upgrades cause
|
||
|
the buildbot to forget about earlier builds. .nextBuildNumber is
|
||
|
no longer stored in the pickle.
|
||
|
(Status.builderAdded): if we can't unpickle the BuilderStatus,
|
||
|
at least log the error. Also call Builder.determineNextBuildNumber
|
||
|
once the basedir is set.
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadChanges): do
|
||
|
styles.doUpgrade afterwards, in case I decide to make Changes
|
||
|
derived from styles.Versioned some day and forget to make this
|
||
|
change later.
|
||
|
|
||
|
|
||
|
* buildbot/test/test_runner.py (Options.testForceOptions): skip
|
||
|
when running under older pythons (<2.3) in which the shlex module
|
||
|
doesn't have a 'split' function.
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommand.start): make
|
||
|
errorMessages= be a list of strings to stuff in the log before the
|
||
|
command actually starts. This makes it easier to flag multiple
|
||
|
warning messages, e.g. when the Source steps have to deal with an
|
||
|
old buildslave.
|
||
|
(CVS.startVC): handle slaves that don't handle multiple branches
|
||
|
by switching into 'clobber' mode
|
||
|
(SVN.startVC): same. Also reject branches without base_url
|
||
|
(Darcs.startVC): same. Also reject revision= in older slaves
|
||
|
(Arch.checkSlaveVersion): same (just the multiple-branches stuff)
|
||
|
(Bazaar.startVC): same, and test for baz separately than for arch
|
||
|
|
||
|
* buildbot/slave/commands.py (cvs_ver): document new features
|
||
|
|
||
|
* buildbot/process/step.py (BuildStep.slaveVersion): document it
|
||
|
(BuildStep.slaveVersionNewEnough): more useful utility method
|
||
|
* buildbot/test/test_steps.py (Version): start testing it
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.command_FORCE): note that
|
||
|
the 'force' command requires python2.3, for the shlex.split method
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: remove old freshcvs stuff,
|
||
|
since we don't use it anymore. The Twisted buildbot uses a
|
||
|
PBChangeSource now.
|
||
|
|
||
|
2005-10-21 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/process_twisted.py: rework all BuildFactory
|
||
|
classes to take a 'source' step as an argument, instead of
|
||
|
building up the SVN instance in the factory.
|
||
|
* docs/examples/twisted_master.cfg: enable build-on-branch by
|
||
|
providing a base_url and default_branch
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.command_FORCE): add
|
||
|
control over --branch and --revision, not that they are always
|
||
|
legal to provide
|
||
|
* buildbot/status/html.py (StatusResourceBuilder.force): same
|
||
|
(StatusResourceBuild.body): display SourceStamp components
|
||
|
|
||
|
* buildbot/scripts/runner.py (ForceOptions): option parser for the
|
||
|
IRC 'force' command, so it can be shared with an eventual
|
||
|
command-line-tool 'buildbot force' mode.
|
||
|
* buildbot/test/test_runner.py (Options.testForceOptions): test it
|
||
|
|
||
|
2005-10-20 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/mail.py (MailNotifier.buildMessage): reformat
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: update to use Schedulers
|
||
|
|
||
|
* buildbot/scripts/sample.cfg: update with Schedulers
|
||
|
|
||
|
* buildbot/interfaces.py (IBuilderControl.requestBuildSoon): new
|
||
|
method specifically for use by HTML "force build" button and the
|
||
|
IRC "force" command. Raises an immediate error if there are no
|
||
|
slaves available.
|
||
|
(IBuilderControl.requestBuild): make this just submit a build, not
|
||
|
try to check for existing slaves or set up any when-finished
|
||
|
Deferreds or anything.
|
||
|
* buildbot/process/builder.py (BuilderControl): same
|
||
|
* buildbot/status/html.py (StatusResourceBuilder.force): same
|
||
|
* buildbot/status/words.py (IrcStatusBot.command_FORCE): same
|
||
|
* buildbot/test/test_slaves.py: same
|
||
|
* buildbot/test/test_web.py: same
|
||
|
|
||
|
2005-10-19 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: re-sync with reality: bring
|
||
|
back python2.2 tests, turn off OS-X threadedselect-reactor tests
|
||
|
|
||
|
2005-10-18 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/html.py: provide 'status' argument to most
|
||
|
StatusResourceFOO objects
|
||
|
(StatusResourceBuild.body): href-ify the Builder name, add "Steps
|
||
|
and Logfiles" section to make the Build page into a more-or-less
|
||
|
comprehensive source of status information about the build
|
||
|
|
||
|
* buildbot/status/mail.py (MailNotifier): include the Build's URL
|
||
|
* buildbot/status/words.py (IrcStatusBot.buildFinished): same
|
||
|
|
||
|
2005-10-17 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/process_twisted.py (TwistedTrial): update Trial
|
||
|
arguments to accomodate Twisted >=2.1.0 . I will have to figure
|
||
|
out what to do about other projects: the correct options for
|
||
|
recent Twisteds will not work for older ones.
|
||
|
|
||
|
2005-10-15 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/builder.py (Status.getURLForThing): add method
|
||
|
to provide a URL for arbitrary IStatusFoo objects. The idea is to
|
||
|
use this in email/IRC status clients to make them more useful, by
|
||
|
providing the end user with hints on where to learn more about the
|
||
|
object being reported on.
|
||
|
* buildbot/test/test_web.py (GetURL): tests for it
|
||
|
|
||
|
2005-10-14 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_config.py (ConfigTest._testSources_1): oops,
|
||
|
fix bug resulting from deferredResult changes
|
||
|
|
||
|
2005-10-13 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_changes.py: remove use of deferredResult
|
||
|
* buildbot/test/test_config.py: same
|
||
|
* buildbot/test/test_control.py: same
|
||
|
* buildbot/test/test_status.py: same
|
||
|
* buildbot/test/test_vc.py: this is the only remaining use, since
|
||
|
it gets used at module level. This needs to be replaced by some
|
||
|
sort of class-level run-once routine.
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.command_WATCH): fix typo
|
||
|
|
||
|
* lots: implement multiple slaves per Builder, which means multiple
|
||
|
current builds per Builder. Some highlights:
|
||
|
* buildbot/interfaces.py (IBuilderStatus.getState): return a tuple
|
||
|
of (state,currentBuilds) instead of (state,currentBuild)
|
||
|
(IBuilderStatus.getCurrentBuilds): replace getCurrentBuild()
|
||
|
(IBuildStatus.getSlavename): new method, so you can tell which
|
||
|
slave got used. This only gets set when the build completes.
|
||
|
(IBuildRequestStatus.getBuilds): new method
|
||
|
|
||
|
* buildbot/process/builder.py (SlaveBuilder): add a .state
|
||
|
attribute to track things like ATTACHING and IDLE and BUILDING,
|
||
|
instead of..
|
||
|
(Builder): .. the .slaves attribute here, which has been turned
|
||
|
into a simple list of available slaves. Added a separate
|
||
|
attaching_slaves list to track ones that are not yet ready for
|
||
|
builds.
|
||
|
(Builder.fireTestEvent): put off the test-event callback for a
|
||
|
reactor turn, to make tests a bit more consistent.
|
||
|
(Ping): cleaned up the slaveping a bit, now it disconnects if the
|
||
|
ping fails due to an exception. This needs work, I'm worried that
|
||
|
a code error could lead to a constantly re-connecting slave.
|
||
|
Especially since I'm trying to move to a distinct remote_ping
|
||
|
method, separate from the remote_print that we currently use.
|
||
|
(BuilderControl.requestBuild): return a convenience Deferred that
|
||
|
provides an IBuildStatus when the build finishes.
|
||
|
(BuilderControl.ping): ping all connected slaves, only return True
|
||
|
if they all respond.
|
||
|
|
||
|
* buildbot/slave/bot.py (BuildSlave.stopService): stop trying to
|
||
|
reconnect when we shut down.
|
||
|
|
||
|
* buildbot/status/builder.py: implement new methods, convert
|
||
|
one-build-at-a-time methods to handle multiple builds
|
||
|
* buildbot/status/*.py: do the same in all default status targets
|
||
|
* buildbot/status/html.py: report the build's slavename in the
|
||
|
per-Build page, report all buildslaves on the per-Builder page
|
||
|
|
||
|
* buildbot/test/test_run.py: update/create tests
|
||
|
* buildbot/test/test_slaves.py: same
|
||
|
* buildbot/test/test_scheduler.py: remove stale test
|
||
|
|
||
|
* docs/buildbot.texinfo: document the new builder-specification
|
||
|
'slavenames' parameter
|
||
|
|
||
|
2005-10-12 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/buildset.py (BuildSet): fix bug where BuildSet did not
|
||
|
report failure correctly, causing Dependent builds to run when
|
||
|
they shouldn't have.
|
||
|
* buildbot/status/builder.py (BuildSetStatus): same
|
||
|
* buildbot/test/test_buildreq.py (Set.testBuildSet): verify it
|
||
|
(Set.testSuccess): test the both-pass case too
|
||
|
* buildbot/test/test_dependencies.py (Dependencies.testRun_Fail):
|
||
|
fix this test: it was ending too early, masking the failure before
|
||
|
(Logger): specialized StatusReceiver to make sure the dependent
|
||
|
builds aren't even started, much less completed.
|
||
|
|
||
|
2005-10-07 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slave/bot.py (SlaveBuilder.activity): survive
|
||
|
bot.SlaveBuilder being disowned in the middle of a build
|
||
|
|
||
|
* buildbot/status/base.py (StatusReceiverMultiService): oops, make
|
||
|
this inherit from StatusReceiver. Also upcall in __init__. This
|
||
|
fixes the embarrasing crash when the new buildSetSubmitted method
|
||
|
is invoked and Waterfall/etc don't implement their own.
|
||
|
* buildbot/test/test_run.py: add a TODO note about a test to catch
|
||
|
just this sort of thing.
|
||
|
|
||
|
* buildbot/process/builder.py (Builder.attached): remove the
|
||
|
already-attached warning, this situation is normal. Add some
|
||
|
comments explaining it.
|
||
|
|
||
|
2005-10-02 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/changes/maildir.py (Maildir.start): Tolerate
|
||
|
OverflowError when setting up dnotify, because some 64-bit systems
|
||
|
have problems with signed-vs-unsigned constants and trip up on the
|
||
|
DN_MULTISHOT flag. Patch from Brad Hards.
|
||
|
|
||
|
2005-09-06 Fred Drake <fdrake@users.sourceforge.net>
|
||
|
|
||
|
* buildbot/process/step.py (BuildStep, ShellCommand): Add
|
||
|
progressMetrics, description, descriptionDone to the 'parms' list,
|
||
|
and make use the 'parms' list from the implementation class
|
||
|
instead of only BuildStep to initialize the parameters. This
|
||
|
allows buildbot.process.factory.s() to initialize all the parms,
|
||
|
not just those defined in directly by BuildStep.
|
||
|
|
||
|
2005-09-03 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: start adding items for the next release
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: (sync with reality) turn off
|
||
|
python2.2 tests, change 'Quick' builder to only use python2.3
|
||
|
|
||
|
2005-09-02 Fred Drake <fdrake@users.sourceforge.net>
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceBuilder.body): only show
|
||
|
the "Ping Builder" button if the build control is available; the
|
||
|
user sees an exception otherwise
|
||
|
|
||
|
* docs/buildbot.texinfo (PBChangeSource): fix a typo
|
||
|
|
||
|
2005-09-01 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/interfaces.py (IBuilderStatus.getState): update
|
||
|
signature, point out that 'build' can be None
|
||
|
(IBuildStatus.getETA): point out ETA can be none
|
||
|
|
||
|
* buildbot/status/html.py (CurrentBox.getBox): tolerate build/ETA
|
||
|
being None
|
||
|
* buildbot/status/words.py (IrcStatusBot.emit_status): same
|
||
|
|
||
|
2005-08-31 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/base.py (StatusReceiver.builderChangedState):
|
||
|
update to match correct signature: removed 'eta' argument
|
||
|
* buildbot/status/mail.py (MailNotifier.builderChangedState): same
|
||
|
|
||
|
2005-08-30 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/builder.py (LogFile): remove the assertion that
|
||
|
blows up when you try to overwrite an existing logfile, instead
|
||
|
just emit a warning. This case gets hit when the buildmaster is
|
||
|
killed and doesn't get a chance to write out the serialized
|
||
|
BuilderStatus object, so the .nextBuildNumber attribute gets out
|
||
|
of date.
|
||
|
|
||
|
* buildbot/scripts/runner.py (sendchange): add --revision_file to
|
||
|
the 'buildbot sendchange' arguments, for the Darcs context file
|
||
|
* docs/buildbot.texinfo (sendchange): document it
|
||
|
|
||
|
* buildbot/status/html.py: add pending/upcoming builds to CurrentBox
|
||
|
* buildbot/interfaces.py (IScheduler.getPendingBuildTimes): new method
|
||
|
(IStatus.getSchedulers): new method
|
||
|
* buildbot/status/builder.py (BuilderStatus): track pendingBuilds
|
||
|
(Status.getSchedulers): implement
|
||
|
* buildbot/process/builder.py (Builder): maintain
|
||
|
BuilderStatus.pendingBuilds
|
||
|
* buildbot/scheduler.py (Scheduler.getPendingBuildTimes): new method
|
||
|
(TryBase.addChange): Try schedulers should ignore Changes
|
||
|
|
||
|
* buildbot/scripts/tryclient.py (getTopdir): implement getTopdir
|
||
|
for 'try' on CVS/SVN
|
||
|
* buildbot/test/test_runner.py (Try.testGetTopdir): test case
|
||
|
|
||
|
* buildbot/scripts/tryclient.py (Try): make jobdir-style 'try'
|
||
|
report status properly.
|
||
|
(Try.createJob): implement unique buildset IDs
|
||
|
|
||
|
* buildbot/status/client.py (StatusClientPerspective): add a
|
||
|
perspective_getBuildSets method for the benefit of jobdir-style
|
||
|
'try'.
|
||
|
* docs/buildbot.texinfo (try): more docs
|
||
|
* buildbot/test/test_scheduler.py (Scheduling.testGetBuildSets):
|
||
|
new test case
|
||
|
|
||
|
2005-08-18 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/tryclient.py (Try): make 'try' status reporting
|
||
|
actually work. It's functional but still kind of clunky. Also, it
|
||
|
only works with the pb-style.. needs to be made to work with the
|
||
|
jobdir-style too.
|
||
|
|
||
|
* buildbot/status/client.py (RemoteBuildSet): new class
|
||
|
(RemoteBuildRequest): same
|
||
|
(RemoteBuild.remote_waitUntilFinished): return the RemoteBuild
|
||
|
object, not the internal BuildStatus object.
|
||
|
(RemoteBuild.remote_subscribe): new method to subscribe to builds
|
||
|
outside of the usual buildStarted() return value.
|
||
|
(BuildSubscriber): support class for RemoteBuild.remote_subscribe
|
||
|
|
||
|
* buildbot/scheduler.py (Try_Jobdir): convey buildsetID properly
|
||
|
(Try_Userpass_Perspective.perspective_try): return a remotely
|
||
|
usable BuildSetStatus object
|
||
|
|
||
|
* buildbot/interfaces.py (IBuildStatus): remove obsolete
|
||
|
isStarted()/waitUntilStarted()
|
||
|
|
||
|
2005-08-16 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/builder.py: implement IBuildSetStatus and
|
||
|
IBuildRequestStatus, wire them into place.
|
||
|
* buildbot/buildset.py: same. Add ID, move wait-until-finished
|
||
|
methods into the BuildSetStatus object.
|
||
|
* buildbot/interfaces.py: same
|
||
|
(IStatus.getBuildSets): new method to get pending BuildSets
|
||
|
(IStatusReceiver.buildsetSubmitted): new method which hears about
|
||
|
new BuildSets
|
||
|
* buildbot/master.py (BuildMaster.submitBuildSet): same
|
||
|
* buildbot/process/base.py (BuildRequest): same, replace
|
||
|
waitUntilStarted with subscribe/unsubscribe
|
||
|
* buildbot/process/builder.py (BuilderControl.forceBuild): use
|
||
|
subscribe instead of waitUntilStarted
|
||
|
* buildbot/status/base.py (StatusReceiver.buildsetSubmitted): stub
|
||
|
for new method
|
||
|
* buildbot/status/client.py (StatusClientPerspective.builderRemoved):
|
||
|
same
|
||
|
* buildbot/test/test_buildreq.py: update for new code
|
||
|
* buildbot/test/test_control.py (Force.testRequest): same
|
||
|
|
||
|
|
||
|
* buildbot/slave/commands.py (Darcs.doVCFull): fix get-revision
|
||
|
for Darcs to not use the tempfile module, so it works under
|
||
|
python-2.2 too. We really didn't need the full cleverness of that
|
||
|
module, since the slave has exclusive control of its own builddir.
|
||
|
|
||
|
2005-08-15 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/tryclient.py (CVSExtractor): implement 'try'
|
||
|
for CVS trees. It doesn't work for non-trunk branches,
|
||
|
unfortunately.
|
||
|
* buildbot/test/test_vc.py (CVS.testTry): test it, but skip the
|
||
|
branch test
|
||
|
|
||
|
* Makefile: make it easier to test against python2.2
|
||
|
|
||
|
* buildbot/test/test_vc.py (VCBase.tearDown): provide for
|
||
|
tearDown2, so things like Arch can unregister archives as they're
|
||
|
shutting down. The previous subclass-override-tearDown technique
|
||
|
resulted in a nested maybeWait() and test failures under
|
||
|
Twisted-1.3.0
|
||
|
|
||
|
* buildbot/scripts/tryclient.py (getSourceStamp): extract branches
|
||
|
where we can (Arch), add a branch= argument to set the branch used
|
||
|
when we can't
|
||
|
(BazExtractor): extract the branch too
|
||
|
(TlaExtractor): same
|
||
|
* buildbot/scripts/runner.py (TryOptions): add --branch
|
||
|
* docs/buildbot.texinfo (try): document --branch/try_branch
|
||
|
|
||
|
* buildbot/slave/commands.py (Darcs): implement get-revision for
|
||
|
Darcs, so that 'try' will work. This requires the tempfile module
|
||
|
from python-2.3 .
|
||
|
|
||
|
* buildbot/test/test_vc.py: rewrite tests, getting better coverage
|
||
|
of revisions, branches, and 'try' in the process.
|
||
|
|
||
|
2005-08-11 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/master.py (DebugPerspective.perspective_pokeIRC): fix
|
||
|
this, it got broken at some point in the last few releases
|
||
|
* buildbot/status/words.py (IrcBuildRequest): reply was broken
|
||
|
(IrcStatusBot.emit_status): handle new IBuilderStatus.getState,
|
||
|
specifically the removal of ETA information from the tuple
|
||
|
|
||
|
* buildbot/locks.py: use %d for id() instead of %x, avoid a silly
|
||
|
warning message
|
||
|
|
||
|
* docs/buildbot.texinfo (try): document both --builder and
|
||
|
'try_builders' in .buildbot/options
|
||
|
* buildbot/scripts/runner.py (TryOptions): add --builder,
|
||
|
accumulate the values into opts['builders']
|
||
|
* buildbot/scripts/tryclient.py (Try.__init__): set builders
|
||
|
* buildbot/test/test_runner.py (Try): add some quick tests to make
|
||
|
sure 'buildbot try --options' and .buildbot/options get parsed
|
||
|
* buildbot/test/test_scheduler.py (Scheduling.testTryUserpass):
|
||
|
use --builder control
|
||
|
|
||
|
* docs/buildbot.texinfo (try): add --port argument to PB style
|
||
|
|
||
|
* buildbot/scripts/tryclient.py (SourceStampExtractor): return an
|
||
|
actual SourceStamp. Still need to extract a branch name, somehow.
|
||
|
(Try): finish implementing the try client side, still need a UI
|
||
|
for specifying which builders to use
|
||
|
(Try.getopt): factor our options/config-file reading
|
||
|
* buildbot/test/test_scheduler.py (Scheduling.testTryUserpass):
|
||
|
test it
|
||
|
* buildbot/test/test_vc.py: match SourceStampExtractor change
|
||
|
|
||
|
* buildbot/scripts/runner.py (Options.opt_verbose): --verbose
|
||
|
causes the twisted log to be sent to stderr
|
||
|
|
||
|
* buildbot/scheduler.py (Try_Userpass): implement the PB style
|
||
|
|
||
|
2005-08-10 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/runner.py: Add 'buildbot try' command, jobdir
|
||
|
style is 90% done, still missing status reporting or waiting for
|
||
|
the buildsets to finish, and it is completely untested.
|
||
|
|
||
|
* buildbot/trybuild.py: delete file, move contents to ..
|
||
|
* buildbot/scripts/tryclient.py (getSourceStamp): .. here
|
||
|
* buildbot/test/test_vc.py: match the move
|
||
|
|
||
|
* buildbot/scheduler.py (Try_Jobdir): implement the jobdir style
|
||
|
of the TryScheduler, no buildsetID or status-tracking support yet
|
||
|
* buildbot/test/test_scheduler.py (Scheduling.testTryJobdir): test it
|
||
|
|
||
|
* buildbot/changes/maildir.py (Maildir.setBasedir): make it
|
||
|
possible to set the basedir after __init__ time, so it is easier
|
||
|
to use as a Service-child of the BuildMaster instance
|
||
|
|
||
|
* buildbot/changes/maildirtwisted.py (MaildirService): make a form
|
||
|
that delivers messages to its Service parent instead of requiring
|
||
|
a subclass to be useful. This turns out to be much easier to build
|
||
|
unit tests around.
|
||
|
|
||
|
* buildbot/scripts/tryclient.py (createJob): utility code to
|
||
|
create jobfiles, will eventually be used by 'buildbot try'
|
||
|
|
||
|
2005-08-08 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/buildbot.texinfo (try): add docs on the
|
||
|
as-yet-unimplemented Try scheduler
|
||
|
|
||
|
* buildbot/test/test_buildreq.py: move Scheduling tests out to ..
|
||
|
* buildbot/test/test_scheduler.py: .. here
|
||
|
(Scheduling.testTryJobdir): add placeholder test for 'try'
|
||
|
|
||
|
* buildbot/test/test_status.py (Log.testMerge3): update to match new
|
||
|
addEntry merging (>=chunkSize) behavior
|
||
|
(Log.testConsumer): update to handle new callLater(0) behavior
|
||
|
|
||
|
* buildbot/test/test_web.py: rearrange tests a bit, add test for
|
||
|
both the MAX_LENGTH bugfix and the resumeProducing hang.
|
||
|
|
||
|
* buildbot/status/builder.py (LogFileProducer.resumeProducing):
|
||
|
put off the actual resumeProducing for a moment with
|
||
|
reactor.callLater(0). This works around a twisted-1.3.0 bug which
|
||
|
causes large logfiles to hang midway through.
|
||
|
|
||
|
* buildbot/process/step.py (BuildStep.addCompleteLog): break the
|
||
|
logfile up into chunks, both to avoid NetstringReceiver.MAX_LENGTH
|
||
|
and to improve memory usage when streaming the file out to a web
|
||
|
browser.
|
||
|
* buildbot/status/builder.py (LogFile.addEntry): change > to >= to
|
||
|
make this work cleanly
|
||
|
|
||
|
2005-08-03 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/trybuild.py: new file for 'try' utilities
|
||
|
(getSourceStamp): run in a tree, find out the baserev+patch
|
||
|
* buildbot/test/test_vc.py (VCBase.do_getpatch): test it,
|
||
|
implemented for SVN and Darcs, still working on Arch. I don't know
|
||
|
how to make CVS work yet.
|
||
|
|
||
|
* docs/buildbot.texinfo: document the 'buildbot' command-line
|
||
|
tool, including the not-yet-implemented 'try' feature, and the
|
||
|
in-flux .buildbot/ options directory.
|
||
|
|
||
|
2005-07-20 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/locks.py: added temporary id() numbers to Lock
|
||
|
descriptions, to track down a not-really-sharing-the-Lock bug
|
||
|
|
||
|
* buildbot/test/runutils.py: must import errno, cut-and-paste bug
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py (ShellBase.failUnlessIn):
|
||
|
needed for python2.2 compatibility
|
||
|
* buildbot/test/test_vc.py: python2.2 compatibility: generators
|
||
|
are from the __future__
|
||
|
|
||
|
2005-07-19 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): give a better error
|
||
|
message when schedulers use unknown builders
|
||
|
|
||
|
* buildbot/process/builder.py (Builder.compareToSetup): make sure
|
||
|
SlaveLock('name') and MasterLock('name') are distinct
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): oops, sanity-check
|
||
|
c['schedulers'] in such a way that we can actually accept
|
||
|
Dependent instances
|
||
|
* buildbot/test/test_config.py: check it
|
||
|
|
||
|
* buildbot/scheduler.py (Dependent.listBuilderNames): oops, add
|
||
|
utility method to *all* the Schedulers
|
||
|
(Periodic.listBuilderNames): same
|
||
|
|
||
|
* docs/buildbot.texinfo (Interlocks): update chapter to match
|
||
|
reality
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): Add sanity checks
|
||
|
to make sure that c['sources'], c['schedulers'], and c['status']
|
||
|
are all lists of the appropriate objects, and that the Schedulers
|
||
|
all point to real Builders
|
||
|
* buildbot/interfaces.py (IScheduler, IUpstreamScheduler): add
|
||
|
'listBuilderNames' utility method to support this
|
||
|
* buildbot/scheduler.py: implement the utility method
|
||
|
* buildbot/test/test_config.py (ConfigTest.testSchedulers): test it
|
||
|
|
||
|
* docs/buildbot.texinfo: add some @cindex entries
|
||
|
|
||
|
* buildbot/test/test_vc.py (Arch.createRepository): set the tla ID
|
||
|
if it wasn't already set: most tla commands will fail unless one
|
||
|
has been set.
|
||
|
(Arch.createRepository): and disable bazaar's revision cache, since
|
||
|
they cause test failures (the multiple repositories we create all
|
||
|
interfere with each other through the cache)
|
||
|
|
||
|
* buildbot/test/test_web.py (WebTest): remove use of deferredResult,
|
||
|
bring it properly up to date with twisted-2.0 test guidelines
|
||
|
|
||
|
* buildbot/master.py (BuildMaster): remove references to old
|
||
|
'interlock' module, this caused a bunch of post-merge test
|
||
|
failures
|
||
|
* buildbot/test/test_config.py: same
|
||
|
* buildbot/process/base.py (Build): same
|
||
|
|
||
|
* buildbot/test/test_slaves.py: stubs for new test case
|
||
|
|
||
|
* buildbot/scheduler.py: add test-case-name tag
|
||
|
* buildbot/test/test_buildreq.py: same
|
||
|
|
||
|
* buildbot/slave/bot.py (SlaveBuilder.__init__): remove some
|
||
|
unnecessary init code
|
||
|
(Bot.remote_setBuilderList): match it
|
||
|
|
||
|
* docs/buildbot.texinfo (@settitle): don't claim version 1.0
|
||
|
|
||
|
* buildbot/changes/mail.py (parseSyncmail): update comment
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py: disable Shell tests on
|
||
|
platforms that don't suport IReactorProcess
|
||
|
|
||
|
* buildbot/status/builder.py (LogFile): remove the 't' mode from
|
||
|
all places where we open logfiles. It causes OS-X to open the file
|
||
|
in some weird mode that that prevents us from mixing reads and
|
||
|
writes to the same filehandle, which we depend upon to implement
|
||
|
_generateChunks properly. This change doesn't appear to break
|
||
|
win32, on which "b" and "t" are treated differently but a missing
|
||
|
flag seems to be interpreted as "t".
|
||
|
|
||
|
2005-07-18 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slave/commands.py (ShellCommand): overhaul
|
||
|
error-handling code, to try and make timeout/interrupt work
|
||
|
properly, and make win32 happier
|
||
|
* buildbot/test/test_slavecommand.py: clean up, stop using
|
||
|
reactor.iterate, add tests for timeout and interrupt
|
||
|
* buildbot/test/sleep.py: utility for a new timeout test
|
||
|
|
||
|
* buildbot/twcompat.py: copy over twisted 1.3/2.0 compatibility
|
||
|
code from the local-usebranches branch
|
||
|
|
||
|
2005-07-17 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/process_twisted.py
|
||
|
(TwistedReactorsBuildFactory): change the treeStableTimer to 5
|
||
|
minutes, to match the other twisted BuildFactories, and don't
|
||
|
excuse failures in c/qt/win32 reactors any more.
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: turn off the 'threadless' and
|
||
|
'freebsd' builders, since the buildslaves have been unavailable
|
||
|
for quite a while
|
||
|
|
||
|
2005-07-13 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py (VCBase.do_branch): test the new
|
||
|
build-on-branch feature
|
||
|
|
||
|
* buildbot/process/step.py (Darcs.__init__): add base_url and
|
||
|
default_branch arguments, just like SVN
|
||
|
(Arch.__init__): note that the version= argument is really the
|
||
|
default branch name
|
||
|
|
||
|
* buildbot/slave/commands.py (SourceBase): keep track of the
|
||
|
repository+branch that was used for the last checkout in
|
||
|
SRCDIR/.buildbot-sourcedata . If the contents of this file do not
|
||
|
match, we clobber the directory and perform a fresh checkout
|
||
|
rather than trying to do an in-place update. This should protect
|
||
|
us against trying to get to branch B by doing an update in a tree
|
||
|
obtained from branch A.
|
||
|
(CVS.setup): add CVS-specific sourcedata: root, module, and branch
|
||
|
(SVN.setup): same, just the svnurl
|
||
|
(Darcs.setup): same, just the repourl
|
||
|
(Arch.setup): same, arch coordinates (url), version, and
|
||
|
buildconfig. Also pull the buildconfig from the args dictionary,
|
||
|
which we weren't doing before, so the build-config was effectively
|
||
|
disabled.
|
||
|
(Arch.sourcedirIsUpdateable): don't try to update when we're
|
||
|
moving to a specific revision: arch can't go backwards, so it is
|
||
|
safer to just clobber the tree and checkout a new one at the
|
||
|
desired revision.
|
||
|
(Bazaar.setup): same sourcedata as Arch
|
||
|
|
||
|
* buildbot/test/test_dependencies.py (Dependencies.testRun_Fail):
|
||
|
use maybeWait, to work with twisted-1.3.0 and twcompat
|
||
|
(Dependencies.testRun_Pass): same
|
||
|
|
||
|
* buildbot/test/test_vc.py: rearrange, cleanup
|
||
|
|
||
|
* buildbot/twcompat.py: add defer.waitForDeferred and
|
||
|
utils.getProcessOutputAndValue, so test_vc.py (which uses them)
|
||
|
can work under twisted-1.3.0 .
|
||
|
|
||
|
* buildbot/test/test_vc.py: rewrite. The sample repositories are
|
||
|
now created at setUp time. This increases the runtime of the test
|
||
|
suite considerably (from 91 seconds to 151), but it removes the
|
||
|
need for an offline tarball, which should solve a problem I've
|
||
|
seen where the test host has a different version of svn than the
|
||
|
tarball build host. The new code also validates that mode=update
|
||
|
really picks up recent commits. This approach will also make it
|
||
|
easier to test out branches, because the code which creates the VC
|
||
|
branches is next to the code which uses them. It will also make it
|
||
|
possible to test some change-notification hooks, by actually
|
||
|
performing a VC commit and watching to see the ChangeSource get
|
||
|
notified.
|
||
|
|
||
|
2005-07-12 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/buildbot.texinfo (SVN): add branches example
|
||
|
* docs/Makefile (buildbot.ps): add target for postscript manual
|
||
|
|
||
|
* buildbot/test/test_dependencies.py: s/test_interlocks/test_locks/
|
||
|
* buildbot/test/test_locks.py: same
|
||
|
|
||
|
* buildbot/process/step.py (Darcs): comment about default branches
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): don't look for
|
||
|
c['interlocks'] in the config file, complain if it is present.
|
||
|
Scan all locks in c['builders'] to make sure the Locks they use
|
||
|
are uniquely named.
|
||
|
* buildbot/test/test_config.py: remove old c['interlocks'] test,
|
||
|
add some tests to check for non-uniquely-named Locks
|
||
|
* buildbot/test/test_vc.py (Patch.doPatch): fix factory.steps,
|
||
|
since the unique-Lock validation code requires it now
|
||
|
|
||
|
* buildbot/locks.py: fix test-case-name
|
||
|
|
||
|
* buildbot/interlock.py: remove old file
|
||
|
|
||
|
2005-07-11 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_interlock.py: rename to..
|
||
|
* buildbot/test/test_locks.py: .. something shorter
|
||
|
|
||
|
* buildbot/slave/bot.py (BuildSlave.stopService): newer Twisted
|
||
|
versions (after 2.0.1) changed internet.TCPClient to shut down the
|
||
|
connection in stopService. Change the code to handle this
|
||
|
gracefully.
|
||
|
|
||
|
* buildbot/process/base.py (Build): handle whole-Build locks
|
||
|
* buildbot/process/builder.py (Builder.compareToSetup): same
|
||
|
* buildbot/test/test_interlock.py: make tests work
|
||
|
|
||
|
* buildbot/process/step.py (BuildStep.startStep): complain if a
|
||
|
Step tries to claim a lock that's owned by its own Build
|
||
|
(BuildStep.releaseLocks): typo
|
||
|
|
||
|
* buildbot/locks.py (MasterLock): use ComparableMixin so config
|
||
|
file reloads don't replace unchanged Builders
|
||
|
(SlaveLock): same
|
||
|
* buildbot/test/test_config.py (ConfigTest.testInterlocks):
|
||
|
rewrite to cover new Locks instead of old c['interlocks']
|
||
|
* buildbot/test/runutils.py (RunMixin.connectSlaves): remember
|
||
|
slave2 too
|
||
|
|
||
|
|
||
|
* buildbot/test/test_dependencies.py (Dependencies.setUp): always
|
||
|
start the master and connect the buildslave
|
||
|
|
||
|
* buildbot/process/step.py (FailingDummy.done): finish with a
|
||
|
FAILURE status rather than raising an exception
|
||
|
|
||
|
* buildbot/process/base.py (BuildRequest.mergeReasons): don't try to
|
||
|
stringify a BuildRequest.reason that is None
|
||
|
|
||
|
* buildbot/scheduler.py (BaseUpstreamScheduler.buildSetFinished):
|
||
|
minor fix
|
||
|
* buildbot/status/builder.py (BuildSetStatus): implement enough to
|
||
|
allow scheduler.Dependent to work
|
||
|
* buildbot/buildset.py (BuildSet): set .reason and .results
|
||
|
|
||
|
* buildbot/test/test_interlock.py (Locks.setUp): connect both
|
||
|
slaves, to make the test stop hanging. It still fails, of course,
|
||
|
because I haven't even started to implement Locks.
|
||
|
|
||
|
* buildbot/test/runutils.py (RunMixin.connectSlaves): new utility
|
||
|
|
||
|
* docs/buildbot.texinfo (Build-Dependencies): redesign the feature
|
||
|
* buildbot/interfaces.py (IUpstreamScheduler): new Interface
|
||
|
* buildbot/scheduler.py (BaseScheduler): factor out common stuff
|
||
|
(Dependent): new class for downstream build dependencies
|
||
|
* buildbot/test/test_dependencies.py: tests (still failing)
|
||
|
|
||
|
* buildbot/buildset.py (BuildSet.waitUntilSuccess): minor notes
|
||
|
|
||
|
2005-07-07 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/runutils.py (RunMixin): factored this class out..
|
||
|
* buildbot/test/test_run.py: .. from here
|
||
|
* buildbot/test/test_interlock.py: removed old c['interlock'] tests,
|
||
|
added new buildbot.locks tests (which all hang right now)
|
||
|
* buildbot/locks.py (SlaveLock, MasterLock): implement Locks
|
||
|
* buildbot/process/step.py: claim/release per-BuildStep locks
|
||
|
|
||
|
* docs/Makefile: add 'buildbot.html' target
|
||
|
|
||
|
* buildbot/process/step.py (CVS.__init__): allow branch=None to be
|
||
|
interpreted as "HEAD", so that all VC steps can accept branch=None
|
||
|
and have it mean the "default branch".
|
||
|
|
||
|
* docs/buildbot.texinfo: add Schedulers, Dependencies, and Locks
|
||
|
|
||
|
2005-07-07 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: update to match current usage
|
||
|
|
||
|
* docs/buildbot.texinfo (System Architecture): comment out the
|
||
|
image, it doesn't exist yet and just screws up the HTML manual.
|
||
|
|
||
|
2005-07-05 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* debian/.cvsignore: oops, missed one. Removing leftover file.
|
||
|
|
||
|
2005-06-17 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py (VCSupport.__init__): svn --version
|
||
|
changed its output in 1.2.0, don't mistakenly think that the
|
||
|
subversion we find isn't capable of supporting our tests.
|
||
|
|
||
|
* debian/*: remove the debian/ directory and its contents, to make
|
||
|
life easier for the proper Debian maintainer
|
||
|
* MANIFEST.in: same
|
||
|
* Makefile (release): same
|
||
|
|
||
|
2005-06-07 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* everything: create a distinct SourceStamp class to replace the
|
||
|
ungainly 4-tuple, let it handle merging instead of BuildRequest.
|
||
|
Changed the signature of Source.startVC to include the revision
|
||
|
information (instead of passing it through self.args). Implement
|
||
|
branches for SVN (now only Darcs/Git is missing support). Add more
|
||
|
Scheduler tests.
|
||
|
|
||
|
2005-06-06 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* everything: rearrange build scheduling. Create a new Scheduler
|
||
|
object (configured in c['schedulers'], which submit BuildSets to a
|
||
|
set of Builders. Builders can now use multiple slaves. Builds can
|
||
|
be run on alternate branches, either requested manually or driven
|
||
|
by changes. This changed some of the Status classes. Interlocks
|
||
|
are out of service until they've been properly split into Locks
|
||
|
and Dependencies. treeStableTimer, isFileImportant, and
|
||
|
periodicBuild have all been moved from the Builder to the
|
||
|
Scheduler.
|
||
|
(BuilderStatus.currentBigState): removed the 'waiting' and
|
||
|
'interlocked' states, removed the 'ETA' argument.
|
||
|
|
||
|
2005-05-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/pbutil.py (ReconnectingPBClientFactory): Twisted-1.3
|
||
|
erroneously abandons the connection (in clientConnectionFailed)
|
||
|
for non-UserErrors, which means that if we lose the connection due
|
||
|
to a network problem or a timeout, we'll never try to reconnect.
|
||
|
Fix this by not upcalling to the buggy parent method. Note:
|
||
|
twisted-2.0 fixes this, but the function only has 3 lines so it
|
||
|
makes more sense to copy it than to try and detect the buggyness
|
||
|
of the parent class. Fixes SF#1207588.
|
||
|
|
||
|
* buildbot/changes/changes.py (Change.branch): doh! Add a
|
||
|
class-level attribute to accomodate old Change instances that were
|
||
|
pickled before 0.6.5 (where .branch was added for new Changes).
|
||
|
This fixes the exception that occurs when you try to look at an
|
||
|
old Change (through asHTML).
|
||
|
|
||
|
* buildbot/__init__.py (version): bump to 0.6.6+ while between
|
||
|
releases
|
||
|
|
||
|
2005-05-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py (version): release 0.6.6
|
||
|
|
||
|
2005-05-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: update for 0.6.6 release
|
||
|
* debian/changelog: same
|
||
|
|
||
|
* buildbot/scripts/runner.py (start): put the basedir in sys.path
|
||
|
before starting: this was done by twistd back when we spawned it,
|
||
|
now that we're importing the pieces and running them in the
|
||
|
current process, we have to do it ourselves. This allows
|
||
|
master.cfg to import files from the same directory without
|
||
|
explicitly manipulating PYTHONPATH. Thanks to Thomas Vander
|
||
|
Stichele for the catch.
|
||
|
(Options.opt_version): Add a --version command (actually, just make
|
||
|
the existing --version command emit Buildbot's version too)
|
||
|
|
||
|
* buildbot/status/builder.py (HTMLLogFile.upgrade): oops! second
|
||
|
fix to make this behave like other LogFiles, this time to handle
|
||
|
existing LogFiles on disk. (add the missing .upgrade method)
|
||
|
* buildbot/test/test_status.py (Log.testHTMLUpgrade): test it
|
||
|
|
||
|
2005-05-21 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_runner.py (Create.testMaster): match the
|
||
|
rawstring change in runner.py:masterTAC
|
||
|
|
||
|
* buildbot/test/test_config.py (ConfigTest.testIRC): skip unless
|
||
|
TwistedWords is installed
|
||
|
* buildbot/test/test_status.py: same, with TwistedMail
|
||
|
|
||
|
* buildbot/master.py: remove old IRC/Waterfall imports (used by
|
||
|
some old, deprecated, and removed config keys). This should enable
|
||
|
you to use the base buildbot functionality with Twisted-2.0.0 when
|
||
|
you don't also have TwistedWeb and TwistedWords installed
|
||
|
|
||
|
2005-05-20 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/runner.py (run): call sendchange(), not
|
||
|
do_sendchange(): thus 'buildbot sendchange' was broken in 0.6.5
|
||
|
(run): call stop("HUP"), not "-HUP", 'buildbot stop' was broken.
|
||
|
(stop): don't wait for process to die when sending SIGHUP
|
||
|
(masterTAC): use a rawstring for basedir=, otherwise '\' in the
|
||
|
directory name gets interpreted, which you don't want
|
||
|
(slaveTAC): same
|
||
|
|
||
|
* buildbot/__init__.py (version): bump to 0.6.5+ while between
|
||
|
releases
|
||
|
|
||
|
2005-05-18 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py (version): Releasing buildbot-0.6.5
|
||
|
|
||
|
2005-05-18 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* README: update for 0.6.5
|
||
|
* debian/changelog: same
|
||
|
|
||
|
* buildbot/changes/changes.py: rename tag= to branch=, since
|
||
|
that's how we're using it, and my design for the upcoming "build a
|
||
|
specific branch" feature wants it. also, tag= was too CVS-centric
|
||
|
* buildbot/changes/mail.py (parseSyncmail): same
|
||
|
* buildbot/process/base.py (Build.isBranchImportant): same
|
||
|
* buildbot/test/test_mailparse.py (Test3.testMsgS4): same
|
||
|
* docs/buildbot.texinfo (Attributes of Changes): same
|
||
|
|
||
|
* NEWS: update tag=, update for upcoming release
|
||
|
|
||
|
2005-05-17 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/runner.py (stop): actually poll once per
|
||
|
second, instead of re-killing the poor daemon once per second.
|
||
|
Sleep briefly (0.1s) before the first poll, since there's a good
|
||
|
chance we can avoid waiting the full second if the daemon shuts
|
||
|
down quickly. Also remove the sys.exit() at the end.
|
||
|
(start): remove the unneighborly sys.exit()
|
||
|
|
||
|
* Makefile: improve permission-setting to not kick Arch so badly
|
||
|
|
||
|
* buildbot/scripts/runner.py (SlaveOptions.optParameters): set a
|
||
|
default --keepalive=600, since it doesn't hurt very much, and it's
|
||
|
a hassle to discover that you need it.
|
||
|
* buildbot/test/test_runner.py (Create.testSlave): test it
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.buildFinished): Teach the
|
||
|
IRC bot about EXCEPTION
|
||
|
|
||
|
* buildbot/status/client.py (PBListener): upcall more correctly
|
||
|
|
||
|
* buildbot/process/base.py (Build.allStepsDone): if a step caused
|
||
|
an exception mark the overall build with EXCEPTION, not SUCCESS
|
||
|
|
||
|
* buildbot/scripts/runner.py (makefile_sample): remove the leading
|
||
|
newline
|
||
|
* buildbot/status/mail.py (MailNotifier): oops, forgot to upcall
|
||
|
* Makefile: update some release-related stuff
|
||
|
|
||
|
* buildbot/slave/commands.py (ShellCommand.kill): if somehow this
|
||
|
gets called when there isn't actually an active process, just end
|
||
|
the Command instead of blowing up. I don't know how it gets into
|
||
|
this state, but the twisted win32 buildslave will sometimes hang,
|
||
|
and when it shakes its head and comes back, it thinks it's still
|
||
|
running a Command. The next build causes this command to be
|
||
|
interrupted, but the lack of self.process.pid breaks the interrupt
|
||
|
attempt.
|
||
|
|
||
|
* NEWS: document changes since the last release
|
||
|
|
||
|
* buildbot/scripts/runner.py (start): change 'buildbot start' to
|
||
|
look for Makefile.buildbot instead of a bare Makefile . The
|
||
|
'buildbot start' does not install this file, so you have to
|
||
|
manually copy it if you want to customize startup behavior.
|
||
|
(createMaster): change 'buildbot master' command to create
|
||
|
Makefile.sample instead of Makefile, to create master.cfg.sample
|
||
|
instead of master.cfg (requiring you to copy it before the
|
||
|
buildmaster can be started). Both sample files are kept up to
|
||
|
date, i.e. they are overwritten if they have been changed. The
|
||
|
'buildbot.tac' file is *not* overwritten, but if the new contents
|
||
|
don't match the old, a 'buildbot.tac.new' file is created and the
|
||
|
user is warned. This seems to be a much more sane way to handle
|
||
|
startup files. Also, don't sys.exit(0) when done, so we can run
|
||
|
unit tests against it.
|
||
|
(createSlave): same. Don't overwrite the sample info/ files.
|
||
|
* buildbot/scripts/sample.mk: remove. the contents were pulled
|
||
|
into runner.py, since they need to match the behavior of start()
|
||
|
* setup.py: same
|
||
|
* MANIFEST.in: same
|
||
|
|
||
|
* docs/buildbot.texinfo (Launching the daemons): document it
|
||
|
* buildbot/test/test_runner.py (Create): test it
|
||
|
|
||
|
* buildbot/test/test_vc.py (SetupMixin.failUnlessIn): Add a
|
||
|
version that can handle string-in-string tests, because otherwise
|
||
|
python-2.2 fails the tests. It'd be tremendous if Trial's test
|
||
|
took two strings under 2.2 too.
|
||
|
|
||
|
* everything: fixed all deprecation warnings when running against
|
||
|
Twisted-2.0 . (at least all the ones in buildbot code, there are a
|
||
|
few that come from Twisted itself). This involved putting most of
|
||
|
the Twisted-version specific code in the new buildbot.twcompat
|
||
|
module, and creating some abstract base classes in
|
||
|
buildbot.changes.base and buildbot.status.base (which might be
|
||
|
useful anyway). __implements__ is a nuisance and requires an ugly
|
||
|
'if' clause everywhere.
|
||
|
|
||
|
* buildbot/test/test_status.py (Mail.testMail): add a 0.1 second
|
||
|
delay before finishing the test: it seems that smtp.sendmail
|
||
|
doesn't hang up on the server, so we must wait a moment so it can
|
||
|
hang up on us. This removes the trial warning about an unclean
|
||
|
reactor.
|
||
|
|
||
|
2005-05-16 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step.py (Source): add 'retry' argument. It is a
|
||
|
tuple of (delay, repeats).
|
||
|
* buildbot/test/test_vc.py (Retry): test it
|
||
|
* docs/buildbot.texinfo (Source Checkout): document it
|
||
|
* buildbot/slave/commands.py (SourceBase): add 'retry' parameter.
|
||
|
(SourceBase.maybeDoVCRetry): If 'retry' is set, failures in
|
||
|
doVCFull() are handled by re-trying the checkout (after a delay)
|
||
|
some number of times.
|
||
|
(ShellCommand._startCommand): make header lines easier to read
|
||
|
|
||
|
* buildbot/test/test_web.py (WebTest.tearDown): factor out master
|
||
|
shutdown
|
||
|
(WebTest.test_logfile): make sure master gets shut down, silences
|
||
|
some "unclean reactor" test errors
|
||
|
|
||
|
* buildbot/test/test_changes.py (Sender.tearDown): spin the
|
||
|
reactor once after shutdown, something in certain versions of
|
||
|
Twisted trigger a test failure. 1.3.0 is ok, 2.0.0 fails, 2.0.1pre
|
||
|
fails, svn-trunk is ok.
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py (Shell.testShellZ): add a
|
||
|
second win32 error message
|
||
|
|
||
|
* buildbot/test/test_run.py (Status.testSlave): be smarter about
|
||
|
validating the ETA, so the tests don't fail on slow systems
|
||
|
|
||
|
2005-05-15 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/builder.py (HTMLLogFile): make this behave like
|
||
|
the new LogFile class, so upgrading works properly
|
||
|
(LogFileProducer.resumeProducing): survive resumeProducing after
|
||
|
we've exhausted the chunkGenerator
|
||
|
|
||
|
* buildbot/test/test_web.py (WebTest.test_logfile): validate HTML
|
||
|
logs too
|
||
|
* buildbot/test/test_status.py (Log.testAdd): validate hasContents
|
||
|
(Log.testUpgrade): same
|
||
|
|
||
|
* docs/buildbot.texinfo (Maintenance): describe how to delete old
|
||
|
Builds and logs with a cron job.
|
||
|
|
||
|
* buildbot/status/builder.py (LogFile): revamp LogFiles. Got rid
|
||
|
of the old non-offline LogFile, added code to upgrade these to
|
||
|
new-style contents-live-on-disk instances at load time (in a way
|
||
|
that doesn't invalidate the old Build pickles, so upgrading to
|
||
|
0.6.5 is not a one-way operation). Got rid of everything related
|
||
|
to 'stub' builds.
|
||
|
(LogFile.__init__): create LogFiles with the parent step status,
|
||
|
the log's name, and a builder-relative filename where it can keep
|
||
|
the contents on disk.
|
||
|
(LogFile.hasContents): new method, clients are advised to call it
|
||
|
before getText or getChunks and friends. If it returns False, the
|
||
|
log's contents have been deleted and getText() will raise an
|
||
|
error.
|
||
|
(LogFile.getChunks): made it a generator
|
||
|
(LogFile.subscribeConsumer): new method, takes a Twisted-style
|
||
|
Consumer (except one that takes chunks instead of strings). This
|
||
|
enables streaming of very large logfiles without storing the whole
|
||
|
thing in memory.
|
||
|
(BuildStatus.generateLogfileName): create names like
|
||
|
12-log-compile-output, with a _0 suffix if required to be unique
|
||
|
(BuildStatus.upgradeLogfiles): transform any old-style (from 0.6.4
|
||
|
or earlier) logfiles into new-style ones
|
||
|
(BuilderStatus): remove everything related to 'stub' builds. There
|
||
|
is now only one build cache, and we don't strip logs from old
|
||
|
builds anymore.
|
||
|
(BuilderStatus.getBuildByNumber): check self.currentBuild too,
|
||
|
since we no longer fight to keep it in the cache
|
||
|
|
||
|
* buildbot/status/html.py (TextLog.render_GET): use a
|
||
|
ChunkConsumer to stream the log entries efficiently.
|
||
|
(ChunkConsumer): wrapper which consumes chunks and writes
|
||
|
formatted HTML.
|
||
|
|
||
|
* buildbot/test/test_twisted.py (Parse.testParse): use a
|
||
|
LogFile-like object instead of a real one
|
||
|
|
||
|
* buildbot/test/test_status.py (MyLog): handle new LogFile code
|
||
|
(Log.testMerge3): validate more merge behavior
|
||
|
(Log.testChunks): validate LogFile.getChunks
|
||
|
(Log.testUpgrade): validate old-style LogFile upgrading
|
||
|
(Log.testSubscribe): validate LogFile.subscribe
|
||
|
(Log.testConsumer): validate LogFile.subscribeConsumer
|
||
|
|
||
|
* buildbot/interfaces.py (IStatusLogStub): remove
|
||
|
(IStatusLog.subscribeConsumer): new method
|
||
|
(IStatusLog.hasContents): new method
|
||
|
(IStatusLogConsumer): describes things passed to subscribeConsumer
|
||
|
|
||
|
* buildbot/status/html.py (StepBox.getBox): Don't offer an href to
|
||
|
the log contents if it does not have any contents.
|
||
|
(StatusResourceBuildStep.body): same
|
||
|
(StatusResourceBuildStep.getChild): give a 404 for empty logs
|
||
|
|
||
|
2005-05-14 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_web.py (WebTest.test_logfile): add 5-second
|
||
|
timeouts to try and make the windows metabuildslave not hang
|
||
|
|
||
|
2005-05-13 Mike Taylor <bear@code-bear.com>
|
||
|
|
||
|
* buildbot/slave/commands.py (rmdirRecursive): added a check
|
||
|
to ensure the path passed into rmdirRecursive actually exists.
|
||
|
On win32 a non-existant path would generate an exception.
|
||
|
|
||
|
2005-05-13 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slave/commands.py (rmdirRecursive): replacement for
|
||
|
shutil.rmtree which behaves correctly on windows in the face of
|
||
|
files that you have to chmod before deleting. Thanks to Bear at
|
||
|
the OSAF for the routine.
|
||
|
(SourceBase.doClobber): use rmdirRecursive
|
||
|
|
||
|
2005-05-12 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/builder.py (OfflineLogFile.getChunks): have this
|
||
|
method generate chunks instead of returning a big list. This
|
||
|
allows the same method to be used for both old LogFile and new
|
||
|
OfflineLogFile.
|
||
|
(OfflineLogFile.getText): use the generator
|
||
|
(OfflineLogFile.subscribe): same
|
||
|
* buildbot/status/html.py (TextLog.resumeProducing): same
|
||
|
* buildbot/interfaces.py (IStatusLog.getChunks): document it
|
||
|
|
||
|
* buildbot/test/test_web.py (WebTest.test_logfile): Add a test to
|
||
|
point out that OfflineLogFile does not currently work with
|
||
|
html.Waterfall . Fixing this is high-priority.
|
||
|
|
||
|
* buildbot/scripts/runner.py (start): add --logfile=twistd.log, since
|
||
|
apparently windows defaults to using stdout
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py (Shell.testShellZ): log a
|
||
|
better message on failure so I can figure out the win32 problem
|
||
|
|
||
|
* buildbot/slave/commands.py (ShellCommand._startCommand): update
|
||
|
log messages to include more useful copies of the command being
|
||
|
run, the argv array, and the child command's environment.
|
||
|
(Git.doVCFull): update cg-close usage, patch from Brandon Philips.
|
||
|
|
||
|
2005-05-11 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py: oops, install debug.glade so 'buildbot debugclient'
|
||
|
will actually work
|
||
|
* Makefile: update the deb-snapshot version
|
||
|
|
||
|
* docs/buildbot.texinfo: move all .xhtml docs into a new
|
||
|
.texinfo-format document, adding a lot of material in the process.
|
||
|
This is starting to look like a real user's manual. Removed all
|
||
|
the Lore-related files: *.xhtml, *.css, template.tpl .
|
||
|
* docs/Makefile: simple makefile to run 'makeinfo'
|
||
|
* buildbot/scripts/sample.cfg: rearrange slightly
|
||
|
* MANIFEST.in: include .info and .textinfo, don't include *.xhtml
|
||
|
|
||
|
2005-05-10 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/runner.py (start): Twisted-1.3.0 used a
|
||
|
different name for the internal twistw module, handle it.
|
||
|
|
||
|
* MANIFEST.in: we deleted plugins.tml, so stop shipping it
|
||
|
* setup.py: .. and stop trying to install it
|
||
|
|
||
|
* buildbot/process/step.py (Git): added support for 'cogito' (aka
|
||
|
'git'), the new linux kernel VC system (http://kernel.org/git/).
|
||
|
Thanks to Brandon Philips for the patch.
|
||
|
* buildbot/slave/commands.py (Git): same
|
||
|
|
||
|
2005-05-06 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/builder.py (OfflineLogFile): replace the default
|
||
|
LogFile with a form that appends its new contents to a disk file
|
||
|
as they arrive. The complete log data is never kept in RAM. This
|
||
|
is the first step towards handling very large (100MB+) logfiles
|
||
|
without choking quite so badly. (The other half is
|
||
|
producer/consumer on the HTML pages).
|
||
|
(BuildStepStatus.addLog): use OfflineLogFile by default
|
||
|
(BuildStatus.getLogfileName): helper code to give the
|
||
|
OfflineLogFile a filename to work with
|
||
|
|
||
|
* buildbot/test/test_status.py (Results.testAddResults): update
|
||
|
tests to handle new asserts
|
||
|
* buildbot/test/test_vc.py (Patch.doPatch): same
|
||
|
* buildbot/test/test_steps.py (BuildStep.setUp): same
|
||
|
|
||
|
2005-05-05 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/runner.py (start): if there is no Makefile,
|
||
|
launch the app by importing twistd's internals and calling run(),
|
||
|
rather than spawning a new twistd process. This stands a much
|
||
|
better chance of working under windows.
|
||
|
(stop): kill the process with os.kill instead of spawning
|
||
|
/bin/kill, again to reduce the number of external programs which
|
||
|
windows might not have in the PATH. Also wait up to 5 seconds for
|
||
|
the process to go away, allowing things like 'buildbot stop;
|
||
|
buildbot start' to be reliable in the face of slow shutdowns.
|
||
|
|
||
|
* buildbot/master.py (Dispatcher.__getstate__): remove old
|
||
|
.tap-related methods
|
||
|
(BuildMaster.__getstate__): same
|
||
|
(makeService): same
|
||
|
* buildbot/slave/bot.py (makeService): same
|
||
|
(Options.longdesc): same
|
||
|
* buildbot/scripts/runner.py: copy over some old mktap option text
|
||
|
|
||
|
* buildbot/scripts/runner.py (masterTAC): stop using mktap.
|
||
|
'buildbot master' now creates a buildbot.tac file, so there is no
|
||
|
longer a create-instance/save/reload sequence. mktap is dead, long
|
||
|
live twistd -y.
|
||
|
* buildbot/scripts/sample.mk: use twistd -y, not -f
|
||
|
* buildbot/test/test_config.py: remove mktap-based test
|
||
|
* buildbot/bb_tap.py, buildbot/plugins.tml: delete old files
|
||
|
* README: don't reference mktap
|
||
|
|
||
|
* docs/source.xhtml: document some of the attributes that Changes
|
||
|
might have
|
||
|
|
||
|
* docs/steps.xhtml (Bazaar): document the Bazaar checkout step
|
||
|
|
||
|
* general: merge in Change(tag=) patch from Thomas Vander Stichele.
|
||
|
[org.apestaart@thomas--buildbot/buildbot--cvstag--0-dev--patch-2]
|
||
|
* buildbot/changes/changes.py (Change)
|
||
|
* buildbot/changes/mail.py (parseSyncmail)
|
||
|
* buildbot/test/test_mailparse.py (Test3.getNoPrefix)
|
||
|
(Test3.testMsgS5)
|
||
|
* buildbot/process/base.py (Build.isTagImportant)
|
||
|
(Build.addChange)
|
||
|
|
||
|
|
||
|
2005-05-04 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/clients/sendchange.py (Sender.send): tear down the PB
|
||
|
connection after sending the change, so that unit tests don't
|
||
|
complain about sockets being left around
|
||
|
|
||
|
* buildbot/status/html.py (WaterfallStatusResource.body): fix
|
||
|
exception in phase=0 rendering
|
||
|
* buildbot/test/test_web.py (WebTest.test_waterfall): test it
|
||
|
|
||
|
* buildbot/changes/dnotify.py (DNotify.__init__): remove debug msg
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): finally remove
|
||
|
deprecated config keys: webPortnum, webPathname, irc, manholePort,
|
||
|
and configuring builders with tuples.
|
||
|
* buildbot/test/test_config.py: stop testing compatibility with
|
||
|
deprecated config keys
|
||
|
* buildbot/test/test_run.py: same
|
||
|
|
||
|
2005-05-03 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* contrib/arch_buildbot.py: survive if there are no logfiles
|
||
|
(username): just use a string, os.getlogin isn't reliable
|
||
|
|
||
|
* buildbot/scripts/runner.py (sendchange): oops, fix the command
|
||
|
so 'buildbot sendchange' actually works. The earlier test only
|
||
|
covered the internal (non-reactor-running) form.
|
||
|
|
||
|
* contrib/arch_buildbot.py: utility that can run as an Arch hook
|
||
|
script to notify the buildmaster about changes
|
||
|
|
||
|
* buildbot/scripts/runner.py (sendchange): new command to send a
|
||
|
change to a buildbot.changes.pb.PBChangeSource receiver.
|
||
|
* buildbot/test/test_changes.py (Sender): test it
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.startService): mark .readConfig
|
||
|
after any reading of the config file, not just when we do it in
|
||
|
startService. This makes some tests a bit cleaner.
|
||
|
|
||
|
* buildbot/changes/pb.py: add some log messages
|
||
|
|
||
|
* buildbot/process/base.py (Build.startBuild): fix a bug that
|
||
|
caused an exception when the build terminated in the very first
|
||
|
step.
|
||
|
(Build.stepDone): let steps return a status of EXCEPTION. This
|
||
|
terminates the build right away, and sets the build's overall
|
||
|
status to EXCEPTION too.
|
||
|
* buildbot/process/step.py (BuildStep.failed): return a status of
|
||
|
EXCEPTION when that is what has happened.
|
||
|
|
||
|
* buildbot/process/step.py (Arch.computeSourceRevision): finally
|
||
|
implement this, allowing Arch-based projects to get precise
|
||
|
checkouts instead of always using the latest code
|
||
|
(Bazaar): create variant of Arch to let folks use baz instead of
|
||
|
tla. Requires a new buildslave too.
|
||
|
* buildbot/slave/commands.py (Arch): add 'revision' argument
|
||
|
(Bazaar): create variant of Arch that uses baz instead of tla.
|
||
|
Remove the code that extracts the archive name from the
|
||
|
register-archive output, since baz doesn't provide it, and require
|
||
|
the user provide both the archive name and its location.
|
||
|
* buildbot/test/test_vc.py (VC.testBazaar): added tests
|
||
|
|
||
|
2005-05-02 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/sample.cfg: improve docs for c['buildbotURL'],
|
||
|
thanks to Nick Trout.
|
||
|
|
||
|
* buildbot/scripts/runner.py (Maker.makefile): chmod before edit,
|
||
|
deals better with source Makefile coming from a read-only CVS
|
||
|
checkout. Thanks to Nick Trout for the catch.
|
||
|
|
||
|
* buildbot/__init__.py (version): bump to 0.6.4+ while between
|
||
|
releases
|
||
|
|
||
|
2005-04-28 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py (version): Releasing buildbot-0.6.4
|
||
|
|
||
|
* debian/changelog: update for 0.6.4
|
||
|
|
||
|
2005-04-28 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* README.w32: add a checklist of steps for getting buildbot
|
||
|
running on windows.
|
||
|
* MANIFEST.in: include it in the tarball
|
||
|
|
||
|
* NEWS: update
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.upgradeToVersion3): deal with
|
||
|
broken .tap files from 0.6.3 by getting rid of .services,
|
||
|
.namedServices, and .change_svc at load time.
|
||
|
|
||
|
2005-04-27 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: update in preparation for new release
|
||
|
|
||
|
* buildbot/test/test_config.py (Save.testSave): don't pull in
|
||
|
twisted.scripts.twistd, we don't need it and it isn't for windows
|
||
|
anyway.
|
||
|
|
||
|
* buildbot/changes/changes.py (ChangeMaster.saveYourself):
|
||
|
accomodate win32 which can't do atomic-rename
|
||
|
|
||
|
2005-04-27 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_run.py (Disconnect.testBuild2): crank up some
|
||
|
timeouts to help the slow metabuildbot not flunk them so much
|
||
|
(Disconnect.testBuild3): same
|
||
|
(Disconnect.testBuild4): same
|
||
|
(Disconnect.testInterrupt): same
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadChanges): fix change_svc
|
||
|
setup, it was completely broken for new buildmasters (those which
|
||
|
did not have a 'change.pck' already saved. Thanks to Paul Warren
|
||
|
for catching this (embarrassing!) bug.
|
||
|
(Dispatcher.__getstate__): don't save our registered avatar
|
||
|
factories, since they'll be re-populated when the config file is
|
||
|
re-read.
|
||
|
(BuildMaster.__init__): add a dummy ChangeMaster, used only by
|
||
|
tests (since the real mktap-generated BuildMaster doesn't save
|
||
|
this attribute).
|
||
|
(BuildMaster.__getstate__): don't save any service children,
|
||
|
they'll all be re-populated when the config file is re-read.
|
||
|
* buildbot/test/test_config.py (Save.testSave): test for this
|
||
|
|
||
|
2005-04-26 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/buildbot.png: use a new, smaller (16x16) icon image,
|
||
|
rendered with Blender.. looks a bit nicer.
|
||
|
* buildbot/docs/images/icon.blend: add the Blender file for it
|
||
|
|
||
|
* buildbot/slave/commands.py (ShellCommand._startCommand): prepend
|
||
|
'cmd.exe' (or rather os.environ['COMSPEC']) to the argv list when
|
||
|
running under windows. This appears to be the best way to allow
|
||
|
BuildSteps to do something normal like 'trial -v buildbot.test' or
|
||
|
'make foo' and still expect it to work. The idea is to make the
|
||
|
BuildSteps look as much like what a developer would type when
|
||
|
compiling or testing the tree by hand. This approach probably has
|
||
|
problems when there are spaces in the arguments, so if you've got
|
||
|
windows buildslaves, you'll need to pay close attention to your
|
||
|
commands.
|
||
|
|
||
|
* buildbot/status/html.py (WaterfallStatusResource.body): add the
|
||
|
timezone to the timestamp column.
|
||
|
* buildbot/test/test_web.py (WebTest.test_waterfall): test it
|
||
|
|
||
|
* buildbot/scripts/runner.py (loadOptions): do something sane for
|
||
|
windows, I think. We use %APPDATA%/buildbot instead of
|
||
|
~/.buildbot, but we still search everywhere from the current
|
||
|
directory up to the root for a .buildbot/ subdir. The "is it under
|
||
|
$HOME" security test was replaced with "is it owned by the current
|
||
|
user", which is only performed under posix.
|
||
|
* buildbot/test/test_runner.py (Options.testFindOptions): update
|
||
|
tests to match. The "is it owned by the current user" check is
|
||
|
untested. The test has been re-enabled for windows.
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py (Shell.checkOutput): replace
|
||
|
any "\n" in the expected output with the platform-specific line
|
||
|
separator. Make this separator "\r\n" on PTYs under unix, they
|
||
|
seem to do that and I don't know why
|
||
|
|
||
|
* buildbot/test/test_runner.py (Options.optionsFile): disable on
|
||
|
windows for now, I don't know what ~/.buildbot/ should mean there.
|
||
|
|
||
|
* buildbot/test/test_run.py (BuilderNames.testGetBuilderNames):
|
||
|
win32 compatibility, don't use "/tmp"
|
||
|
(Basedir.testChangeBuilddir): remove more unixisms
|
||
|
|
||
|
2005-04-26 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_control.py (Force.rmtree): python2.2
|
||
|
compatibility, apparently its shutil.rmtree ignore_errors=
|
||
|
argument is ignored.
|
||
|
* buildbot/test/test_run.py (Run.rmtree): same
|
||
|
(RunMixin.setUp): same
|
||
|
|
||
|
* buildbot/test/test_runner.py (make): python2.2 has os.sep but
|
||
|
not os.path.sep
|
||
|
|
||
|
* buildbot/test/test_twisted.py (Parse.failUnlessIn): 2.2 has no
|
||
|
'substring in string' operator, must use string.find(substr)!=-1
|
||
|
* buildbot/test/test_vc.py (Patch.failUnlessIn): same
|
||
|
* buildbot/test/test_web.py (WebTest.failUnlessIn): same
|
||
|
|
||
|
* buildbot/scripts/runner.py (loadOptions): add code to search for
|
||
|
~/.buildbot/, a directory with things like 'options', containing
|
||
|
defaults for various 'buildbot' subcommands. .buildbot/ can be in
|
||
|
the current directory, your $HOME directory, or anywhere
|
||
|
inbetween, as long as you're somewhere inside your home directory.
|
||
|
(debugclient): look in ~/.buildbot/options for master and passwd
|
||
|
(statuslog): look in ~/.buildbot/options for 'masterstatus'
|
||
|
* buildbot/test/test_runner.py (Options.testFindOptions): test it
|
||
|
|
||
|
* buildbot/status/client.py (makeRemote): new approach to making
|
||
|
IRemote(None) be None, which works under Twisted-2.0
|
||
|
* buildbot/test/test_status.py (Client.testAdaptation): test it
|
||
|
|
||
|
* buildbot/status/builder.py (Status.builderAdded): when loading a
|
||
|
pickled BuilderStatus in from disk, set its name after loading.
|
||
|
The config file might have changed its name (but not its
|
||
|
directory) while it wasn't looking.
|
||
|
|
||
|
* buildbot/process/builder.py (Builder.attached): always return a
|
||
|
Deferred, even if the builder was already attached
|
||
|
* buildbot/test/test_run.py (Basedir.testChangeBuilddir): test it
|
||
|
|
||
|
2005-04-25 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.buildFinished): fix a
|
||
|
category-related exception when announcing a build has finished
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceChanges.body): oops, don't
|
||
|
reference no-longer-existent changemaster.sources
|
||
|
* buildbot/test/test_web.py (WebTest.test_waterfall): test for it
|
||
|
|
||
|
* buildbot/__init__.py (version): bump to 0.6.3+ while between
|
||
|
releases
|
||
|
|
||
|
2005-04-25 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py (version): Releasing buildbot-0.6.3
|
||
|
|
||
|
* debian/changelog: update for 0.6.3
|
||
|
|
||
|
2005-04-25 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* MANIFEST.in: make sure debug.glade is in the tarball
|
||
|
|
||
|
* README (REQUIREMENTS): list necessary Twisted-2.0 packages
|
||
|
|
||
|
* NEWS: update for the imminent 0.6.3 release
|
||
|
|
||
|
* buildbot/status/html.py (HtmlResource.content): make the
|
||
|
stylesheet <link> always point at "buildbot.css".
|
||
|
(StatusResource.getChild): map "buildbot.css" to a static.File
|
||
|
containing whatever css= argument was provided to Waterfall()
|
||
|
(Waterfall): provide the "classic" css as the default.
|
||
|
* docs/waterfall.classic.css: move default CSS from here ..
|
||
|
* buildbot/status/classic.css: .. to here
|
||
|
|
||
|
* MANIFEST.in: make sure classic.css is included in the tarball
|
||
|
* setup.py: and that it is installed too, under buildbot/status/
|
||
|
|
||
|
* buildbot/master.py (BuildMaster): oops, set .change_svc=None at
|
||
|
the module level, because buildbot.tap files from 0.6.2 don't have
|
||
|
it in their attribute dictionary.
|
||
|
|
||
|
* buildbot/slave/bot.py (Bot.startService): make sure the basedir
|
||
|
really exists at startup, might save some confusion somewhere.
|
||
|
|
||
|
2005-04-24 Thomas Vander Stichele <thomas at apestaart dot org>
|
||
|
|
||
|
* docs/waterfall.classic.css:
|
||
|
add a stylesheet that's almost the same as the "classic"
|
||
|
buildbot style
|
||
|
|
||
|
* buildbot/status/builder.py:
|
||
|
add EXCEPTION as a result - this is a problem for the bot
|
||
|
maintainer, not a build problem for the changers
|
||
|
* buildbot/process/step.py:
|
||
|
use EXCEPTION instead of FAILURE for exceptions
|
||
|
* buildbot/status/html.py:
|
||
|
add build_get_class to get a class out of a build/buildstep
|
||
|
finish naming the classes
|
||
|
split out sourceNames to changeNames and builderNames so we
|
||
|
can style them separately
|
||
|
* docs/config.xhtml:
|
||
|
finish documenting classes as they are right now
|
||
|
|
||
|
* buildbot/status/html.py:
|
||
|
name the classes as we agreed on IRC
|
||
|
* docs/config.xhtml:
|
||
|
and document them
|
||
|
|
||
|
* buildbot/status/html.py:
|
||
|
same for cssclass->class_
|
||
|
|
||
|
* buildbot/status/html.py:
|
||
|
as decided on IRC, use class_ for the "class" attribute to not
|
||
|
conflict with the class keyword, and clean up the messy **{} stuff.
|
||
|
|
||
|
* buildbot/status/mail.py:
|
||
|
put back "builders" argument, and fix docstring, because the
|
||
|
code *ignores* builders listed in this argument
|
||
|
|
||
|
* buildbot/process/builder.py:
|
||
|
remove FIXME notes - category is now indeed a cvar of BuilderStatus
|
||
|
|
||
|
* docs/config.xhtml:
|
||
|
describe the category argument for builders
|
||
|
|
||
|
* buildbot/status/builder.py:
|
||
|
Fix a silly bug due to merging
|
||
|
|
||
|
* buildbot/process/builder.py:
|
||
|
remove category from the process Builder ...
|
||
|
* buildbot/status/builder.py:
|
||
|
... and add it to BuilderStatus instead.
|
||
|
Set category on unpickled builder statuses, they might not have it.
|
||
|
* buildbot/master.py:
|
||
|
include category when doing builderAdded
|
||
|
* buildbot/status/mail.py:
|
||
|
return None instead of self for builders we are not interested in.
|
||
|
* buildbot/test/test_run.py:
|
||
|
fix a bug due to only doing deferredResult on "dummy" waiting
|
||
|
* buildbot/test/test_status.py:
|
||
|
add checks for the Mail IStatusReceiver returning None or self
|
||
|
|
||
|
* buildbot/status/html.py:
|
||
|
fix testsuite by prefixing page title with BuildBot
|
||
|
|
||
|
* buildbot/status/builder.py:
|
||
|
have .category in builder status ...
|
||
|
* buildbot/process/builder.py:
|
||
|
... and set it from Builder
|
||
|
* buildbot/status/html.py:
|
||
|
make .css a class variable
|
||
|
* buildbot/test/test_status.py:
|
||
|
write more tests to cover our categories stuff ...
|
||
|
* buildbot/status/mail.py:
|
||
|
... and fix the bug that this uncovered
|
||
|
|
||
|
* buildbot/changes/mail.py:
|
||
|
* buildbot/changes/pb.py:
|
||
|
* buildbot/master.py:
|
||
|
* buildbot/process/base.py:
|
||
|
* buildbot/process/factory.py:
|
||
|
* buildbot/process/interlock.py:
|
||
|
* buildbot/process/step.py:
|
||
|
* buildbot/process/step_twisted.py:
|
||
|
* buildbot/slave/commands.py:
|
||
|
* buildbot/status/builder.py:
|
||
|
* buildbot/status/client.py:
|
||
|
* buildbot/status/html.py:
|
||
|
* buildbot/status/mail.py:
|
||
|
* buildbot/status/progress.py:
|
||
|
* buildbot/test/test_changes.py:
|
||
|
* buildbot/test/test_config.py:
|
||
|
* buildbot/test/test_control.py:
|
||
|
* buildbot/test/test_interlock.py:
|
||
|
* buildbot/test/test_maildir.py:
|
||
|
* buildbot/test/test_mailparse.py:
|
||
|
* buildbot/test/test_run.py:
|
||
|
* buildbot/test/test_slavecommand.py:
|
||
|
* buildbot/test/test_status.py:
|
||
|
* buildbot/test/test_steps.py:
|
||
|
* buildbot/test/test_twisted.py:
|
||
|
* buildbot/test/test_util.py:
|
||
|
* buildbot/test/test_vc.py:
|
||
|
* buildbot/test/test_web.py:
|
||
|
* buildbot/util.py:
|
||
|
add test-case-name at the top of a whole set of files
|
||
|
|
||
|
* buildbot/status/builder.py:
|
||
|
keep order of addition when getting builder names
|
||
|
* buildbot/status/words.py:
|
||
|
* buildbot/test/test_run.py:
|
||
|
add test for getBuilderNames
|
||
|
|
||
|
* buildbot/process/base.py:
|
||
|
* buildbot/process/step.py:
|
||
|
* buildbot/status/builder.py:
|
||
|
* buildbot/status/html.py:
|
||
|
make buildbot css-able
|
||
|
replace the color code for purple with purple, don't understand
|
||
|
why it wasn't purple to start with
|
||
|
|
||
|
* buildbot/status/words.py:
|
||
|
ok, so it doesn't look like BuilderStatus.remote is still valid.
|
||
|
Use what waterfall uses instead.
|
||
|
|
||
|
* buildbot/interfaces.py:
|
||
|
* buildbot/status/builder.py:
|
||
|
* buildbot/status/html.py:
|
||
|
* buildbot/status/mail.py:
|
||
|
* buildbot/status/words.py:
|
||
|
* buildbot/test/test_run.py:
|
||
|
use categories everywhere and make it be a list. More sensible
|
||
|
for the future. Also make words actually respect this in
|
||
|
buildFinished.
|
||
|
|
||
|
* buildbot/interfaces.py:
|
||
|
add category argument to getBuilderNames
|
||
|
* buildbot/process/builder.py:
|
||
|
* buildbot/status/builder.py:
|
||
|
* buildbot/status/html.py:
|
||
|
* buildbot/status/mail.py:
|
||
|
* buildbot/status/words.py:
|
||
|
* buildbot/test/test_run.py:
|
||
|
move from specifying builders by name to specifying the category
|
||
|
|
||
|
* buildbot/status/html.py:
|
||
|
* buildbot/status/words.py:
|
||
|
add "builders=" to __init__ of status clients so they can
|
||
|
limit themselves to the given list of builders to report on
|
||
|
|
||
|
* buildbot/status/html.py: set the title to the product name
|
||
|
|
||
|
2005-04-23 Thomas Vander Stichele <thomas at apestaart dot org>
|
||
|
|
||
|
* buildbot/interfaces.py:
|
||
|
* buildbot/status/builder.py:
|
||
|
more documentation. Hm, not sure if ChangeLog entries make sense
|
||
|
here...
|
||
|
|
||
|
2005-04-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py (SetupMixin.do_vc): increase timeouts
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py (Shell): increase timeouts
|
||
|
|
||
|
* buildbot/scripts/runner.py: make 'statuslog' and 'statusgui' be
|
||
|
the sub-commands that log buildmaster status to stdout and to a
|
||
|
GUI window, respectively.
|
||
|
|
||
|
* buildbot/clients/gtkPanes.py: overhaul. basic two-row
|
||
|
functionality is working again, but all the step-status and ETA
|
||
|
stuff is missing. Commented out a lot of code pending more
|
||
|
overhaul work.
|
||
|
|
||
|
* buildbot/status/client.py: make sure that IRemote(None) is None
|
||
|
|
||
|
* buildbot/changes/changes.py: import defer, oops
|
||
|
(ChangeMaster): remove the .sources list, rely upon the fact that
|
||
|
MultiServices can be treated as sequences of their children. This
|
||
|
cleans up the add/remove ChangeSource routines a lot, as we keep
|
||
|
exactly one list of the current sources instead of three.
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.__init__): remove .sources, set
|
||
|
up an empty ChangeMaster at init time.
|
||
|
(BuildMaster.loadChanges): if there are changes to be had from
|
||
|
disk, replace self.change_svc with the new ones. If not, keep
|
||
|
using the empty ChangeMaster set up in __init__.
|
||
|
(BuildMaster.loadConfig_Sources): use list(self.change_svc)
|
||
|
instead of a separate list, makes the code a bit cleaner.
|
||
|
* buildbot/test/test_config.py (ConfigTest.testSimple): match it
|
||
|
(ConfigTest.testSources): same, also wait for loadConfig to finish.
|
||
|
Extend the test to make sure we can get rid of the sources when
|
||
|
we're done.
|
||
|
|
||
|
2005-04-22 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/runner.py (Maker.mkinfo): create the info/admin
|
||
|
and info/host files when making the slave directory
|
||
|
|
||
|
* buildbot/test/test_run.py (RunMixin.shutdownSlave): remove the
|
||
|
whendone= argument, just return the Deferred and let the caller do
|
||
|
what they want with it.
|
||
|
(Disconnect.testBuild1): wait for shutdownSlave
|
||
|
(Basedir.testChangeBuilddir): new test to make sure changes to the
|
||
|
builddir actually get propagated to the slave
|
||
|
|
||
|
* buildbot/slave/bot.py (SlaveBuilder.setBuilddir): use an
|
||
|
explicit method, rather than passing the builddir in __init__ .
|
||
|
Make sure to update self.basedir too, this was broken before.
|
||
|
(Bot.remote_setBuilderList): use b.setBuilddir for both new
|
||
|
builders and for ones that have just had their builddir changed.
|
||
|
(BotFactory): add a class-level .perspective attribute, so
|
||
|
BuildSlave.waitUntilDisconnected won't get upset when the
|
||
|
connection hasn't yet been established
|
||
|
(BuildSlave.__init__): keep track of the bot.Bot instance, so
|
||
|
tests can reach through it to inspect the SlaveBuilders
|
||
|
|
||
|
* buildbot/process/base.py (Build.buildException): explain the
|
||
|
log.err with a log.msg
|
||
|
* buildbot/process/builder.py (Builder.startBuild): same
|
||
|
(Builder._startBuildFailed): improve error message
|
||
|
|
||
|
* buildbot/pbutil.py (RBCP.failedToGetPerspective): if the failure
|
||
|
occurred because we lost the brand-new connection, retry instead
|
||
|
of giving up. If not, it's probably an authorization failure, and
|
||
|
it makes sense to stop trying. Make sure we log.msg the reason
|
||
|
that we're log.err'ing the failure, otherwise test failures are
|
||
|
really hard to figure out.
|
||
|
|
||
|
* buildbot/master.py: change loadConfig() to return a Deferred
|
||
|
that doesn't fire until the change has been fully implemented.
|
||
|
This means any connected slaves have been updated with the new
|
||
|
builddir. This change makes it easier to test the code which
|
||
|
actually implements this builddir-updating.
|
||
|
(BotPerspective.addBuilder): return Deferred
|
||
|
(BotPerspective.removeBuilder): same
|
||
|
(BotPerspective.attached): same
|
||
|
(BotPerspective._attached): same. finish with remote_print before
|
||
|
starting the getSlaveInfo, instead of doing them in parallel
|
||
|
(BotPerspective.list_done): same
|
||
|
(BotMaster.removeSlave): same. Fix the typo that meant we weren't
|
||
|
actually calling slave.disconnect()
|
||
|
(BotMaster.addBuilder): same
|
||
|
(BotMaster.removeBuilder): same
|
||
|
(BuildMaster.loadConfig): same
|
||
|
(BuildMaster.loadConfig_Slaves): same
|
||
|
(BuildMaster.loadConfig_Sources): same
|
||
|
(BuildMaster.loadConfig_Builders): same
|
||
|
(BuildMaster.loadConfig_status): same
|
||
|
|
||
|
* buildbot/changes/changes.py (ChangeMaster.removeSource): return
|
||
|
a Deferred that fires when the source is finally removed
|
||
|
|
||
|
* buildbot/slave/commands.py (SourceBase.doClobber): when removing
|
||
|
the previous tree on win32, where we have to do it synchronously,
|
||
|
make sure we return a Deferred anyway.
|
||
|
(SourceBase.doCopy): same
|
||
|
|
||
|
* buildbot/scripts/runner.py (statusgui): use the text client for
|
||
|
now, while I rewrite the Gtk one
|
||
|
* buildbot/clients/base.py: strip out old code, leaving just the
|
||
|
basic print-message-on-event functionality. I also remove the
|
||
|
ReconnectingPBClientFactory, but it does at least quit when it
|
||
|
loses the connection instead of going silent
|
||
|
|
||
|
2005-04-21 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* Makefile: minor tweaks
|
||
|
|
||
|
* NEWS: point out deprecation warnings, new features for
|
||
|
/usr/bin/buildbot
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): emit
|
||
|
DeprecationWarnings for Builders defined with tuples. Rearrange
|
||
|
code to facility removal of deprecated configuration keys in the
|
||
|
next release.
|
||
|
|
||
|
* buildbot/scripts/runner.py (createMaster,createSlave): rewrite
|
||
|
'buildbot' command to put a little Makefile in the target that
|
||
|
helps you re-create the buildbot.tap file, start or stop the
|
||
|
master/slave, and reconfigure (i.e. SIGHUP) the master. Also chmod
|
||
|
all the files 0600, since they contain passwords.
|
||
|
(start): if there is a Makefile, and /usr/bin/make exists, use
|
||
|
'make start' in preference to a raw twistd command. This lets
|
||
|
slave admins put things like PYTHONPATH variables in their
|
||
|
Makefiles and have them still work when the slave is started with
|
||
|
'buildbot start ~/slave/foo'. The test is a bit clunky, it would
|
||
|
be nice to first try the 'make' command and only fall back to
|
||
|
twistd if it fails. TODO: the Makefile's "start" command does not
|
||
|
add the --reactor=win32 argument when running under windows.
|
||
|
(Options.debugclient, Options.statusgui): add sub-commands to launch
|
||
|
the debug client (formerly in contrib/debugclient.py) and the
|
||
|
Gtk status application (currently broken)
|
||
|
* buildbot/clients/debug.py: move from contrib/debugclient.py
|
||
|
* buildbot/clients/debug.glade: same
|
||
|
|
||
|
* buildbot/test/test_trial.py: remove it. This requires some
|
||
|
functionality out of Twisted that isn't there yet, and until then
|
||
|
having it around just confuses things.
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py (Shell): test both with and
|
||
|
without PTYs, and make sure that command output is properly
|
||
|
interleaved in the with-PTY case. I think the without-PTY test
|
||
|
should pass on windows, where we never use PTYs anyway.
|
||
|
|
||
|
2005-04-20 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* README (REQUIREMENTS): mention Twisted-2.0.0 compatibility
|
||
|
|
||
|
* MANIFEST.in: add epyrun, gen-reference, buildbot.png
|
||
|
|
||
|
* NEWS: start creating entries for the next release
|
||
|
|
||
|
* buildbot/slave/commands.py (ShellCommand.__init__): use os.pathsep
|
||
|
|
||
|
* buildbot/test/test_web.py (WebTest.test_webPortnum): add timeout
|
||
|
(WebTest.test_webPathname): same
|
||
|
(WebTest.test_webPathname_port): same
|
||
|
(WebTest.test_waterfall): use the default favicon rather than
|
||
|
rooting around the filesystem for it. Open the expected-icon file
|
||
|
in binary mode, to make win32 tests happier (thanks to Nick Trout
|
||
|
for the catch)
|
||
|
* buildbot/status/html.py (buildbot_icon): win32 portability
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py (SlaveCommandTestCase.testShellZ):
|
||
|
win32-compatibility fixes from Nick Trout, the "file not found" message
|
||
|
is different under windows
|
||
|
(FakeSlaveBuilder.__init__): clean up setup a bit
|
||
|
* buildbot/test/test_vc.py (VCSupport.__init__): win32: use os.pathsep
|
||
|
|
||
|
2005-04-19 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py (SetupMixin.setUpClass): fix the
|
||
|
skip-if-repositories-are-unavailable test to not kill the trial
|
||
|
that comes with Twisted-1.3.0
|
||
|
|
||
|
* setup.py: install buildbot.png icon file when installing code
|
||
|
|
||
|
* buildbot/slave/commands.py (ShellCommand._startCommand): log the
|
||
|
environment used by the command, at least on the child side.
|
||
|
|
||
|
* buildbot/status/html.py (TextLog.pauseProducing): add a note,
|
||
|
this method needs to be added and implemented because it gets
|
||
|
called under heavy load. I don't quite understand the
|
||
|
producer/consumer API enough to write it.
|
||
|
(StatusResource.getChild): add a resource for /favicon.ico
|
||
|
(Waterfall.__init__): add favicon= argument
|
||
|
* buildbot/test/test_web.py (WebTest.test_waterfall): test it
|
||
|
(WebTest.test_webPortnum): stop using deprecated 'webPortnum'
|
||
|
(WebTest.test_webPathname): same
|
||
|
(WebTest.test_webPathname_port): same
|
||
|
* docs/config.xhtml: mention favicon=
|
||
|
* buildbot/buildbot.png: add a default icon, dorky as it is
|
||
|
|
||
|
2005-04-18 Thomas Vander Stichele <thomas at apestaart dot org>
|
||
|
|
||
|
* buildbot/master.py:
|
||
|
* buildbot/process/base.py:
|
||
|
* buildbot/process/builder.py:
|
||
|
* buildbot/process/interlock.py:
|
||
|
* buildbot/status/builder.py:
|
||
|
* buildbot/status/html.py:
|
||
|
* buildbot/status/mail.py:
|
||
|
* buildbot/status/words.py:
|
||
|
new documentation while digging through the code
|
||
|
|
||
|
2005-04-17 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* general: try to fix file modes on all .py files: a+r, a-x,
|
||
|
but let buildbot/clients/*.py be +x since they're tools
|
||
|
|
||
|
* docs/epyrun (addMod): when an import fails, say why
|
||
|
|
||
|
* Makefile: Add a 'docs' target, hack on the PYTHONPATH stuff
|
||
|
|
||
|
2005-04-17 Thomas Vander Stichele <thomas at apestaart dot org>
|
||
|
|
||
|
* buildbot/process/base.py:
|
||
|
* buildbot/process/builder.py:
|
||
|
* buildbot/status/builder.py:
|
||
|
new documentation while digging through the code
|
||
|
|
||
|
2005-04-17 Thomas Vander Stichele <thomas at apestaart dot org>
|
||
|
|
||
|
* buildbot/changes/changes.py:
|
||
|
* buildbot/changes/p4poller.py:
|
||
|
* buildbot/interfaces.py:
|
||
|
* buildbot/process/base.py:
|
||
|
* buildbot/process/builder.py:
|
||
|
* buildbot/process/step.py:
|
||
|
* buildbot/process/step_twisted.py:
|
||
|
* buildbot/slave/bot.py:
|
||
|
* buildbot/slave/commands.py:
|
||
|
* buildbot/status/builder.py:
|
||
|
fix all docstrings to make epydoc happy. In the process of fixing
|
||
|
some, I also moved pieces of docs, and removed some deprecated
|
||
|
documentation
|
||
|
|
||
|
2005-04-17 Thomas Vander Stichele <thomas at apestaart dot org>
|
||
|
|
||
|
* buildbot/process/builder.py:
|
||
|
* buildbot/process/interlock.py:
|
||
|
* buildbot/process/process_twisted.py:
|
||
|
* buildbot/process/step.py:
|
||
|
BuildProcess -> Build, as it looks like that's what happened
|
||
|
* buildbot/process/base.py:
|
||
|
* buildbot/process/factory.py:
|
||
|
update epydoc stuff
|
||
|
|
||
|
2005-04-17 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/process_twisted.py (QuickTwistedBuildFactory):
|
||
|
update compile command to accomodate the Twisted split.. now
|
||
|
instead of './setup.py build_ext -i', you do './setup.py all
|
||
|
build_ext -i', to run build_ext over all sub-projects.
|
||
|
(FullTwistedBuildFactory): same
|
||
|
(TwistedReactorsBuildFactory): same
|
||
|
|
||
|
* buildbot/status/html.py (TextLog.finished): null out self.req
|
||
|
when we're done, otherwise the reference cycle of TextLog to .req
|
||
|
to .notifications to a Deferred to TextLog.stop keeps them from
|
||
|
being collected, and consumes a huge (610MB on pyramid at last
|
||
|
check) amount of memory.
|
||
|
|
||
|
2005-04-11 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py (VCSupport.__init__): use abspath() to
|
||
|
normalize the VC-repository location.. makes SVN happier with
|
||
|
certain test environments.
|
||
|
|
||
|
* buildbot/process/step.py (RemoteShellCommand.__init__): let each
|
||
|
RemoteShellCommand gets its own .env dictionary, so that code in
|
||
|
start() doesn't mutate the original. I think this should fix the
|
||
|
step_twisted.Trial problem where multiple identical components
|
||
|
kept getting added to PYTHONPATH= over and over again.
|
||
|
|
||
|
* general: merge org.apestaart@thomas/buildbot--doc--0--patch-3,
|
||
|
adding epydoc-format docstrings to many classes. Thanks to Thomas
|
||
|
Vander Stichele for the patches.
|
||
|
* docs/epyrun, docs/gen-reference: add epydoc-generating tools
|
||
|
* buildbot/status/mail.py, buildbot/process/step_twisted.py: same
|
||
|
* buildbot/slave/bot.py, commands.py, registry.py: same
|
||
|
|
||
|
2005-04-05 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slave/commands.py (SourceBase.doCopy): use cp -p to
|
||
|
preserve timestamps, helps incremental builds of large trees.
|
||
|
Patch from Rene Rivera.
|
||
|
|
||
|
* buildbot/slave/bot.py (SlaveBuilder.commandComplete): oops, log
|
||
|
'failure' and not the non-existent 'why'. Thanks to Rene Rivera
|
||
|
for the catch.
|
||
|
|
||
|
2005-04-03 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): only call exec()
|
||
|
with one dict, apparently exec has some scoping bugs when used
|
||
|
with both global/local dicts. Thanks to Nathaniel Smith for the
|
||
|
catch.
|
||
|
|
||
|
2005-04-02 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (countFailedTests): the new
|
||
|
trial in Twisted-2.0 emits a slightly different status line than
|
||
|
old trial ("PASSED.." instead of "OK.."). Handle it so we don't
|
||
|
mistakenly think the test count is unparseable.
|
||
|
(Trial.start): note that for some reason each build causes another
|
||
|
copy of self.testpath to be prepended to PYTHONPATH. This needs to
|
||
|
be fixed but I'm not sure quite where the problem is.
|
||
|
|
||
|
2005-04-01 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_run.py (Run.testMaster): change some uses of
|
||
|
deferredResult to avoid hangs/warnings under twisted-2.0
|
||
|
(RunMixin.tearDown): same
|
||
|
(RunMixin.shutdownSlave): same
|
||
|
(Disconnect.testIdle1): same
|
||
|
(Disconnect.testBuild2): same: wait one second after the build
|
||
|
finishes for test to really be done.. this should be cleaned up to
|
||
|
avoid wasting that second. Builder.detach uses a callLater(0),
|
||
|
either that should be done in-line (something else needed that
|
||
|
behavior), or it should return a Deferred that fires when the
|
||
|
builder is really offline.
|
||
|
(Disconnect.testBuild3): same
|
||
|
(Disconnect.testDisappear): same
|
||
|
|
||
|
* buildbot/test/test_web.py: rearrange server-setup and teardown
|
||
|
code to remove unclean-reactor warnings from twisted-2.0
|
||
|
|
||
|
* buildbot/test/test_vc.py: rearrange probe-for-VC-program routine
|
||
|
so the tests don't hang under twisted-2.0
|
||
|
|
||
|
2005-03-31 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slave/bot.py (Bot.remote_setBuilderList): fix typo that
|
||
|
caused a warning each time the master changed our set of builders
|
||
|
|
||
|
* buildbot/status/builder.py (BuildStatus.saveYourself): under
|
||
|
w32, don't unlink the file unless it already exists. Thanks to
|
||
|
Baptiste Lepilleur for the catch.
|
||
|
(BuilderStatus.saveYourself): same
|
||
|
|
||
|
2005-02-01 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/html.py (TextLog.getChild): use a /text child
|
||
|
URL, such as http://foo.com/svn-hello/builds/1/test/0/text instead
|
||
|
of http://foo.com/svn-hello/builds/1/test/0 , to retrieve the
|
||
|
logfile as text/plain (no markup, no headers). This replaces the
|
||
|
previous scheme (which used an ?text=1 argument), and gets us back
|
||
|
to a relative link (which works better when the buildbot lives
|
||
|
behind another web server, such as Apache configured as a reverse
|
||
|
proxy). Thanks to Gerald Combs for spotting the problem.
|
||
|
|
||
|
* buildbot/__init__.py (version): bump to 0.6.2+ while between
|
||
|
releases
|
||
|
|
||
|
2004-12-13 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py (version): Releasing buildbot-0.6.2
|
||
|
|
||
|
* debian/changelog: update for 0.6.2
|
||
|
* NEWS: finalize for 0.6.2
|
||
|
|
||
|
2004-12-11 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: bring it up to date
|
||
|
|
||
|
* buildbot/slave/bot.py (BotFactory): revamp keepalive/lost-master
|
||
|
detection code. Require some sign of life from the buildmaster
|
||
|
every BotFactory.keepaliveInterval seconds. Provoke this
|
||
|
indication at BotFactory.keepaliveTimeout seconds before the
|
||
|
deadline by sending a keepalive request. We don't actually care if
|
||
|
that request is answered in a timely fashion, what we care about
|
||
|
is that .activity() is called before the deadline. .activity() is
|
||
|
triggered by any PB message from the master (including an ack to
|
||
|
one of the slave's status-update messages). With this new scheme,
|
||
|
large status messages over slow pipes are OK, as long as any given
|
||
|
message can be sent (and thus acked) within .keepaliveTimeout
|
||
|
seconds (which defaults to 30).
|
||
|
(SlaveBuilder.remote_startCommand): record activity
|
||
|
(SlaveBuilder.ackUpdate): same
|
||
|
(SlaveBuilder.ackComplete): same
|
||
|
(BotFactory.gotPerspective): same
|
||
|
* buildbot/test/test_run.py (Disconnect.testSlaveTimeout): test it
|
||
|
|
||
|
2004-12-09 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceBuilder.getChild): remove
|
||
|
debug message
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial._commandComplete):
|
||
|
update self.cmd when we start the 'cat test.log' transfer. Without
|
||
|
this, we cannot interrupt the correct RemoteCommand when we lose
|
||
|
the connection.
|
||
|
|
||
|
* buildbot/process/step.py (RemoteCommand.interrupt): don't bother
|
||
|
trying to tell the slave to stop the command if we're already
|
||
|
inactive, or if we no longer have a .remote
|
||
|
|
||
|
* buildbot/process/builder.py (Builder._detached): don't let an
|
||
|
exception in currentBuild.stopBuild() prevent the builder from
|
||
|
being marked offline
|
||
|
|
||
|
2004-12-07 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.getBuilder): catch the
|
||
|
KeyError that happens when you ask for a non-existent Builder, and
|
||
|
translate it into a UsageError.
|
||
|
|
||
|
* buildbot/test/test_run.py (Disconnect.testBuild4): validate that
|
||
|
losing the slave in the middle of a remote step is handled too
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommand.interrupt): 'reason' can
|
||
|
be a Failure, so be sure to stringify it before using it as the
|
||
|
contents of the 'interrupt' logfile
|
||
|
(RemoteCommand.interrupt): use stringified 'why' in
|
||
|
remote_interruptCommand too, just in case
|
||
|
|
||
|
2004-12-06 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slave/commands.py (Arch.doVCUpdate): use 'tla replay'
|
||
|
instead of 'tla update', which is more efficient in case we've
|
||
|
missed a couple of patches since the last update.
|
||
|
|
||
|
* debian/changelog: update for previous (0.6.1) release. Obviously
|
||
|
this needs to be handled better.
|
||
|
|
||
|
2004-12-05 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: update for stuff since last release
|
||
|
|
||
|
* buildbot/master.py (DebugPerspective.attached): return 'self', to
|
||
|
match the maybeDeferred change in Dispatcher.requestAvatar
|
||
|
* buildbot/changes/pb.py (ChangePerspective.attached): same
|
||
|
* buildbot/status/client.py (StatusClientPerspective.attached): same
|
||
|
* buildbot/process/builder.py (Builder._attached3): same
|
||
|
* buildbot/pbutil.py (NewCredPerspective.attached): same
|
||
|
|
||
|
* buildbot/status/html.py (WaterfallStatusResource.phase2): Add
|
||
|
the date to the top-most box, if it is not the same as today's
|
||
|
date.
|
||
|
|
||
|
* docs/slave.xhtml: provide a buildslave setup checklist
|
||
|
|
||
|
* docs/source.xhtml (Arch): correct terminology
|
||
|
|
||
|
2004-12-04 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py: use sys.executable instead
|
||
|
of hard-coding 'python' for child commands, might help portability
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: update to current usage
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.command_STOP): add a
|
||
|
'stop build' command to the IRC bot
|
||
|
|
||
|
* buildbot/master.py (Dispatcher.requestAvatar): remove debug
|
||
|
message that broke PBChangeSource
|
||
|
|
||
|
* buildbot/slave/bot.py: clean up shutdown/lose-master code
|
||
|
(SlaveBuilder): make some attributes class-level, remove the old
|
||
|
"update queue" which existed to support resuming a build after the
|
||
|
master connection was lost. Try to reimplement that feature later.
|
||
|
(SlaveBuilder.stopCommand): clear self.command when the
|
||
|
SlaveCommand finishes, so that we don't try to kill a leftover one
|
||
|
at shutdown time.
|
||
|
(SlaveBuilder.commandComplete): same, merge with commandFailed and
|
||
|
.finishCommand
|
||
|
|
||
|
* buildbot/slave/commands.py (SourceBase): set self.command for
|
||
|
all VC commands, so they can be interrupted.
|
||
|
|
||
|
2004-12-03 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/master.py: clean up slave-handling code, to handle
|
||
|
slave-disconnect and multiple-connect better
|
||
|
(BotPerspective): make these long-lasting, exactly one per bot
|
||
|
listed in the config file.
|
||
|
(BotPerspective.attached): if a slave connects while an existing
|
||
|
one appears to still be connected, disconnect the old one first.
|
||
|
(BotPerspective.disconnect): new method to forcibly disconnect a
|
||
|
buildslave. Use some hacks to empty the transmit buffer quickly to
|
||
|
avoid the long (20-min?) TCP timeout that could occur if the old
|
||
|
slave has dropped off the net.
|
||
|
(BotMaster): Keep persistent BotPerspectives in .slaves, let them
|
||
|
own their own SlaveStatus objects. Remove .attached/.detached, add
|
||
|
.addSlave/.removeSlave, treat slaves like Builders (config file
|
||
|
parsing sends deltas to the BotMaster). Inform the slave
|
||
|
instances, i.e. the BotPerspective, about addBuilder and
|
||
|
removeBuilder.
|
||
|
(BotMaster.getPerspective): turns into a single dict lookup
|
||
|
(Dispatcher.requestAvatar): allow .attached to return a Deferred,
|
||
|
which gives BotPerspective.attached a chance to disconnect the old
|
||
|
slave first.
|
||
|
(BuildMaster.loadConfig): add code (disabled) to validate that all
|
||
|
builders use known slaves (listed in c['bots']). The check won't
|
||
|
work with tuple-specified builders, which are deprecated but not
|
||
|
yet invalid, so the check is disabled for now.
|
||
|
(BuildMaster.loadConfig_Slaves): move slave-config into a separate
|
||
|
routine, do the add/changed/removed dance with them like we do
|
||
|
with builders.
|
||
|
(BuildMaster.loadConfig_Sources): move source-config into a
|
||
|
separate routine too
|
||
|
|
||
|
* buildbot/status/builder.py (Status.getSlave): get the
|
||
|
SlaveStatus object from the BotPerspective, not the BotMaster.
|
||
|
|
||
|
* buildbot/test/test_run.py: bunch of new tests for losing the
|
||
|
buildslave at various points in the build, handling a slave that
|
||
|
connects multiple times, and making sure we can interrupt a
|
||
|
running build
|
||
|
|
||
|
* buildbot/slave/bot.py (BuildSlave): make it possible to use
|
||
|
something other than 'Bot' for the Bot object, to make certain
|
||
|
test cases easier to write.
|
||
|
(BuildSlave.waitUntilDisconnected): utility method for testing
|
||
|
|
||
|
2004-11-30 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_run.py (RunMixin): refactor, remove debug msg
|
||
|
|
||
|
* buildbot/interfaces.py (IBuilderControl.ping): add timeout=
|
||
|
argument, return a Deferred that always fires with True or False.
|
||
|
I don't use an errback to indicate 'ping failed' so that callers
|
||
|
are free to ignore the deferred without causing spurious errors in
|
||
|
the logs.
|
||
|
* buildbot/process/builder.py (BuilderControl.ping): implement it
|
||
|
|
||
|
* buildbot/test/test_run.py (Status.testDisappear): test ping
|
||
|
(Status.disappearSlave): fix it
|
||
|
|
||
|
2004-11-30 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/interfaces.py (IBuildControl): add .stopBuild
|
||
|
(IBuilderControl): add .getBuild(num), only works for the current
|
||
|
build, of course, although it might be interesting to offer
|
||
|
something for builds in the .waiting or .interlocked state.
|
||
|
|
||
|
* buildbot/process/base.py (Build): have .stopBuild just do the
|
||
|
interrupt, then let the build die by itself.
|
||
|
(BuildControl): add .stopBuild, and add a point-event named
|
||
|
'interrupt' just after the build so status viewers can tell that
|
||
|
someone killed it.
|
||
|
(BuilderControl): add .getBuild
|
||
|
|
||
|
* buildbot/process/step.py (Dummy): use haltOnFailure so it really
|
||
|
stops when you kill it, good for testing
|
||
|
(ShellCommand.interrupt): add a logfile named 'interrupt' which
|
||
|
contains the 'reason' text.
|
||
|
|
||
|
* buildbot/status/html.py: Add Stop Build button, if the build can
|
||
|
still be stopped. Send a Redirect (to the top page) one second
|
||
|
later, hopefully long enough for the interrupt to have an effect.
|
||
|
Move make_row() up to top-level to share it between Stop Build and
|
||
|
Force Build.
|
||
|
|
||
|
* buildbot/slave/commands.py: only kill the child process once
|
||
|
|
||
|
* buildbot/test/test_run.py: add testInterrupt
|
||
|
|
||
|
2004-11-29 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/base.py: Refactor command interruption. The
|
||
|
Build is now responsible for noticing that the slave has gone
|
||
|
away: Build.lostRemote() interrupts the current step and makes
|
||
|
sure that no further ones will be started.
|
||
|
|
||
|
* buildbot/process/builder.py: When the initial remote_startBuild
|
||
|
message fails, log it: this usually indicates that the slave has
|
||
|
gone away, but we don't really start paying attention until they
|
||
|
fail to respond to the first step's command.
|
||
|
|
||
|
* buildbot/process/step.py (RemoteCommand): Does *not* watch for
|
||
|
slave disconnect. Now sports a new interrupt() method. Error
|
||
|
handling was simplified a lot by chaining deferreds, so
|
||
|
remoteFailed/remoteComplete were merged into a single
|
||
|
remoteComplete method (which can now get a Failure object).
|
||
|
Likewise failed/finished were merged into just _finished.
|
||
|
(BuildStep): Add interrupt(why) method, and if why is a
|
||
|
ConnectionLost Failure then the step is failed with some useful
|
||
|
error text.
|
||
|
|
||
|
* buildbot/slave/bot.py: stop the current command when the remote
|
||
|
Step reference is lost, and when the slave is shut down.
|
||
|
(Bot): make it a MultiService, so it can have children. Use
|
||
|
stopService to tell when the slave is shutting down.
|
||
|
(SlaveBuilder): make it a Service, and a child of the Bot. Add
|
||
|
remote_interruptCommand (which asks the current SlaveCommand to
|
||
|
stop but allows it to keep emitting status messages), and
|
||
|
stopCommand (which tells it to shut up and die).
|
||
|
|
||
|
* buildbot/slave/commands.py: make commands interruptible
|
||
|
(ShellCommand.kill): factor out os.kill logic
|
||
|
(Command): factor out setup()
|
||
|
(Command.sendStatus): don't send status if .running is false, this
|
||
|
happens when the command has been halted.
|
||
|
(Command.interrupt): new method, used to tell the command to die
|
||
|
(SlaveShellCommand): implement .interrupt
|
||
|
(DummyCommand): implement .interrupt
|
||
|
(SourceBase, etc): factor out setup(), don't continue substeps if
|
||
|
.interrupted is set
|
||
|
|
||
|
* buildbot/status/builder.py: fix all waitUntilFinished() methods
|
||
|
so they can be called after finishing
|
||
|
|
||
|
* buildbot/test/test_run.py: new tests for disconnect behavior,
|
||
|
refactor slave-shutdown routines, add different kinds of
|
||
|
slave-shutdown
|
||
|
|
||
|
2004-11-27 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.convertTime): utility
|
||
|
method to express ETA time like "2m45s" instead of "165 seconds"
|
||
|
|
||
|
2004-11-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py (VC.testArch): unregister the test
|
||
|
archive after the test completes, to avoid cluttering the user's
|
||
|
'tla archives' listing with a bogus entry. Arch doesn't happen to
|
||
|
provide any way to override the use of ~/.arch-params/, so there
|
||
|
isn't a convenient way to avoid touching the setup of the user who
|
||
|
runs the test.
|
||
|
(VC_HTTP.testArchHTTP): same
|
||
|
|
||
|
2004-11-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/html.py (TextLog): split render() up into
|
||
|
render_HEAD and render_GET. Use a Producer when sending log
|
||
|
chunks, to reduce memory requirements and avoid sending huge
|
||
|
non-Banana-able strings over web.distrib connections. Requires
|
||
|
peeking under the covers of IStatusLog.
|
||
|
(TextLog.resumeProducing): fix the "as text" link, handle client
|
||
|
disconnects that occur while we're still sending old chunks.
|
||
|
|
||
|
* buildbot/status/builder.py (HTMLLogFile.waitUntilFinished): oops,
|
||
|
use defer.succeed, not the non-existent defer.success
|
||
|
(LogFile.waitUntilFinished): same
|
||
|
(LogFile.subscribe): don't add watchers to a finished logfile
|
||
|
|
||
|
* buildbot/__init__.py (version): bump to 0.6.1+ while between
|
||
|
releases
|
||
|
|
||
|
2004-11-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py (version): Releasing buildbot-0.6.1
|
||
|
|
||
|
2004-11-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: update for the 0.6.1 release
|
||
|
* MANIFEST.in: add new files
|
||
|
|
||
|
* README (INSTALLATION): explain how to enable the extra VC tests
|
||
|
|
||
|
* buildbot/status/builder.py (LogFile): add .runEntries at the class
|
||
|
level to, so old pickled builds can be displayed ok
|
||
|
|
||
|
2004-11-22 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: summarize updates since last release
|
||
|
|
||
|
* README (SLAVE): fix usage of 'buildbot slave' command. Thanks to
|
||
|
Yoz Grahame. Closes SF#1050138.
|
||
|
|
||
|
* docs/changes.xhtml (FreshCVSSourceNewcred): fix typo. Closes
|
||
|
SF#1042563.
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial): update docs a bit
|
||
|
|
||
|
* docs/factories.xhtml: fix Trial factory docs to match reality.
|
||
|
Closes: SF#1049758.
|
||
|
|
||
|
* buildbot/process/factory.py (Trial.__init__): add args for
|
||
|
randomly= and recurse=, making them available to instantiators
|
||
|
instead of only to subclassers. Closes: SF#1049759.
|
||
|
|
||
|
2004-11-15 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/process_twisted.py (QuickTwistedBuildFactory):
|
||
|
try to teach the Quick factory to use multiple versions of python
|
||
|
|
||
|
2004-11-12 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/builder.py (BuilderStatus.saveYourself): use a
|
||
|
safer w32-compatible approach, and only use it on windows
|
||
|
(BuildStatus.saveYourself): same
|
||
|
|
||
|
2004-11-11 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/builder.py (LogFile.addEntry): smarter way to do
|
||
|
it: one string merge per chunk. There are now separate .entries
|
||
|
and .runEntries lists: when enumerating over all chunks, make sure
|
||
|
to look at both.
|
||
|
* buildbot/test/test_status.py (Log): more tests
|
||
|
|
||
|
* buildbot/status/builder.py (LogFile.addEntry): Merge string
|
||
|
chunks together, up to 10kb per chunk. This ought to cut down on
|
||
|
the CPU-burning overhead of large log files. Thanks to Alexander
|
||
|
Staubo for spotting the problem.
|
||
|
* buildbot/test/test_status.py (Log): tests for same
|
||
|
|
||
|
2004-11-10 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/mail.py (MailNotifier.buildMessage): add a Date
|
||
|
header to outbound mail
|
||
|
* buildbot/test/test_status.py (Mail.testBuild1): test for same
|
||
|
|
||
|
2004-11-08 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/builder.py (BuilderStatus.saveYourself): w32
|
||
|
can't do os.rename() onto an existing file, so catch the exception
|
||
|
and unlink the target file first. This introduces a slight window
|
||
|
where the existing file could be lost, but the main failure case
|
||
|
(disk full) should still be handled safely.
|
||
|
(BuildStatus.saveYourself): same
|
||
|
|
||
|
* buildbot/changes/pb.py (ChangePerspective): use a configurable
|
||
|
separator character instead of os.sep, because the filenames being
|
||
|
split here are coming from the VC system, which can have a
|
||
|
different pathname convention than the local host. This should
|
||
|
help a buildmaster running on windows that uses a CVS repository
|
||
|
which runs under unix.
|
||
|
* buildbot/changes/mail.py (MaildirSource): same, for all parsers
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial.createSummary): survive
|
||
|
when there are no test failures to be parsed
|
||
|
|
||
|
* buildbot/scripts/runner.py (createMaster): use shutil.copy()
|
||
|
instead of the unix-specific os.system("cp"), thanks to Elliot
|
||
|
Murphy for this and the other buildbot-vs-windows catches.
|
||
|
* buildbot/test/test_maildir.py (MaildirTest.deliverMail): same
|
||
|
|
||
|
* contrib/windows/buildbot.bat: prefix a '@', apparently to not
|
||
|
echo the command as it is run
|
||
|
|
||
|
* setup.py: install sample.mk too, not just sample.cfg
|
||
|
(scripts): install contrib/windows/buildbot.bat on windows
|
||
|
|
||
|
2004-11-07 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/builder.py (Builder._detached): clear the
|
||
|
self.currentBuild reference, otherwise the next build will be
|
||
|
skipped because we think the Builder is already in use.
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: update to match current usage
|
||
|
on the Twisted buildbot
|
||
|
|
||
|
2004-10-29 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/mail.py (MailNotifier): fix typo in docs
|
||
|
|
||
|
2004-10-28 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slave/commands.py (SourceBase): refactor subclasses to
|
||
|
have separate doVCUpdate/doVCFull methods. Catch an update failure
|
||
|
and respond by clobbering the source directory and re-trying. This
|
||
|
will handle local changes (like replacing a file with a directory)
|
||
|
that will cause CVS and SVN updates to fail.
|
||
|
* buildbot/test/test_vc.py (SetupMixin.do_vc): test the same
|
||
|
|
||
|
* buildbot/process/step.py (LoggedRemoteCommand.__repr__): avoid a
|
||
|
python-2.4 warning
|
||
|
|
||
|
2004-10-19 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial.createSummary): bugfixes
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceTestResults): display any
|
||
|
TestResults that the Build might have
|
||
|
(StatusResourceTestResult): and the logs for each TestResult
|
||
|
(StatusResourceBuild): add link from the per-build page
|
||
|
|
||
|
2004-10-15 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial.createSummary): parse
|
||
|
the 'problems' portion of stdout, add TestResults to our build
|
||
|
* buildbot/test/test_twisted.py (Parse.testParse): test it
|
||
|
|
||
|
* buildbot/interfaces.py (IBuildStatus.getTestResults): new method
|
||
|
to retrieve a dict of accumulated test results
|
||
|
(ITestResult): define what a single test result can do
|
||
|
* buildbot/status/builder.py (TestResult): implement ITestResult
|
||
|
(BuildStatus.getTestResults): retrieve dict of TestResults
|
||
|
(BuildStatus.addTestResult): add TestResults
|
||
|
* buildbot/test/test_status.py (Results.testAddResults): test it
|
||
|
|
||
|
2004-10-14 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_maildir.py (MaildirTest): use shutil.rmtree
|
||
|
instead of os.system("rm -rf") for win32 portability
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py (SlaveCommandTestCase): use
|
||
|
SignalMixin instead of starting/stopping the reactor, which is
|
||
|
likely to cause problems with other tests
|
||
|
|
||
|
* buildbot/slave/commands.py (SourceBase.doCopy): remove leftover
|
||
|
self.copyComplete() call. Yoz Grahame makes the catch.
|
||
|
|
||
|
* contrib/windows/buildbot.bat: helper script to deal with path
|
||
|
issues. Thanks to Yoz Grahame.
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.startService): don't register a
|
||
|
SIGHUP handler if the signal module has no SIGHUP attribute.
|
||
|
Apparently win32 does this.
|
||
|
|
||
|
* buildbot/scripts/runner.py (start): add --reactor=win32 on win32
|
||
|
|
||
|
* buildbot/test/test_web.py (WebTest.test_webPathname): skip the
|
||
|
test if the reactor can't offer UNIX sockets
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceBuild.body): fix syntax
|
||
|
error introduced in the last commit. We really need that
|
||
|
metabuildbot :).
|
||
|
|
||
|
2004-10-12 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/changes/mail.py (MaildirSource.describe): fix exception
|
||
|
when describing a maildir source. Thanks to Stephen Davis.
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.command_WATCH): round off
|
||
|
ETA seconds
|
||
|
|
||
|
* buildbot/scripts/runner.py (createMaster): install Makefile too
|
||
|
(start): add --no_save to 'start' command
|
||
|
* buildbot/scripts/sample.mk: simple convenience Makefile with
|
||
|
start/stop/reload targets
|
||
|
|
||
|
* buildbot/__init__.py (version): bump to 0.6.0+ while between
|
||
|
releases
|
||
|
|
||
|
2004-09-30 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py: Releasing buildbot-0.6.0
|
||
|
|
||
|
2004-09-30 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* MANIFEST.in: add debian/*, sample.cfg, more docs files. Remove
|
||
|
test_trial.py from the source tarball until support is complete.
|
||
|
|
||
|
* NEWS: update for 0.6.0 release
|
||
|
* buildbot/__init__.py (version): same
|
||
|
* README: same
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.command_SOURCE): add
|
||
|
'source' command to tell users where to get the Buildbot source
|
||
|
|
||
|
* docs/examples/*.cfg: update to modern standards
|
||
|
|
||
|
* NEWS: update for release
|
||
|
|
||
|
* buildbot/scripts/runner.py (createMaster): remove the
|
||
|
-shutdown.tap stuff now that it isn't necessary
|
||
|
(createSlave): same
|
||
|
(start): launch buildbot.tap, not buildbot-shutdown.tap
|
||
|
|
||
|
|
||
|
* buildbot/status/mail.py (Domain): shorten class name
|
||
|
(MailNotifier): if lookup= is a string, pass it to Domain()
|
||
|
* buildbot/test/test_status.py (Mail.testBuild1): new class name
|
||
|
(Mail.testBuild2): test the string-to-Domain shortcut
|
||
|
(Mail.testMail): fix test
|
||
|
|
||
|
|
||
|
* buildbot/scripts/sample.cfg: improve the build-the-buildbot
|
||
|
example config file
|
||
|
|
||
|
* buildbot/status/builder.py (BuildStatus.__setstate__): re-set
|
||
|
more attributes on load
|
||
|
(BuilderStatus.stubBuildCacheSize): bump to 30, this was too low
|
||
|
to accomodate the whole waterfall page at once, and the thrashing
|
||
|
results in a lot of unnecessary loads
|
||
|
(BuildStatus.saveYourself): use binary pickles, not fluffy text
|
||
|
(BuilderStatus.saveYourself): same
|
||
|
(BuilderStatus.eventGenerator): stop generating on the first missing
|
||
|
build. We assume that saved builds are deleted oldest-first.
|
||
|
(BuildStepStatus.__getstate__): .progress might not exist
|
||
|
|
||
|
* buildbot/changes/changes.py (ChangeMaster): make it
|
||
|
serializable, in $masterdir/changes.pck
|
||
|
(ChangeMaster.stopService): save on shutdown
|
||
|
* buildbot/master.py (BuildMaster.loadChanges): load at startup
|
||
|
* buildbot/test/test_config.py: load Changes before config file
|
||
|
|
||
|
|
||
|
* buildbot/slave/commands.py (ShellCommand.doTimeout): put the
|
||
|
"Oh my god, you killed the command" header on a separate line
|
||
|
|
||
|
* buildbot/status/builder.py (BuilderStatus.getStubBuildByNumber):
|
||
|
skip over corrupted build pickles
|
||
|
(BuilderStatus.getFullBuildByNumber): same
|
||
|
(BuilderStatus.eventGenerator): skip over unavailable builds
|
||
|
(BuildStatus.saveYourself): save builds to a .tmp file first, then
|
||
|
do an atomic rename. This prevents a corrupted pickle when some
|
||
|
internal serialization error occurs.
|
||
|
(BuilderStatus.saveYourself): same
|
||
|
|
||
|
* buildbot/slave/commands.py (SlaveShellCommand): oops, restore
|
||
|
the timeout for shell commands, it got lost somehow
|
||
|
|
||
|
* buildbot/status/builder.py (BuilderStatus.eventGenerator): if we
|
||
|
run out of build steps, return the rest of the builder events
|
||
|
|
||
|
* buildbot/interfaces.py (IBuilderControl.ping): add method
|
||
|
|
||
|
* buildbot/process/builder.py (BuilderControl.ping): move
|
||
|
slave-ping to BuilderControl, and fix the failure case in the
|
||
|
process (Event.finish() is the verb, Event.finished is the noun).
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceBuilder.ping): ping
|
||
|
through the BuilderControl instead of the BuilderStatus
|
||
|
(EventBox): add adapter for builder.Event, allowing builder events to
|
||
|
be displayed in the waterfall display
|
||
|
|
||
|
* buildbot/master.py (BotMaster.stopService): add a 'master
|
||
|
shutdown' event to the builder's log
|
||
|
(BuildMaster.startService): and a 'master started' on startup
|
||
|
|
||
|
* buildbot/status/builder.py (BuilderStatus.eventGenerator): merge
|
||
|
builder events into the BuildStep event stream
|
||
|
(Status.builderAdded): add a 'builder created' event
|
||
|
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.command_WATCH): new
|
||
|
command to announce the completion of a running build
|
||
|
(IrcStatusBot.command_FORCE): announce when the build finishes
|
||
|
|
||
|
* buildbot/status/builder.py (BuilderStatus.addFullBuildToCache):
|
||
|
don't evict unfinished builds from the cache: they must stay in
|
||
|
the full-cache until their logfiles have stopped changing. Make
|
||
|
sure the eviction loop terminates if an unfinished build was hit.
|
||
|
(HTMLLogFile.getTextWithHeaders): return HTML as if it were text.
|
||
|
This lets exceptions be dumped in an email status message. Really
|
||
|
we need LogFiles which contain both text and HTML, instead of two
|
||
|
separate classes.
|
||
|
(BuildStatus.__getstate__): handle self.finished=False
|
||
|
(Status.builderAdded): if the pickle is corrupted, abandon the
|
||
|
history and create a new BuilderStatus object.
|
||
|
|
||
|
* buildbot/process/base.py (Build.stopBuild): tolerate lack of a
|
||
|
self.progress attribute, helped one test which doesn't fully set
|
||
|
up the Build object.
|
||
|
|
||
|
* buildbot/interfaces.py (IStatusLogStub): split out some of the
|
||
|
IStatusLog methods into an Interface that is implemented by "stub"
|
||
|
logs, for which all the actual text chunks are on disk (in the
|
||
|
pickled Build instance). To show the log contents, you must first
|
||
|
adapt the stub log to a full IStatusLog object.
|
||
|
|
||
|
* buildbot/status/builder.py (LogFileStub): create separate stub
|
||
|
log objects, which can be upgraded to a real one if necessary.
|
||
|
(LogFile): make them persistable, and let them stubify themselves
|
||
|
(HTMLLogFile): same
|
||
|
(BuildStepStatus): same
|
||
|
(BuildStatus): same
|
||
|
(BuildStatus.saveYourself): save the whole build out to disk
|
||
|
(BuilderStatus): make it persistable
|
||
|
(BuilderStatus.saveYourself): save the builder to disk
|
||
|
(BuilderStatus.addFullBuildToCache): implement two caches which
|
||
|
hold Build objects: a small one which holds full Builds, and a
|
||
|
larger one which holds "stubbed" Builds (ones with their LogFiles
|
||
|
turned into LogFileStubs). This reduces memory usage by the
|
||
|
buildmaster by not keeping more than a few (default is 2) whole
|
||
|
build logs in RAM all the time.
|
||
|
(BuilderStatus.getBuild): rewrite to pull from disk (through the
|
||
|
cache)
|
||
|
(BuilderStatus.eventGenerator): rewrite since .builds went away
|
||
|
(BuilderStatus.buildStarted): remove the .builds array. Add the
|
||
|
build to the "full" cache when it starts.
|
||
|
(BuilderStatus._buildFinished): save the build to disk when it
|
||
|
finishes
|
||
|
(Status): give it a basedir (same as the BuildMaster's basedir)
|
||
|
where the builder pickles can be saved
|
||
|
(Status.builderAdded): create the BuilderStatus ourselves, by
|
||
|
loading a pickle from disk (or creating a new instance if there
|
||
|
was none on disk). Return the BuilderStatus so the master can glue
|
||
|
it into the new Builder object.
|
||
|
|
||
|
* buildbot/master.py (BotMaster.stopService): on shutdown, tell
|
||
|
all BuilderStatuses to save themselves out to disk. This is in
|
||
|
lieu of saving anything important in the main Application pickle
|
||
|
(the -shutdown.tap file).
|
||
|
(BuildMaster.__init__): give Status() a basedir for its files
|
||
|
(BuildMaster.loadConfig_Builders): do status.builderAdded first,
|
||
|
to get the BuilderStatus, then give it to the Builder (instead of
|
||
|
doing it the other way around). It's ok if the status announces
|
||
|
the new Builder before it's really ready, as the outside world can
|
||
|
only see the BuilderStatus object anyway (and it is ready before
|
||
|
builderAdded returns). Use the builder's "builddir" (which
|
||
|
normally specifies where the slave will run the builder) as the
|
||
|
master's basedir (for saving serialized builds).
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceBuildStep.getChild):
|
||
|
coerce the logfile to IStatusLog before trying to get the text
|
||
|
chunks out of it. This will pull the full (non-stubified) Build in
|
||
|
from disk if necessary.
|
||
|
(TextLog): fix the adapter registration
|
||
|
|
||
|
* buildbot/test/test_control.py (Force.setUp): create the basedir
|
||
|
* buildbot/test/test_web.py: same
|
||
|
* buildbot/test/test_vc.py (SetupMixin.setUp): same
|
||
|
* buildbot/test/test_status.py (Mail.makeBuild): match new setup
|
||
|
* buildbot/test/test_run.py (Run.testMaster): same
|
||
|
(Status.setUp): same
|
||
|
|
||
|
2004-09-29 Fred L. Drake, Jr. <fdrake@acm.org>
|
||
|
|
||
|
* buildbot/status/html.py (Waterfall.__init__): store actual
|
||
|
allowForce flag passed in rather than using True for everyone;
|
||
|
make sure setting it to False doesn't cause a NameError
|
||
|
(Waterfall.setup).
|
||
|
(StatusResourceBuilder.__init__) add the builder name to the page
|
||
|
title.
|
||
|
(StatusResourceBuilder.body) move HTML generation for a name/value
|
||
|
row into a helper method (StatusResourceBuilder.make_row); only
|
||
|
generate the "Force Build" form if allowForce was True and the
|
||
|
slave is connected. Use class attributes in the generated HTML to
|
||
|
spread a little CSS-joy.
|
||
|
|
||
|
2004-09-28 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial.createSummary): fix
|
||
|
warning-scanner to not ignore things like
|
||
|
'ComponentsDeprecationWarning' and 'exceptions.RuntimeWarning'
|
||
|
|
||
|
* buildbot/status/html.py (StatusResource.control): add some
|
||
|
class-level values for .control in an attempt to make upgrading
|
||
|
smoother
|
||
|
|
||
|
* buildbot/util.py (ComparableMixin): survive missing attributes,
|
||
|
such as when a class is modified and we're comparing old instances
|
||
|
against new ones
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.privmsg): clean up
|
||
|
failure handling, remove a redundant try/except block. Don't
|
||
|
return the full traceback to the IRC channel.
|
||
|
(IrcStatusBot.command_FORCE): catch new exceptions, return useful
|
||
|
error messages. Get ETA properly.
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceBuild.body): html.escape
|
||
|
the reason, since (at least) IRC message will have <> in them.
|
||
|
(StatusResourceBuilder.__init__): take an IBuilderControl
|
||
|
(StatusResourceBuilder.force): use the IBuilderControl we get in
|
||
|
the constructor instead of trying to make our own. Catch the
|
||
|
new exceptions and ignore them for now (until we make an
|
||
|
intermediate web page where we could show the error message)
|
||
|
(StatusResource): create with an IControl, use it to give an
|
||
|
IBuilderControl to all children
|
||
|
(Waterfall): take an allowForce= option, pass an IControl object
|
||
|
to StatusResource if it is True
|
||
|
|
||
|
* buildbot/test/test_web.py (ConfiguredMaster): handle IControl
|
||
|
|
||
|
* buildbot/master.py (BotPerspective.perspective_forceBuild):
|
||
|
catch new exceptions and return string forms
|
||
|
|
||
|
* buildbot/interfaces.py: add NoSlaveError, BuilderInUseError
|
||
|
* buildbot/process/builder.py (Builder.forceBuild): raise them
|
||
|
* buildbot/test/test_control.py (Force.testNoSlave): new test
|
||
|
(Force.testBuilderInUse): same
|
||
|
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot): enable build-forcing
|
||
|
|
||
|
* buildbot/test/test_run.py: use IControl
|
||
|
* buildbot/test/test_vc.py: same
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceBuilder.force): rewrite
|
||
|
to use IControl. Still offline.
|
||
|
* buildbot/status/words.py (IrcStatusBot.command_FORCE): same
|
||
|
|
||
|
* buildbot/process/builder.py (Builder.doPeriodicBuild): set
|
||
|
who=None so periodic builds don't send out status mail
|
||
|
(Builder.forceBuild): include reason in the log message
|
||
|
(BuilderControl.forceBuild): rename 'name' to 'who'
|
||
|
|
||
|
* buildbot/master.py (BotPerspective.perspective_forceBuild): add
|
||
|
'who' parameter, but make it None by default so builds forced by
|
||
|
slave admins don't cause status mail to be sent to anybody
|
||
|
(BotMaster.forceBuild): same. this method is deprecated.
|
||
|
(DebugPerspective.perspective_forceBuild): same, use IControl.
|
||
|
(DebugPerspective.perspective_fakeChange): use IControl..
|
||
|
(Dispatcher.requestAvatar): .. so don't set .changemaster
|
||
|
|
||
|
* buildbot/interfaces.py (IBuilderControl.forceBuild): rename 'who'
|
||
|
parameter to avoid confusion with the name of the builder
|
||
|
|
||
|
|
||
|
* buildbot/status/mail.py: refine comment about needing 2.3
|
||
|
|
||
|
* buildbot/status/html.py: move all imports to the top
|
||
|
|
||
|
* buildbot/test/test_control.py: test new interfaces
|
||
|
* buildbot/test/test_run.py (Status): handle new interfaces
|
||
|
* buildbot/test/test_vc.py (SetupMixin.doBuild): same
|
||
|
|
||
|
* buildbot/process/base.py (BuildControl): implement IBuildControl
|
||
|
and its lonely getStatus() method
|
||
|
|
||
|
* buildbot/process/builder.py (BuilderControl): implement
|
||
|
IBuilderControl, obtained by adapting the Builder instance
|
||
|
(Builder.startBuild): return a BuilderControl instead of a
|
||
|
Deferred. The caller can use bc.getStatus().waitUntilFinished() to
|
||
|
accomplish the same thing.
|
||
|
|
||
|
* buildbot/master.py: move all import statements to the top
|
||
|
(Control): implement IControl, obtained by adapting the
|
||
|
BuildMaster instance.
|
||
|
|
||
|
* buildbot/interfaces.py: add IControl, IBuilderControl, and
|
||
|
IBuildControl. These are used to force builds. Eventually they
|
||
|
will provide ways to reconfigure the Builders, pause or abandon a
|
||
|
Build, and perhaps control the BuildMaster itself.
|
||
|
|
||
|
2004-09-26 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/util.py (ComparableMixin): survive twisted>1.3.0 which
|
||
|
ends up comparing us against something without a .__class__
|
||
|
|
||
|
2004-09-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/scripts/runner.py: rearrange option parsing a lot, to get
|
||
|
usage text right.
|
||
|
|
||
|
* Makefile: add 'deb-snapshot' target, to create a timestamped
|
||
|
.deb package
|
||
|
|
||
|
* debian/rules (binary-indep): skip CVS/ files in dh_installexamples
|
||
|
|
||
|
2004-09-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/__init__.py (version): move version string here
|
||
|
* setup.py: get version string from buildbot.version
|
||
|
* buildbot/status/html.py (WaterfallStatusResource.body): add
|
||
|
buildbot version to the page footer
|
||
|
* buildbot/status/words.py (IrcStatusBot.command_VERSION): provide
|
||
|
version when asked
|
||
|
|
||
|
* buildbot/master.py (BotMaster.getPerspective): detect duplicate
|
||
|
slaves, let the second know where the first one is coming from
|
||
|
(BuildMaster.__init__): turn on .unsafeTracebacks so the slave can
|
||
|
see our exceptions. It would be nice if there were a way to just
|
||
|
send them the exception type and value, not the full traceback.
|
||
|
|
||
|
|
||
|
* buildbot/status/mail.py (MailNotifier): add a new argument
|
||
|
sendToInterestedUsers=, which can be set to False to disable the
|
||
|
usual send-to-blamelist behavior.
|
||
|
(top): handle python-2.2 which has no email.MIMEMultipart
|
||
|
(MailNotifier.buildMessage): don't send logs without MIMEMultipart
|
||
|
(MailNotifier.disownServiceParent): unsubscribe on removal
|
||
|
|
||
|
* buildbot/test/test_status.py (Mail.testBuild2): test it
|
||
|
|
||
|
|
||
|
* buildbot/status/progress.py (Expectations.wavg): tolerate
|
||
|
current=None, which happens when steps start failing badly
|
||
|
* buildbot/test/test_status.py (Progress.testWavg): test for it
|
||
|
|
||
|
* buildbot/process/step.py (SVN.startVC): when the (old) slave
|
||
|
doesn't understand args['revision'], emit a warning instead of
|
||
|
bailing completely. Updating to -rHEAD is probably close enough.
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial.start): fix sanity-check
|
||
|
|
||
|
* buildbot/test/test_status.py: at least import bb.status.client
|
||
|
even if we don't have any test coverage for it yet
|
||
|
|
||
|
* contrib/svn_buildbot.py: don't require python2.3
|
||
|
(main): wait, do require it (for sets.py), but explain how to
|
||
|
make it work under python2.2
|
||
|
|
||
|
2004-09-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* contrib/svn_buildbot.py: include the revision number in the Change
|
||
|
|
||
|
* buildbot/changes/freshcvs.py (FreshCVSSourceNewcred): use when=,
|
||
|
using util.now() because FreshCVS is a realtime service
|
||
|
|
||
|
* buildbot/status/event.py: delete dead code
|
||
|
* buildbot/process/step.py: don't import dead Event class
|
||
|
* buildbot/process/step_twisted.py: same
|
||
|
* buildbot/status/builder.py: same
|
||
|
* buildbot/status/client.py: same
|
||
|
|
||
|
* buildbot/test/test_process.py: kill buggy out-of-date disabled test
|
||
|
|
||
|
* buildbot/changes/changes.py (Change): set .when from an __init__
|
||
|
argument (which defaults to now()), rather than having
|
||
|
ChangeMaster.addChange set it later.
|
||
|
(ChangeMaster.addChange): same
|
||
|
|
||
|
* buildbot/changes/mail.py (parseFreshCVSMail): pass in when=
|
||
|
(parseSyncmail): same. Just use util.now() for now.
|
||
|
(parseBonsaiMail): parse the timestamp field for when=
|
||
|
|
||
|
* buildbot/test/test_vc.py (SourceStamp.addChange): page in when=
|
||
|
instead of setting .when after the fact
|
||
|
|
||
|
2004-09-22 slyphon
|
||
|
|
||
|
* buildbot/slave/trial.py: new SlaveCommand to machine-parse test
|
||
|
results when the target project uses retrial. Still under
|
||
|
development.
|
||
|
* buildbot/test/test_trial.py: same
|
||
|
|
||
|
2004-09-21 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/mail.py (MailNotifier.__init__): include
|
||
|
success/warnings/failure in the Subject line
|
||
|
(MailNotifier.buildMessage): add the buildbot's URL to the body,
|
||
|
use step.logname for the addLogs=True attachment filenames
|
||
|
* buildbot/test/test_status.py (Mail): test Subject lines
|
||
|
(Mail.testLogs): test attachment filenames
|
||
|
|
||
|
* buildbot/master.py (DebugPerspective.perspective_fakeChange):
|
||
|
accept a 'who' argument from the debug tool
|
||
|
* contrib/debugclient.py (DebugWidget.do_commit): send 'who'
|
||
|
* contrib/debug.glade: add text box to set 'who'
|
||
|
|
||
|
* buildbot/interfaces.py (IBuildStatus.getBuilder): replace
|
||
|
.getBuilderName with .getBuilder().getName(), more flexible
|
||
|
(IStatusLog.getName): logs have short names, but you can prefix
|
||
|
them with log.getStep().getName() to make them more useful
|
||
|
* buildbot/status/builder.py: same
|
||
|
* buildbot/status/client.py: same
|
||
|
* buildbot/status/html.py: same
|
||
|
* buildbot/test/test_run.py (Status.testSlave): same
|
||
|
* buildbot/process/step.py: tweak logfile names
|
||
|
|
||
|
* buildbot/status/mail.py (MailNotifier): add lookup, change
|
||
|
argument to extraRecipients. The notifier is now aimed at sending
|
||
|
mail to the people involved in a particular build, with additional
|
||
|
constant recipients as a secondary function.
|
||
|
|
||
|
* buildbot/test/test_status.py: add coverage for IEmailLookup,
|
||
|
including slow-lookup and failing-lookup. Make sure the blamelist
|
||
|
members are included.
|
||
|
|
||
|
* buildbot/interfaces.py: new interfaces IEmailSender+IEmailLookup
|
||
|
(IBuildStatus.getResponsibleUsers): rename from getBlamelist
|
||
|
(IBuildStatus.getInterestedUsers): new method
|
||
|
* buildbot/status/builder.py (BuildStatus.getResponsibleUsers): same
|
||
|
* buildbot/status/client.py (remote_getResponsibleUsers): same
|
||
|
* buildbot/status/html.py (StatusResourceBuild.body): same
|
||
|
* buildbot/test/test_run.py (Status.testSlave): same
|
||
|
|
||
|
2004-09-20 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/users.xhtml: update concepts
|
||
|
|
||
|
* Makefile: add a convenience makefile, for things like 'make
|
||
|
test'. It is not included in the source tarball.
|
||
|
|
||
|
2004-09-16 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: mention /usr/bin/buildbot, debian/*
|
||
|
|
||
|
* debian/*: add preliminary debian packaging. Many thanks to
|
||
|
Kirill Lapshin (and Kevin Turner) for the hard work. I've mangled
|
||
|
it considerably since it left their hands, I am responsible for
|
||
|
all breakage that's resulted.
|
||
|
|
||
|
* bin/buildbot: create a top-level 'buildbot' command, to be
|
||
|
installed in /usr/bin/buildbot . For now it's just a simple
|
||
|
frontend to mktap/twistd/kill, but eventually it will be the entry
|
||
|
point to the 'try' command and also a status client. It is also
|
||
|
intended to support the upcoming debian-packaging init.d scripts.
|
||
|
* buildbot/scripts/runner.py: the real work is done here
|
||
|
* buildbot/scripts/__init__.py: need this too
|
||
|
* buildbot/scripts/sample.cfg: this is installed in new
|
||
|
buildmaster directories
|
||
|
* setup.py: install new stuff
|
||
|
|
||
|
2004-09-15 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py: skip SVN tests if svn can't handle the
|
||
|
'file:' schema (the version shipped with OS-X was built without the
|
||
|
ra_local plugin).
|
||
|
(SetupMixin.tearDown): stop the goofy twisted.web timer which
|
||
|
updates the log-timestamp, to make sure it isn't still running after
|
||
|
the test finishes
|
||
|
|
||
|
* docs/config.xhtml: Add projectName, projectURL, buildbotURL
|
||
|
values to the config file.
|
||
|
* docs/examples/hello.cfg: add examples
|
||
|
* buildbot/interfaces.py (IStatus.getBuildbotURL): define accessors
|
||
|
* buildbot/status/builder.py (Status.getProjectURL): implement them
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): set them from config
|
||
|
* buildbot/test/test_config.py (ConfigTest.testSimple): test them
|
||
|
* buildbot/status/html.py (WaterfallStatusResource): display them
|
||
|
|
||
|
|
||
|
* buildbot/test/test_vc.py (FakeBuilder.name): add attribute so
|
||
|
certain error cases don't suffer a secondary exception.
|
||
|
(top): Skip tests if the corresponding VC tool is not installed.
|
||
|
|
||
|
* buildbot/process/factory.py (Trial): introduce separate
|
||
|
'buildpython' and 'trialpython' lists, since trialpython=[] is
|
||
|
what you want to invoke /usr/bin/python, whereas ./setup.py is
|
||
|
less likely to be executable. Add env= parameter to pass options
|
||
|
to test cases (which is how I usually write tests, I don't know if
|
||
|
anyone else does it this way).
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial): handle python=None.
|
||
|
Require 'testpath' be a string, not a list. Fix tests= typo.
|
||
|
(Trial.start): sanity-check any PYTHONPATH value for stringness.
|
||
|
|
||
|
* buildbot/process/step.py (RemoteCommand._remoteFailed): goofy
|
||
|
way to deal with the possibility of removing the disconnect notify
|
||
|
twice.
|
||
|
(CVS): add a 'login' parameter to give a password to 'cvs login',
|
||
|
commonly used with pserver methods (where pw="" or pw="guest")
|
||
|
|
||
|
* buildbot/slave/commands.py (SourceBase): move common args
|
||
|
extraction and setup() to __init__, so everything is ready by the
|
||
|
time setup() is called
|
||
|
(CVS.start): call 'cvs login' if a password was supplied
|
||
|
(ShellCommand): special-case PYTHONPATH: prepend the master's
|
||
|
value to any existing slave-local value.
|
||
|
|
||
|
* buildbot/process/builder.py (Builder.updateBigStatus): if we
|
||
|
don't have a remote, mark the builder as Offline. This whole
|
||
|
function should probably go away and be replaced by individual
|
||
|
deltas.
|
||
|
(Builder.buildFinished): return the results to the build-finished
|
||
|
deferred callback, helps with testing
|
||
|
|
||
|
2004-09-14 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py: put all the repositories needed to run
|
||
|
the complete tests into a single small (1.3MB) tarball, so I can
|
||
|
make that tarball available on the buildbot web site. Test HTTP
|
||
|
access (for Arch and Darcs) by spawning a temporary web server
|
||
|
while the test runs.
|
||
|
|
||
|
* docs/users.xhtml: new document, describe Buildbot's limited
|
||
|
understanding of different human users
|
||
|
|
||
|
* buildbot/test/test_vc.py: rearrange test cases a bit
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial): handle testpath=
|
||
|
* buildbot/process/factory.py (Trial): update to use step.Trial
|
||
|
|
||
|
* buildbot/slave/commands.py (ShellCommandPP): fix fatal typo
|
||
|
|
||
|
* buildbot/status/builder.py (BuildStatus.getText): add text2 to
|
||
|
the overall build text (which gives you 'failed 2 tests' rather
|
||
|
than just 'failed')
|
||
|
(BuildStepStatus.text2): default to [], not None
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial.commandComplete): text2
|
||
|
must be a list
|
||
|
|
||
|
2004-09-12 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/master.py (BotPerspective._commandsUnavailable): don't
|
||
|
log the whole exception if it's just an AttributeError (old slave)
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommand.__init__): stash .workdir
|
||
|
so (e.g.) sub-commands can be run in the right directory.
|
||
|
(ShellCommand.start): accept an optional errorMessage= argument
|
||
|
to make life easier for SVN.start
|
||
|
(SVN.startVC): put the "can't do mode=export" warning in the LogFile
|
||
|
headers
|
||
|
(ShellCommand.start): move ['dir'] compatibility hack..
|
||
|
(RemoteShellCommand.start): .. to here so everyone can use it
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial): use .workdir
|
||
|
|
||
|
* buildbot/process/step_twisted.py (BuildDebs.getText): fix the
|
||
|
text displayed when debuild fails completely
|
||
|
(Trial): snarf _trial_temp/test.log from the slave and display it
|
||
|
|
||
|
2004-09-11 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (ProcessDocs.getText): typo
|
||
|
|
||
|
* buildbot/process/process_twisted.py (TwistedTrial.tests): oops,
|
||
|
set to 'twisted', so --recurse can find twisted/web/test/*, etc
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommand): call .createSummary
|
||
|
before .evaluateCommand instead of the other way around. This
|
||
|
makes it slightly easier to count warnings and then use that to
|
||
|
set results=WARNINGS
|
||
|
* buildbot/process/step_twisted.py: cosmetic, swap the methods
|
||
|
|
||
|
* buildbot/process/base.py (Build.buildFinished): update status
|
||
|
before doing progress. It's embarrassing for the build to be stuck
|
||
|
in the "building" state when an exceptions occurs elsewhere..
|
||
|
|
||
|
* buildbot/status/progress.py (Expectations.expectedBuildTime):
|
||
|
python2.2 doesn't have 'sum'
|
||
|
|
||
|
* buildbot/status/builder.py (Status.getBuilderNames): return a copy,
|
||
|
to prevent clients from accidentally sorting it
|
||
|
|
||
|
* buildbot/master.py (Manhole): add username/password
|
||
|
(BuildMaster.loadConfig): use c['manhole']=Manhole() rather than
|
||
|
c['manholePort'], deprecate old usage
|
||
|
* docs/config.xhtml: document c['manhole']
|
||
|
* docs/examples/hello.cfg: show example of using a Manhole
|
||
|
|
||
|
|
||
|
* buildbot/test/test_steps.py (FakeBuilder.getSlaveCommandVersion):
|
||
|
pretend the slave is up to date
|
||
|
|
||
|
* buildbot/status/builder.py (BuildStepStatus.stepFinished): 'log',
|
||
|
the module, overlaps with 'log', the local variable
|
||
|
|
||
|
* buildbot/status/html.py: oops, 2.2 needs __future__ for generators
|
||
|
|
||
|
* buildbot/process/builder.py (Builder.getSlaveCommandVersion):
|
||
|
new method to let Steps find out the version of their
|
||
|
corresponding SlaveCommand.
|
||
|
* buildbot/process/step.py (BuildStep.slaveVersion): utility method
|
||
|
(ShellCommand.start): add 'dir' argument for <=0.5.0 slaves
|
||
|
(CVS.startVC): backwards compatibility for <=0.5.0 slaves
|
||
|
(SVN.startVC): same
|
||
|
(Darcs.startVC): detect old slaves (missing the 'darcs' command)
|
||
|
(Arch.startVC): same
|
||
|
(P4Sync.startVC): same
|
||
|
|
||
|
* buildbot/process/step.py (LoggedRemoteCommand.start): return the
|
||
|
Deferred so we can catch errors in remote_startCommand
|
||
|
(RemoteShellCommand.start): same
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: update sample config file
|
||
|
|
||
|
* buildbot/slave/commands.py (ShellCommandPP): write to stdin
|
||
|
after connectionMade() is called, not before. Close stdin at that
|
||
|
point too.
|
||
|
|
||
|
* buildbot/process/process_twisted.py: update to use Trial, clean
|
||
|
up argument passing (move to argv arrays instead of string
|
||
|
commands)
|
||
|
|
||
|
* buildbot/process/step_twisted.py (Trial): new step to replace
|
||
|
RunUnitTests, usable by any trial-using project (not just
|
||
|
Twisted). Arguments have changed, see the docstring for details.
|
||
|
|
||
|
* buildbot/process/base.py (Build.startBuild): this now returns a
|
||
|
Deferred. Exceptions that occur during setupBuild are now
|
||
|
caught better and lead to fewer build_status weirdnesses, like
|
||
|
finishing a build that was never started.
|
||
|
(Build.buildFinished): fire the Deferred instead of calling
|
||
|
builder.buildFinished directly. The callback argument is this
|
||
|
Build, everything else can be extracted from it, including the
|
||
|
new build.results attribute.
|
||
|
* buildbot/process/builder.py (Builder.startBuild): same
|
||
|
(Builder.buildFinished): same, extract results from build
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommands): remove dead code
|
||
|
|
||
|
2004-09-08 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_vc.py (VC.doPatch): verify that a new build
|
||
|
doesn't try to use the leftover patched workdir
|
||
|
(SourceStamp): test source-stamp computation for CVS and SVN
|
||
|
|
||
|
* buildbot/slave/commands.py (SourceBase.doPatch): mark the
|
||
|
patched workdir ('touch .buildbot-patched') so we don't try to
|
||
|
update it later
|
||
|
(SourceBase.start): add ['revision'] for all Source steps
|
||
|
(CVS): change args: use ['branch'] for -r, remove ['files']
|
||
|
(CVS.buildVC): fix revision/branch stuff
|
||
|
(SVN): add revision stuff
|
||
|
|
||
|
* buildbot/process/step.py (BuildStep.__init__): reject unknown
|
||
|
kwargs (except 'workdir') to avoid silent spelling errors
|
||
|
(ShellCommand.__init__): same
|
||
|
(Source): new base class for CVS/SVN/etc. Factor out everything
|
||
|
common, add revision computation (perform the checkout with a -D
|
||
|
DATE or -r REVISION that gets exactly the sources described by the
|
||
|
last Change), overridable with step.alwaysUseLatest. Add patch
|
||
|
handling (build.getSourceStamp can trigger the use of a base
|
||
|
revision and a patch).
|
||
|
(CVS, SVN, Darcs, Arch, P4Sync): refactor, remove leftover arguments
|
||
|
* docs/steps.xhtml: update docs
|
||
|
* docs/source.xhtml: mention .checkoutDelay
|
||
|
* docs/examples/hello.cfg: show use of checkoutDelay, alwaysUseLatest
|
||
|
|
||
|
* buildbot/process/base.py (Build.setSourceStamp): add a
|
||
|
.sourceStamp attribute to each Build. If set, this indicates that
|
||
|
the build should be done with something other than the most
|
||
|
recent source tree. This will be used to implement "try" builds.
|
||
|
(Build.allChanges): new support method
|
||
|
(Build.lastChangeTime): remove, functionality moved to Source steps
|
||
|
(Build.setupBuild): copy the Step args before adding ['workdir'],
|
||
|
to avoid modifying the BuildFactory (and thus triggering spurious
|
||
|
config changes)
|
||
|
|
||
|
|
||
|
* buildbot/status/html.py: rename s/commits/changes/
|
||
|
(StatusResourceChanges): same
|
||
|
(CommitBox.getBox): same, update URL
|
||
|
(WaterfallStatusResource): same
|
||
|
(StatusResource.getChild): same
|
||
|
|
||
|
* contrib/debugclient.py (DebugWidget.do_commit): send .revision
|
||
|
* contrib/debug.glade: add optional 'revision' to the fakeChange
|
||
|
|
||
|
* buildbot/changes/changes.py (html_tmpl): display .revision
|
||
|
(ChangeMaster.addChange): note .revision in log
|
||
|
* buildbot/changes/pb.py (ChangePerspective.perspective_addChange):
|
||
|
accept a ['revision'] attribute
|
||
|
|
||
|
* buildbot/process/factory.py (BuildFactory): use ComparableMixin
|
||
|
|
||
|
* buildbot/master.py (BotMaster.getPerspective): update the
|
||
|
.connected flag in SlaveStatus when it connects
|
||
|
(BotMaster.detach): and when it disconnects
|
||
|
(DebugPerspective.perspective_fakeChange): take a 'revision' attr
|
||
|
(BuildMaster.loadConfig_Builders): walk old list correctly
|
||
|
|
||
|
* buildbot/test/test_config.py: fix prefix= usage
|
||
|
|
||
|
2004-09-06 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: mention P4
|
||
|
|
||
|
* buildbot/changes/p4poller.py (P4Source): New ChangeSource to
|
||
|
poll a P4 depot looking for recent changes. Thanks to Dave
|
||
|
Peticolas for the contribution. Probably needs some testing after
|
||
|
I mangled it.
|
||
|
|
||
|
* buildbot/process/step.py (P4Sync): simple P4 source-updater,
|
||
|
requires manual client setup for each buildslave. Rather
|
||
|
experimental. Thanks again to Dave Peticolas.
|
||
|
* buildbot/slave/commands.py (P4Sync): slave-side source-updater
|
||
|
|
||
|
* buildbot/changes/changes.py (Change): add a .revision attribute,
|
||
|
which will eventually be used to generate source-stamp values.
|
||
|
|
||
|
* buildbot/process/step.py (RemoteCommand.start): use
|
||
|
notifyOnDisconnect to notice when we lose the slave, then treat it
|
||
|
like an exception. This allows LogFiles to be closed and the build
|
||
|
to be wrapped up normally. Be sure to remove the disconnect
|
||
|
notification when the step completes so we don't accumulate a
|
||
|
bazillion such notifications which will fire weeks later (when the
|
||
|
slave finally disconnects normally). Fixes SF#915807, thanks to
|
||
|
spiv (Andrew Bennetts) for the report.
|
||
|
(LoggedRemoteCommand): move __init__ code to RemoteCommand, since it
|
||
|
really isn't Logged- specific
|
||
|
(LoggedRemoteCommand.remoteFailed): Add an extra newline to the
|
||
|
header, since it's almost always going to be appended to an
|
||
|
incomplete line
|
||
|
* buildbot/test/test_steps.py (BuildStep.testShellCommand1):
|
||
|
update test to handle use of notifyOnDisconnect
|
||
|
|
||
|
* buildbot/status/builder.py (BuilderStatus.currentlyOffline):
|
||
|
don't clear .ETA and .currentBuild when going offline, let the
|
||
|
current build clean up after itself
|
||
|
|
||
|
* buildbot/process/builder.py (Builder.detached): wait a moment
|
||
|
before doing things like stopping the current build, because the
|
||
|
current step will probably notice the disconnect and cleanup the
|
||
|
build by itself
|
||
|
* buildbot/test/test_run.py (Status.tearDown): update test to
|
||
|
handle asynchronous build-detachment
|
||
|
|
||
|
* buildbot/process/base.py (Build.stopBuild): minor shuffles
|
||
|
|
||
|
* buildbot/status/html.py (WaterfallStatusResource.buildGrid):
|
||
|
hush a debug message
|
||
|
|
||
|
2004-09-05 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/changes/maildir.py (Maildir.start): catch an IOError
|
||
|
when the dnotify fcntl() fails and fall back to polling. Linux 2.2
|
||
|
kernels do this: the fcntl module has the F_NOTIFY constant, but
|
||
|
the kernel itself doesn't support the operation. Thanks to Olly
|
||
|
Betts for spotting the problem.
|
||
|
|
||
|
* buildbot/process/step.py (Darcs): new source-checkout command
|
||
|
(Arch): new source-checkout command
|
||
|
(todo_P4): fix constructor syntax, still just a placeholder
|
||
|
* buildbot/test/test_vc.py (VC.testDarcs): test it
|
||
|
(VC.testDarcsHTTP): same, via localhost HTTP
|
||
|
(VC.testArch): same
|
||
|
(VC.testArchHTTP): same
|
||
|
* NEWS: mention new features
|
||
|
|
||
|
* buildbot/slave/commands.py (ShellCommand): add .keepStdout,
|
||
|
which tells the step to stash stdout text locally (in .stdout).
|
||
|
Slave-side Commands can use this to make decisions based upon the
|
||
|
output of the the ShellCommand (not just the exit code).
|
||
|
(Darcs): New source-checkout command
|
||
|
(Arch): New source-checkout command, uses .keepStdout in one place
|
||
|
where it needs to discover the archive's default name.
|
||
|
|
||
|
* docs/steps.xhtml: Document options taken by Darcs and Arch.
|
||
|
* docs/source.xhtml: add brief descriptions of Darcs and Arch
|
||
|
* docs/examples/hello.cfg: add examples of Darcs and Arch checkout
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommand.describe): add an
|
||
|
alternate .descriptionDone attribute which provides descriptive
|
||
|
text when the step is complete. .description can be ["compiling"],
|
||
|
for use while the step is running, then .descriptionDone can be
|
||
|
["compile"], used alone when the step succeeds or with "failed" when
|
||
|
it does not. Updated other steps to use the new text.
|
||
|
* buildbot/process/step_twisted.py: same
|
||
|
* buildbot/test/test_run.py: update tests to match
|
||
|
|
||
|
2004-08-30 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommand.createSummary): fix docs
|
||
|
(CVS.__init__): send 'patch' argument to slave
|
||
|
(CVS.start): don't create the LoggedRemoteCommand until start(),
|
||
|
so we can catch a .patch added after __init__
|
||
|
(SVN.__init__): add 'patch' to SVN too
|
||
|
(SVN.start): same
|
||
|
|
||
|
* buildbot/slave/commands.py (ShellCommand): add a 'stdin'
|
||
|
argument, to let commands push data into the process' stdin pipe.
|
||
|
Move usePTY to a per-instance attribute, and clear it if 'stdin'
|
||
|
is in use, since closing a PTY doesn't really affect the process
|
||
|
in the right way (in particular, I couldn't run /usr/bin/patch
|
||
|
under a pty).
|
||
|
(SourceBase.doPatch): handle 'patch' argument
|
||
|
|
||
|
* buildbot/test/test_vc.py (VC.doPatch): test 'patch' argument for
|
||
|
both CVS and SVN
|
||
|
|
||
|
* buildbot/slave/commands.py (cvs_ver): fix version-parsing goo
|
||
|
* buildbot/slave/bot.py (Bot.remote_getCommands): send command
|
||
|
versions to master
|
||
|
* buildbot/master.py (BotPerspective.got_commands): get command
|
||
|
versions from slave, give to each builder
|
||
|
* buildbot/process/builder.py (Builder.attached): stash slave
|
||
|
command versions in .remoteCommands
|
||
|
|
||
|
* docs/steps.xhtml: bring docs in-line with reality
|
||
|
|
||
|
* buildbot/process/step.py (CVS.__init__): more brutal
|
||
|
compatibility code removal
|
||
|
(SVN.__init__): same
|
||
|
|
||
|
* buildbot/slave/commands.py (SlaveShellCommand): update docs
|
||
|
(SlaveShellCommand.start): require ['workdir'] argument, remove
|
||
|
the ['dir'] fallback (compatibility will come later)
|
||
|
(SourceBase): update docs
|
||
|
(SourceBase.start): remove ['directory'] fallback
|
||
|
(CVS): update docs
|
||
|
(SVN): update docs
|
||
|
* buildbot/test/test_config.py (ConfigTest.testBuilders): update test
|
||
|
* buildbot/test/test_steps.py (BuildStep.testShellCommand1): same
|
||
|
* buildbot/test/test_slavecommand.py (SlaveCommandTestCase): same
|
||
|
|
||
|
* buildbot/process/step.py (RemoteShellCommand.__init__): add
|
||
|
want_stdout/want_stderr. remove old 'dir' keyword (to simplify the
|
||
|
code.. I will figure out 0.5.0-compatibility hooks later)
|
||
|
|
||
|
2004-08-30 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/process_twisted.py: rewrite in terms of new
|
||
|
BuildFactory base class. It got significantly shorter. Yay
|
||
|
negative code days.
|
||
|
|
||
|
* buildbot/process/step_twisted.py (HLint.start): fix to make it
|
||
|
work with the new "self.build isn't nailed down until we call
|
||
|
step.start()" scheme: specifically, __init__ is called before the
|
||
|
build has decided on which Changes are going in, so we don't scan
|
||
|
build.allFiles() for .xhtml files until start()
|
||
|
(HLint.commandComplete): use getText(), not getStdout()
|
||
|
(RunUnitTests.start): same: don't use .build until start()
|
||
|
(RunUnitTests.describe): oops, don't report (None) when using
|
||
|
the default reactor
|
||
|
(RunUnitTests.commandComplete): use getText()
|
||
|
(RunUnitTests.createSummary): same
|
||
|
(BuildDebs.commandComplete): same
|
||
|
|
||
|
* buildbot/process/step.py (RemoteShellCommand.__init__): don't
|
||
|
set args['command'] until start(), since our BuildStep is allowed
|
||
|
to change their mind up until that point
|
||
|
(TreeSize.commandComplete): use getText(), not getStdout()
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: update to current standards
|
||
|
|
||
|
* docs/factories.xhtml: update
|
||
|
* buildbot/process/factory.py: implement all the common factories
|
||
|
described in the docs. The Trial factory doesn't work yet, and
|
||
|
I've probably broken all the process_twisted.py factories in the
|
||
|
process. There are compatibility classes left in for things like
|
||
|
the old BasicBuildFactory, but subclasses of them are unlikely to
|
||
|
work.
|
||
|
* docs/examples/glib_master.cfg: use new BuildFactories
|
||
|
* docs/examples/hello.cfg: same
|
||
|
|
||
|
* buildbot/test/test_config.py (ConfigTest.testBuilders): remove
|
||
|
explicit 'workdir' args
|
||
|
|
||
|
* buildbot/process/base.py (BuildFactory): move factories to ..
|
||
|
* buildbot/process/factory.py (BuildFactory): .. here
|
||
|
* buildbot/process/process_twisted.py: handle move
|
||
|
* buildbot/test/test_config.py: same
|
||
|
* buildbot/test/test_run.py: same
|
||
|
* buildbot/test/test_steps.py: same
|
||
|
* buildbot/test/test_vc.py: same
|
||
|
* docs/factories.xhtml: same
|
||
|
|
||
|
* NEWS: mention config changes that require updating master.cfg
|
||
|
|
||
|
* buildbot/process/base.py (Build.setupBuild): add a 'workdir'
|
||
|
argument to all steps that weren't given one already, pointing at
|
||
|
the "build/" directory.
|
||
|
|
||
|
* docs/examples/hello.cfg: remove explicit 'workdir' args
|
||
|
|
||
|
* docs/factories.xhtml: document standard BuildFactory clases,
|
||
|
including a bunch which are have not yet been written
|
||
|
|
||
|
2004-08-29 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/interfaces.py (IBuildStepStatus.getResults): move
|
||
|
result constants (SUCCESS, WARNINGS, FAILURE, SKIPPED) to
|
||
|
buildbot.status.builder so they aren't quite so internal
|
||
|
* buildbot/process/base.py, buildbot/process/builder.py: same
|
||
|
* buildbot/process/maxq.py, buildbot/process/step.py: same
|
||
|
* buildbot/process/step_twisted.py, buildbot/status/builder.py: same
|
||
|
* buildbot/status/mail.py, buildbot/test/test_run.py: same
|
||
|
* buildbot/test/test_status.py, buildbot/test/test_vc.py: same
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceBuildStep): oops, update
|
||
|
to handle new getLogs()-returns-list behavior
|
||
|
(StatusResourceBuildStep.getChild): same
|
||
|
(StepBox.getBox): same
|
||
|
(WaterfallStatusResource.phase0): same
|
||
|
|
||
|
* docs/source.xhtml: document how Buildbot uses version-control
|
||
|
systems (output side: how we get source trees)
|
||
|
* docs/changes.xhtml: rename from sources.xhtml, documents VC
|
||
|
systems (input side: how we learn about Changes)
|
||
|
|
||
|
* buildbot/master.py (Manhole): use ComparableMixin
|
||
|
* buildbot/changes/freshcvs.py (FreshCVSSourceNewcred): same
|
||
|
* buildbot/changes/mail.py (MaildirSource): same
|
||
|
* buildbot/status/client.py (PBListener): same
|
||
|
* buildbot/status/html.py (Waterfall): same
|
||
|
* buildbot/status/words.py (IRC): same
|
||
|
|
||
|
* NEWS: start describing new features
|
||
|
|
||
|
* buildbot/status/mail.py (MailNotifier): finish implementation.
|
||
|
The message body is still a bit sparse.
|
||
|
* buildbot/test/test_status.py (Mail): test it
|
||
|
|
||
|
* buildbot/util.py (ComparableMixin): class to provide the __cmp__
|
||
|
and __hash__ methods I wind up adding everywhere. Specifically
|
||
|
intended to support the buildbot config-file update scheme where
|
||
|
we compare, say, the old list of IStatusTargets against the new
|
||
|
one and don't touch something which shows up on both lists.
|
||
|
* buildbot/test/test_util.py (Compare): test case for it
|
||
|
|
||
|
* buildbot/interfaces.py (IBuildStatus): change .getLogs() to
|
||
|
return a list instead of a dict
|
||
|
(IBuildStepStatus.getLogs): same. The idea is that steps create
|
||
|
logs with vaguely unique names (although their uniqueness is not
|
||
|
guaranteed). Thus a compilation step should create its sole
|
||
|
logfile with the name 'compile', and contribute it to the
|
||
|
BuildStatus. If a step has two logfiles, try to create them with
|
||
|
different names (like 'test.log' and 'test.summary'), and only
|
||
|
contribute the important ones to the overall BuildStatus.
|
||
|
* buildbot/status/builder.py (Event.getLogs): same
|
||
|
(BuildStepStatus): fix default .text and .results
|
||
|
(BuildStepStatus.addLog): switch to list-like .getLogs()
|
||
|
(BuildStepStatus.stepFinished): same
|
||
|
(BuildStatus.text): fix default .text
|
||
|
(BuildStatus.getLogs): temporary hack to return all logs (from all
|
||
|
child BuildStepStatus objects). Needs to be fixed to only report
|
||
|
the significant ones (as contributed by the steps themselves)
|
||
|
* buildbot/test/test_run.py: handle list-like .getLogs()
|
||
|
* buildbot/test/test_steps.py (BuildStep.testShellCommand1): same
|
||
|
|
||
|
2004-08-28 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/builder.py (Builder.attached): serialize the
|
||
|
attachment process, so the attach-watcher isn't called until the
|
||
|
slave is really available. Add detached watchers too, which makes
|
||
|
testing easier.
|
||
|
|
||
|
* buildbot/test/test_vc.py: test VC modes (clobber/update/etc)
|
||
|
|
||
|
* buildbot/test/test_swap.py: remove dead code
|
||
|
|
||
|
* buildbot/slave/commands.py (ShellCommandPP): add debug messages
|
||
|
(ShellCommand.start): treat errors in _startCommand/spawnProcess
|
||
|
sort of as if the command being run exited with a -1. There may
|
||
|
still be some holes in this scheme.
|
||
|
(CVSCommand): add 'revision' tag to the VC commands, make sure the
|
||
|
-r option appears before the module list
|
||
|
* buildbot/process/step.py (CVS): add 'revision' argument
|
||
|
|
||
|
* buildbot/slave/bot.py (SlaveBuilder._ackFailed): catch failures
|
||
|
when sending updates or stepComplete messages to the master, since
|
||
|
we don't currently care whether they arrive or not. When we revamp
|
||
|
the master/slave protocol to really resume interrupted builds,
|
||
|
this will need revisiting.
|
||
|
(lostRemote): remove spurious print
|
||
|
|
||
|
* buildbot/master.py (BotPerspective.attached): serialize the
|
||
|
new-builder interrogation process, to make testing easier
|
||
|
(BotMaster.waitUntilBuilderDetached): convenience function
|
||
|
|
||
|
* buildbot/status/builder.py (BuilderStatus): prune old builds
|
||
|
(BuildStatus.pruneSteps): .. and steps
|
||
|
(BuildStepStatus.pruneLogs): .. and logs
|
||
|
(BuilderStatus.getBuild): handle missing builds
|
||
|
* buildbot/status/html.py (StatusResourceBuild.body): display build
|
||
|
status in the per-build page
|
||
|
(BuildBox.getBox): color finished builds in the per-build box
|
||
|
|
||
|
2004-08-27 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/mail.py (MailNotifier): new notification class,
|
||
|
not yet finished
|
||
|
|
||
|
* buildbot/slave/commands.py (SourceBase): refactor SVN and CVS into
|
||
|
variants of a common base class which handles all the mode= logic
|
||
|
|
||
|
* buildbot/interfaces.py (IBuildStatus.getPreviousBuild): add
|
||
|
convenience method
|
||
|
* buildbot/status/builder.py (BuildStatus.getPreviousBuild): same
|
||
|
|
||
|
2004-08-26 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py: accomodate new slavecommand
|
||
|
interfaces
|
||
|
|
||
|
* buildbot/test/test_run.py: update to new Logfile interface, new
|
||
|
buildbot.slave modules
|
||
|
* buildbot/test/test_steps.py: same, remove Swappable, add timeouts
|
||
|
|
||
|
* MANIFEST.in: new sample config file
|
||
|
* docs/examples/hello.cfg: same
|
||
|
|
||
|
* buildbot/process/step_twisted.py: remove dead import
|
||
|
|
||
|
* buildbot/process/step.py (RemoteCommand.run): catch errors
|
||
|
during .start
|
||
|
(RemoteCommand.remote_update): ignore updates that arrive after
|
||
|
we've shut down
|
||
|
(RemoteCommand.remote_complete): ignore duplicate complete msgs
|
||
|
(RemoteCommand._remoteComplete): cleanup failure handling, reduce
|
||
|
the responsibilities of the subclass's methods
|
||
|
(BuildStep.failed): catch errors during failure processing
|
||
|
(BuildStep.addHTMLLog): provide all-HTML logfiles (from Failures)
|
||
|
(CVS): move to a mode= argument (described in docstring), rather
|
||
|
than the ungainly clobber=/export=/copydir= combination.
|
||
|
(SVN): add mode= functionality to SVN too
|
||
|
(todo_Darcs, todo_Arch, todo_P4): placeholders for future work
|
||
|
|
||
|
* buildbot/process/base.py (Build.startNextStep): catch errors
|
||
|
during s.startStep()
|
||
|
|
||
|
* buildbot/clients/base.py: update to new PB client interface.
|
||
|
gtkPanes is still broken
|
||
|
|
||
|
* buildbot/bot.py, buildbot/slavecommand.py: move to..
|
||
|
* buildbot/slave/bot.py, buildbot/slave/commands.py: .. new directory
|
||
|
* setup.py: add buildbot.slave module
|
||
|
* buildbot/bb_tap.py: handle move
|
||
|
* buildbot/slave/registry.py: place to register commands, w/versions
|
||
|
* buildbot/slave/bot.py: major simplifications
|
||
|
(SlaveBuilder.remote_startCommand): use registry for slave commands,
|
||
|
instead of a fixed table. Eventually this will make the slave more
|
||
|
extensible. Use 'start' method on the command, not .startCommand.
|
||
|
Fix unsafeTracebacks handling (I think).
|
||
|
* buildbot/slave/commands.py: major cleanup. ShellCommand is now a
|
||
|
helper class with a .start method that returns a Deferred.
|
||
|
SlaveShellCommand is the form reached by the buildmaster. Commands
|
||
|
which use multiple ShellCommands can just chain them as Deferreds,
|
||
|
with some helper methods in Command (_abandonOnFailure and
|
||
|
_checkAbandoned) to bail on rc!=0.
|
||
|
(CVSCommand): prefer new mode= argument
|
||
|
(SVNFetch): add mode= argument
|
||
|
|
||
|
* buildbot/master.py (DebugPerspective.perspective_forceBuild):
|
||
|
put a useful reason string on the build
|
||
|
|
||
|
* buildbot/status/builder.py (LogFile): do LogFile right: move the
|
||
|
core functionality into an IStatusLog object
|
||
|
(BuildStatus.sendETAUpdate): don't send empty build-eta messages
|
||
|
* buildbot/status/html.py (TextLog): HTML-rendering goes here
|
||
|
(StatusResourceBuild.body): use proper accessor methods
|
||
|
* buildbot/status/client.py (RemoteLog): PB-access goes here
|
||
|
(StatusClientPerspective.perspective_subscribe): add "full" mode,
|
||
|
which delivers log contents too
|
||
|
(PBListener.__cmp__): make PBListeners comparable, thus removeable
|
||
|
* buildbot/status/event.py: remove old Logfile completely
|
||
|
|
||
|
* buildbot/interfaces.py (IStatusLog.subscribe): make the
|
||
|
subscription interface for IStatusLog subscriptions just like all
|
||
|
other the status subscriptions
|
||
|
(IStatusReceiver.logChunk): method called on subscribers
|
||
|
|
||
|
2004-08-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/builder.py (Builder._pong): oops, ping response
|
||
|
includes a result (the implicit None returned by remote_print).
|
||
|
Accept it so the _pong method handles the response correctly.
|
||
|
|
||
|
2004-08-06 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_config.py: update IRC, PBListener tests
|
||
|
|
||
|
* buildbot/status/client.py (StatusClientPerspective): total
|
||
|
rewrite to match new IStatus interfaces. New subscription scheme.
|
||
|
There are still a few optimizations to make (sending down extra
|
||
|
information with event messages so the client doesn't have to do a
|
||
|
round trip). The logfile-retrieval code is probably still broken.
|
||
|
Moved the PB service into its own port, you can no longer share a
|
||
|
TCP socket between a PBListener and, say, the slaveport (this
|
||
|
should be fixed eventually).
|
||
|
* buildbot/clients/base.py (Client): revamp to match. still needs
|
||
|
a lot of work, but basic event reporting works fine. gtkPanes is
|
||
|
completely broken.
|
||
|
|
||
|
* buildbot/status/words.py (IRC): move to c['status']. Each IRC
|
||
|
instance talks to a single irc server. Threw out all the old
|
||
|
multi-server handling code. Still need to add back in
|
||
|
builder-control (i.e. "force build")
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceBuildStep.body): add some
|
||
|
more random text to the as-yet-unreachable per-step page
|
||
|
|
||
|
* buildbot/status/builder.py (BuildStepStatus.sendETAUpdate):
|
||
|
rename to stepETAUpdate
|
||
|
(BuildStatus.subscribe): add build-wide ETA updates
|
||
|
(BuilderStatus.getState): remove more cruft
|
||
|
(BuilderStatus.getCurrentBuild): remove more cruft
|
||
|
(BuilderStatus.buildStarted): really handle tuple-subscription
|
||
|
* buildbot/test/test_run.py (Status.testSlave): handle the
|
||
|
stepETAUpdate rename
|
||
|
|
||
|
* buildbot/master.py (BuildMaster): don't add a default
|
||
|
StatusClientService. Don't add a default IrcStatusFactory. Both
|
||
|
are now added through c['status'] in the config file. c['irc'] is
|
||
|
accepted for backwards compatibility, the only quirk is you cannot
|
||
|
use c['irc'] to specify IRC servers on ports other than 6667.
|
||
|
|
||
|
* buildbot/interfaces.py (IBuildStatus.getCurrentStep): add method
|
||
|
(IStatusReceiver.buildStarted): allow update-interval on subscribe
|
||
|
(IStatusReceiver.buildETAUpdate): send build-wide ETA updates
|
||
|
(IStatusReceiver.stepETAUpdate): rename since it's step-specific
|
||
|
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.startService): SIGHUP now causes
|
||
|
the buildmaster to re-read its config file
|
||
|
|
||
|
|
||
|
* buildbot/test/test_web.py (test_webPortnum): need a new hack to
|
||
|
find out the port our server is running on
|
||
|
(WebTest.test_webPathname_port): same
|
||
|
|
||
|
* buildbot/test/test_config.py (testWebPortnum): test it
|
||
|
(testWebPathname): ditto
|
||
|
|
||
|
* docs/config.xhtml: document new c['status'] configuration option
|
||
|
|
||
|
* buildbot/status/html.py (Waterfall): new top-level class which
|
||
|
can be added to c['status']. This creates the Site as well as the
|
||
|
necessary TCPServer/UNIXServer. It goes through the BuildMaster,
|
||
|
reachable as .parent, for everything.
|
||
|
|
||
|
* buildbot/master.py (Manhole): make it a normal service Child
|
||
|
(BuildMaster.loadConfig_status): c['status'] replaces webPortnum and
|
||
|
webPathname. It will eventually replace c['irc'] and the implicit
|
||
|
PB listener as well. c['webPortnum'] and c['webPathname'] are left
|
||
|
in as (deprecated) backward compatibility hooks for now.
|
||
|
|
||
|
|
||
|
* buildbot/process/builder.py (Builder.buildFinished): don't
|
||
|
inform out builder_status about a finished build, as it finds out
|
||
|
through its child BuildStatus object
|
||
|
|
||
|
* buildbot/status/html.py: extensive revamp. Use adapters to make
|
||
|
Boxes out of BuildStepStatus and friends. Acknowledge that Steps
|
||
|
have both starting and finishing times and adjust the waterfall
|
||
|
display accordingly, using spacers if necessary. Use SlaveStatus
|
||
|
to get buildslave info.
|
||
|
(StatusResourceBuildStep): new just-one-step resource, used to get
|
||
|
logfiles. No actual href to it yet.
|
||
|
|
||
|
* buildbot/status/event.py (Logfile.doSwap): disable Swappable for
|
||
|
the time being, until I get the file-naming scheme right
|
||
|
|
||
|
* buildbot/status/builder.py (Event): clean started/finished names
|
||
|
(BuildStatus.isFinished): .finished is not None is the right test
|
||
|
(BuildStatus.buildStarted): track started/finished times ourselves
|
||
|
(BuilderStatus.getSlave): provide access to SlaveStatus object
|
||
|
(BuilderStatus.getLastFinishedBuild): all builds are now in
|
||
|
.builds, even the currently-running one. Accomodate this change.
|
||
|
(BuilderStatus.eventGenerator): new per-builder event generator.
|
||
|
Returns BuildStepStatus and BuildStatus objects, since they can
|
||
|
both be adapted as necessary.
|
||
|
(BuilderStatus.addEvent): clean up started/finished attributes
|
||
|
(BuilderStatus.startBuild,finishBuild): remove dead code
|
||
|
(SlaveStatus): new object to provide ISlaveStatus
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommand.getColor): actually
|
||
|
return the color instead of setting it ourselves
|
||
|
(CVS.__init__): pull .timeout and .workdir options out of
|
||
|
**kwargs, since BuildStep will ignore them. Without this neither
|
||
|
will be sent to the slave correctly.
|
||
|
(SVN.__init__): same
|
||
|
|
||
|
* buildbot/process/builder.py (Builder): move flags to class-level
|
||
|
attributes
|
||
|
(Builder.attached): remove .remoteInfo, let the BotPerspective and
|
||
|
SlaveStatus handle that
|
||
|
|
||
|
* buildbot/process/base.py (Build.firstEvent): remove dead code
|
||
|
(Build.stopBuild): bugfix
|
||
|
|
||
|
* buildbot/changes/pb.py (PBChangeSource.describe): add method
|
||
|
|
||
|
* buildbot/changes/changes.py (Change): add IStatusEvent methods
|
||
|
(ChangeMaster.eventGenerator): yield Changes, since there are now
|
||
|
Adapters to turn them into HTML boxes
|
||
|
|
||
|
* buildbot/master.py (BotMaster): track SlaveStatus from BotMaster
|
||
|
(BotPerspective.attached): feed a SlaveStatus object
|
||
|
(BuildMaster.loadConfig): add a manhole port (debug over telnet)
|
||
|
(BuildMaster.loadConfig_Builders): give BuilderStatus a parent
|
||
|
|
||
|
* buildbot/interfaces.py: API additions
|
||
|
(ISlaveStatus): place to get slave status
|
||
|
|
||
|
2004-08-04 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slavecommand.py (DummyCommand.finished): send rc=0 when
|
||
|
the delay finishes, so the step is marked as SUCCESS
|
||
|
|
||
|
* buildbot/test/test_run.py (Status.testSlave): cover more of
|
||
|
IBuildStatus and IBuildStepStatus
|
||
|
|
||
|
* buildbot/status/progress.py (StepProgress): move some flags to
|
||
|
class-level attributes
|
||
|
(StepProgress.remaining): if there are no other progress metrics
|
||
|
to go by, fall back to elapsed time
|
||
|
(StepProgress.setExpectations): take a dict of metrics instead of
|
||
|
a list
|
||
|
(BuildProgress.setExpectationsFrom): pull expectations from the
|
||
|
Expectations, instead of having it push them to the BuildProgress
|
||
|
(Expectations): move some flags to class-level attributes
|
||
|
(Expectations.__init__): copy per-step times from the
|
||
|
BuildProgress too
|
||
|
(Expectations.expectedBuildTime): new method for per-build ETA
|
||
|
|
||
|
* buildbot/status/event.py (Logfile): move some flags to
|
||
|
class-level attributes
|
||
|
(Logfile.logProgressTo): better method name, let step set the
|
||
|
progress axis name (instead of always being "output")
|
||
|
|
||
|
* buildbot/status/builder.py (BuildStepStatus.getTimes): track the
|
||
|
times directly, rather than depending upon the (possibly missing)
|
||
|
.progress object. Use 'None' to indicate "not started/finished
|
||
|
yet"
|
||
|
(BuildStepStatus.getExpectations): oops, return the full list of
|
||
|
expectations
|
||
|
(BuilderStatus._buildFinished): append finished builds to .builds
|
||
|
|
||
|
* buildbot/process/step.py (BuildStep): add separate .useProgress
|
||
|
flag, since empty .progressMetrics[] still implies that time is a
|
||
|
useful predictor
|
||
|
(CVS): set up the cmd in __init__, instead of waiting for start()
|
||
|
|
||
|
* buildbot/process/base.py (Build.startBuild): disable the 'when'
|
||
|
calculation, this will eventually turn into a proper sourceStamp
|
||
|
(Build.setupBuild): tell the Progress to load from the Expectations,
|
||
|
instead of having the Expectations stuff things into the Progress
|
||
|
(Build.buildException): add a build-level errback to make sure the
|
||
|
build's Deferred fires even in case of exceptions
|
||
|
|
||
|
* buildbot/master.py (BotMaster.forceBuild): convey the reason into
|
||
|
the forced build
|
||
|
* buildbot/process/builder.py (Builder.forceBuild): convey the
|
||
|
reason instead of creating a fake Change
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: update to match reality
|
||
|
|
||
|
* buildbot/test/test_config.py, buildbot/test/test_process.py:
|
||
|
* buildbot/test/test_run.py, buildbot/test/test_steps.py:
|
||
|
fix or remove broken/breaking tests
|
||
|
|
||
|
* buildbot/status/event.py (Logfile.__len__): remove evil method
|
||
|
|
||
|
* buildbot/status/builder.py (BuildStepStatus.stepStarted): tolerate
|
||
|
missing .build, for test convenience
|
||
|
|
||
|
* buildbot/process/step_twisted.py: import fixes
|
||
|
|
||
|
* buildbot/process/step.py (BuildStep.failed): exception is FAILURE
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig_Builders): leftover
|
||
|
.statusbag reference
|
||
|
|
||
|
* buildbot/bot.py (BuildSlave.stopService): tear down the TCP
|
||
|
connection at shutdown, and stop it from reconnecting
|
||
|
|
||
|
* buildbot/test/test_run.py (Run.testSlave): use a RemoteDummy to
|
||
|
chase down remote-execution bugs
|
||
|
|
||
|
* buildbot/process/step.py: more fixes, remove
|
||
|
BuildStep.setStatus()
|
||
|
* buildbot/status/builder.py: move setStatus() functionality into
|
||
|
BuildStatus.addStep
|
||
|
* buildbot/status/event.py: minor fixes
|
||
|
|
||
|
2004-08-03 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/base.py, buildbot/process/builder.py
|
||
|
* buildbot/process/step.py, buildbot/status/builder.py
|
||
|
* buildbot/status/event.py, buildbot/test/test_run.py:
|
||
|
fix status delivery, get a basic test case working
|
||
|
* buildbot/master.py: finish implementing basic status delivery,
|
||
|
temporarily disable HTML/IRC/PB status sources
|
||
|
|
||
|
* buildbot/bot.py (Bot.remote_setBuilderList): remove debug noise
|
||
|
|
||
|
* buildbot/status/progress.py (BuildProgress): remove dead code
|
||
|
|
||
|
* buildbot/interfaces.py
|
||
|
* buildbot/process/base.py, buildbot/process/builder.py
|
||
|
* buildbot/process/step.py, buildbot/process/step_twisted.py
|
||
|
* buildbot/status/builder.py: Complete overhaul of the all
|
||
|
status-delivery code, unifying all types of status clients (HTML,
|
||
|
IRC, PB). See interfaces.IBuildStatus for an idea of what it will
|
||
|
look like. This commit is a checkpointing of the work-in-progress:
|
||
|
the input side is mostly done (Builders/Builds sending status
|
||
|
to the BuilderStatus/BuildStatus objects), but the output side has
|
||
|
not yet been started (HTML resources querying BuilderStatus
|
||
|
objects). Things are probably very broken right now and may remain
|
||
|
so for several weeks, I apologize for the disruption.
|
||
|
|
||
|
* buildbot/status/event.py: add a setHTML method to use pre-rendered
|
||
|
HTML as the log's contents. Currently used for exception tracebacks.
|
||
|
* buildbot/status/progress.py: minor spelling changes
|
||
|
|
||
|
2004-08-02 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/config.xhtml: XHTML fixes, makes raw .xhtml files viewable
|
||
|
in mozilla. Also added stylesheets copied from Twisted's docs.
|
||
|
Remember that these files are meant to be run through Lore first.
|
||
|
Thanks to Philipp Frauenfelder for the fixes.
|
||
|
* docs/factories.xhtml, docs/sources.xhtml, docs/steps.xhtml: same
|
||
|
* docs/stylesheet-unprocessed.css, docs/stylesheet.css: same
|
||
|
* docs/template.tpl: added a Lore template
|
||
|
|
||
|
2004-07-29 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/interfaces.py: revamp status delivery. This is the
|
||
|
preview: these are the Interfaces that will be provided by new
|
||
|
Builder code, and to which the current HTML/IRC/PB status
|
||
|
displayers will be adapted.
|
||
|
|
||
|
* buildbot/slavecommand.py (ShellCommand.start): look for .usePTY
|
||
|
on the SlaveBuilder, not the Bot.
|
||
|
* buildbot/bot.py (Bot.remote_setBuilderList): copy Bot.usePTY to
|
||
|
SlaveBuilder.usePTY
|
||
|
* buildbot/test/test_slavecommand.py (FakeSlaveBuilder.usePTY):
|
||
|
set .usePTY on the FakeSlaveBuilder
|
||
|
|
||
|
2004-07-25 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/changes/freshcvs.py: add some debug log messages
|
||
|
(FreshCVSConnectionFactory.gotPerspective): pre-emptively fix the
|
||
|
disabled 'setFilter' syntax
|
||
|
(FreshCVSSourceNewcred.__init__): warn about prefix= values that
|
||
|
don't end with a slash
|
||
|
|
||
|
* buildbot/process/base.py (Builder._pong_failed): add TODO note
|
||
|
|
||
|
* setup.py: bump to 0.5.0+ while between releases
|
||
|
|
||
|
2004-07-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py (version): Releasing buildbot-0.5.0
|
||
|
|
||
|
2004-07-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* README: update for 0.5.0 release
|
||
|
|
||
|
* NEWS: update for 0.5.0 release
|
||
|
|
||
|
2004-07-22 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slavecommand.py (ShellCommand): make usePTY a
|
||
|
mktap-time configuration flag (--usepty=1, --usepty=0)
|
||
|
* buildbot/bot.py: same
|
||
|
|
||
|
* buildbot/master.py (BotPerspective.got_dirs): don't complain about
|
||
|
an 'info' directory being unwanted
|
||
|
|
||
|
* buildbot/changes/freshcvs.py (FreshCVSSource): flip the
|
||
|
newcred/oldcred switch. Newcred (for CVSToys-1.0.10 and later) is now
|
||
|
the default. To communicate with an oldcred daemond (CVSToys-1.0.9
|
||
|
and earlier), use a FreshCVSSourceOldcred instead.
|
||
|
(test): simple test routine: connect to server, print changes
|
||
|
|
||
|
* buildbot/changes/changes.py (Change.getTime): make it possible
|
||
|
to print un-timestamped changes
|
||
|
|
||
|
* buildbot/master.py (makeApp): delete ancient dead code
|
||
|
(BuildMaster.loadTheConfigFile): make "master.cfg" name configurable
|
||
|
* buildbot/test/test_config.py (testFindConfigFile): test it
|
||
|
|
||
|
* docs/examples/twisted_master.cfg (b22w32): use iocp reactor
|
||
|
instead of win32 one
|
||
|
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig_Builders): config file
|
||
|
now takes a dictionary instead of a tuple. See docs/config.xhtml for
|
||
|
details.
|
||
|
|
||
|
* buildbot/process/base.py (Builder.__init__): change constructor
|
||
|
to accept a dictionary of config data, rather than discrete
|
||
|
name/slave/builddir/factory arguments
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: update to new syntax
|
||
|
* docs/examples/glib_master.cfg: same
|
||
|
* buildbot/test/test_config.py (ConfigTest.testBuilders): some
|
||
|
rough tests of the new syntax
|
||
|
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): allow webPathname
|
||
|
to be an int, which means "run a web.distrib sub-server on a TCP
|
||
|
port". This lets you publish the buildbot status page to a remote
|
||
|
twisted.web server (using distrib.ResourceSubscription). Also
|
||
|
rename the local attributes used to hold these web things so
|
||
|
they're more in touch with reality.
|
||
|
* buildbot/test/test_web.py: test webPortnum and webPathname
|
||
|
* docs/config.xhtml: document this new use of webPathname
|
||
|
|
||
|
* docs/config.xhtml: new document, slightly ahead of reality
|
||
|
|
||
|
* buildbot/changes/freshcvs.py (FreshCVSSourceNewcred.notify): fix
|
||
|
'prefix' handling: treat it as a simple string to check with
|
||
|
.startswith, instead of treating it as a directory. This allows
|
||
|
sub-directories to be used. If you use prefix=, you should give it
|
||
|
a string that starts just below the CVSROOT and ends with a slash.
|
||
|
This prefix will be stripped from all filenames, and filenames
|
||
|
which do not start with it will be ignored.
|
||
|
|
||
|
2004-07-20 Cory Dodt <corydodt@twistedmatrix.com>
|
||
|
|
||
|
* contrib/svn_buildbot.py: Add --include (synonym for --filter)
|
||
|
and --exclude (inverse of --include). SVN post-commit hooks
|
||
|
now have total control over which changes get sent to buildbot and which
|
||
|
do not.
|
||
|
|
||
|
2004-07-10 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/test/test_twisted.py (Case1.testCountFailedTests): fix
|
||
|
test case to match new API
|
||
|
|
||
|
* buildbot/status/event.py (Logfile.getEntries): fix silly bug
|
||
|
which crashed HTML display when self.entries=[] (needed to
|
||
|
distinguish between [], which means "no entries yet", and None,
|
||
|
which means "the entries have been swapped out to disk, go fetch
|
||
|
them").
|
||
|
|
||
|
2004-07-04 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (countFailedTests): Count
|
||
|
skips, expectedFailures, and unexpectedSuccesses. Start scanning
|
||
|
10kb from the end because any import errors are wedged there and
|
||
|
they would make us think the test log was unparseable.
|
||
|
(RunUnitTests.finishStatus): add skip/todo counts to the event box
|
||
|
|
||
|
2004-06-26 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (RemovePYCs): turn the
|
||
|
delete-*.pyc command into an actual BuildStep, so we can label it
|
||
|
nicely
|
||
|
* buildbot/process/process_twisted.py (QuickTwistedBuildFactory):
|
||
|
(FullTwistedBuildFactory): same
|
||
|
|
||
|
2004-06-25 Cory Dodt <corydodt@twistedmatrix.com>
|
||
|
|
||
|
* contrib/fakechange.py: Add an errback when sending the fake
|
||
|
change, so we know it didn't work.
|
||
|
|
||
|
2004-06-25 Christopher Armstrong <radix@twistedmatrix.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py: Delete *.pyc files before
|
||
|
calling trial, so it doesn't catch any old .pyc files whose .py
|
||
|
files have been moved or deleted.
|
||
|
|
||
|
* buildbot/process/step_twisted.py (RunUnitTests): 1) Add a new
|
||
|
parameter, 'recurse', that passes -R to trial. 2) have 'runAll'
|
||
|
imply 'recurse'. 3) Make the default 'allTests' be ["twisted"]
|
||
|
instead of ["twisted.test"], so that the end result is "trial -R
|
||
|
twisted".
|
||
|
|
||
|
* contrib/svn_buildbot.py: Add a --filter parameter that accepts a
|
||
|
regular expression to match filenames that should be ignored when
|
||
|
changed. Also add a --revision parameter that specifies the
|
||
|
revision to examine, which is useful for debugging.
|
||
|
|
||
|
2004-06-25 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (trialTextSummarizer): create a
|
||
|
summary of warnings (like DeprecationWarnings), next to the
|
||
|
"summary" file
|
||
|
|
||
|
2004-05-13 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: enable the win32 builder, as
|
||
|
we now have a w32 build slave courtesy of Mike Taylor.
|
||
|
|
||
|
* buildbot/process/base.py (Build.checkInterlocks): OMG this was
|
||
|
so broken. Fixed a race condition that tripped up interlocked
|
||
|
builds and caused the status to be stuck at "Interlocked" forever.
|
||
|
The twisted buildbot's one interlocked build just so happened to
|
||
|
never hit this case until recently (the feeding builds both pass
|
||
|
before the interlocked build is attempted.. usually it has to wait
|
||
|
a while).
|
||
|
(Builder._pong_failed): fix method signature
|
||
|
|
||
|
* setup.py: bump to 0.4.3+ while between releases
|
||
|
|
||
|
2004-04-30 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py (version): Releasing buildbot-0.4.3
|
||
|
|
||
|
2004-04-30 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* MANIFEST.in: add the doc fragments in docs/*.xhtml
|
||
|
|
||
|
* README: update for 0.4.3 release
|
||
|
|
||
|
* NEWS: update for 0.4.3 release
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.__getstate__): make sure
|
||
|
Versioned.__getstate__ is invoked, for upgrade from 0.4.2
|
||
|
|
||
|
* buildbot/process/step_twisted.py (RunUnitTests.trial): add
|
||
|
.trial as a class attribute, for upgrade from 0.4.2
|
||
|
|
||
|
* buildbot/changes/changes.py (Change.links): add .links for
|
||
|
upgrade from 0.4.2
|
||
|
|
||
|
* buildbot/status/event.py (Logfile.__getstate__): get rid of both
|
||
|
.textWatchers and .htmlWatchers at save time, since they are both
|
||
|
volatile, should allow smooth 0.4.2 upgrade
|
||
|
|
||
|
* buildbot/process/step.py (CVS.finishStatus): catch failed
|
||
|
CVS/SVN commands so we can make the status box red
|
||
|
|
||
|
2004-04-29 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/changes/freshcvs.py
|
||
|
(FreshCVSConnectionFactory.gotPerspective): add (commented-out)
|
||
|
code to do setFilter(), which tells the freshcvs daemon to not
|
||
|
send us stuff that we're not interested in. I will uncomment it
|
||
|
when a new version of CVSToys is available in which setFilter()
|
||
|
actually works, and I get a chance to test it better.
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: start using a PBChangeSource
|
||
|
|
||
|
* buildbot/master.py (Dispatcher): use a registration scheme
|
||
|
instead of hardwired service names
|
||
|
(BuildMaster): keep track of the Dispatcher to support
|
||
|
registration
|
||
|
|
||
|
* buildbot/changes/changes.py (ChangeMaster): create a distinct
|
||
|
PBChangeSource class instead of having it be an undocumented
|
||
|
internal feature of the ChangeMaster. Split out the code into a
|
||
|
new file.
|
||
|
* buildbot/changes/pb.py (PBChangeSource): same
|
||
|
* buildbot/test/test_changes.py: a few tests for PBChangeSource
|
||
|
|
||
|
* docs/{factories|sources|steps}.xhtml: document some pieces
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: use SVN instead of CVS, stop
|
||
|
using FCMaildirSource
|
||
|
(f23osx): update OS-X builder to use python2.3, since the slave
|
||
|
was updated to Panther (10.3.3)
|
||
|
|
||
|
2004-03-21 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/process_twisted.py: factor out doCheckout, change
|
||
|
to use SVN instead of CVS
|
||
|
|
||
|
* buildbot/process/base.py (BasicBuildFactory): refactor to make
|
||
|
an SVN subclass easier
|
||
|
(BasicSVN): subclass which uses Subversion instead of CVS
|
||
|
|
||
|
2004-03-15 Christopher Armstrong <radix@twistedmatrix.com>
|
||
|
|
||
|
* buildbot/slavecommand.py (ShellCommand.start): use COMSPEC instead
|
||
|
of /bin/sh on win32
|
||
|
(CVSCommand.cvsComplete): don't assume chdir worked on win32
|
||
|
|
||
|
2004-02-25 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slavecommand.py (ShellCommand): ['commands'] argument
|
||
|
is now either a list (which is passed to spawnProcess directly) or
|
||
|
a string (which gets passed to /bin/sh -c). This removes the useSH
|
||
|
flag and the ArgslistCommand class. Also send status header at the
|
||
|
start and end of each command, instead of having the master-side
|
||
|
code do that.
|
||
|
(CVSCommand): fix the doUpdate command, it failed to do the 'cp
|
||
|
-r'. Update to use list-based arguments.
|
||
|
(SVNFetch): use list-based arguments, use ['dir'] argument to
|
||
|
simplify code.
|
||
|
* buildbot/test/test_steps.py (Commands): match changes
|
||
|
|
||
|
* buildbot/process/step.py (InternalShellCommand.words): handle
|
||
|
command lists
|
||
|
(SVN): inherit from CVS, cleanup
|
||
|
|
||
|
* buildbot/status/event.py (Logfile.content): render in HTML, with
|
||
|
stderr in red and headers (like the name of the command we're
|
||
|
about to run) in blue. Add link to a second URL (url + "?text=1")
|
||
|
to get just stdout/stderr in text/plain without markup. There is
|
||
|
still a problem with .entries=None causing a crash, it seems to occur
|
||
|
when the logfile is read before it is finished.
|
||
|
|
||
|
* buildbot/bot.py (BotFactory.doKeepalive): add a 30-second
|
||
|
timeout to the keepalives, and use it to explicitly do a
|
||
|
loseConnection instead of waiting for TCP to notice the loss. This
|
||
|
ought to clear up the silent-lossage problem.
|
||
|
(unsafeTracebacks): pass exception tracebacks back to the master,
|
||
|
makes it much easier to debug problems
|
||
|
|
||
|
2004-02-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slavecommand.py (ShellCommand): add useSH flag to pass
|
||
|
the whole command to /bin/sh instead of execve [Johan Dahlin]
|
||
|
(CVSCommand): drop '-r BRANCH' if BRANCH==None instead of usiing
|
||
|
'-r HEAD' [Johan Dahlin]
|
||
|
(CVSCommand.start2): fix cvsdir calculation [Johan Dahlin]
|
||
|
|
||
|
* buildbot/changes/changes.py (Change): add links= argument, add
|
||
|
asHTML method [Johan Dahlin]. Modified to make a bit more
|
||
|
XHTMLish. Still not sure how to best use links= .
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceCommits.getChild): use
|
||
|
Change.asHTML to display the change, not asText
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceBuilder): web button to
|
||
|
ping slave
|
||
|
|
||
|
* buildbot/test/test_run.py: test to actually start a buildmaster
|
||
|
and poke at it
|
||
|
|
||
|
* MANIFEST.in: bring back accidentally-dropped test helper files
|
||
|
|
||
|
* buildbot/test/test_config.py (ConfigTest.testSources): skip tests
|
||
|
that require cvstoys if it is not installed
|
||
|
|
||
|
* buildbot/process/step_twisted.py (RunUnitTests): allow other
|
||
|
values of "bin/trial" [Dave Peticolas]
|
||
|
(RunUnitTests.finishStatus): say "no tests run" instead of "0
|
||
|
tests passed" when we didn't happen to run any tests
|
||
|
|
||
|
* buildbot/process/step.py (Compile): use haltOnFailure instead of
|
||
|
flunkOnFailure [Johan Dahlin]
|
||
|
|
||
|
* buildbot/process/base.py (ConfigurableBuild.setSteps): allow
|
||
|
multiple instances of the same Step class by suffixing "_2", etc,
|
||
|
to the name until it is unique. This name needs to be unique
|
||
|
because it is used as a key in the dictionary that tracks build
|
||
|
progress.
|
||
|
* buildbot/test/test_steps.py (Steps.testMultipleStepInstances):
|
||
|
add test for it
|
||
|
|
||
|
* buildbot/process/base.py (Builder.ping): add "ping slave" command
|
||
|
|
||
|
2004-01-14 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot): when we leave or get
|
||
|
kicked from a channel, log it
|
||
|
|
||
|
* buildbot/master.py (Dispatcher): add "poke IRC" command to say
|
||
|
something over whatever IRC channels the buildmaster is currently
|
||
|
connected to. Added to try and track down a problem in which the
|
||
|
master thinks it is still connected but the IRCd doesn't see it. I
|
||
|
used a styles.Versioned this time, so hopefully users won't have
|
||
|
to rebuild their .tap files this time.
|
||
|
* contrib/debug.glade: add a "Poke IRC" button
|
||
|
* contrib/debugclient.py: same
|
||
|
|
||
|
* setup.py: bump to 0.4.2+ while between releases
|
||
|
|
||
|
2004-01-08 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py (version): Releasing buildbot-0.4.2
|
||
|
|
||
|
2004-01-08 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: update for 0.4.2 release
|
||
|
|
||
|
* README: document how to run the tests, now that they all pass
|
||
|
|
||
|
* buildbot/changes/maildir.py (Maildir.poll): minor comment
|
||
|
|
||
|
* buildbot/process/step.py (CVS): add a global_options= argument,
|
||
|
which lets you set CVS global options for the command like "-r"
|
||
|
for read-only checkout, or "-R" to avoid writing in the
|
||
|
repository.
|
||
|
* buildbot/slavecommand.py (CVSCommand): same
|
||
|
|
||
|
* buildbot/status/event.py (Logfile): add a .doSwap switch to make
|
||
|
testing easier (it is turned off when testing, to avoid the
|
||
|
leftover timer)
|
||
|
|
||
|
* buildbot/process/step.py (InternalBuildStep): shuffle code a bit
|
||
|
to make it easier to test: break generateStepID() out to a
|
||
|
separate function, only update statusbag if it exists.
|
||
|
(ShellCommands): create useful text for dict-based commands too.
|
||
|
|
||
|
* test/*, buildbot/test/*: move unit tests under the buildbot/
|
||
|
directory
|
||
|
* setup.py (packages): install buildbot.test too
|
||
|
|
||
|
* buildbot/test/test_slavecommand.py: fix it, tests pass now
|
||
|
* buildbot/test/test_steps.py: fix it, tests pass now
|
||
|
|
||
|
2004-01-06 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/changes/mail.py (parseFreshCVSMail): looks like new
|
||
|
freshcvs mail uses a slightly different syntax for new
|
||
|
directories. Update parser to handle either.
|
||
|
* test/test_mailparse.py (Test1.testMsg9): test for same
|
||
|
|
||
|
2003-12-21 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/process_twisted.py (TwistedDebsBuildFactory): set
|
||
|
'warnOnWarnings' so that lintian errors mark the build orange
|
||
|
|
||
|
2003-12-17 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/changes/mail.py (parseBonsaiMail): parser for commit
|
||
|
messages emitted by Bonsai, contributed by Stephen Davis.
|
||
|
|
||
|
* test/*: moved all tests to use trial instead of unittest. Some
|
||
|
still fail (test_steps, test_slavecommand, and test_process).
|
||
|
|
||
|
* setup.py (version): bump to 0.4.1+ while between releases
|
||
|
|
||
|
2003-12-09 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py (version): Releasing buildbot-0.4.1
|
||
|
|
||
|
2003-12-09 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: update for 0.4.1 release
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: add netbsd builder, shuffle
|
||
|
freebsd builder code a little bit
|
||
|
|
||
|
* buildbot/changes/freshcvs.py (FreshCVSSourceNewcred.__cmp__):
|
||
|
don't try to compare attributes of different classes
|
||
|
* buildbot/changes/mail.py (MaildirSource.__cmp__): same
|
||
|
(MaildirSource.messageReceived): fix Change delivery
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): insert 'basedir'
|
||
|
into the config file's namespace before loading it, like the
|
||
|
documentation claims it does
|
||
|
* docs/examples/twisted_master.cfg: remove explicit 'basedir'
|
||
|
(useFreshCVS): switch to using a maildir until Twisted's freshcvs
|
||
|
daemon comes back online
|
||
|
|
||
|
2003-12-08 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: provide an explicit 'basedir'
|
||
|
so the example will work with online=0 as well
|
||
|
|
||
|
* buildbot/changes/mail.py (FCMaildirSource, SyncmailMaildirSource):
|
||
|
fix the __implements__ line
|
||
|
|
||
|
* buildbot/changes/maildirtwisted.py (MaildirTwisted): make this
|
||
|
class a twisted.application.service.Service, use startService to
|
||
|
get it moving.
|
||
|
|
||
|
* buildbot/changes/dnotify.py (DNotify): use os.open to get the
|
||
|
directory fd instead of simple open(). I'm sure this used to work,
|
||
|
but the current version of python refuses to open directories with
|
||
|
open().
|
||
|
|
||
|
2003-12-05 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py (version): bump to 0.4.0+ while between releases
|
||
|
|
||
|
2003-12-05 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py (version): Releasing buildbot-0.4.0
|
||
|
|
||
|
2003-12-05 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/glib_master.cfg: replace old sample scripts with
|
||
|
new-style config files
|
||
|
* MANIFEST.in: include .cfg files in distribution tarball
|
||
|
|
||
|
* buildbot/changes/freshcvs.py (FreshCVSListener.remote_goodbye):
|
||
|
implement a dummy method to avoid the exception that occurs when
|
||
|
freshcvs sends this to us.
|
||
|
|
||
|
* buildbot/pbutil.py (ReconnectingPBClientFactory.stopFactory):
|
||
|
removed the method, as it broke reconnection. Apparently
|
||
|
stopFactory is called each time the connection attempt fails. Must
|
||
|
rethink this.
|
||
|
(ReconnectingPBClientFactory.__getstate__): squash the _callID
|
||
|
attribute before serialization, since without stopFactory the
|
||
|
reconnect timer may still be active and they aren't serializable.
|
||
|
|
||
|
* test/test_mailparse.py (ParseTest): test with 'self' argument
|
||
|
|
||
|
* buildbot/changes/mail.py (parseFreshCVSMail): add (silly) 'self'
|
||
|
argument, as these "functions" are invoked like methods from class
|
||
|
attributes and therefore always get an instance as the first
|
||
|
argument.
|
||
|
|
||
|
* buildbot/changes/maildir.py (Maildir.start): fix error in error
|
||
|
message: thanks to Stephen Davis for the catch
|
||
|
|
||
|
2003-12-04 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/pbutil.py: complete rewrite using PBClientFactory and
|
||
|
twisted's standard ReconnectingClientFactory. Handles both oldcred
|
||
|
and newcred connections. Also has a bug-workaround for
|
||
|
ReconnectingClientFactory serializing its connector when it
|
||
|
shouldn't.
|
||
|
|
||
|
* buildbot/bot.py (BotFactory): rewrite connection layer with new
|
||
|
pbutil. Replace makeApp stuff with proper newcred/mktap
|
||
|
makeService(). Don't serialize Ephemerals on shutdown.
|
||
|
|
||
|
* buildbot/changes/changes.py (ChangeMaster): make it a
|
||
|
MultiService and add the sources as children, to get startService
|
||
|
and stopService for free. This also gets rid of the .running flag.
|
||
|
|
||
|
* buildbot/changes/freshcvs.py (FreshCVSSource): rewrite to use
|
||
|
new pbutil, turn into a TCPClient at the same time (to get
|
||
|
startService for free). Two variants exist: FreshCVSSourceOldcred
|
||
|
and FreshCVSSourceNewcred (CVSToys doesn't actualy support newcred
|
||
|
yet, but when it does, we'll be ready).
|
||
|
(FreshCVSSource.notify): handle paths which are empty after the
|
||
|
prefix is stripped. This only happens when the top-level (prefix)
|
||
|
directory is added, at the very beginning of a Repository's life.
|
||
|
|
||
|
* buildbot/clients/base.py: use new pbutil, clean up startup code.
|
||
|
Now the only reconnecting code is in the factory where it belongs.
|
||
|
(Builder.unsubscribe): unregister the disconnect callback when we
|
||
|
delete the builder on command from the master (i.e. when the
|
||
|
buildmaster is reconfigured and that builder goes away). This
|
||
|
fixes a multiple-delete exception when the status client is shut
|
||
|
down afterwards.
|
||
|
* buildbot/clients/gtkPanes.py (GtkClient): cleanup, match the
|
||
|
base Client.
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot): add some more sillyness
|
||
|
(IrcStatusBot.getBuilderStatus): fix minor exception in error message
|
||
|
|
||
|
2003-10-20 Christopher Armstrong <radix@twistedmatrix.com>
|
||
|
|
||
|
* contrib/run_maxq.py: Accept a testdir as an argument rather than
|
||
|
a list of globs (ugh). The testdir will be searched for files
|
||
|
named *.tests and run the tests in the order specified in each of
|
||
|
those files. This allows for "dependancies" between tests to be
|
||
|
codified.
|
||
|
|
||
|
* buildbot/process/maxq.py (MaxQ.__init__): Accept a testdir
|
||
|
argument to pass to run_maxq.py, instead of a glob.
|
||
|
|
||
|
2003-10-17 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (HLint.start): ignore .xhtml
|
||
|
files that live in the sandbox
|
||
|
|
||
|
2003-10-15 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (ProcessDocs.finished): fix
|
||
|
spelling error in "docs" count-warnings output
|
||
|
(HLint.start): stupid thinko meant .xhtml files were ignored
|
||
|
|
||
|
* docs/examples/twisted_master.cfg (reactors): disable cReactor
|
||
|
tests now that cReactor is banished to the sandbox
|
||
|
|
||
|
2003-10-10 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (ProcessDocs, HLint): new Twisted
|
||
|
scheme: now .xhtml are sources and .html are generated
|
||
|
|
||
|
2003-10-08 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (RunUnitTests.__init__): oops,
|
||
|
we were ignoring the 'randomly' parameter.
|
||
|
|
||
|
2003-10-01 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slavecommand.py (ShellCommand.start): set usePTY=1 on
|
||
|
posix, to kill sub-children of aborted slavecommands.
|
||
|
|
||
|
* buildbot/status/builder.py: rename Builder to BuilderStatus.
|
||
|
Clean up initialization: lastBuildStatus remains None until the
|
||
|
first build has been completed.
|
||
|
|
||
|
* buildbot/status/html.py (WaterfallStatusResource.body): handle
|
||
|
None as a lastBuildStatus
|
||
|
* buildbot/clients/gtkPanes.py: same
|
||
|
|
||
|
* buildbot/status/client.py (StatusClientService): keep
|
||
|
BuilderStatus objects in self.statusbags . These objects now live
|
||
|
here in the StatusClientService and are referenced by the Builder
|
||
|
object, rather than the other way around.
|
||
|
* buildbot/status/words.py (IrcStatusBot.getBuilderStatus): same
|
||
|
* buildbot/process/base.py (Builder): same
|
||
|
* test/test_config.py (ConfigTest.testBuilders): same
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig_Builders): when modifying
|
||
|
an existing builder, leave the statusbag alone. This will preserve the
|
||
|
event history.
|
||
|
|
||
|
* buildbot/pbutil.py (ReconnectingPB.connect): add initial newcred
|
||
|
hook. This will probably go away in favor of a class in upcoming
|
||
|
Twisted versions.
|
||
|
|
||
|
* buildbot/changes/freshcvs.py (FreshCVSSource.start): Remove old
|
||
|
serviceName from newcred FreshCVSNotifiee setup
|
||
|
|
||
|
2003-09-29 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/process_twisted.py: switch to new reactor
|
||
|
abbreviations
|
||
|
* docs/examples/twisted_master.cfg: same
|
||
|
|
||
|
* README (REQUIREMENTS): mention twisted-1.0.8a3 requirement
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.getBuilder): use the
|
||
|
botmaster reference instead of the oldapp service lookup
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.__init__): give the
|
||
|
StatusClientService a reference to the botmaster to make it easier to
|
||
|
force builds
|
||
|
|
||
|
2003-09-24 Christopher Armstrong <radix@twistedmatrix.com>
|
||
|
|
||
|
* buildbot/status/html.py (Box.td): escape hreffy things so you
|
||
|
can have spaces in things like builder names
|
||
|
(StatusResourceBuilder.body)
|
||
|
(WaterfallStatusResource.body)
|
||
|
(WaterfallStatusResource.body0): same
|
||
|
|
||
|
2003-09-25 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig_Builders): don't
|
||
|
rearrange the builder list when adding or removing builders: keep
|
||
|
them in the order the user requested.
|
||
|
* test/test_config.py (ConfigTest.testBuilders): verify it
|
||
|
|
||
|
* contrib/debug.glade: give the debug window a name
|
||
|
|
||
|
* buildbot/process/base.py (Builder.buildTimerFired): builders can
|
||
|
now wait on multiple interlocks. Fix code relating to that.
|
||
|
(Builder.checkInterlocks): same
|
||
|
* buildbot/status/builder.py (Builder.currentlyInterlocked): same
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): move from
|
||
|
deprecated pb.BrokerFactory to new pb.PBServerFactory
|
||
|
* test/test_config.py (ConfigTest.testWebPathname): same
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: fix interlock declaration
|
||
|
|
||
|
* buildbot/master.py (BotMaster.addInterlock): move code to attach
|
||
|
Interlocks to their Builders into interlock.py .
|
||
|
(BuildMaster.loadConfig_Interlocks): fix interlock handling
|
||
|
|
||
|
* test/test_config.py (ConfigTest.testInterlocks): validate
|
||
|
interlock handling
|
||
|
|
||
|
* buildbot/process/base.py (Builder.__init__): better comments
|
||
|
* buildbot/process/interlock.py (Interlock.__repr__): same
|
||
|
(Interlock.deactivate): add .active flag, move the code that
|
||
|
attaches/detaches builders into the Interlock
|
||
|
|
||
|
2003-09-24 Christopher Armstrong <radix@twistedmatrix.com>
|
||
|
|
||
|
* buildbot/process/maxq.py (MaxQ): support for running a set of MaxQ
|
||
|
tests using the new run_maxq.py script, and reporting failures by
|
||
|
parsing its output.
|
||
|
|
||
|
* contrib/run_maxq.py: Hacky little script for running a set of maxq
|
||
|
tests, reporting their success or failure in a buildbot-friendly
|
||
|
manner.
|
||
|
|
||
|
2003-09-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/twisted_master.cfg: example of a new-style config
|
||
|
file. This lives in the buildmaster base directory as
|
||
|
"master.cfg".
|
||
|
|
||
|
* contrib/debugclient.py (DebugWidget.do_rebuild): add 'reload'
|
||
|
button to make the master re-read its config file
|
||
|
|
||
|
* buildbot/master.py (BuildMaster.loadConfig): new code to load
|
||
|
buildmaster configuration from a file. This file can be re-read
|
||
|
later, and the buildmaster will update itself to match the new
|
||
|
desired configuration. Also use new Twisted Application class.
|
||
|
* test/Makefile, test/test_config.py: unit tests for same
|
||
|
|
||
|
* buildbot/changes/freshcvs.py (FreshCVSSource.__cmp__): make
|
||
|
FreshCVSSources comparable, to support reload.
|
||
|
* buildbot/changes/mail.py (MaildirSource.__cmp__): same
|
||
|
|
||
|
* buildbot/process/base.py (Builder): make them comparable, make
|
||
|
Interlocks easier to attach, to support reload. Handle
|
||
|
re-attachment of remote slaves.
|
||
|
* buildbot/process/interlock.py (Interlock): same
|
||
|
|
||
|
* buildbot/bot.py, bb_tap.py, changes/changes.py: move to
|
||
|
Twisted's new Application class. Requires Twisted >= 1.0.8 .
|
||
|
buildmaster taps are now constructed with mktap.
|
||
|
* buildbot/status/client.py (StatusClientService): same
|
||
|
|
||
|
* buildbot/status/words.py: move to new Services, add support to
|
||
|
connect to multiple networks, add reload support, allow nickname
|
||
|
to be configured on a per-network basis
|
||
|
|
||
|
2003-09-20 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/twisted_master.py (twisted_app): use python2.3 for
|
||
|
the freebsd builder, now that the machine has been upgraded and no
|
||
|
longer has python2.2
|
||
|
|
||
|
* setup.py (version): bump to 0.3.5+ while between releases
|
||
|
|
||
|
2003-09-19 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py (version): Releasing buildbot-0.3.5
|
||
|
|
||
|
2003-09-19 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: add post-0.3.4 notes
|
||
|
|
||
|
* README (REQUIREMENTS): note twisted-1.0.7 requirement
|
||
|
|
||
|
* MANIFEST.in: add contrib/*
|
||
|
|
||
|
* docs/examples/twisted_master.py (twisted_app): all build slaves must
|
||
|
use a remote root now: cvs.twistedmatrix.com
|
||
|
|
||
|
* buildbot/changes/freshcvs.py (FreshCVSNotifiee.connect): update
|
||
|
to newcred
|
||
|
(FreshCVSNotifieeOldcred): but retain a class that uses oldcred for
|
||
|
compatibility with old servers
|
||
|
(FreshCVSSource.start): and provide a way to use it
|
||
|
(FreshCVSNotifiee.disconnect): handle unconnected notifiee
|
||
|
|
||
|
* docs/examples/twisted_master.py (twisted_app): update to new
|
||
|
makeApp interface.
|
||
|
(twisted_app): listen on new ~buildbot socket
|
||
|
(twisted_app): Twisted CVS has moved to cvs.twistedmatrix.com
|
||
|
|
||
|
* buildbot/process/process_twisted.py: Use 'copydir' on CVS steps
|
||
|
to reduce cvs bandwidth (update instead of full checkout)
|
||
|
|
||
|
2003-09-11 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* contrib/fakechange.py: demo how to connect to the changemaster
|
||
|
port. You can use this technique to submit changes to the
|
||
|
buildmaster from source control systems that offer a hook to run a
|
||
|
script when changes are committed.
|
||
|
|
||
|
* contrib/debugclient.py: tool to connect to the debug port. You
|
||
|
can use it to force builds, submit fake changes, and wiggle the
|
||
|
builder state
|
||
|
|
||
|
* buildbot/master.py: the Big NewCred Reorganization. Use a single
|
||
|
'Dispatcher' realm to handle all the different kinds of
|
||
|
connections and Perspectives: buildslaves, the changemaster port,
|
||
|
the debug port, and the status client port. NewCredPerspectives
|
||
|
now have .attached/.detached methods called with the remote 'mind'
|
||
|
reference, much like old perspectives did. All the pb.Services
|
||
|
turned into ordinary app.ApplicationServices .
|
||
|
(DebugService): went away, DebugPerspectives are now created
|
||
|
directly by the Dispatcher.
|
||
|
(makeApp): changed interface a little bit
|
||
|
|
||
|
* buildbot/changes/changes.py: newcred
|
||
|
* buildbot/status/client.py: newcred
|
||
|
|
||
|
* buildbot/clients/base.py: newcred client side changes
|
||
|
* buildbot/bot.py: ditto
|
||
|
|
||
|
* docs/examples/glib_master.py: handle new makeApp() interface
|
||
|
* docs/examples/twisted_master.py: ditto
|
||
|
|
||
|
* buildbot/pbutil.py (NewCredPerspective): add a helper class to
|
||
|
base newcred Perspectives on. This should go away once Twisted
|
||
|
itself provides something sensible.
|
||
|
|
||
|
|
||
|
2003-09-11 Christopher Armstrong <radix@twistedmatrix.com>
|
||
|
|
||
|
* contrib/svn_buildbot.py: A program that you can call from your
|
||
|
SVNREPO/hooks/post-commit file that will notify a BuildBot master
|
||
|
when a change in an SVN repository has happened. See the top of
|
||
|
the file for some minimal usage info.
|
||
|
|
||
|
2003-09-10 Christopher Armstrong <radix@twistedmatrix.com>
|
||
|
|
||
|
* buildbot/slavecommand.py (ArglistCommand): Add new
|
||
|
ArglistCommand that takes an argument list rather than a string as
|
||
|
a parameter. Using a st.split() for argv is very bad.
|
||
|
|
||
|
* buildbot/slavecommand.py (SVNFetch): Now has the ability to
|
||
|
update to a particular revision rather than always checking out
|
||
|
(still not very smart about it, there may be cases where the
|
||
|
checkout becomes inconsistent).
|
||
|
|
||
|
2003-09-10 Christopher Armstrong <radix@twistedmatrix.com>
|
||
|
|
||
|
* buildbot/{bot.py,slavecommand.py,process/step.py}: Rudimentary
|
||
|
SVN fetch support. It can checkout (not update!) a specified
|
||
|
revision from a specified repository to a specified directory.
|
||
|
|
||
|
* buildbot/status/progress.py (Expectations.update): Fix an
|
||
|
obvious bug (apparently created by the change described in the
|
||
|
previous ChangeLog message) by moving a check to *after* the
|
||
|
variable it checks is defined.
|
||
|
|
||
|
|
||
|
2003-09-08 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/progress.py (Expectations.update): hack to catch
|
||
|
an exception TTimo sees: sometimes the update() method seems to
|
||
|
get called before the step has actually finished, so the .stopTime
|
||
|
is not set, so no totalTime() is available and we average None
|
||
|
with the previous value. Catch this and just don't update the
|
||
|
metrics, and emit a log message.
|
||
|
|
||
|
2003-08-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/base.py (BasicBuildFactory): accept 'cvsCopy'
|
||
|
parameter to set copydir='original' in CVS commands.
|
||
|
|
||
|
* buildbot/process/step.py (CVS): accept 'copydir' parameter.
|
||
|
|
||
|
* buildbot/slavecommand.py (CVSCommand): add 'copydir' parameter,
|
||
|
which tells the command to maintain a separate original-source CVS
|
||
|
workspace. For each build, this workspace will be updated, then
|
||
|
the tree copied into a new workdir. This reduces CVS bandwidth
|
||
|
(from a full checkout to a mere update) while doubling the local
|
||
|
disk usage (to keep two copies of the tree).
|
||
|
|
||
|
2003-08-21 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/event.py (Logfile.addEntry): if the master web
|
||
|
server dies while we're serving a page, request.write raises
|
||
|
pb.DeadReferenceError . Catch this and treat it like a
|
||
|
notifyFinish event by dropping the request.
|
||
|
|
||
|
2003-08-18 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.command_FORCE): complain
|
||
|
(instead of blowing up) if a force-build command is given without
|
||
|
a reason field
|
||
|
|
||
|
* buildbot/changes/changes.py (ChangeMaster.getChangeNumbered):
|
||
|
don't blow up if there aren't yet any Changes in the list
|
||
|
|
||
|
2003-08-02 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/bot.py (updateApplication): don't set the .tap name,
|
||
|
since we shouldn't assume we own the whole .tap file
|
||
|
|
||
|
* buildbot/bb_tap.py (updateApplication): clean up code, detect
|
||
|
'mktap buildbot' (without a subcommand) better
|
||
|
|
||
|
2003-07-29 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/words.py
|
||
|
(IrcStatusFactory.clientConnectionLost): when we lose the
|
||
|
connection to the IRC server, schedule a reconnection attempt.
|
||
|
|
||
|
* buildbot/slavecommand.py (CVSCommand.doClobber): on non-posix,
|
||
|
use shutil.rmtree instead of forking off an "rm -rf" command.
|
||
|
rmtree may take a while and will block until it finishes, so we
|
||
|
use "rm -rf" if available.
|
||
|
|
||
|
* docs/examples/twisted_master.py: turn off kqreactor, it hangs
|
||
|
freebsd buildslave badly
|
||
|
|
||
|
* setup.py (version): bump to 0.3.4+ while between releases
|
||
|
|
||
|
2003-07-28 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py (version): Releasing buildbot-0.3.4
|
||
|
|
||
|
2003-07-28 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: update in preparation for release
|
||
|
|
||
|
* buildbot/slavecommand.py (ShellCommand.doTimeout): use
|
||
|
process.signalProcess instead of os.kill, to improve w32
|
||
|
portability
|
||
|
|
||
|
* docs/examples/twisted_master.py (twisted_app): turn off
|
||
|
win32eventreactor: the tests hang the buildslave badly
|
||
|
|
||
|
* buildbot/process/base.py (Build.buildFinished): update ETA even on
|
||
|
failed builds, since usually the failures are consistent
|
||
|
|
||
|
* buildbot/process/process_twisted.py (TwistedReactorsBuildFactory):
|
||
|
add compileOpts/compileOpts2 to reactors build
|
||
|
|
||
|
* docs/examples/twisted_master.py (twisted_app): add "-c mingw32"
|
||
|
(twisted_app): use both default and win32eventreactor on w32 build.
|
||
|
Use both default and kqreactor on freebsd build.
|
||
|
|
||
|
* buildbot/process/process_twisted.py (FullTwistedBuildFactory):
|
||
|
add compileOpts2, which is put after the build_ext argument. w32
|
||
|
needs "-c mingw32" here.
|
||
|
|
||
|
* buildbot/status/html.py (StatusResourceBuilder.getChild): don't
|
||
|
touch .acqpath, it goes away in recent Twisted releases
|
||
|
|
||
|
* docs/examples/twisted_master.py (twisted_app): use "python" for
|
||
|
the w32 buildslave, not "python2.2"
|
||
|
|
||
|
* buildbot/bot.py (Bot.remote_getSlaveInfo): only look in info/ if
|
||
|
the directory exists.. should hush an exception under w32
|
||
|
|
||
|
* buildbot/slavecommand.py (ShellCommandPP.processEnded): use
|
||
|
ProcessTerminated -provided values for signal and exitCode rather
|
||
|
than parsing the unix status code directly. This should remove one
|
||
|
more roadblock for a w32-hosted buildslave.
|
||
|
|
||
|
* test/test_mailparse.py: add test cases for Syncmail parser
|
||
|
|
||
|
* Buildbot/changes/freshcvsmail.py: remove leftover code, leave a
|
||
|
temporary compatibility import. Note! Start importing
|
||
|
FCMaildirSource from changes.mail instead of changes.freshcvsmail
|
||
|
|
||
|
* buildbot/changes/mail.py (parseSyncmail): finish Syncmail parser
|
||
|
|
||
|
2003-07-27 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: started adding new features
|
||
|
|
||
|
* buildbot/changes/mail.py: start work on Syncmail parser, move
|
||
|
mail sources into their own file
|
||
|
|
||
|
* buildbot/changes/freshcvs.py (FreshCVSNotifiee): mark the class
|
||
|
as implementing IChangeSource
|
||
|
* buildbot/changes/freshcvsmail.py (FCMaildirSource): ditto
|
||
|
|
||
|
* buildbot/interfaces.py: define the IChangeSource interface
|
||
|
|
||
|
2003-07-26 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/master.py (makeApp): docstring (thanks to Kevin Turner)
|
||
|
|
||
|
2003-06-25 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/words.py (IrcStatusBot.emit_last): round off
|
||
|
seconds display
|
||
|
|
||
|
2003-06-17 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/words.py: clean up method usage to avoid error
|
||
|
in silly IRC command
|
||
|
(IrcStatusBot.emit_status): round off seconds display
|
||
|
|
||
|
* buildbot/process/base.py (Build): delete the timer when saving
|
||
|
to the .tap file, and restore it (if it should still be running)
|
||
|
upon restore. This should fix the "next build in -34 seconds"
|
||
|
messages that result when the master is restarted while builds are
|
||
|
sitting in the .waiting slot. If the time for the build has
|
||
|
already passed, start it very soon (in 1 second).
|
||
|
|
||
|
* buildbot/status/words.py: more silly commands
|
||
|
|
||
|
* README (REQUIREMENTS): add URLs to all required software
|
||
|
|
||
|
* buildbot/status/words.py ('last'): mention results of, and time
|
||
|
since last build
|
||
|
|
||
|
2003-05-28 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/words.py: add 'last' command
|
||
|
(IrcStatusBot.emit_status): add current-small text to 'status' output
|
||
|
|
||
|
* docs/examples/twisted_master.py (twisted_app): turn on IRC bot
|
||
|
(twisted_app): remove spaces from OS-X builder name
|
||
|
|
||
|
* buildbot/master.py (makeApp): add knob to turn on IRC bot
|
||
|
* buildbot/status/words.py: IRC bot should actually be useful now
|
||
|
|
||
|
2003-05-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/bot.py (Bot.remote_getSlaveInfo): add routines to get
|
||
|
"slave information" from $(slavedir)/info/* . These files are
|
||
|
maintained by the slave administrator, and describe the
|
||
|
machine/environment that is hosting the slave. Information from
|
||
|
them is put into the "Builder" HTML page. Still need to establish
|
||
|
a set of well-known filenames and meanings for this data: at the
|
||
|
moment, *all* info/* files are sent to the master, but only
|
||
|
'admin' and 'host' are used on that end.
|
||
|
* buildbot/status/html.py (StatusResourceBuilder.body): ditto
|
||
|
* buildbot/process/base.py (Builder.setRemoteInfo): ditto
|
||
|
* buildbot/master.py (BotPerspective.got_info): ditto
|
||
|
|
||
|
2003-05-22 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py (version): bump version to 0.3.3+ while between releases
|
||
|
|
||
|
2003-05-21 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py: Releasing buildbot-0.3.3
|
||
|
|
||
|
2003-05-21 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* NEWS: 0.3.3 news items
|
||
|
|
||
|
* README: describe --keepalive and life behind a NAT box
|
||
|
|
||
|
* buildbot/bot.py (Bot.connected): implement application-level
|
||
|
keepalives to deal with NAT timeouts, turn them on with
|
||
|
--keepalive option or when SO_KEEPALIVE doesn't work.
|
||
|
|
||
|
* buildbot/master.py (BotPerspective): accept keepalives silently
|
||
|
|
||
|
* buildbot/process/base.py (Build.buildException): CopiedFailures
|
||
|
don't carry as much information as local ones, so don't try to
|
||
|
create a big HTMLized version of them.
|
||
|
|
||
|
* buildbot/process/step.py (InternalShellCommand.stepFailed): close
|
||
|
log file when step fails due to an exception, such as when the slave
|
||
|
becomes unreachable
|
||
|
|
||
|
* buildbot/process/step_twisted.py (RunUnitTests): use trial's new
|
||
|
--testmodule argument instead of grepping for test-case-name tags
|
||
|
ourselves. Remove FindUnitTests code.
|
||
|
* buildbot/slavecommand.py, buildbot/bot.py: remove old code
|
||
|
|
||
|
* MANIFEST.in: Add docs/examples, files under test/ . Oops!
|
||
|
|
||
|
2003-05-16 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/base.py (BasicBuildFactory): add 'configureEnv'
|
||
|
argument to allow things like CFLAGS=-O0 to be passed without relying
|
||
|
upon /bin/sh processing on the slave.
|
||
|
|
||
|
* buildbot/process/step.py (InternalShellCommand.start): send
|
||
|
'env' dict to slave
|
||
|
* buildbot/slavecommand.py (ShellCommand.start): create argv with
|
||
|
'split' instead of letting /bin/sh do it. This should also remove
|
||
|
the need for /bin/sh on the buildslave, making it more likely to
|
||
|
work with win32.
|
||
|
|
||
|
* buildbot/status/html.py: html-escape text in blamelist.
|
||
|
Add "force build" button to the Builder page.
|
||
|
|
||
|
* buildbot/process/step_twisted.py (countFailedTests): look at
|
||
|
last 1000 characters for status line, as import errors can put it
|
||
|
before the -200 point.
|
||
|
|
||
|
2003-05-15 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/twisted_master.py: use clobber=0 for remote builds
|
||
|
|
||
|
* buildbot/process/process_twisted.py (FullTwistedBuildFactory):
|
||
|
make 'clobber' a parameter, so it is possible to have builds which
|
||
|
do full tests but do a cvs update instead of hammering the CVS
|
||
|
server with a full checkout each build
|
||
|
|
||
|
* buildbot/process/step.py (InternalShellCommand): bump default
|
||
|
timeout to 20 minutes
|
||
|
|
||
|
* buildbot/bot.py (Bot.debug_forceBuild): utility method to ask
|
||
|
the master to trigger a build. Run it via manhole.
|
||
|
|
||
|
* buildbot/master.py (BotPerspective.perspective_forceBuild):
|
||
|
allow slaves to trigger any build that they host, to make life
|
||
|
easier for slave admins who are testing out new build processes
|
||
|
|
||
|
* buildbot/process/process_twisted.py (TwistedReactorsBuildFactory):
|
||
|
don't flunk cReactor or qtreactor on failure, since they fail alot
|
||
|
these days. Do warnOnFailure instead.
|
||
|
|
||
|
* buildbot/process/base.py: change Builder.buildable from a list
|
||
|
into a single slot. When we don't have a slave, new builds (once
|
||
|
they make it past the timeout) are now merged into an existing
|
||
|
buildable one instead of being queued. With this change, a slave
|
||
|
which has been away for a while doesn't get pounded with all the
|
||
|
builds it missed, but instead just does a single build.
|
||
|
|
||
|
2003-05-07 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py (version): bump version to 0.3.2+ while between releases
|
||
|
|
||
|
2003-05-07 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py: Releasing buildbot-0.3.2
|
||
|
|
||
|
2003-05-07 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py: fix major packaging error: include subdirectories!
|
||
|
|
||
|
* NEWS: add changes since last release
|
||
|
|
||
|
* README (REQUIREMENTS): update twisted/python dependencies
|
||
|
|
||
|
* buildbot/status/builder.py (Builder.startBuild): change
|
||
|
BuildProcess API: now they should call startBuild/finishBuild
|
||
|
instead of pushing firstEvent / setLastBuildStatus. Moving towards
|
||
|
keeping a list of builds in the statusbag, to support other kinds of
|
||
|
status delivery.
|
||
|
(Builder.addClient): send current-activity-small to new clients
|
||
|
* buildbot/process/base.py (Build.startBuild, .buildFinished): use
|
||
|
new API
|
||
|
|
||
|
* buildbot/status/client.py: drop RemoteReferences at shutdown
|
||
|
|
||
|
* buildbot/status/event.py (Event.stoppedObserving): oops, add it
|
||
|
|
||
|
* buildbot/status/progress.py (BuildProgress.remote_subscribe):
|
||
|
more debug messages for remote status client
|
||
|
|
||
|
* buildbot/process/step.py (InternalBuildStep.stepComplete)
|
||
|
(.stepFailed): only fire the Deferred once, even if both
|
||
|
stepComplete and stepFailed are called. I think this can happen if
|
||
|
an exception occurs at a weird time.
|
||
|
|
||
|
* buildbot/status/words.py: work-in-progress: IRC status delivery
|
||
|
|
||
|
2003-05-05 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/twisted_master.py (twisted_app): hush internal
|
||
|
python2.3 distutils deprecation warnings
|
||
|
* buildbot/process/process_twisted.py (FullTwistedBuildFactory):
|
||
|
add compileOpts= argument which inserts extra args before the
|
||
|
"setup.py build_ext" command. This can be used to give -Wignore
|
||
|
warnings, to hush some internal python-2.3 deprecation messages.
|
||
|
|
||
|
* buildbot/process/step_twisted.py (RunUnitTests): parameterize
|
||
|
the ['twisted.test'] default test case to make it easier to change
|
||
|
in subclasses
|
||
|
|
||
|
* buildbot/clients/base.py: switch to pb.Cacheable-style Events
|
||
|
* buildbot/clients/gtkPanes.py: ditto
|
||
|
|
||
|
* buildbot/process/step_twisted.py (RunUnitTests): use randomly=
|
||
|
arg to collapse RunUnitTestsRandomly into RunUnitTests
|
||
|
* buildbot/process/process_twisted.py (FullTwistedBuildFactory):
|
||
|
use RunUnitTests(randomly=1) instead of RunUnitTestsRandomly
|
||
|
|
||
|
* buildbot/status/html.py (StatusResource): shuffle Resources
|
||
|
around to fix a bug: both 'http://foo:8080' and 'http://foo:8080/'
|
||
|
would serve the waterfall display, but the internal links were
|
||
|
only valid on the trailing-slash version. The correct behavior is
|
||
|
for the non-slashed one to serve a Redirect to the slashed one.
|
||
|
This only shows up when the buildbot page is hanging off another
|
||
|
server, like a Twisted-Web distributed server.
|
||
|
|
||
|
* buildbot/status/event.py (Event, RemoteEvent): make Events
|
||
|
pb.Cacheable, with RemoteEvent as the cached version. This removes
|
||
|
a lot of explicit send-an-update code.
|
||
|
* buildbot/status/builder.py (Builder): remove send-update code
|
||
|
* buildbot/status/client.py (ClientBuilder): remove send-update
|
||
|
code, and log errors that occur during callRemote (mostly to catch
|
||
|
InsecureJelly exceptions)
|
||
|
|
||
|
* buildbot/process/process_twisted.py (QuickTwistedBuildFactory):
|
||
|
run Lore with the same python used in the rest of the build
|
||
|
|
||
|
* buildbot/process/step_twisted2.py (RunUnitTestsJelly): moved
|
||
|
|
||
|
* buildbot/process/step_twisted.py (HLint): accept 'python'
|
||
|
argument. Catch rc!=0 and mark the step as failed. This marks the
|
||
|
build orange ("has warnings").
|
||
|
(RunUnitTestsJelly): move out to step_twisted2.py
|
||
|
|
||
|
* buildbot/util.py (ignoreStaleRefs): add utility function
|
||
|
|
||
|
* buildbot/master.py (DebugPerspective.perspective_setCurrentState):
|
||
|
don't fake ETA object, it's too hard to get right
|
||
|
|
||
|
2003-05-02 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/twisted_master.py (twisted_app): add FreeBSD builder
|
||
|
|
||
|
2003-05-01 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/html.py (StatusResource.body): oops, I was
|
||
|
missing a <tr>, causing the waterfall page to be misrendered in
|
||
|
everything except Galeon.
|
||
|
|
||
|
2003-04-29 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/twisted_master.py: make debuild use python-2.2
|
||
|
explicitly, now that Twisted stopped supporting 2.1
|
||
|
|
||
|
* buildbot/process/step_twisted.py (BuildDebs.finishStatus): oops,
|
||
|
handle tuple results too. I keep forgetting this, which suggests
|
||
|
it needs to be rethought.
|
||
|
|
||
|
* setup.py (setup): bump version to 0.3.1+ while between releases
|
||
|
|
||
|
2003-04-29 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py: Releasing buildbot-0.3.1
|
||
|
|
||
|
2003-04-29 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* README (SUPPORT): add plea to send questions to the mailing list
|
||
|
|
||
|
* NEWS, MANIFEST.in: add description of recent changes
|
||
|
|
||
|
* docs/examples/twisted_master.py: add the code used to create the
|
||
|
Twisted buildmaster, with passwords and such removed out to a
|
||
|
separate file.
|
||
|
|
||
|
* buildbot/changes/changes.py, freshcvs.py, freshcvsmail.py: split
|
||
|
out cvstoys-using bits from generic changes.py, to allow non-cvstoys
|
||
|
buildmasters to not require CVSToys be installed.
|
||
|
* README, docs/examples/glib_master: update to match the change
|
||
|
|
||
|
* buildbot/clients/base.py, buildbot/bot.py,
|
||
|
buildbot/changes/changes.py, buildbot/pbutil.py: copy
|
||
|
ReconnectingPB from CVSToys distribution to remove CVSToys
|
||
|
dependency for build slaves and status clients. Buildmasters which
|
||
|
use FreshCVSSources still require cvstoys be installed, of course.
|
||
|
|
||
|
2003-04-25 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/process_twisted.py (FullTwistedBuildFactory): add
|
||
|
runTestsRandomly arg to turn on trial -z
|
||
|
|
||
|
* buildbot/process/step_twisted.py (TwistedJellyTestResults):
|
||
|
experimental code to use trial's machine-parseable output to get
|
||
|
more detailed test results. Still has some major issues.
|
||
|
(RunUnitTestsRandomly): subclass to add "-z 0" option, runs tests
|
||
|
in random sequence
|
||
|
|
||
|
* buildbot/status/builder.py (Builder.setCurrentBuild):
|
||
|
anticipating moving build history into statusbag, not used yet
|
||
|
|
||
|
* buildbot/status/tests.py: code to centralize test results,
|
||
|
doesn't work quite yet
|
||
|
|
||
|
* buildbot/status/event.py (Event): use hasattr("setName") instead
|
||
|
of isinstance for now.. need better long-term solution
|
||
|
|
||
|
* buildbot/status/html.py: Remove old imports
|
||
|
|
||
|
2003-04-24 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/process_twisted.py (TwistedBuild.isFileImportant):
|
||
|
ignore changes under doc/fun/ and sandbox/
|
||
|
|
||
|
* buildbot/process/step_twisted.py: update pushEvent and friends.
|
||
|
|
||
|
* buildbot/status/html.py (Box.td): replace event.buildername with
|
||
|
event.parent.getSwappableName(). Needs more thought.
|
||
|
|
||
|
* buildbot/status/builder.py (Builder): Replace pushEvent and
|
||
|
getLastEvent with {set|update|addFileTo|finish}CurrentActivity.
|
||
|
Tell events they are being pruned with event.delete().
|
||
|
|
||
|
* buildbot/process/base.py (Build): Remove Builder status-handling
|
||
|
methods. s/pushEvent/setCurrentActivity/.
|
||
|
|
||
|
* buildbot/process/step.py (BuildStep): clean up status delivery.
|
||
|
Gouse builder.statusbag methods instead of intermediate builder
|
||
|
methods. s/updateLastEvent/updateCurrentActivity/.
|
||
|
s/finalizeLastEvent/finishCurrentActivity/. Use
|
||
|
addFileToCurrentActivity for summaryFunction.
|
||
|
|
||
|
* buildbot/status/event.py (Logfile): put data in a Swappable when
|
||
|
.finish is called.
|
||
|
(Event): add more setter methods. Remove .buildername, use .parent
|
||
|
and getSwappableName instead (needs more thought).
|
||
|
|
||
|
* buildbot/util.py (Swappable):
|
||
|
* test/test_swap.py: don't bother setting filename at __init__
|
||
|
time, do it later. Change setFilename args to take parent first,
|
||
|
since it provides the most significant part of the filename.
|
||
|
|
||
|
2003-04-23 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/status/event.py (Logfile.addEntry): append to previous
|
||
|
entry, if possible
|
||
|
|
||
|
* buildbot/process/step.py (BuildStep.finalizeLastEvent):
|
||
|
anticipating Swappable
|
||
|
(InternalShellCommand.remoteUpdate): split out various log-adding
|
||
|
methods so subclasses can snarf stdout separately
|
||
|
|
||
|
* buildbot/process/base.py (Builder.finalizeLastEvent): more code
|
||
|
in anticipation of Swappable build logs
|
||
|
(Builder.testsFinished): anticipating TestResults, still disabled
|
||
|
|
||
|
* buildbot/status/builder.py (Builder.pruneEvents): only keep the
|
||
|
last 100 events
|
||
|
|
||
|
* buildbot/status/event.py (Logfile): add (disabled) support for
|
||
|
Swappable, not ready for use yet
|
||
|
|
||
|
* buildbot/util.py (Swappable): object which is swapped out to
|
||
|
disk after some period of no use.
|
||
|
* test/test_swap.py: test buildbot.utils.Swappable
|
||
|
|
||
|
2003-04-14 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/base.py (Builder.doPeriodicBuild): add simple
|
||
|
periodic-build timer. Set the .periodicBuildTime on a builder
|
||
|
instance to some number of seconds to activate it.
|
||
|
|
||
|
* buildbot/master.py (BotMaster.forceBuild): change forceBuild API
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommand.finishStatus): use log.msg in
|
||
|
a way that survives result tuples
|
||
|
|
||
|
2003-04-12 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommand.finishStatusSummary):
|
||
|
return a dict instead of a tuple: allow summarizers to provide
|
||
|
multiple summaries if they want
|
||
|
* buildbot/process/step_twisted.py (trialTextSummarizer): return dict
|
||
|
(debuildSummarizer): summarize lintian warnings/errors
|
||
|
|
||
|
2003-04-10 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* README (REQUIREMENTS): slave requires twisted-1.0.4a2
|
||
|
|
||
|
2003-04-09 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (trialTextSummarizer): Don't create
|
||
|
empty summaries: happens when the tests fail so hard they don't emit
|
||
|
a parseable summary line.
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommand.finishStatusSummary):
|
||
|
Allow summaryFunction to return None to indicate no summary should
|
||
|
be added.
|
||
|
|
||
|
* buildbot/status/event.py (Logfile.removeHtmlWatcher): avoid
|
||
|
writing to stale HTTP requests: notice when they disconnect and
|
||
|
remove the request from the list. Also add CacheToFile from
|
||
|
moshez, will be used later.
|
||
|
|
||
|
2003-04-08 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (ProcessDocs.finished): warnings
|
||
|
should be an int, not a list of strings
|
||
|
|
||
|
* buildbot/changes/changes.py (FreshCVSSource.stop): don't disconnect
|
||
|
if we weren't actually connected
|
||
|
|
||
|
* buildbot/process/step_twisted.py (trialTextSummarizer): function
|
||
|
to show the tail end of the trial text output
|
||
|
|
||
|
* buildbot/process/step.py (ShellCommand.finishStatusSummary): add
|
||
|
hook to summarize the results of a ShellCommand
|
||
|
|
||
|
2003-04-07 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (RunUnitTests): consolidate all
|
||
|
twisted test suite code into a single class.
|
||
|
* buildbot/process/process_twisted.py: same
|
||
|
|
||
|
2003-04-04 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* setup.py, MANIFEST.in: hack to make sure plugins.tml gets installed
|
||
|
|
||
|
* README (SLAVE): document use of mktap to create slave .tap file
|
||
|
(REQUIREMENTS): describe dependencies
|
||
|
|
||
|
* buildbot/bb_tap.py, buildbot/plugins.tml:
|
||
|
* buildbot/bot.py (updateApplication): Add mktap support for creating
|
||
|
buildslave .tap files
|
||
|
|
||
|
2003-03-28 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step.py (InternalShellCommand.finished): handle
|
||
|
new tuple result values (fix embarrasing bug that appeared during
|
||
|
PyCon demo)
|
||
|
|
||
|
2003-03-27 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* docs/examples/glib_master.py, README: add sample buildmaster.tap
|
||
|
-making program
|
||
|
|
||
|
2003-03-25 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step.py (CVS, ShellCommand): add reason for failure
|
||
|
to overall build status
|
||
|
* buildbot/clients/base.py (Builder): improve event printing
|
||
|
* buildbot/process/base.py (BasicBuildFactory): use specific steps
|
||
|
instead of generic ShellCommand
|
||
|
(Build): Add .stopBuild, use it when slave is detached
|
||
|
|
||
|
* buildbot/process/step.py (Configure,Test): give the steps their
|
||
|
own names and status strings
|
||
|
|
||
|
* buildbot/status/html.py (StatusResource): add "show" argument,
|
||
|
lets you limit the set of Builders being displayed.
|
||
|
|
||
|
2003-03-20 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/basic.py: removed
|
||
|
|
||
|
2003-03-19 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/process_twisted.py (FullTwistedBuildFactory):
|
||
|
turn off process-docs by default
|
||
|
|
||
|
* buildbot/process/base.py (Builder.getBuildNumbered): Don't blow up
|
||
|
when displaying build information without anything in allBuilds[]
|
||
|
|
||
|
* buildbot/bot.py (makeApp): really take password from sys.argv
|
||
|
|
||
|
2003-03-18 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/bot.py (buildApp): take password from sys.argv
|
||
|
|
||
|
* README: replace with more useful text
|
||
|
|
||
|
* setup.py: add a real one
|
||
|
* MANIFEST.in, .cvsignore: more distutils packaging stuff
|
||
|
|
||
|
* docs/PyCon-2003/: added sources for PyCon paper.
|
||
|
|
||
|
* buildbot/process/base.py, step.py: revamp. BuildProcess is gone,
|
||
|
now Build objects control the process and Builder only handles
|
||
|
slave stuff and distribution of changes/status. A new BuildFactory
|
||
|
class creates Build objects on demand.
|
||
|
|
||
|
Created ConfigurableBuild which takes a list of steps to run. This
|
||
|
makes it a lot easier to set up a new kind of build and moves us
|
||
|
closer to being able to configure a build from a web page.
|
||
|
|
||
|
* buildbot/process/step_twisted.py, process_twisted.py: move to
|
||
|
new model. A lot of code went away.
|
||
|
|
||
|
* buildbot/status/progress.py (BuildProgress.newProgress): Don't
|
||
|
send lots of empty progress messages to the client.
|
||
|
|
||
|
* buildbot/master.py (makeApp): enforce builder-name uniqueness
|
||
|
|
||
|
2003-02-20 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py (BuildDebs): count lintian hits
|
||
|
|
||
|
* buildbot/slavecommand.py (ShellCommand): back to usePTY=0. The
|
||
|
Twisted bug that prevented non-pty processes from working just got
|
||
|
fixed, and the bug that leaks ptys is still being investigated.
|
||
|
|
||
|
* buildbot/process/step.py (CVS): send timeout arg to slave
|
||
|
|
||
|
* buildbot/clients/gtkPanes.py: add connection-status row, handle
|
||
|
builders coming and going
|
||
|
* buildbot/clients/base.py: clean up protocol, move to ReconnectingPB
|
||
|
from CVSToys, handle lost-buildmaster
|
||
|
|
||
|
* buildbot/status/client.py (StatusClientService.removeBuilder):
|
||
|
Clean up status client protocol: send builders (with references)
|
||
|
as they are created, rather than sending a list and requiring the
|
||
|
client to figure out which ones are new.
|
||
|
* buildbot/master.py (BotMaster.forceBuild): Log debugclient
|
||
|
attempts to force a build on an unknown builder
|
||
|
|
||
|
2003-02-19 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/slavecommand.py (CVSCommand): add timeout to sub-commands
|
||
|
* buildbot/slavecommand.py (ShellCommand.start): stop using PTYs until
|
||
|
Twisted stops leaking them.
|
||
|
* buildbot/clients/gtkPanes.py (CompactBuilder): forget ETA when the
|
||
|
builder goes to an idle state.
|
||
|
|
||
|
* buildbot/slavecommand.py (ShellCommand.start): bring back PTYs until
|
||
|
I figure out why CVS commands hang without them, and/or I fix the
|
||
|
hung-command timeout
|
||
|
|
||
|
2003-02-16 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* buildbot/process/step_twisted.py: bin/hlint went away, replace
|
||
|
with 'bin/lore --output lint'. Use 'bin/trial -o' to remove
|
||
|
ansi-color markup. Remove GenerateLore step. Count hlint warnings in
|
||
|
GenerateDocs now that they are prefixed with WARNING:.
|
||
|
|
||
|
* buildbot/status/html.py (StatusResource.body): Fix Builder link,
|
||
|
use manual href target instead of request.childLink
|
||
|
|
||
|
* buildbot/clients/gtkPanes.py: Fix progress countdown: update the
|
||
|
display every second, but update the ETA every 5 seconds (or
|
||
|
whenever) as remote_progress messages arrive.
|
||
|
|
||
|
|
||
|
2003-02-12 Brian Warner <warner@lothar.com>
|
||
|
|
||
|
* *: import current sources from home CVS repository
|
||
|
|
||
|
|
||
|
# Local Variables:
|
||
|
# add-log-time-format: add-log-iso8601-time-string
|
||
|
# End:
|