[Buildbot-devel] CVS source: checking out multiple modules does not work

Greg Ward gerg.ward+buildbot at gmail.com
Mon Jul 16 16:15:46 UTC 2007


I don't see a ticket in Trac for this, so let me just check that I'm
not missing something really obvious before creating one.
Specifically, trying to do multiple CVS checkouts in a single builder
does not work.  E.g. my master.cfg has this:

for dir in ("dir1", "dir2", "dir3"):
    bf.addStep(source.CVS,
                       name="update:" + dir,
                       mode="update",
                       cvsroot=cvsroot,
                       cvsmodule=dir)

which causes buildbot to run

  cvs -d ... -z3 checkout -d build -r HEAD dir1
  cvs -d ... -z3 checkout -d build -r HEAD dir2
  cvs -d ... -z3 checkout -d build -r HEAD dir3

on the slave.  I'm a little confused about what happens next, but the
end result is that the 'build' directory contains just the contents of
'dir3' -- it seems that each checkout clobbers the results of the
previous checkout.

(The reason I'm confused is that when I run the above commands
manually, cvs sensibly notices the conflict and refuses to let me
checkout dir2 on top of dir1.  I don't know what buildbot is doing
differently, but when it runs those commands, the dir2 checkout
clobbers the previous one.)

It turns out that a fix would be pretty easy: just get buildbot to run
these commands instead:

  cvs -d ... -z3 checkout -d build/dir1 -r HEAD dir1
  cvs -d ... -z3 checkout -d build/dir2 -r HEAD dir2
  cvs -d ... -z3 checkout -d build/dir3 -r HEAD dir3

This works fine when I do it manually, and gives me the expected
structure: build/dir1 contains dir1 contents, etc.  But I cannot
figure out how to customize the "-d" option that buildbot generates.
Any clues?

Thanks --

Greg




More information about the devel mailing list