Boost logo

Boost-Build :

Subject: Re: [Boost-build] Baffling build properties
From: Dave Abrahams (dave_at_[hidden])
Date: 2010-11-18 05:00:44


On Thu, Nov 18, 2010 at 4:24 AM, Vladimir Prus <ghost_at_[hidden]> wrote:
> On Thursday, November 18, 2010 10:44:17 David Abrahams wrote:
>> At Thu, 18 Nov 2010 09:38:35 +0300,
>>
>> Vladimir Prus wrote:
>> > On Thursday, November 18, 2010 05:02:44 David Abrahams wrote:
>> > > The build I am running works just fine unless I add "address-model=64"
>> > >
>> > > to the command line, at which point I get:
>> > >   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
>> > >
>> > > and BB bails out.  What the...?  I'm just building boost's "stage"
>> > > target.  How can I get around this problem, please!?
>> >
>> > What is exact command line?
>>
>> bjam -j2 --user-config=W:\work\installer\user-config.jam
>>      --build-dir=W:\work\installer\1_44-installer\build
>>      --stagedir=W:\work\installer\1_44-installer\stage
>>      --debug-configuration address-model=64 --build-type=complete
>>      toolset=msvc-10.0express stage
>>
>> > And -- what Boost?
>>
>> 1.44.0
>>
>> > I'm sure I was fixing a problem where some library was working
>> > link=shared without also forcing runtime-link=static.
>>
>> Yeah, that sounds familiar.  Any idea which one?
>
> mpi, I think. I have, in trunk, this:
>
>    python-extension mpi
>      : # Sources
>       ....
>      : # Requirements
>         ....
>        <link>shared <runtime-link>shared
>      ;
>
> I believe that 1.44 has only <link>shared on the last line, which is
> causingthe problem.

Frankly this looks like a build system bug (rather than an MPI Jamfile
bug) to me, but that's for another day.

>> > You can use --debug-building to figure what library is being built when
>> > this error message is output.
>>
>> Hmm... something looks fishy about the properties set up for
>> --build-type=complete in Jamroot.  Seems like <link> and
>> <runtime-link> are supposed to always have the same value, but Jamroot
>> isn't ensuring that.
>
> Are you sure? The stage target in Jamroot filters out invalid properties.

Yeah, I spent hours debugging that. It *tries* to filter out invalid
properties, but different property sets sneak in later somehow. Some
of these property sets don't have a <link> property, so they would
sneak past any later filters if you had them.

> The
> problem only happens after specific target forces shared link without forcing
> shared runtime.
> (Anyway, --debug-building was supposed to tell what is the target being built
> right before the error message. In case my guess mpi is at fault, please take
> a look at the output or post it)

If I can get back to that point, I'll do it. Thanks!

-- 
Dave Abrahams
BoostPro Computing
http://www.boostpro.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