| 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 | 7 ++++--- |
| 1 files changed, 4 insertions(+), 3 deletions(-) |
| |
| Index: Python-2.7.2/Lib/distutils/sysconfig.py |
| =================================================================== |
| --- Python-2.7.2.orig/Lib/distutils/sysconfig.py |
| +++ Python-2.7.2/Lib/distutils/sysconfig.py |
| @@ -19,13 +19,22 @@ |
| from distutils.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) |
| + |
| |
| # 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 |
| @@ -74,7 +83,7 @@ |
| |
| if os.name == "posix": |
| if python_build: |
| - buildir = os.path.dirname(sys.executable) |
| + buildir = EXECUTABLE_DIRNAME |
| if plat_specific: |
| # python.h is located in the buildir |
| inc_dir = buildir |
| @@ -206,7 +215,7 @@ |
| def get_makefile_filename(): |
| """Return full pathname of installed Makefile from the Python build.""" |
| if python_build: |
| - return os.path.join(os.path.dirname(sys.executable), "Makefile") |
| + return os.path.join(EXECUTABLE_DIRNAME, "Makefile") |
| lib_dir = get_python_lib(plat_specific=1, standard_lib=1) |
| return os.path.join(lib_dir, "config", "Makefile") |
| |
| Index: Python-2.7.2/configure.in |
| =================================================================== |
| --- Python-2.7.2.orig/configure.in |
| +++ Python-2.7.2/configure.in |
| @@ -4328,6 +4328,21 @@ |
| CROSS_COMPILING=$cross_compiling |
| AC_SUBST(CROSS_COMPILING) |
| |
| +# |
| +# Cross compiling |
| +# |
| +# special RUNSHARED |
| +if test "$cross_compiling" = "yes"; then |
| + 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 |
| + |
| + |
| # generate output files |
| AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc) |
| AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix]) |