Boost logo

Boost :

Subject: [boost] [build] [testing] Testing scripts don't invoke 'b2 headers' (was [EXTERNAL] [testing] mpl/core tests not visible)
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2014-09-14 03:27:04


On Sunday 14 September 2014 10:55:03 you wrote:
> On Saturday 13 September 2014 22:54:48 Belcourt, Kenneth wrote:
> > No, this definitely worked fine before (i.e. worked without having to run
> > 'b2 headers’). For example, the nightly testers (Sandia-darwin) only
> > broke
> > following the push to MPL because they always start from a clean directory
> > with nothing checked out or installed. Since the nightly testers don’t
> > run
> > ‘b2 headers’, that means that b2 was able to correctly install the headers
> > needed to build process_jam_log during the testing process. The ability
> > to
> > correctly install the headers for the targets being built is what’s
> > currently broken, unless someone does a ‘b2 headers’ first to install
> > everything.
> >
> > So I think we need to revert the MPL change unless we can figure out how
> > to
> > fix it. I agree there’s a workaround by installing all the headers with
> > ‘b2 headers' but we broke major functionality in b2 with this commit,
> > yikes!
>
> I don't see how rearranging some headers in MPL could have broken
> Boost.Build, unless it was broken before and worked incidentally. IMHO,
> reverting the change is not the fix, it might cover the problem at the very
> best. You can try it locally on the testing machine to see if it really
> helps.

BTW, in tools/regression/build/Jamroot.jam I can see this:

exe process_jam_log
    :
    process_jam_log.cpp
    tiny_xml
    /boost/filesystem//boost_filesystem/<link>static
    :
    <define>BOOST_ALL_NO_LIB=1
    <define>_CRT_SECURE_NO_WARNINGS
    <implicit-dependency>/boost//headers
    :
    release
    ;

The headers dependency is also present in other targets for testing tools. So,
unless I'm missing something, the headers target should have been invoked
before the tool is built. Maybe the problem is that Filesystem (as probably
all other libraries) don't depend on headers and can be built before the
headers are installed?

I think the correct temporary workaround is to add 'b2 headers' to testing
scripts. The long term fix is probably to add the dependency on headers to all
libraries that build, tests and examples. That is if the problem is not
elsewhere. I'd like to hear from Boost.Build guys on this.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk