
As reported previously, --build-type=complete does not work if ICU is also configured. The below patch makes build process suppress building static Boost.Regex in this case. The wording is as follows: ghost@wind:~/Work/Boost/boost-svn$ bjam link=static runtime-link=static --with-regex .... warning: when using ICU, Boost.Regex must be a dynamic library warning: forcing link=shared runtime-link=shared for Boost.Regex Note: Building Boost.Regex with Unicode/ICU support enabled Using ICU in /usr/include Note that the warning is printed before the message that we're using ICU, which is ugly, but what I have is a minimal change. I'll tweak those configuration messages for 1.41. Comments? Ok for release branch? - Volodya

As reported previously, --build-type=complete does not work if ICU is also configured. The below patch makes build process suppress building static Boost.Regex in this case. The wording is as follows:
ghost@wind:~/Work/Boost/boost-svn$ bjam link=static runtime-link=static --with-regex .... warning: when using ICU, Boost.Regex must be a dynamic library warning: forcing link=shared runtime-link=shared for Boost.Regex Note: Building Boost.Regex with Unicode/ICU support enabled Using ICU in /usr/include
Note that the warning is printed before the message that we're using ICU, which is ugly, but what I have is a minimal change. I'll tweak those configuration messages for 1.41. Comments? Ok for release branch?
Does this disable building for link=static runtime-link=dynamic ? It looks like it does, but this configuration is OK, it's just the runtime that must be shared for things to work correctly. Thanks, John.

John Maddock wrote:
As reported previously, --build-type=complete does not work if ICU is also configured. The below patch makes build process suppress building static Boost.Regex in this case. The wording is as follows:
ghost@wind:~/Work/Boost/boost-svn$ bjam link=static runtime-link=static --with-regex .... warning: when using ICU, Boost.Regex must be a dynamic library warning: forcing link=shared runtime-link=shared for Boost.Regex Note: Building Boost.Regex with Unicode/ICU support enabled Using ICU in /usr/include
Note that the warning is printed before the message that we're using ICU, which is ugly, but what I have is a minimal change. I'll tweak those configuration messages for 1.41. Comments? Ok for release branch?
Does this disable building for link=static runtime-link=dynamic ? It looks like it does, but this configuration is OK, it's just the runtime that must be shared for things to work correctly.
Hmm, from the <link>shared requirement for all ICU targets I concluded that it's the ICU libraries that are always shared. If you are saying that even while they are shared, it's OK to have static regex link to shared ICU, provided shared runtime is used, I can tweak the logic to force shared runtime only. - Volodya

On Thu, Aug 20, 2009 at 6:42 AM, Vladimir Prus<vladimir@codesourcery.com> wrote:
John Maddock wrote:
As reported previously, --build-type=complete does not work if ICU is also configured. The below patch makes build process suppress building static Boost.Regex in this case. The wording is as follows:
ghost@wind:~/Work/Boost/boost-svn$ bjam link=static runtime-link=static --with-regex .... warning: when using ICU, Boost.Regex must be a dynamic library warning: forcing link=shared runtime-link=shared for Boost.Regex Note: Building Boost.Regex with Unicode/ICU support enabled Using ICU in /usr/include
Note that the warning is printed before the message that we're using ICU, which is ugly, but what I have is a minimal change. I'll tweak those configuration messages for 1.41. Comments? Ok for release branch?
Does this disable building for link=static runtime-link=dynamic ? It looks like it does, but this configuration is OK, it's just the runtime that must be shared for things to work correctly.
Hmm, from the <link>shared requirement for all ICU targets I concluded that it's the ICU libraries that are always shared. If you are saying that even while they are shared, it's OK to have static regex link to shared ICU, provided shared runtime is used, I can tweak the logic to force shared runtime only.
Volodya, Once you and John are certain you've got the logic right, and tests are cycling OK on trunk, please do commit to release. I'll be traveling Friday and Saturday, but hope to get the release out at the start of the week. So it would be nice if all commits were complete by Sunday so tests have a chance to cycle. Thanks, --Beman

