[Buildbot-devel] WithProperties misbehavior

Bruce Walton bruce at itasoftware.com
Mon Feb 11 16:46:21 UTC 2008



Hi John,

Thanks for your ideas.

I'm not trying to bypass any of the preferred practices,
i.e., keeping it simple.


QREStrunkf.addStep(SVN,
                   workdir="qres",
                   baseURL="svn+ssh://svn/svn/ita/",
                   defaultBranch="trunk/qres",
                   mode="clobber")

QREStrunkf.addStep(Compile,
                   command=["make", "install"],
                   workdir="qres",
                   env=qrsenv,
                   descriptionDone=["build", "complete"])

I'm not using the force build button, but a PBchangesource listener
which I poke using an svn hook on the repository side:

    svn_buildbot -r Repository -v Revision# -s MasterHost -p Port -f <branch filters>

The SVN step seems to know the proper revision of the proper branch
when it checks out the code, based on the -v argument passed in.  This
revision number appears properly on all the status pages under the
waterfall, it's all good.  But, I would think that I could access that
number using WithProperties easily enough...

Mainly the reason I need this is to pass execution to a downstream
dependant scheduler to do other work, but maintain the same revision
number as the upstream for reference.

I suppose I could write a ShellCommand step to glean the SVN revision
from the current checkout, but I don't think I should need to do that,
still really wondering why I've got this problem.

Going back to rtfm again, about BuildSet and SourceStamp.  I'm missing
something.

thanks again           -bruce.


John Saxton writes:
 > On Feb 8, 2008, at 9:44 AM, Bruce Walton wrote:
 > > I'm concerned that the "revision" returned is blank (and the
 > > documented "got_revision" doesn't work at all, appears to be
 > > deprecated.)
 > 
 > 
 > "revision" is blank if whatever triggered the build didn't specify a  
 > specific revision to build.  For example, if you forced a build from  
 > the web UI and left the revision field blank.  This is a "use  
 > whatever is the latest" case. It gets copied from the SourceStamp, so  
 > it's always defined, but it may well be "None".
 > 
 > The "got_revision" property gets created by your Source step (CVS,  
 > SVN, whatever).  Before your Source step runs, "got_revision" isn't  
 > defined at all, so trying to reference it in a WithProperties  
 > statement will raise an exception.  If you're using a custom Source  
 > step, or you've avoided the built-in Source steps all together (maybe  
 > by doing your checkout with a ShellCommand call to "cvs checkout  
 > foo"), then you may need to set got_revision yourself  
 > (self.setProperty("got_revision", theRevsionIGot)) if you want later  
 > steps to be able to use it.
 > 
 > I recently realized that the Source steps use the "revision" property  
 > of the SourceStamp, not the build property, so if you were trying to  
 > make an early build step change which revision your Source step would  
 > check out, you may need to add something like this to that early  
 > build step:
 > 
 >      ss = self.build.source
 >      self.build.source = SourceStep(revision=theRevisionIWant,  
 > branch=ss.branch, patch=ss.patch, changes=ss.changes)
 > 
 > -John
 > 




More information about the devel mailing list