Boost logo

Boost-Build :

From: David Abrahams (gclbb-jamboost_at_[hidden])
Date: 2003-08-17 07:30:06


Aleksey Gurtovoy <alexy_at_[hidden]> writes:

> Misha Bergal wrote:
>> Our results are available now.
>>
>> Looking at it:
>>
>> * "static_assert" library name got somehow replaced with "libs".
>
> This one is really nasty. We tracked it down, and it's caused by yesterday
> changes in "testing.jam":
>
> RCS file: /cvsroot/boost/boost/tools/build/testing.jam,v
> retrieving revision 1.15
> retrieving revision 1.15.2.1
> diff -r1.15 -r1.15.2.1
> 102c102
> < local file = $(files[1]:R=$(SUBDIR_TOKENS:J=/) ;
> ---
>> local file = $(files[1]:R=$(SUBDIR_TOKENS:J=/)) ;
> ^^^
>
> While the above looks like a right fix to me (not to mention that I have no
> idea how the mismatched brackets _could be_ handled without giving a syntax
> error)

Jam is notoriously bad about strict parsing in expansion sequences.

> but the fact is that the change caused an unwanted behavior - now,
> while dumping the tests info, bjam appends an erroneous 'libs\'
> prefix to the static_assert library test names:
>
> [bjam.log]
> ...
> boost-test(COMPILE_FAIL) "static_assert_test_fail_8" :
> "libs\libs\static_assert\static_assert_test_fail_8.cpp"
> boost-test(COMPILE_FAIL) "static_assert_test_fail_7" :
> "libs\libs\static_assert\static_assert_test_fail_7.cpp"
> ^^^^^^^^^
>
> This, in turn, leads to erroneous detection of the library name further in
> the tools chain, and ultimately to incorrect summary and detailed regression
> reports - http://tinyurl.com/jtpd (the yellow cells in the middle).
>
> The old revision works exactly as wanted (however weird it is):
>
> boost-test(COMPILE_FAIL) "static_assert_test_fail_8" :
> "libs\static_assert\static_assert_test_fail_8.cpp"
> boost-test(COMPILE_FAIL) "static_assert_test_fail_7" :
> "libs\static_assert\static_assert_test_fail_7.cpp"
>
>
> I would appreciate if someone with bjam expertise explained what's happening
> here and what would be the right fix.

Can't explain it, but you can do what I would do: add ECHO
statements to diagnose what values are being seen at each step. You
can also use bjam -f- to interactively run some little tests:

C:\boost\RC_1_30_0>bjam -f-
root = a b c d ;
f = yy zz ;
ECHO $(f[1]:R=$(root:J=/)) ;
ECHO $(f[1]:R=$(root:J=/) ;
^Z
a/b/c/d\yy
abcd\yy
don't know how to make all

-- 
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