Issue 28018: Cross compilation fails in regen (original) (raw)

Since 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

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 , where $PYTHON_FOR_BUILD appeared for the first time.