Beman Dawes wrote:
On Thu, Aug 20, 2009 at 6:42 AM, Vladimir Prus<vladimir@codesourcery.com> wrote:
John Maddock wrote:
As reported previously, --build-type=complete does not work if ICU is also configured. The below patch makes build process suppress building static Boost.Regex in this case. The wording is as follows:
ghost@wind:~/Work/Boost/boost-svn$ bjam link=static runtime-link=static --with-regex .... warning: when using ICU, Boost.Regex must be a dynamic library warning: forcing link=shared runtime-link=shared for Boost.Regex Note: Building Boost.Regex with Unicode/ICU support enabled Using ICU in /usr/include
Note that the warning is printed before the message that we're using ICU, which is ugly, but what I have is a minimal change. I'll tweak those configuration messages for 1.41. Comments? Ok for release branch?
Does this disable building for link=static runtime-link=dynamic ? It looks like it does, but this configuration is OK, it's just the runtime that must be shared for things to work correctly.
Hmm, from the <link>shared requirement for all ICU targets I concluded that it's the ICU libraries that are always shared. If you are saying that even while they are shared, it's OK to have static regex link to shared ICU, provided shared runtime is used, I can tweak the logic to force shared runtime only.
Volodya,
Once you and John are certain you've got the logic right, and tests are cycling OK on trunk, please do commit to release.
FWIW, tests won't catch any possible bugs with this patch. We don't run runtime-link=static tests.
I'll be traveling Friday and Saturday, but hope to get the release out at the start of the week. So it would be nice if all commits were complete by Sunday so tests have a chance to cycle.
Will try. Thanks, Volodya

Hmm, from the <link>shared requirement for all ICU targets I concluded that it's the ICU libraries that are always shared. If you are saying that even while they are shared, it's OK to have static regex link to shared ICU, provided shared runtime is used, I can tweak the logic to force shared runtime only.
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. HTH, John.

John Maddock wrote:
Hmm, from the <link>shared requirement for all ICU targets I concluded that it's the ICU libraries that are always shared. If you are saying that even while they are shared, it's OK to have static regex link to shared ICU, provided shared runtime is used, I can tweak the logic to force shared runtime only.
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 I'll merge to release branch tomorrow. - Volodya

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:
Testing on Win32 checks out OK, but on Linux I see some errors, first off: john@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 :-) And when I set ICU_PATH I see a different error: john@john-laptop:~/boost/trunk$ bjam stage --with-regex -sICU_PATH=../../download/open/icu-4.2 /home/john/boost/trunk/tools/build/v2/build/property.jam:455: in property.translate-paths *** argument error * rule path.root ( path root ) * called with: ( libs/regex/build ) * missing argument root /home/john/boost/trunk/tools/build/v2/util/path.jam:201:see definition of rule 'root' being called /home/john/boost/trunk/tools/build/v2/build/property-set.jam:386: in property-set.create-from-user-input /home/john/boost/trunk/tools/build/v2/build/property-set.jam:448: in property-set.refine-from-user-input /home/john/boost/trunk/tools/build/v2/build/targets.jam:1505: in targets.main-target-requirements /home/john/boost/trunk/tools/build/v2/tools/builtin.jam:602: in lib libs/regex/build/Jamfile.v2:222: in modules.load /home/john/boost/trunk/tools/build/v2/build/project.jam:313: in load-jamfile /home/john/boost/trunk/tools/build/v2/build/project.jam:62: in project.load /home/john/boost/trunk/tools/build/v2/build/project.jam:754: in project.use /home/john/boost/trunk/tools/build/v2/build/project.jam:89: in load-used-projects /home/john/boost/trunk/tools/build/v2/build/project.jam:73: in load /home/john/boost/trunk/tools/build/v2/build/project.jam:168: in project.find /home/john/boost/trunk/tools/build/v2/build-system.jam:553: in load /home/john/boost/trunk/tools/build/v2/kernel/modules.jam:283: in import /home/john/boost/trunk/tools/build/v2/kernel/bootstrap.jam:142: in boost-build /home/john/boost/trunk/boost-build.jam:17: in module scope Note that my Boost tree is actually located on a windows NTFS drive with \r\n line endings, could/should this effect things? Thanks, John.

