Changed (wrong?) behavior with make/common.copy in master

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Changed (wrong?) behavior with make/common.copy in master

Boost - Build mailing list
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
>     copy /b "others\others.txt" + this-file-does-not-exist-A698EE7806899E69 "bin\msvc-14.1\copied.txt"
>
> common.mkdir bin\foo
>         if not exist "bin\foo\\" mkdir "bin\foo"
>
> Jamfile<C:\copytest>.make_libsettings bin\foo\bar.txt
>     echo boo > "bin\foo\bar.txt"

I get different results if I comment out the second "make copied.txt" alternative:
> common.copy bin\copied.txt
>     copy /b "others\others.txt" + this-file-does-not-exist-A698EE7806899E69 "bin\copied.txt"
>
> common.mkdir bin\foo
>         if not exist "bin\foo\\" mkdir "bin\foo"
>
> Jamfile<C:\copytest>.make_libsettings bin\foo\bar.txt
>     echo boo > "bin\foo\bar.txt"

Here is the result from my older checkout (sometime in late 2017, not sure of the exact commit):

> common.mkdir bin\msvc-14.1
>         if not exist "bin\msvc-14.1\\" mkdir "bin\msvc-14.1"
>
> common.mkdir bin\msvc-14.1\debug
>         if not exist "bin\msvc-14.1\debug\\" mkdir "bin\msvc-14.1\debug"
>
> common.mkdir bin\msvc-14.1\debug\threading-multi
>         if not exist "bin\msvc-14.1\debug\threading-multi\\" mkdir "bin\msvc-14.1\debug\threading-multi"
>
> common.copy bin\msvc-14.1\debug\threading-multi\copied.txt
>     copy /b "others\others.txt" + this-file-does-not-exist-A698EE7806899E69 "bin\msvc-14.1\debug\threading-multi\copied.txt"
>
> common.mkdir bin\foo
>         if not exist "bin\foo\\" mkdir "bin\foo"
>
> Jamfile<C:\copytest>.make_libsettings bin\foo\bar.txt
>     echo boo > "bin\foo\bar.txt"
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?

Thanks,
-Matt
_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build
Reply | Threaded
Open this post in threaded view
|

Re: Changed (wrong?) behavior with make/common.copy in master

Boost - Build mailing list
AMDG

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
_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build
Reply | Threaded
Open this post in threaded view
|

Reducing output from compile actions

Boost - Build mailing list
Instead of:

> compile-c-c++ C:\build-dir\msvc-14.1\rls\adrs-mdl-64\async-excpt-on\lnk-sttc\thrd-mlt\file.obj
> file.cpp

How can I make it just:
> compile-c-c++ C:\build-dir\msvc-14.1\rls\adrs-mdl-64\async-excpt-on\lnk-sttc\thrd-mlt\file.obj

And how could I do the same for common.copy? Instead of:
> common.copy C:\build-dir\msvc-14.1\rls\adrs-mdl-64\async-excpt-on\lnk-sttc\thrd-mlt\some.dll
> build-dir\some.file
>         1 file(s) copied.

Just:
> common.copy C:\build-dir\msvc-14.1\rls\adrs-mdl-64\async-excpt-on\lnk-sttc\thrd-mlt\some.dll

This would eliminate about 2 out of every 3 lines in my build logs.

Thanks,
-Matt
_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build