| Add some cross-compilation fixes to distutils |
| |
| Inspired by work done by Marc Kleine-Budde <mkl@pengutronix.de> in |
| PTXdist. |
| |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| --- |
| Lib/distutils/sysconfig.py | 17 +++++++++++++---- |
| configure.ac | 8 +++++++- |
| 2 files changed, 20 insertions(+), 5 deletions(-) |
| |
| Index: Python-3.3.0/Lib/distutils/sysconfig.py |
| =================================================================== |
| --- Python-3.3.0.orig/Lib/distutils/sysconfig.py |
| +++ Python-3.3.0/Lib/distutils/sysconfig.py |
| @@ -16,15 +16,24 @@ |
| from .errors import DistutilsPlatformError |
| |
| # These are needed in a couple of spots, so just compute them once. |
| -PREFIX = os.path.normpath(sys.prefix) |
| -EXEC_PREFIX = os.path.normpath(sys.exec_prefix) |
| +EXECUTABLE_DIRNAME = os.path.dirname(os.path.realpath(sys.executable)) |
| +if os.environ.get('CROSS_COMPILING') == 'yes': |
| + _sysroot=os.environ.get('_python_sysroot') |
| + PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_prefix')) |
| + EXEC_PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_exec_prefix')) |
| + if '_python_srcdir' in os.environ: |
| + EXECUTABLE_DIRNAME = os.path.normpath(os.environ['_python_srcdir']) |
| +else: |
| + PREFIX = os.path.normpath(sys.prefix) |
| + EXEC_PREFIX = os.path.normpath(sys.exec_prefix) |
| + |
| BASE_PREFIX = os.path.normpath(sys.base_prefix) |
| BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix) |
| |
| # Path to the base directory of the project. On Windows the binary may |
| # live in project/PCBuild9. If we're dealing with an x64 Windows build, |
| # it'll live in project/PCbuild/amd64. |
| -project_base = os.path.dirname(os.path.abspath(sys.executable)) |
| +project_base = EXECUTABLE_DIRNAME |
| if os.name == "nt" and "pcbuild" in project_base[-8:].lower(): |
| project_base = os.path.abspath(os.path.join(project_base, os.path.pardir)) |
| # PC/VS7.1 |
| @@ -98,7 +107,7 @@ |
| # the build directory may not be the source directory, we |
| # must use "srcdir" from the makefile to find the "Include" |
| # directory. |
| - base = _sys_home or os.path.dirname(os.path.abspath(sys.executable)) |
| + base = _sys_home or EXECUTABLE_DIRNAME |
| if plat_specific: |
| return base |
| if _sys_home: |
| Index: Python-3.3.0/configure.ac |
| =================================================================== |
| --- Python-3.3.0.orig/configure.ac |
| +++ Python-3.3.0/configure.ac |
| @@ -963,7 +963,13 @@ |
| fi |
| |
| if test "$cross_compiling" = yes; then |
| - RUNSHARED= |
| + RUNSHARED=" \ |
| + CROSS_COMPILING=yes \ |
| + _python_cross_host=${ac_cv_host} \ |
| + _python_sysroot=\"\$(sysroot)\" \ |
| + _python_srcdir=\"\$(srcdir)\" \ |
| + _python_prefix=\"\$(prefix)\" \ |
| + _python_exec_prefix=\"\$(exec_prefix)\"" |
| fi |
| |
| AC_MSG_RESULT($LDLIBRARY) |