[Buildbot-devel] building dependencies

tom fogal tfogal at alumni.unh.edu
Thu Mar 11 03:43:42 UTC 2010


I can't seem to figure out a sane way to do this.

I've got a project that has a shell script in $VCS which compiles all
its dependencies.  I only want to rebuild the deps if that shell script
changes.  Naturally, I use a fileIsImportant argument to the scheduler.
This works beautifully.

The main app needs to build as well though, of course.  I've just
attempted dependent schedulers, but they aren't firing if the
"upstream" scheduler doesn't.  Really I want a dependent scheduler that
just waits until its upstream finished, regardless of whether upstream
did anything.

I tried triggerable schedulers before, but the config file became a
nightmare: I had a builder, attached to a factory with a bunch of
triggers, each trigger corresponded to a scheduler that corresponded
to a builder that corresponded to a factory that was associated to
the slaves via a builder.  At 3 "steps" (dependencies, main app,
packaging), times just 3 build slaves, there were too many objects with
1-1 relations (in particular, schedulers and builders which were really
just dummy variables, only existing to provide a `path' to a factory);
it became hard to wrap my head around it.

Actually -- I found Google's Chromium buildbot cfg file while googling
around [1], and it really demonstrates what I'm talking about.  The
config file just gets massive.

I think my next step is to just use Schedulers for both deps and main
build, and then add a prioritizeBuilders function to make sure deps
always come before my main software.  I could still use a dependent
scheduler for the packaging step, I think, because it could depend on
the main build w/o a fileIsImportant setting.

Perhaps I'm just doing something wrong, though?

-tom

[1] http://src.chromium.org/svn/trunk/tools/buildbot/master.chromium/master.cfg




More information about the devel mailing list