|
Boost Testing : |
Subject: Re: [Boost-testing] Tried to build the target twice
From: Dmitry Moskalchuk (dm_at_[hidden])
Date: 2016-07-12 14:54:07
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