[Buildbot-devel] [Fwd: Unable to use a build stamp with svn]

Cory Dodt corydodt at twistedmatrix.com
Thu Feb 3 23:14:08 UTC 2005


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1



I'm having some trouble using a build stamp with SVN.  I figured out a way to
use them, but buildbot seems to ignore the revision stamp I set.



My build process involves building sources on multiple different machines and
then copying them to a CIFS share on a single machine.  To keep the builds in
order, I copy them to a directory structure like this:

built/disks/r2029/trunk/win32/stuff
built/disks/r2029/trunk/linux/stuff
built/disks/r2029/trunk/osx/stuff

.. etc, where trunk is actually the root of a CD.  A builder on windows puts
stuff in the win32 directory, a builder on linux writes to the linux directory
and a builder on osx writes to the osx directory.

Recently I added an "svn ci" to one of my build steps.  After the build
process is complete on one machine, a checksum file is generated.  The builder
commits the checksum file to a special builds/ dir in my repository so the
next build can examine it and make sure nothing has been changed by hand in
the interim (in which case whatever was changed has to be rebuilt).

After that, the other builders check out a revision that's +1 greater than the
one that was checksummed.  Now, the first builder is copying into an "r2029"
directory and the ones that follow are copying into an "r2030" directory.


The solution in Buildbot-ese would be (?) build stamps, to force every bot to
checkout with -r2029 instead of -rHEAD.  But it isn't doing anything for me
Here's what I tried in my master.cfg:



#=================================================
# ...
BF = factory.BuildFactory

class StampingBuild(base.Build):
~    """A Build that sets a stamp after each commit, so all the builders
~    know to check out the same revision.
~    """
~    def addImportantChange(self, change):
~        self.bumpMaxChangeNumber(change)
~        self.changes.append(change)
~        self.nextBuildTime = change.when + self.treeStableTimer
~        self.setTimer(self.nextBuildTime)
~        self.builder.updateBigStatus()
~        self.setSourceStamp(change.revision, None)  # remember the revision

# use the above class when the BuildFactory creates a build.
BF.buildClass = StampingBuild
# ...
#=================================================


With the above change, the SVN step *should* be checking out -r2029 instead of
- -rHEAD [reference: buildbot.process.Step.Source.start, where it calls
getSourceStamp()].  Instead everything is still checking out --revision HEAD.


What am I missing?

C

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFCArBA3A5SrXAiHQcRAkTUAJsFFnKvJUe1SM1rS8PKj6OgK4OLtACfR04Q
dI027UA0kASusWoInipWda8=
=iUXU
-----END PGP SIGNATURE-----




More information about the devel mailing list