Boost logo

Boost-Build :

Subject: Re: [Boost-build] Changed (wrong?) behavior with make/common.copy in master
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2018-06-09 03:36:32


On 06/08/2018 01:12 PM, Chambers, Matthew via Boost-build wrote:
> On master (c3dc95d3ac0219a0f774e6d382ed91d290cbde80) the behavior of my
> old make/copy targets has broken. With this simple Jamroot:
>> make copied.txt : others/others.txt : common.copy ;
>> make copied.txt : darwin/darwin.txt : common.copy : <toolset>darwin ;
>> actions make_libsettings
>> {
>>     echo boo > "$(<[1])"
>> }
>> make bar.txt : : @make_libsettings : <location>bin/foo
>> <dependency>copied.txt ;
> Here is the output of running b2 with -n.
>> common.mkdir bin\msvc-14.1
>>         if not exist "bin\msvc-14.1\\" mkdir "bin\msvc-14.1"
>> common.copy bin\msvc-14.1\copied.txt
>> <snip>
> I get different results if I comment out the second "make copied.txt"
> alternative:
>> common.copy bin\copied.txt
>> <snip>
> The result is the same regardless of whether the second "make
> copied.txt" alternative is commented out or not. My code expects the
> make targets to be copied to the full target path of the dependent
> targets. Is this change intentional?

This change is intentional. Boost.Build no longer
includes path components that do not affect the
build settings. You can use <relevant>toolset
to force Boost.Build to include the toolset in
the path. It will also work if you make copied.txt
depend on any compilation target.

In Christ,
Steven Watanabe

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at