Boost logo

Boost-Build :

From: Misha Bergal (mbergal_at_[hidden])
Date: 2004-10-13 02:54:59


Vladimir Prus <ghost_at_[hidden]> writes:

> Aleksey Gurtovoy wrote:
>
[...]
>> To make it clear: I'm not insisting that the problem should be fixed
>> this particular way. What I'm strongly opposite to is rejecting a
>> possibly correct, at large, fix on the basis that a local workaround
>> for one particular instance of the problem is possible. We've spent a
>> considerable enough amount of time getting to the roots of the issue
>> to feel that it should be fixed once and forever.
>>
[...]

> You know, the proposed fix only affects diagnostics, so it's not likely that
> it will "break" anything. However, for me to really say anything, I need to
> understand the original problem which asks for this changes. Can you briefly
> explain?
>

Original problem is that process_jam_log (utility which generates xml
test result files from the bjam output), has problems with bjam output
for some of the failing Boost.Python tests.

Here is a Dave's description of how python tests are set up:

>The embedding test is essentially just a normal test that builds and
>runs an application. All of the other tests have two parts: building
>one or more shared libraries (the pyd files are just dlls with a
>different extension), and running the Python application to test
>them. The .run file contains the output of invoking Python, and if
>the result code is zero, the .test file gets created to mark the test
>as having succeeded.

Here is the problematic log with my annotations, in which I
substituted the full directory names with "dir\...\", so it easier to
see what is going on). Log content is indented, my annotations start
at the beginning of the line.

...found 236 targets...
...updating 9 targets...

vc-C++ ..\bin\boost\libs\python\test\const_argument_ext.pyd\msvc\debug\threading-multi\const_argument.obj
const_argument.cpp
D:\USERS\misha\Stuff\boost\boost\boost/python/make_function.hpp(104) : error C2664: 'struct boost::mpl::vector2<bool,class boost::python::api::object> __cdecl boost::python::detail::get_signature(bool (__cdecl *)(class boost::python::api::object),void *)' : cannot convert parameter 1 from 'bool (__cdecl *)(const class boost::python::api::object)' to 'bool (__cdecl *)(class boost::python::api::object)'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
D:\USERS\misha\Stuff\boost\boost\boost/python/def.hpp(82) : see reference to function template instantiation 'class boost::python::api::object __cdecl boost::python::make_function(bool (__cdecl *)(const class boost::python::api::object))' being compiled
D:\USERS\misha\Stuff\boost\boost\boost/python/make_function.hpp(104) : error C2780: 'class boost::python::api::object __cdecl boost::python::detail::make_function_aux(F,const CallPolicies &,const Sig &,const struct std::pair<struct boost::python::detail::keyword const *,struct boost::python::detail::keyword const *> &,NumKeywords)' : expects 5 arguments - 3 provided
D:\USERS\misha\Stuff\boost\boost\boost/python/make_function.hpp(46) : see declaration of 'make_function_aux'
D:\USERS\misha\Stuff\boost\boost\boost/python/def.hpp(82) : see reference to function template instantiation 'class boost::python::api::object __cdecl boost::python::make_function(bool (__cdecl *)(const class boost::python::api::object))' being compiled

CALL "C:\Program Files\Microsoft Visual Studio\VC98\bin\VCVARS32.BAT" >nul
"C:\Program Files\Microsoft Visual Studio\VC98\bin\cl" /Zm800 -nologo /EHsc -c -DBOOST_PYTHON_DYNAMIC_LIB /Z7 /Od /Ob0 /EHsc /GR /MDd -I"..\bin\boost\libs\python\test" -I"D:\USERS\misha\Stuff\boost\boost" -I"..\libs\python" -I"C:\PROGRA~1\Python23\include" -Fo"..\bin\boost\libs\python\test\const_argument_ext.pyd\msvc\debug\threading-multi\const_argument.obj" -Tp"..\libs\python\test\const_argument.cpp"

Compiling something in "const_argument_ext.pyd\...\"

...failed vc-C++ ..\bin\boost\libs\python\test\const_argument_ext.pyd\msvc\debug\threading-multi\const_argument.obj...

Compilation failed.

...skipped <@boost!libs!python!test\const_argument_ext.pyd\msvc\debug\threading-multi>const_argument_ext.CMD for lack of <@boost!libs!python!test\const_argument_ext.pyd\msvc\debug\threading-multi>const_argument.obj...
...skipped <@boost!libs!python!test\const_argument_ext.pyd\msvc\debug\threading-multi>const_argument_ext.pyd for lack of <@boost!libs!python!test\const_argument_ext.pyd\msvc\debug\threading-multi>const_argument_ext.CMD...
...skipped <@boost!libs!python!test\const_argument_ext.pyd\msvc\debug\threading-multi>const_argument_ext.lib for lack of <@boost!libs!python!test\const_argument_ext.pyd\msvc\debug\threading-multi>const_argument_ext.CMD...

Something from "const_argument_ext.pyd\...\" cannot
be built because it needs something from itself.

...skipped <@boost!libs!python!test\const_argument.test\msvc\debug\threading-multi>const_argument.run for lack of <@boost!libs!python!test\const_argument.test\msvc\debug\threading-multi>const_argument.pyd...

something from "const_argument.test\...\" cannot be built because it
needs something from itself.

Nowhere in bjam log is an indication that something from
"const_argument.test\...\" depends on something from "const_argument_ext.pyd\...\"

Of course somewhere deep inside of testing.jam and boost-base.jam
there is a DEPENDS rule which links
"const_argument.test\...\const_argument.pyd" to
"const_argument_ext.pyd\...\const_argument_ext.pyd", but because it
doesn't have any actions associated with it bjam doesn't display the
"...skipped" message for it.

P.S. The above bjam.log can be produced by commenting out all tests
except const_argument in libs/python/test/jamfile and commenting out
all libs except Boost.Python in status/jamfile. If the test passes on
the compiler you use, just make some obvious syntax errors in
const_argument.cpp.

-- 
Misha Bergal
MetaCommunications Engineering
 

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