Boost logo

Boost :

Subject: Re: [boost] regex/ICU fix
From: Vladimir Prus (vladimir_at_[hidden])
Date: 2009-08-23 12:12:29


John Maddock wrote:

>>> Yes the ICU binary is always a dll, linked to the shared runtime.
>>> However,
>>> the regex binary could be a static lib as long as links to the same
>>> shared
>>> runtime as the ICU dll.
>>
>> OK, I have checked in this:
>>
>> https://svn.boost.org/trac/boost/changeset/55685
>
> Testing on Win32 checks out OK, but on Linux I see some errors, first off:
>
> john_at_john-laptop:~/boost/trunk$ bjam
> stage --with-regex -sHAVE_ICU=1 --build-type=complete
> Note: Building Boost.Regex with Unicode/ICU support enabled
> Using ICU in
> warning: forcing runtime-link=shared for Boost.Regex
> warning: this is required when using the ICU library
> /home/john/boost/trunk/tools/build/v2/build/virtual-target.jam:1056: in
> virtual-target.register-actual-name from module virtual-target
> error: Duplicate name of actual target: <pstage/lib>libboost_regex.a
> error: previous virtual target {
> common%common.copy-libboost_regex.a.STATIC_LIB {
> gcc%gcc.archive-libboost_regex.a.STATIC_LIB {
> gcc%gcc.compile.c++-c_regex_traits.o.OBJ { ../src/c_regex_traits.cpp.CPP } }
> { gcc%gcc.compile.c++-cpp_regex_traits.o.OBJ {
> ../src/cpp_regex_traits.cpp.CPP } } { gcc%gcc.compile.c++-cregex.o.OBJ {
> ../src/cregex.cpp.CPP } } { gcc%gcc.compile.c++-fileiter.o.OBJ {
> ../src/fileiter.cpp.CPP } } { gcc%gcc.compile.c++-icu.o.OBJ {
> ../src/icu.cpp.CPP } } { gcc%gcc.compile.c++-instances.o.OBJ {
> ../src/instances.cpp.CPP } } { gcc%gcc.compile.c++-posix_api.o.OBJ {
> ../src/posix_api.cpp.CPP } } { gcc%gcc.compile.c++-regex.o.OBJ {
> ../src/regex.cpp.CPP } } { gcc%gcc.compile.c++-regex_debug.o.OBJ {
> ../src/regex_debug.cpp.CPP } } { gcc%gcc.compile.c++-regex_raw_buffer.o.OBJ
> { ../src/regex_raw_buffer.cpp.CPP } } {
> gcc%gcc.compile.c++-regex_traits_defaults.o.OBJ {
> ../src/regex_traits_defaults.cpp.CPP } } {
> gcc%gcc.compile.c++-static_mutex.o.OBJ { ../src/static_mutex.cpp.CPP } } {
> gcc%gcc.compile.c++-w32_regex_traits.o.OBJ {
> ../src/w32_regex_traits.cpp.CPP } } {
> gcc%gcc.compile.c++-wc_regex_traits.o.OBJ {
> ../src/wc_regex_traits.cpp.CPP } } {
> gcc%gcc.compile.c++-wide_posix_api.o.OBJ { ../src/wide_posix_api.cpp.CPP } }
> { gcc%gcc.compile.c++-winstances.o.OBJ { ../src/winstances.cpp.CPP } } {
> gcc%gcc.compile.c++-usinstances.o.OBJ { ../src/usinstances.cpp.CPP } } } }
> error: created from ./stage-proper
> error: another virtual target {
> common%common.copy-libboost_regex.a.STATIC_LIB {
> gcc%gcc.archive-libboost_regex.a.STATIC_LIB {
> gcc%gcc.compile.c++-c_regex_traits.o.OBJ { ../src/c_regex_traits.cpp.CPP } }
> { gcc%gcc.compile.c++-cpp_regex_traits.o.OBJ {
> ../src/cpp_regex_traits.cpp.CPP } } { gcc%gcc.compile.c++-cregex.o.OBJ {
> ../src/cregex.cpp.CPP } } { gcc%gcc.compile.c++-fileiter.o.OBJ {
> ../src/fileiter.cpp.CPP } } { gcc%gcc.compile.c++-icu.o.OBJ {
> ../src/icu.cpp.CPP } } { gcc%gcc.compile.c++-instances.o.OBJ {
> ../src/instances.cpp.CPP } } { gcc%gcc.compile.c++-posix_api.o.OBJ {
> ../src/posix_api.cpp.CPP } } { gcc%gcc.compile.c++-regex.o.OBJ {
> ../src/regex.cpp.CPP } } { gcc%gcc.compile.c++-regex_debug.o.OBJ {
> ../src/regex_debug.cpp.CPP } } { gcc%gcc.compile.c++-regex_raw_buffer.o.OBJ
> { ../src/regex_raw_buffer.cpp.CPP } } {
> gcc%gcc.compile.c++-regex_traits_defaults.o.OBJ {
> ../src/regex_traits_defaults.cpp.CPP } } {
> gcc%gcc.compile.c++-static_mutex.o.OBJ { ../src/static_mutex.cpp.CPP } } {
> gcc%gcc.compile.c++-w32_regex_traits.o.OBJ {
> ../src/w32_regex_traits.cpp.CPP } } {
> gcc%gcc.compile.c++-wc_regex_traits.o.OBJ {
> ../src/wc_regex_traits.cpp.CPP } } {
> gcc%gcc.compile.c++-wide_posix_api.o.OBJ { ../src/wide_posix_api.cpp.CPP } }
> { gcc%gcc.compile.c++-winstances.o.OBJ { ../src/winstances.cpp.CPP } } {
> gcc%gcc.compile.c++-usinstances.o.OBJ { ../src/usinstances.cpp.CPP } } } }
> error: created from ./stage-proper
> error: added properties: <debug-symbols>off <define>NDEBUG <inlining>full
> <optimization>speed <runtime-debugging>off <variant>release
> error: removed properties: <debug-symbols>on <inlining>off <optimization>off
> <runtime-debugging>on <variant>debug
> /home/john/boost/trunk/tools/build/v2/build/virtual-target.jam:480: in
> actualize-no-scanner from module object(file-target)@1216
> /home/john/boost/trunk/tools/build/v2/build/virtual-target.jam:130: in
> object(file-target)@1216.actualize from module object(file-target)@1216
> /home/john/boost/trunk/tools/build/v2/build-system.jam:713: in load from
> module build-system
> /home/john/boost/trunk/tools/build/v2/kernel/modules.jam:283: in import from
> module modules
> /home/john/boost/trunk/tools/build/v2/kernel/bootstrap.jam:142: in
> boost-build from module
> /home/john/boost/trunk/boost-build.jam:17: in module scope from module
>
> Am I doing something wrong here? Is this due to the lib names not being
> mangled anymore? If so can we please have a better error message :-)

Apparently I've missed this part of your email as well :-( Anyway, I've
added code to say this:

error: Cannot use --layout=system with --build-type complete.
error: Please used either --layout=versioned or --layout=tagged
error: if you wish to build multiple variants.
error: Note that --layout=system is default on Unix starting with Boost 1.40.

This is on trunk now. Because this is essentially changing one error message
to another, I'll merge this to release branch momentary.

- Volodya


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