| 1 | Patch taken from https://bugs.python.org/issue22724 and augmented with
|
| 2 | following Nix patch
|
| 3 | https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/interpreters/python/cpython/2.7/cross-compile.patch
|
| 4 | to fix the whole cross-compilation circus.
|
| 5 |
|
| 6 | ---
|
| 7 | Makefile.pre.in | 14 +++++++-------
|
| 8 | configure | 5 ++++-
|
| 9 | setup.py | 9 ++++++---
|
| 10 | 3 files changed, 17 insertions(+), 11 deletions(-)
|
| 11 |
|
| 12 | diff --git a/Makefile.pre.in b/Makefile.pre.in
|
| 13 | index 2a14f3323b..6239fc32fc 100644
|
| 14 | |
| 15 | |
| 16 | @@ -492,7 +492,7 @@ $(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY)
|
| 17 | $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
|
| 18 |
|
| 19 | platform: $(BUILDPYTHON) pybuilddir.txt
|
| 20 | - $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
|
| 21 | + $(RUNSHARED) $(PY_BUILD_ENVIRON) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
|
| 22 |
|
| 23 | # Create build directory and generate the sysconfig build-time data there.
|
| 24 | # pybuilddir.txt contains the name of the build dir and is used for
|
| 25 | @@ -503,7 +503,7 @@ platform: $(BUILDPYTHON) pybuilddir.txt
|
| 26 | # or removed in case of failure.
|
| 27 | pybuilddir.txt: $(BUILDPYTHON)
|
| 28 | @echo "none" > ./pybuilddir.txt
|
| 29 | - $(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars ;\
|
| 30 | + $(RUNSHARED) $(PY_BUILD_ENVIRON) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars ;\
|
| 31 | if test $$? -ne 0 ; then \
|
| 32 | echo "generate-posix-vars failed" ; \
|
| 33 | rm -f ./pybuilddir.txt ; \
|
| 34 | @@ -525,7 +525,7 @@ sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o
|
| 35 | esac; \
|
| 36 | $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
|
| 37 | _TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \
|
| 38 | - $(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
|
| 39 | + $(PY_BUILD_ENVIRON) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
|
| 40 |
|
| 41 | # Build static library
|
| 42 | # avoid long command lines, same as LIBRARY_OBJS
|
| 43 | @@ -928,7 +928,7 @@ install: @FRAMEWORKINSTALLFIRST@ commoninstall bininstall maninstall @FRAMEWORKI
|
| 44 | upgrade) ensurepip="--upgrade" ;; \
|
| 45 | install|*) ensurepip="" ;; \
|
| 46 | esac; \
|
| 47 | - $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
|
| 48 | + $(RUNSHARED) $(PY_BUILD_ENVIRON) $(PYTHON_FOR_BUILD) -m ensurepip \
|
| 49 | $$ensurepip --root=$(DESTDIR)/ ; \
|
| 50 | fi
|
| 51 |
|
| 52 | @@ -939,7 +939,7 @@ altinstall: commoninstall
|
| 53 | upgrade) ensurepip="--altinstall --upgrade --no-default-pip" ;; \
|
| 54 | install|*) ensurepip="--altinstall --no-default-pip" ;; \
|
| 55 | esac; \
|
| 56 | - $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
|
| 57 | + $(RUNSHARED) $(PY_BUILD_ENVIRON) $(PYTHON_FOR_BUILD) -m ensurepip \
|
| 58 | $$ensurepip --root=$(DESTDIR)/ ; \
|
| 59 | fi
|
| 60 |
|
| 61 | @@ -1270,7 +1270,7 @@ libainstall: @DEF_MAKE_RULE@ python-config
|
| 62 | # Install the dynamically loadable modules
|
| 63 | # This goes into $(exec_prefix)
|
| 64 | sharedinstall: sharedmods
|
| 65 | - $(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \
|
| 66 | + $(RUNSHARED) $(PY_BUILD_ENVIRON) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \
|
| 67 | --prefix=$(prefix) \
|
| 68 | --install-scripts=$(BINDIR) \
|
| 69 | --install-platlib=$(DESTSHARED) \
|
| 70 | @@ -1344,7 +1344,7 @@ frameworkinstallextras:
|
| 71 | # This installs a few of the useful scripts in Tools/scripts
|
| 72 | scriptsinstall:
|
| 73 | SRCDIR=$(srcdir) $(RUNSHARED) \
|
| 74 | - $(PYTHON_FOR_BUILD) $(srcdir)/Tools/scripts/setup.py install \
|
| 75 | + $(PY_BUILD_ENVIRON) $(PYTHON_FOR_BUILD) $(srcdir)/Tools/scripts/setup.py install \
|
| 76 | --prefix=$(prefix) \
|
| 77 | --install-scripts=$(BINDIR) \
|
| 78 | --root=$(DESTDIR)/
|
| 79 | diff --git a/configure b/configure
|
| 80 | index 67300fe2b6..6050f588c5 100755
|
| 81 | |
| 82 | |
| 83 | @@ -741,6 +741,7 @@ CONFIG_ARGS
|
| 84 | SOVERSION
|
| 85 | VERSION
|
| 86 | PYTHON_FOR_BUILD
|
| 87 | +PY_BUILD_ENVIRON
|
| 88 | PYTHON_FOR_REGEN
|
| 89 | host_os
|
| 90 | host_vendor
|
| 91 | @@ -2964,7 +2965,8 @@ $as_echo_n "checking for python interpreter for cross build... " >&6; }
|
| 92 | fi
|
| 93 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $interp" >&5
|
| 94 | $as_echo "$interp" >&6; }
|
| 95 | - PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp
|
| 96 | + PY_BUILD_ENVIRON='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR)'
|
| 97 | + PYTHON_FOR_BUILD=$interp
|
| 98 | fi
|
| 99 | elif test "$cross_compiling" = maybe; then
|
| 100 | as_fn_error $? "Cross compiling required --host=HOST-TUPLE and --build=ARCH" "$LINENO" 5
|
| 101 | @@ -2974,6 +2976,7 @@ fi
|
| 102 |
|
| 103 |
|
| 104 |
|
| 105 | +
|
| 106 | if test "$prefix" != "/"; then
|
| 107 | prefix=`echo "$prefix" | sed -e 's/\/$//g'`
|
| 108 | fi
|
| 109 | diff --git a/setup.py b/setup.py
|
| 110 | index cb47a2339c..472e7e2b26 100644
|
| 111 | |
| 112 | |
| 113 | @@ -497,8 +497,6 @@ class PyBuildExt(build_ext):
|
| 114 | if not cross_compiling:
|
| 115 | add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
|
| 116 | add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
|
| 117 | - if cross_compiling:
|
| 118 | - self.add_gcc_paths()
|
| 119 | self.add_multiarch_paths()
|
| 120 |
|
| 121 | # Add paths specified in the environment variables LDFLAGS and
|
| 122 | @@ -556,7 +554,10 @@ class PyBuildExt(build_ext):
|
| 123 | # be assumed that no additional -I,-L directives are needed.
|
| 124 | inc_dirs = self.compiler.include_dirs[:]
|
| 125 | lib_dirs = self.compiler.library_dirs[:]
|
| 126 | - if not cross_compiling:
|
| 127 | + if cross_compiling:
|
| 128 | + inc_dirs = []
|
| 129 | + lib_dirs = []
|
| 130 | + else:
|
| 131 | for d in (
|
| 132 | '/usr/include',
|
| 133 | ):
|
| 134 | @@ -621,6 +622,8 @@ class PyBuildExt(build_ext):
|
| 135 | # Some modules that are normally always on:
|
| 136 | #exts.append( Extension('_weakref', ['_weakref.c']) )
|
| 137 |
|
| 138 | + self.compiler.library_dirs = lib_dirs + [ '.' ]
|
| 139 | +
|
| 140 | # array objects
|
| 141 | exts.append( Extension('array', ['arraymodule.c']) )
|
| 142 |
|
| 143 | --
|
| 144 | 2.17.1
|
| 145 |
|