This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Cross compilation fails in regen
Type: compile error Stage:
Components: Cross-Build Versions: Python 3.7, Python 3.6
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: Alex.Willmer, doko, eric.araujo, xdegaye, yan12125
Priority: normal Keywords: patch

Created on 2016-09-08 11:26 by yan12125, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
cross-compile.patch yan12125, 2016-09-08 11:26
Messages (2)
msg274998 - (view) Author: (yan12125) * Date: 2016-09-08 11:26
Since issue23968 landed (changeset 5c77488830bc), cross compilation fails. It's not regression of a single revision but is caused by a combination of multiple changes. Here are my steps:

1. git clone https://github.com/yan12125/python3-android
2. comment `patch -p1 < "${FILESDIR}/cross-compile.patch"` from mk/python/prepare.sh
3. `make`

This results in bash errors:

mkdir ../Lib/plat-aarch64-linux-android
if [ -n "aarch64-linux-android" ]; then \
  cp ../Lib/plat-linux/regen ../Lib/plat-aarch64-linux-android/regen; \
else \
  cp ../Lib/plat-generic/regen ../Lib/plat-aarch64-linux-android/regen; \
fi; \
export PATH; PATH="`pwd`:$PATH"; \
export PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \
export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \
export EXE; EXE=""; \
export CC; CC="/home/yen/Projects/python3-android/clang-bin/cc"; \
if [ -n "aarch64-linux-android" ]; then export MULTIARCH; MULTIARCH=aarch64-linux-android; fi; \
export PYTHON_FOR_BUILD; \
if [ "x86_64-pc-linux-gnu" = "aarch64-unknown-linux-android" ]; then \
  PYTHON_FOR_BUILD="python"; \
else \
  PYTHON_FOR_BUILD="_PYTHON_PROJECT_BASE=/home/yen/Projects/python3-android/src/cpython/build-target _PYTHON_HOST_PLATFORM=linux-aarch64 PYTHONPATH=/home/yen/Projects/python3-android/src/cpython/build-target/build/lib.linux-aarch64-3.6:../Lib:../Lib/plat-aarch64-linux-android python3.6"; \
fi; \
export H2PY; H2PY="$PYTHON_FOR_BUILD /home/yen/Projects/python3-android/src/cpython/build-target/../Tools/scripts/h2py.py"; \
cd ../Lib/plat-aarch64-linux-android;  ./regen
+ _PYTHON_PROJECT_BASE=/home/yen/Projects/python3-android/src/cpython/build-target _PYTHON_HOST_PLATFORM=linux-aarch64 PYTHONPATH=/home/yen/Projects/python3-android/src/cpython/build-target/build/lib.linux-aarch64-3.6:../Lib:../Lib/plat-aarch64-linux-android python3.6 /home/yen/Projects/python3-android/src/cpython/build-target/../Tools/scripts/h2py.py -i '(u_long)' /opt/android-ndk/platforms/android-21/arch-arm64/usr/include/sys/types.h /opt/android-ndk/platforms/android-21/arch-arm64/usr/include/netinet/in.h /opt/android-ndk/platforms/android-21/arch-arm64/usr/include/dlfcn.h
./regen: line 33: _PYTHON_PROJECT_BASE=/home/yen/Projects/python3-android/src/cpython/build-target: No such file or directory
make[1]: *** [Makefile:1331: ../Lib/plat-aarch64-linux-android] Error 127
make[1]: Leaving directory '/home/yen/Projects/python3-android/src/cpython/build-target'
make: *** [Makefile:36: python] Error 2

bash (I'm using 4.3.046) does not parse environment variables in quotation marks. For example the following script fails:

FOO="BAR=1 ls"
$FOO

The attached patch makes regen work again. I see /usr/bin/env used everywhere in CPython, so I guess it's OK to use it in configure without loss of portability.

Also added some people from issue14330, where $PYTHON_FOR_BUILD appeared for the first time.
msg275593 - (view) Author: (yan12125) * Date: 2016-09-10 07:37
Closing, regen is not used anymore after issue28046 landed.
History
Date User Action Args
2022-04-11 14:58:36adminsetgithub: 72205
2016-09-10 07:37:22yan12125setstatus: open -> closed
resolution: not a bug
messages: + msg275593
2016-09-08 11:26:22yan12125create