Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2007-09-29 18:49:37

on Wed Sep 26 2007, Jason Sankey <> wrote:

> David Abrahams wrote:
>> on Fri Sep 14 2007, Jason Sankey <> wrote:
>>> You may have noticed the discussion going on re: developer feedback
>>> systems. As part of this I have just started setting up a demo build
>>> server at:
>>> At this stage it is an early demonstration of the server (Pulse)
>>> building the boost trunk. There is only one machine, but for
>>> illustration purposes I am running both the master and one agent on it.
>>> This shows the ability to build on multiple agents in parallel (to
>>> test the different OS/compiler combos). In this case I am testing two
>>> different gcc versions (the easiest to setup for the demo).
>> Very cool to see it working. Sorry it's taken me so long to respond.
> OK, I thought for a bit that enthusiasm had been lost. There were a
> couple of quick and positive responses, though, and I'm glad you got a
> chance to take a look too.

Yeah, sorry -- things have been a little crazy over here.

>>> You might also notice the Pulse is kicking off a build when it detects
>>> any change, and shows the change information (also linked to Trac for
>>> diff views etc). This should keep the machine busy, since a build takes
>>> over 2 hours (partly because two builds are running in parallel, but
>>> mostly just because the build takes that long). Perhaps there is a
>>> shorted build/test cycle that should be run on every change for faster
>>> feedback.
>> I don't know how you're invoking the build, but if you're using
>>, there is an --incremental flag you can pass that avoids
>> rebuilding things whose dependencies haven't changed.
> I am actually invoking things directly using Pulse. Pulse checks out
> the source from svn and I use Pulse commands to run the build, in a
> similar way to how other testing scripts appear to work:
> I had some trouble figuring out the latest and best way to run tests,
> but this seems to work.

Seems OK.

> The default Pulse behaviour is to do a full clean checkout and build.
> However, there is an option to switch to incremental builds, where the
> same working copy is used for every build after an svn update to the
> desired revision. The reason I steered clear is that I noticed a
> mention somewhere in the regression testing documentation that
> incremental builds were not 100% reliable.

It has the same unreliability that most projects' builds do: the
#include dependency checkers can be fooled by directives of the form


It's still very useful to do incremental builds, but it makes sense to
build from scratch once a day.

> As suggested elsewhere, breaking things down library by library would
> also help. I have noticed a bit of discussion going around about this
> lately, and have to say that I think it would be very helpful for
> integration with Pulse.

That's good to know.

> Apart from faster builds, it would also make it easier to see the
> status of each library if it were a top-level Pulse project, and
> developers could then subscribed to email/jabber/RSS notifications
> for just the libraries they are interested in.

Interesting. So what, exactly, does Pulse need in order to achieve
these benefits? Reorganization of SVN? Separate build commands for
each library?

>>> 2) What important features you think are currently missing.
>> Integration with the XML failure markup is the most crucial thing.
> OK. I need to understand these a bit better before I continue. I am
> not sure at what stage in the process these normally take effect.

IIUC they are processed by the code in tools/regression/xsl_reports/,
which currently runs on the servers that display our test results.

> I guess a lot of the failures I am getting now are actually known
> and included in this markup?

You can check by looking at status/explicit-failures-markup.xml in
whatever SVN subtree you're testing.

> I need to find some time to dig into this.
>>> 3) How some of the errors/failing tests can be resolved.
>> Not connected to the 'net as I write this; I might be able to look
>> later.
> OK, thanks. Getting to a state where a normal build is green will make
> things a whole lot more useful.

If you're testing trunk, you may never get there because IIUC it isn't
very stable. I suggest you run your tests on the 1.34.1 release tag
at least until you see all green.

Dave Abrahams
Boost Consulting

Boost list run by bdawes at, gregod at, cpdaniel at, john at