Ping?
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:
Testing on Win32 checks out OK, but on Linux I see some errors, first off:
john@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 :-)
And when I set ICU_PATH I see a different error:
john@john-laptop:~/boost/trunk$ bjam stage --with-regex -sICU_PATH=../../download/open/icu-4.2 /home/john/boost/trunk/tools/build/v2/build/property.jam:455: in property.translate-paths *** argument error * rule path.root ( path root ) * called with: ( libs/regex/build ) * missing argument root /home/john/boost/trunk/tools/build/v2/util/path.jam:201:see definition of rule 'root' being called /home/john/boost/trunk/tools/build/v2/build/property-set.jam:386: in property-set.create-from-user-input /home/john/boost/trunk/tools/build/v2/build/property-set.jam:448: in property-set.refine-from-user-input /home/john/boost/trunk/tools/build/v2/build/targets.jam:1505: in targets.main-target-requirements /home/john/boost/trunk/tools/build/v2/tools/builtin.jam:602: in lib libs/regex/build/Jamfile.v2:222: in modules.load /home/john/boost/trunk/tools/build/v2/build/project.jam:313: in load-jamfile /home/john/boost/trunk/tools/build/v2/build/project.jam:62: in project.load /home/john/boost/trunk/tools/build/v2/build/project.jam:754: in project.use /home/john/boost/trunk/tools/build/v2/build/project.jam:89: in load-used-projects /home/john/boost/trunk/tools/build/v2/build/project.jam:73: in load /home/john/boost/trunk/tools/build/v2/build/project.jam:168: in project.find /home/john/boost/trunk/tools/build/v2/build-system.jam:553: in load /home/john/boost/trunk/tools/build/v2/kernel/modules.jam:283: in import /home/john/boost/trunk/tools/build/v2/kernel/bootstrap.jam:142: in boost-build /home/john/boost/trunk/boost-build.jam:17: in module scope
Note that my Boost tree is actually located on a windows NTFS drive with \r\n line endings, could/should this effect things?
Thanks, John.
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-------------------------------------------------------------------------------- No virus found in this incoming message. Checked by AVG - www.avg.com Version: 8.5.409 / Virus Database: 270.13.61/2314 - Release Date: 08/19/09 18:06:00

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:
Testing on Win32 checks out OK, but on Linux I see some errors, first off:
john@john-laptop:~/boost/trunk$ bjam stage --with-regex -sHAVE_ICU=1 --build-type=complete
This command line is missing --layout=versioned. The default now is --layout=system - Volodya

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:
Testing on Win32 checks out OK, but on Linux I see some errors, first off:
john@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 :-)
And when I set ICU_PATH I see a different error:
john@john-laptop:~/boost/trunk$ bjam stage --with-regex -sICU_PATH=../../download/open/icu-4.2 /home/john/boost/trunk/tools/build/v2/build/property.jam:455: in property.translate-paths *** argument error * rule path.root ( path root ) * called with: ( libs/regex/build ) * missing argument root
I've missed this part. Can you please try an absolute path? I'll check this error message later today. - Volodya

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:
Testing on Win32 checks out OK, but on Linux I see some errors, first off:
john@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 :-)
And when I set ICU_PATH I see a different error:
john@john-laptop:~/boost/trunk$ bjam stage --with-regex -sICU_PATH=../../download/open/icu-4.2 /home/john/boost/trunk/tools/build/v2/build/property.jam:455: in property.translate-paths *** argument error * rule path.root ( path root ) * called with: ( libs/regex/build ) * missing argument root /home/john/boost/trunk/tools/build/v2/util/path.jam:201:see definition of rule 'root' being called
While the error message could be better, I believe the error is yours :-) See this code: 36689 johnmaddock if $(ICU_PATH) 29658 johnmaddock { 36689 johnmaddock if $(ICU_PATH) != "/usr" && $(ICU_PATH) != "/usr/local" 36689 johnmaddock { 36689 johnmaddock BOOST_REGEX_ICU_OPTS += "<include>$(ICU_PATH)/include" ; 36689 johnmaddock ICU_SEARCH_OPTS = <search>/$(ICU_PATH)/lib ; 36689 johnmaddock } 29658 johnmaddock } If ICU_PATH is ../whatever, you end up with <search>/../whatever and it is not a valid path. I've made the obvious fix, verified that things work with: bjam -sICU_PATH=../../../../../usr --with-regex and checked in. Because this fix seems to be most obvious possible, I've also merged to release branch. HTH, Volodya

While the error message could be better, I believe the error is yours :-) See this code:
36689 johnmaddock if $(ICU_PATH) 29658 johnmaddock { 36689 johnmaddock if $(ICU_PATH) != "/usr" && $(ICU_PATH) != "/usr/local" 36689 johnmaddock { 36689 johnmaddock BOOST_REGEX_ICU_OPTS += "<include>$(ICU_PATH)/include" ; 36689 johnmaddock ICU_SEARCH_OPTS = <search>/$(ICU_PATH)/lib ; 36689 johnmaddock } 29658 johnmaddock }
If ICU_PATH is ../whatever, you end up with
<search>/../whatever
and it is not a valid path. I've made the obvious fix, verified that things work with:
bjam -sICU_PATH=../../../../../usr --with-regex
and checked in. Because this fix seems to be most obvious possible, I've also merged to release branch.
Thanks, that almost gets it: there is still one small SNAFU: if ICU_PATH is a relative path then "<include>$(ICU_PATH)/include" strips any leading ".." components from the path, so for example ../../download/icu becomes download/icu when passed to the compiler. Any ideas? Thanks, John.

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:
Testing on Win32 checks out OK, but on Linux I see some errors, first off:
john@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
participants (3)
-
Beman Dawes
-
John Maddock
-
Vladimir Prus