Subject: Re: [boost] "I want everything" should build "out of the box" (on Windows)
From: OvermindDL1 (overminddl1_at_[hidden])
Date: 2009-07-28 04:18:35


On Mon, Jul 27, 2009 at 11:51 PM, KTC<ktc_at_[hidden]> wrote:
> Users on Microsoft Windows should be able to build boost with everything,
> both in terms of all supported variants and all boost libraries, with a
> single command to bjam assuming they have all the optional supporting
> libraries available.
>
> An user download boost, and want to build all the libraries that require
> building go read the Getting Started Guide
> <.../getting_started/windows.html#invoke-bjam> and see the after getting
> bjam they use the command
>  bjam --build-dir=build-directory toolset=toolset-name --build-type=complete
> stage
>
> So they enter that into the command prompt and see lots of warnings and
> notes about missing optional components. The warnings and notes itself is
> fine and informative. Actually, it's incomplete as it stand as it doesn't
> tell the user about Boost.IOStreams optional component requirement of bzip2
> & zlib headers. Okay, the user go and install all the optional components
> the warnings and notes tell them. After installing Python, ICU (building it
> first), Expat (building it first), and MPI (say MS-MPI), they try again.
> This time with the command becoming
>  bjam --toolset=... --build-dir=... --build-type=complete -sHAVE_ICU=1
> -sICU_PATH="..." -sEXPAT_INCLUDE="..." -sEXPAT_LIBPATH="..."
> -sBZIP2_SOURCE="..." -sZLIB_SOURCE="..." stage
>
> Nope, MPI requires modification of user-config.jam or building it on its own
> with --with-mpi. Why? No other optional components build that way. So they
> look to see how they do that, and does it.
>
> Second attempt and ... nope. New to 1.39 is the errors
>  error: link=shared together with runtime-link=static is not allowed
>  error: such property combination is either impossible
>  error: or too dangerious to be of any use
> due to the changes made as a result of
> <http://listarchives.boost.org/Archives/boost/2009/04/150675.php>. (Recently noted
> on
> <http://groups.google.com/group/boost-list/browse_thread/thread/2a7bd07468b5ffe6>.)
> While catching those errors is good, maybe it should be fixed as well such
> that it doesn't come up in the first place if someone do a
> --build-type=complete with ICU. So now the users have to build Boost.Regex
> separately from the rest of the library (after finding how to pass the link=
> & runtime-link= options). By the way, at this point I would like to point
> out how it's strange that -sHAVE_ICU=1 mean to build with ICU, but so is
> -sHAVE_ICU=0 .... :S
>
> And ... nope, even separately Boost.Regex still wouldn't build without
> errors. No one told them they need to rename icuin.lib, icuind.lib,
> icuind.pdb & icudt.lib from ICU to icui18n.lib, icui18nd.lib, icui18nd.pdb &
> icudata.lib respectively.
>
> With Boost.Regex built, we turn to the rest of the library with
> --without-regex. After waiting a while, we discover ... nope, Most of the
> library is built but not Boost.Graph. Sorry, this time no one told them they
> need to change Boost.Graph's Jamfile.v2 file with
> "<find-shared-library>expat" to "<find-shared-library>libexpatwMT" and
> adding "<define>XML_STATIC".
>
> Boost is great, it's free, it's flexible and I understand it's developed for
> free by volunteers, but its "installation" for someone that want every
> libraries could be improved. :-)

As direct as all this was, I have to say that I have experienced
*everything* he has, and more. The .bat file I have for building
boost is getting rather large with all the stuff I have it do just to
work-around so many things. I have mentioned a few of those on the
boost lists, multiple times actually, but nothing has come from it.
The build system definitely needs to be cleaned up a bit though, or at
least made more consistent. That Boost.Regex and ICU annoyances took
a bit of time to figure out when I first experienced each of those
errors, and the odd thing, those errors have been propagating through
many version now, and new ones seem to keep popping up, many of which
I have talked about on this list, how to fix it, why it should be
fixed, but no one that has commit privileges has yet done anything.