|
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