[Buildbot-devel] Difficulties with concurrency and dependencies

Greg Ward gerg.ward+buildbot at gmail.com
Thu Nov 29 20:42:01 UTC 2007

On Nov 27, 2007 3:33 PM, I wrote:
> I'm having problems shoehorning our build requirements into Buildbot, and I
> want to bounce some ideas off the mailing list and see what everyone
> thinks.  First, let me explain the requirements: our build produces a bunch
> of Linux server-side applications (a mix of mostly Java and C++) and a
> handful of client-side Windows apps (again, a mix of Java and C++).  So we
> need at least two build slaves to handle the two different architectures.
> But the builds on the two systems are completely different; only a handful
> of core libraries are actually compiled on both build slaves.
> But wait!  A third way has occurred to me: a new type of build step that
> (notionally) blocks until Something Happens.  For me, Something would just
> be "each of these other build steps completes".

OK, after much digging through the guts of Buildbot to see how things
hook up, I have a "Blocker" build step that's getting close to what I
want.  I'll attach the code; this came straight out of a test

Good things about this implementation of Blocker:
  * it works! it blocks its build from running until exactly one other
build step, in any builder, completes
  * if the upstream build step succeeds, so does Blocker; if it fails,
so does Blocker
  * it updates the status text nicely: "blocking on <builder>.<step>"
while blocking, then e.g.
    "<builder>.<step> success" when the upstream step completes successfully

Bad things about this implementation:
  * it only supports a single upstream step; I think I know how to fix
this, but wanted to get a simple
    version working first. would also be nice to get some feedback on
this simple implementation!
  * it blows up if the upstream builder isn't currently running (what
else could I do? I don't know if
    the upstream builder has completed, or if it has never even run)
  * it ignores the possibility that there might be multiple copies of
the upstream builder running
  * it feels like a lot of code for what it is; is there a simpler way
to do this?

Feedback appreciated!

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: blocker-buildstep.txt
URL: <http://buildbot.net/pipermail/devel/attachments/20071129/d1d2527c/attachment.txt>

More information about the devel mailing list