On 11/07/16 22:29, Rene Rivera wrote:
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