Boost logo

Boost-Build :

From: David Abrahams (dave_at_[hidden])
Date: 2005-06-30 07:53:11


Juergen Hunold <hunold_at_[hidden]> writes:

> Hi Dave !
>
> On Tuesday 28 June 2005 16:03, David Abrahams wrote:
>
> [snipped most because the real issue follows]
>
>> It represents the header-only "minimal" configuration of the test
>> library (boost/test/minimal.hpp). I'm not going to remove it; where
>> do you think documentation should go?
>
> Just above the declaration of "minimal".
> Just something along the lines:
> # Configuration for header-only "minimal" configuration
> # see (boost/test/minimal.hpp)
>
>> > 2. make it explicit and document it.
>>
>> I don't like making changes whose consequences I don't even think I
>> understand. At least when I added minimal, I thought I knew what I
>> was doing. What you're telling me sounds like either BBv2's response
>> to usage-requirements is completely broken or its documentation is (I
>> suspect both, actually).
>
> Well, usage-requirements just work as expected (at least by me ;-)).
>
> The "surprise" seems to be the way "use-project" works.
>
>> After we deal with the issue of how BBv2 works I'll be happy to do
>> whatever needs to be done to make that Jamfile work for you.
>
> Okay, so we need to clarify what "use-project" means.
>
> When I do "use-project /boost", _all_ Boost Libraries are put into
> scope

They are "declared;" I wouldn't call that putting them "into scope."

> via $BOOST_ROOT/Jamfile.v2 line 170 ff.
> --- snip -----
> # Make project ids of all libraries known.
> for local l in $(libraries)
> {
> use-project /boost/$(l) : libs/$(l)/build ;
> }
> -- snap ---
>
> Then Boost.Test Jamfile.v2 is loaded and all targets found in it are
> evaluated

"declared."

> and their usage-requirements added to the current property set.

"Current property set?" What is that? There is no property set
statefulness AFAIK.

> Since the "minimal" is not explicit, it is evaluated

It is declared.

> and it's usage-requirements added.

And that's where the problem is.

> Thats all there is. Works as designed.

You've said that before but I see no evidence that the adding of
usage-requirements to properties of targets in that step was an
explicit design choice. As I said, I need to

a. See it in the BBv2 documentation
b. See a darned good rationale for that behavior

before I'm ready to accept that.

> When writing "minimal" you probably wanted it's usage requirements only
> added when someone adds /boost/test//minimal to her project, right
> ?

Yes.

> Then "minimal" has and can be explicit.
>
> The full documentation would then read:
> # Configuration for header-only "minimal" configuration
> # see (boost/test/minimal.hpp)
> # add /boost/test//minimal to your sources when using it.
>
> I hope this is a convincing explanation of what happens.

No, you've added nothing to what I knew before. You're telling me
that making the target explicit will make everything work again.
Wonderful! As I said, I will be happy to make whatever adjustments
are necessary after we deal with the issue of how BBv2 works. The
behavior you're describing is counterintuitive and surprising and I
don't want to paper over the problem by making a change I don't
understand. This should stick out like a sore thumb until we figure
out how BBv2 is really supposed to work and be explained.

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com
 

Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk