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