[Python-Dev] Promoting PCbuild8

Brian Warner warner at lothar.com
Fri Oct 20 01:59:46 CEST 2006

"Martin v. Löwis" <martin at v.loewis.de> writes:

>> But I agree that
>> getting regular builds running would be a good thing.  An x64 box
>> would be ideal to build both the x86 and x64 versions on.  A single
>> bot can manage many platforms, right?
> A single machine, and a single buildbot installation, yes. But not
> a single build slave, since there can be only one build procedure
> per slave.

To be precise, you have have as many build procedures per slave as you like,
but if the procedure depends upon running on a particular platform, then it
is unlikely that a single slave can accomodate multiple platforms. Each
Builder object in the buildbot config file is created with a BuildFactory
(which defines the sequence of steps it will execute), and a list of
buildslaves that it can run on. There is a many-to-many mapping from Builders
to buildslaves.

For example, you might have an "all-tests" Builder that does a compile and
runs the unit-test suite, and a second "build-API-docs" Builder that just
runs epydoc or something. Both of these Builders could easily run on the same
slave. But if you have an x86 Builder and a PPC Builder, you'd be hard
pressed to find a single buildslave that could usefully serve for both.

If the x86 and the x64 builds can be run on the same machine, how do you
control which kind of build you're doing? The decision about whether to run
them in the same buildslave or in two separate buildslaves depends upon how
you express this control. One possibility is that you just pass some
different CFLAGS to the configure or compile step.. in that case, putting
them both in the same slave is easy, and the CFLAGS settings will appear in
your BuildFactories. If instead you have to use a separate chroot environment
(or whatever the equivalent is for this issue) for each, then it may be
easiest to run two separate buildslaves (and your BuildFactories might be

> It's possible to tell the master not to build different branches on a
> single slave (i.e. 2.5 has to wait if trunk is building), but it's not
> possible to tell it that two slaves reside on the same machine (it might be
> possible, but I don't know how to do it).

You could create a MasterLock that is shared by just the two Builders which
use slaves which share the same machine. That would prohibit the two Builders
from running at the same time. (SlaveLocks wouldn't help here, because as you
pointed out there is no way to tell the buildmaster that two slaves share a


More information about the Python-Dev mailing list