[Python-Dev] Promoting PCbuild8 (original) (raw)

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 identical).

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 host).

cheers, -Brian



More information about the Python-Dev mailing list