classification
Title: android: test_distutils fails
Type: behavior Stage: resolved
Components: Tests Versions: Python 3.7, Python 3.6
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: xdegaye Nosy List: Alex.Willmer, dstufft, merwok, python-dev, xdegaye
Priority: normal Keywords: patch

Created on 2016-05-03 14:25 by xdegaye, last changed 2016-11-17 10:20 by xdegaye. This issue is now closed.

Files
File name Uploaded Description Edit
test_output.txt xdegaye, 2016-05-03 14:24 test results
cross-compiled-skip.patch xdegaye, 2016-05-06 08:08 skip some tests when interpreter was cross-compiled review
android-sh-path.patch xdegaye, 2016-05-06 08:15 use /system/bin/sh on android review
android-sh-path_2.patch xdegaye, 2016-05-20 09:41 review
cross-compiled-skip_2.patch xdegaye, 2016-11-04 08:15 review
Messages (7)
msg264732 - (view) Author: Xavier de Gaye (xdegaye) * (Python committer) Date: 2016-05-03 14:24
test_distutils fails on an android emulator running an x86 system image at API level 21.

See the attached test_output.txt file.

Some of these failed tests could be skipped, supposing that native compilation of extension modules on android itself (as opposed to using cross-compilation) is not supported.
msg264944 - (view) Author: Xavier de Gaye (xdegaye) * (Python committer) Date: 2016-05-06 08:05
The last two failed tests:
    test_sysconfig_compiler_vars
    test_sysconfig_module

are caused by LDFLAGS being set in the environment both when configure is run and when make is run.

Removing LDFLAGS from the environment when running make fixes these tests.
msg264945 - (view) Author: Xavier de Gaye (xdegaye) * (Python committer) Date: 2016-05-06 08:08
The attached patch skips some tests when the interpreter was cross-compiled. When the interpreter has been cross-compiled, there is probably no compiler on the host system.
msg264946 - (view) Author: Xavier de Gaye (xdegaye) * (Python committer) Date: 2016-05-06 08:15
On android, the shell path is /system/bin/sh. The attached patch fixes this, assuming that there is a platform.android_ver() as per issue #26855: add platform.android_ver() for android. This could be changed for a test on sys.platform if there was a specific sys.platform value for android.

With both patches and the LDFLAGS change on the cross-build system, test_distutils runs fine.
msg265924 - (view) Author: Xavier de Gaye (xdegaye) * (Python committer) Date: 2016-05-20 09:41
This new patch adds a dependency to issue #27027.
msg280043 - (view) Author: Xavier de Gaye (xdegaye) * (Python committer) Date: 2016-11-04 08:15
The problem raised in msg264946 has been fixed at changeset 15835311b5e6.

This new cross-compiled-skip_2.patch is not specific to Android and fixes test_distutils when the executables used to build the interpreter do not exist on the platform
where the test is run.  The patch also does:
* Fix a bug in test_run of Lib/distutils/tests/test_build_clib.py that was using the values of the 'compiler.executables' dictionary instead of the attributes of 'compiler'.
* Removes test_get_python_inc from test_sysconfig.py as Python.h may not be installed on systems where extension modules are not expected to be built (BTW the comment in the test
points out: "This is not much of a test" :).

With this patch, test_distutils runs fine on the Android emulator.
msg281025 - (view) Author: Roundup Robot (python-dev) Date: 2016-11-17 08:02
New changeset cea3b621973f by Xavier de Gaye in branch '3.6':
Issue 26931: Skip the test_distutils tests using a compiler executable
https://hg.python.org/cpython/rev/cea3b621973f

New changeset 99d69fd1b24e by Xavier de Gaye in branch 'default':
Issue 26931: Merge 3.6
https://hg.python.org/cpython/rev/99d69fd1b24e
History
Date User Action Args
2016-11-17 10:20:45xdegayesetstatus: open -> closed
resolution: fixed
stage: commit review -> resolved
2016-11-17 08:02:57python-devsetnosy: + python-dev
messages: + msg281025
2016-11-16 07:24:43xdegayesetassignee: xdegaye
stage: patch review -> commit review
2016-11-04 08:15:24xdegayesetfiles: + cross-compiled-skip_2.patch
versions: + Python 3.7
messages: + msg280043

dependencies: - add the 'is_android' attribute to test.support
components: + Tests, - Library (Lib), Cross-Build
stage: patch review
2016-05-21 07:06:39xdegayelinkissue26865 dependencies
2016-05-21 06:58:00xdegayesetdependencies: + add the 'is_android' attribute to test.support
2016-05-20 09:41:59xdegayesetfiles: + android-sh-path_2.patch

messages: + msg265924
2016-05-06 08:15:10xdegayesetfiles: + android-sh-path.patch

messages: + msg264946
2016-05-06 08:08:19xdegayesetfiles: + cross-compiled-skip.patch
keywords: + patch
messages: + msg264945
2016-05-06 08:05:00xdegayesetmessages: + msg264944
2016-05-03 14:25:01xdegayecreate