[Buildbot-devel] when is a Source class not a revision control system?

Robert Helmer robert at roberthelmer.com
Sun Dec 9 01:09:26 UTC 2007


On 12/8/07, Brian Warner <warner-buildbot at lothar.com> wrote:
>
> On Tue, 27 Nov 2007 16:59:33 -0800
> "Robert Helmer" <robert at roberthelmer.com> wrote:
>
> > cvs co client.mk
> > make -f client.mk MOZ_CO_PROJECT=browser
>
> ...
>
> > I've been calling this class ClientMk, but it occurs to me that other
> > projects might need this as well (such as Ant, Maven, etc.) so maybe
> > it can be made more generic. Is there a place in Buildbot for a more
> > generic class (CustomSource or something?) which is able to use a
> > version control system to check out an initial file, which is then
> > responsible for driving the checkout?
> >
> > Alternatively would a ClientMk class be acceptable in Buildbot
> > proper? It should enable any Mozilla-based project (of which there
> > are quite a few now) to use this and could serve as a template for
> > others.
>
> At the very least, let's add a page to the wiki for "useful BuildSteps",
> and
> include this one in the "source checkout" category.
>
> If there are enough projects that could use it (and if you can make it
> versatile enough to handle them.. I have no idea what sort of parameters
> you'd want to have on it), then let's put it in the buildbot proper. I
> support buildbot/steps/source.py is a reasonable place to start with.. or
> if
> this "client.mk" convention has a name (mozillabuild?), then we could put
> in
> in some other buildbot/steps/XXX.py file.



Ok this sounds like a good start, I'll probably start by doing a custom
class just for our purposes  (and post to the wiki) and wait to see if
anyone comes along with a similar need, and see if we can come to a common
ground on it.


(I'm guessing that you control the version of the project as a whole by
> controlling the version of the client.mk that you start with? I remember
> doing similar things with 'seed' files that referenced explicit version
> numbers of other CVS-control source files many years ago, like tagging but
> transposed to keep from adding a bazillion tags to every single source
> file).



Right. client.mk pulls different versions of subprojects like NSS and NSPR,
but doesn't go to the extreme of version numbers on specific files. It also
only checks out part of the tree instead of the whole "mozilla" CVS module.

When you want to get an exact timestamp the steps are basically:

cvs co -r MOZILLA_1_8_BRANCH client.mk
make -f client.mk MOZ_CO_PROJECT=firefox MOZ_CO_DATE='12/08/2007 3:36:02
PST'

After that point it's basically an Autoconf project, so I'm thinking of
using a factory based on the existing autoconf one.

I hacked up a simple prototype source class based on the CVS for this, it
uses a callback to do the initial checkout (the same way "cvs login" works),
and since "revision" for CVS is the timestamp it works very well.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://buildbot.net/pipermail/devel/attachments/20071208/a65373b9/attachment.html>


More information about the devel mailing list