Tried to build the target twice

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

Tried to build the target twice

Dmitry Moskalchuk
Hello,

Last couple of days I see the following problem running Boost regression
tests for Android:

error: Name clash for '<p/home/cislave/.crystax/ci-boost/regression/android-21-x86-gnu-develop/test/develop/regression/x86/test/results/boost/bin.v2/libs/gil/test/__boost_check_library__.test/gcc-4.9/release/link-static/target-os-android/threading-multi>__boost_check_library__.test'
error:
error: Tried to build the target twice, with property sets having
error: these incompatible properties:
error:
error:     -  none
error:     -  none
error:
error: Please make sure to have consistent requirements for these
error: properties everywhere in your project, especially for install
error: targets.

Does anybody known what that means? It's obviously result of the recent changes in Boost sources, since it appears just couple of days ago, but I have no idea where to see to fix that.

I suspect it has something to the fact we're running b2 with both static and shared variants enabled simultaneously. As far as I know, none of the Boost publishing testers do that - they all run b2 either with static or shared Boost libraries, but not with both static _and_ shared at the same time. It looks like the path for target doesn't take into account static/shared linking variant and produce the same target name for both of them, causing this error. What do you think?


--
Dmitry Moskalchuk



_______________________________________________
Boost-Testing mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/boost-testing

signature.asc (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Tried to build the target twice

Rene Rivera-2
On Sun, Jul 10, 2016 at 12:47 PM, Dmitry Moskalchuk <[hidden email]> wrote:
Hello,

Last couple of days I see the following problem running Boost regression
tests for Android:

error: Name clash for '<p/home/cislave/.crystax/ci-boost/regression/android-21-x86-gnu-develop/test/develop/regression/x86/test/results/boost/bin.v2/libs/gil/test/__boost_check_library__.test/gcc-4.9/release/link-static/target-os-android/threading-multi>__boost_check_library__.test'
error:
error: Tried to build the target twice, with property sets having
error: these incompatible properties:
error:
error:     -  none
error:     -  none
error:
error: Please make sure to have consistent requirements for these
error: properties everywhere in your project, especially for install
error: targets.

Does anybody known what that means? It's obviously result of the recent changes in Boost sources, since it appears just couple of days ago, but I have no idea where to see to fix that.

Don't really know.
 
I suspect it has something to the fact we're running b2 with both static and shared variants enabled simultaneously. As far as I know, none of the Boost publishing testers do that - they all run b2 either with static or shared Boost libraries, but not with both static _and_ shared at the same time. It looks like the path for target doesn't take into account static/shared linking variant and produce the same target name for both of them, causing this error. What do you think?

I don't think it's the static & shared at the same time though. Because if I do:

cd boost-root/status
b2 -n -d0 --dump-tests link=shared,static

There are no errors.

What is the b2 invocation that is causing the errors for you?

-- Rene Rivera
-- Grafik - Don't Assume Anything
-- Robot Dreams - http://robot-dreams.net
-- rrivera/acm.org (msn) - grafikrobot/aim,yahoo,skype,efnet,gmail

_______________________________________________
Boost-Testing mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/boost-testing
Reply | Threaded
Open this post in threaded view
|

Re: Tried to build the target twice

Dmitry Moskalchuk
On 11/07/16 22:29, Rene Rivera wrote:
I don't think it's the static & shared at the same time though. Because if I do:

cd boost-root/status
b2 -n -d0 --dump-tests link=shared,static

There are no errors.

Yes, you're right. It has nothing to the static/shared linking. I have investigated it a little and found that actually it's caused by the fact we're using custom python in our user-config.jam. This python is one included to the CrystaX NDK - i.e. Python intended to be running on Android. Python executable is Android executable, but Boost regression scripts tries to run it on host machine - i.e. on GNU/Linux. Obviously, it doesn't work. Here are related messages from regression log:

notice: Loading user-config configuration file 'user-config.jam' from '/home/crystax/.crystax/ci-boost/regression/android-21-x86-gnu-develop/test/develop/regression/x86/test'.
notice: [python-cfg] Configuring python...
notice: [python-cfg]   user-specified version: "3.5"
notice: [python-cfg]   user-specified cmd-or-prefix: "/home/crystax/.crystax/ci-boost/regression/android-21-x86-gnu-develop/tmp/crystax-ndk-10.3.1/sources/python/3.5"
notice: [python-cfg]   user-specified includes: "/home/crystax/.crystax/ci-boost/regression/android-21-x86-gnu-develop/tmp/crystax-ndk-10.3.1/sources/python/3.5/include/python"
notice: [python-cfg]   user-specified libraries: "/home/crystax/.crystax/ci-boost/regression/android-21-x86-gnu-develop/tmp/crystax-ndk-10.3.1/sources/python/3.5/libs/x86"
notice: [python-cfg] Checking interpreter command "/home/crystax/.crystax/ci-boost/regression/android-21-x86-gnu-develop/tmp/crystax-ndk-10.3.1/sources/python/3.5/bin/python3.5"...
notice: [python-cfg] running command '/home/crystax/.crystax/ci-boost/regression/android-21-x86-gnu-develop/tmp/crystax-ndk-10.3.1/sources/python/3.5/bin/python3.5 -c "from sys import *; print('version=%d.%d\nplatform=%s\nprefix=%s\nexec_prefix=%s\nexecutable=%s' % (version_info[0],version_info[1],platform,prefix,exec_prefix,executable))" 2>&1'
notice: [python-cfg] ...does not invoke a working interpreter
notice: [python-cfg] Checking interpreter command "/home/crystax/.crystax/ci-boost/regression/android-21-x86-gnu-develop/tmp/crystax-ndk-10.3.1/sources/python/3.5/bin/python"...
notice: [python-cfg] running command '/home/crystax/.crystax/ci-boost/regression/android-21-x86-gnu-develop/tmp/crystax-ndk-10.3.1/sources/python/3.5/bin/python -c "from sys import *; print('version=%d.%d\nplatform=%s\nprefix=%s\nexec_prefix=%s\nexecutable=%s' % (version_info[0],version_info[1],platform,prefix,exec_prefix,executable))" 2>&1'
notice: [python-cfg] ...does not invoke a working interpreter
notice: [python-cfg] No working Python interpreter found.

Here is our user-config.jam used for testing:

import python ;
using python : 3.5 : /home/crystax/.crystax/ci-boost/regression/android-21-x86-gnu-develop/tmp/crystax-ndk-10.3.1/sources/python/3.5 : /home/crystax/.crystax/ci-boost/regression/android-21-x86-gnu-develop/tmp/crystax-ndk-10.3.1/sources/python/3.5/include/python : /home/crystax/.crystax/ci-boost/regression/android-21-x86-gnu-develop/tmp/crystax-ndk-10.3.1/sources/python/3.5/libs/x86 ;
using gcc : 5 : /home/crystax/.crystax/ci-boost/regression/android-21-x86-gnu-develop/test/develop/regression/x86/gcc-5/g++-5 ;

If I remove line "using python : .....", everything works (of course, except of Boost.Python tests, since they requires Android-targeted Python headers and libraries). So, as far as I see, root cause is that the same Python used for both host and target needs, which is OK when host and target are the same (GNU/Linux, for example), but fails when they are different, as in our case - host is GNU/Linux machine, and target is Android.

This looks as a more-or-less recent change in Boost regression scripts, since I've added "using python" to our user-config.jam some time ago (I don't remember exactly but it was not later than half of year ago), but tests started failing just about a week ago (well, maybe several weeks ago). Does this conclusion looks right for you?

If I'm right, we have to do something with that. This is not strictly Android-related issue, it is another cross-build testing problem of Boost.

--
Dmitry Moskalchuk


_______________________________________________
Boost-Testing mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/boost-testing

signature.asc (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Tried to build the target twice

Rene Rivera-2
On Tue, Jul 12, 2016 at 1:54 PM, Dmitry Moskalchuk <[hidden email]> wrote:
This looks as a more-or-less recent change in Boost regression scripts, since I've added "using python" to our user-config.jam some time ago (I don't remember exactly but it was not later than half of year ago), but tests started failing just about a week ago (well, maybe several weeks ago). Does this conclusion looks right for you?

Yes, that looks like the correct conclusion. The library check tests I added run a Python script using the built-in python test rules. 

If I'm right, we have to do something with that. This is not strictly Android-related issue, it is another cross-build testing problem of Boost.

I'll have to think about how to deal with this :-)


--
-- Rene Rivera
-- Grafik - Don't Assume Anything
-- Robot Dreams - http://robot-dreams.net
-- rrivera/acm.org (msn) - grafikrobot/aim,yahoo,skype,efnet,gmail

_______________________________________________
Boost-Testing mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/boost-testing
Reply | Threaded
Open this post in threaded view
|

Re: Tried to build the target twice

Rene Rivera-2
On Thu, Jul 14, 2016 at 11:09 AM, Rene Rivera <[hidden email]> wrote:
On Tue, Jul 12, 2016 at 1:54 PM, Dmitry Moskalchuk <[hidden email]> wrote:
This looks as a more-or-less recent change in Boost regression scripts, since I've added "using python" to our user-config.jam some time ago (I don't remember exactly but it was not later than half of year ago), but tests started failing just about a week ago (well, maybe several weeks ago). Does this conclusion looks right for you?

Yes, that looks like the correct conclusion. The library check tests I added run a Python script using the built-in python test rules. 

If I'm right, we have to do something with that. This is not strictly Android-related issue, it is another cross-build testing problem of Boost.

I'll have to think about how to deal with this :-)

OK, I have a solution. It should now work that you can specify a target-os condition when configuring the python interpreter. The init for python.jam always had optional conditions for the interpreter, but unfortunately it was not usable for target-os because of the way it added the global toolset requirements. I've fixed that now. And I've also changed the Boost status/Jamfile to only use the host-os python interpreter accordingly. In your case all you need to do is add <target-os>??? when doing the "using python ..". That's assuming you build with "target-os=???". You might have to add a plain "using python ;" to configure the host-os python interpreter also, which is what the library check tests will use.



--
-- Rene Rivera
-- Grafik - Don't Assume Anything
-- Robot Dreams - http://robot-dreams.net
-- rrivera/acm.org (msn) - grafikrobot/aim,yahoo,skype,efnet,gmail

_______________________________________________
Boost-Testing mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/boost-testing
Reply | Threaded
Open this post in threaded view
|

Re: Tried to build the target twice

Dmitry Moskalchuk
On 17/07/16 01:44, Rene Rivera wrote:
OK, I have a solution. It should now work that you can specify a target-os condition when configuring the python interpreter. The init for python.jam always had optional conditions for the interpreter, but unfortunately it was not usable for target-os because of the way it added the global toolset requirements. I've fixed that now. And I've also changed the Boost status/Jamfile to only use the host-os python interpreter accordingly. In your case all you need to do is add <target-os>??? when doing the "using python ..". That's assuming you build with "target-os=???". You might have to add a plain "using python ;" to configure the host-os python interpreter also, which is what the library check tests will use.

Thank you for help!

Yes, we're using "target-os=android" as b2 command line parameter.

However, something is still unclear. Just to confirm, do you mean adding "<target-os>android" to "using python" directive in user-config.jam, right? If yes, where exactly it should be added? Lets look on our "using python" line:

using python : 3.5 : $PYDIR : $PYDIR/include/python : $PYDIR/libs/armeabi-v7a ;

Could you please point me where to put "<target-os>android" exactly? I'm asking this just because it's still unclear for me even after looking on your commit (https://github.com/boostorg/build/commit/78ffbe094400d277627b2c19ceb182d637b8baca), and I know how sensitive bjam to syntax of Jamfiles (even spaces are important!), so I can easily break everything, and edit-build-run loop is too long to just try and see.

--
Dmitry Moskalchuk


_______________________________________________
Boost-Testing mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/boost-testing

signature.asc (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Tried to build the target twice

Rene Rivera-2
On Sun, Jul 17, 2016 at 4:19 PM, Dmitry Moskalchuk <[hidden email]> wrote:
On 17/07/16 01:44, Rene Rivera wrote:
OK, I have a solution. It should now work that you can specify a target-os condition when configuring the python interpreter. The init for python.jam always had optional conditions for the interpreter, but unfortunately it was not usable for target-os because of the way it added the global toolset requirements. I've fixed that now. And I've also changed the Boost status/Jamfile to only use the host-os python interpreter accordingly. In your case all you need to do is add <target-os>??? when doing the "using python ..". That's assuming you build with "target-os=???". You might have to add a plain "using python ;" to configure the host-os python interpreter also, which is what the library check tests will use.

Thank you for help!

Yes, we're using "target-os=android" as b2 command line parameter.

However, something is still unclear. Just to confirm, do you mean adding "<target-os>android" to "using python" directive in user-config.jam, right? If yes, where exactly it should be added? Lets look on our "using python" line:

using python : 3.5 : $PYDIR : $PYDIR/include/python : $PYDIR/libs/armeabi-v7a ;

Could you please point me where to put "<target-os>android" exactly? I'm asking this just because it's still unclear for me even after looking on your commit (https://github.com/boostorg/build/commit/78ffbe094400d277627b2c19ceb182d637b8baca), and I know how sensitive bjam to syntax of Jamfiles (even spaces are important!), so I can easily break everything, and edit-build-run loop is too long to just try and see.

No problem.. It's the 5th argument per <https://github.com/boostorg/build/blob/develop/src/tools/python.jam#L63>. So the above it would be:

using python : 3.5 : $PYDIR : $PYDIR/include/python : $PYDIR/libs/armeabi-v7a : <target-os>android ;

HTH.

--
-- Rene Rivera
-- Grafik - Don't Assume Anything
-- Robot Dreams - http://robot-dreams.net
-- rrivera/acm.org (msn) - grafikrobot/aim,yahoo,skype,efnet,gmail

_______________________________________________
Boost-Testing mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/boost-testing
Reply | Threaded
Open this post in threaded view
|

Re: Tried to build the target twice

Dmitry Moskalchuk
On 18/07/16 01:09, Rene Rivera wrote:
No problem.. It's the 5th argument per <https://github.com/boostorg/build/blob/develop/src/tools/python.jam#L63>. So the above it would be:

using python : 3.5 : $PYDIR : $PYDIR/include/python : $PYDIR/libs/armeabi-v7a : <target-os>android ;

HTH.

I see... Thank you for help! I'll try and let you know if that fixes the issue.

--
Dmitry Moskalchuk


_______________________________________________
Boost-Testing mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/boost-testing

signature.asc (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Tried to build the target twice

Dmitry Moskalchuk
In reply to this post by Rene Rivera-2
On 18/07/16 01:09, Rene Rivera wrote:
No problem.. It's the 5th argument per <https://github.com/boostorg/build/blob/develop/src/tools/python.jam#L63>. So the above it would be:

using python : 3.5 : $PYDIR : $PYDIR/include/python : $PYDIR/libs/armeabi-v7a : <target-os>android ;

HTH.

Yes, that helps! Our testing process is back to normal.

Thank you for help!

--
Dmitry Moskalchuk


_______________________________________________
Boost-Testing mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/boost-testing

signature.asc (1K) Download Attachment