|
@@ -1,154 +0,0 @@
|
|
|
-Add support in Python build system to specify host tools
|
|
|
-
|
|
|
-Python needs a Python interpreter and a "pgen" program to build
|
|
|
-itself. Unfortunately, the Python build system assumes that it can use
|
|
|
-the interpreter and pgen program it has just built to build
|
|
|
-itself. Obviously, this cannot work in cross-compilation mode since
|
|
|
-the interpreter and the pgen program have been built for the target.
|
|
|
-
|
|
|
-Therefore, this patch adds support in the Python build system for the
|
|
|
-new PYTHON_FOR_BUILD and PGEN_FOR_BUILD variables, so that we can
|
|
|
-point Python ./configure script to the Python interpreter and pgen
|
|
|
-program that have been previously built for the host.
|
|
|
-
|
|
|
-Patch ported to python2.7 by Maxime Ripard <ripard@archos.com>, and
|
|
|
-later significantly reworked by Thomas Petazzoni
|
|
|
-<thomas.petazzoni@free-electrons.com>, with some inspiration taken
|
|
|
-from the Python patches of the PTXdist project.
|
|
|
-
|
|
|
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
|
|
----
|
|
|
- Makefile.pre.in | 32 +++++++++++++++++---------------
|
|
|
- configure.in | 17 +++++++++++++++++
|
|
|
- 2 files changed, 34 insertions(+), 15 deletions(-)
|
|
|
-
|
|
|
-Index: Python-2.7.2/Makefile.pre.in
|
|
|
-===================================================================
|
|
|
---- Python-2.7.2.orig/Makefile.pre.in
|
|
|
-+++ Python-2.7.2/Makefile.pre.in
|
|
|
-@@ -181,7 +181,8 @@
|
|
|
- UNICODE_OBJS= @UNICODE_OBJS@
|
|
|
-
|
|
|
- PYTHON= python$(EXE)
|
|
|
--BUILDPYTHON= python$(BUILDEXE)
|
|
|
-+BUILDPYTHON= ./python$(BUILDEXE)
|
|
|
-+PYTHON_FOR_BUILD=@PYTHON_FOR_BUILD@
|
|
|
-
|
|
|
- # The task to run while instrument when building the profile-opt target
|
|
|
- PROFILE_TASK= $(srcdir)/Tools/pybench/pybench.py -n 2 --with-gc --with-syscheck
|
|
|
-@@ -213,7 +214,8 @@
|
|
|
-
|
|
|
- ##########################################################################
|
|
|
- # Parser
|
|
|
--PGEN= Parser/pgen$(EXE)
|
|
|
-+BUILDPGEN= Parser/pgen$(EXE)
|
|
|
-+PGEN_FOR_BUILD=@PGEN_FOR_BUILD@
|
|
|
-
|
|
|
- POBJS= \
|
|
|
- Parser/acceler.o \
|
|
|
-@@ -407,8 +409,8 @@
|
|
|
- # Build the shared modules
|
|
|
- sharedmods: $(BUILDPYTHON)
|
|
|
- @case $$MAKEFLAGS in \
|
|
|
-- *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \
|
|
|
-- *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \
|
|
|
-+ *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' $(PYTHON_FOR_BUILD) -E $(srcdir)/setup.py -q build;; \
|
|
|
-+ *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' $(PYTHON_FOR_BUILD) -E $(srcdir)/setup.py build;; \
|
|
|
- esac
|
|
|
-
|
|
|
- # Build static library
|
|
|
-@@ -540,13 +542,13 @@
|
|
|
-
|
|
|
- # Use a stamp file to prevent make -j invoking pgen twice
|
|
|
- $(GRAMMAR_H) $(GRAMMAR_C): Parser/pgen.stamp
|
|
|
--Parser/pgen.stamp: $(PGEN) $(GRAMMAR_INPUT)
|
|
|
-+Parser/pgen.stamp: $(PGEN_FOR_BUILD) $(GRAMMAR_INPUT)
|
|
|
- -@$(INSTALL) -d Include
|
|
|
-- $(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
|
|
|
-+ $(PGEN_FOR_BUILD) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
|
|
|
- -touch Parser/pgen.stamp
|
|
|
-
|
|
|
--$(PGEN): $(PGENOBJS)
|
|
|
-- $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
|
|
|
-+$(BUILDPGEN): $(PGENOBJS)
|
|
|
-+ $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(BUILDPGEN)
|
|
|
-
|
|
|
- Parser/grammar.o: $(srcdir)/Parser/grammar.c \
|
|
|
- $(srcdir)/Include/token.h \
|
|
|
-@@ -926,25 +928,25 @@
|
|
|
- done
|
|
|
- $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
|
|
|
- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
|
|
-- ./$(BUILDPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
|
-+ $(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
|
- -d $(LIBDEST) -f \
|
|
|
- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
|
|
|
- $(DESTDIR)$(LIBDEST)
|
|
|
- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
|
|
-- ./$(BUILDPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
|
-+ $(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
|
- -d $(LIBDEST) -f \
|
|
|
- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
|
|
|
- $(DESTDIR)$(LIBDEST)
|
|
|
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
|
|
-- ./$(BUILDPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
|
-+ $(PYTHON_FOR_BUILD) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
|
- -d $(LIBDEST)/site-packages -f \
|
|
|
- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
|
|
|
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
|
|
-- ./$(BUILDPYTHON) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
|
-+ $(PYTHON_FOR_BUILD) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
|
- -d $(LIBDEST)/site-packages -f \
|
|
|
- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
|
|
|
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
|
|
-- ./$(BUILDPYTHON) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"
|
|
|
-+ $(PYTHON_FOR_BUILD) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"
|
|
|
-
|
|
|
- # Create the PLATDIR source directory, if one wasn't distributed..
|
|
|
- $(srcdir)/Lib/$(PLATDIR):
|
|
|
-@@ -1049,7 +1051,7 @@
|
|
|
- # Install the dynamically loadable modules
|
|
|
- # This goes into $(exec_prefix)
|
|
|
- sharedinstall: sharedmods
|
|
|
-- $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \
|
|
|
-+ $(RUNSHARED) $(PYTHON_FOR_BUILD) -E $(srcdir)/setup.py install \
|
|
|
- --prefix=$(prefix) \
|
|
|
- --install-scripts=$(BINDIR) \
|
|
|
- --install-platlib=$(DESTSHARED) \
|
|
|
-@@ -1188,7 +1190,7 @@
|
|
|
- find . -name '*.gc??' -exec rm -f {} ';'
|
|
|
-
|
|
|
- clobber: clean profile-removal
|
|
|
-- -rm -f $(BUILDPYTHON) $(PGEN) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
|
|
|
-+ -rm -f $(BUILDPYTHON) $(BUILDPGEN) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
|
|
|
- tags TAGS Parser/pgen.stamp \
|
|
|
- config.cache config.log pyconfig.h Modules/config.c
|
|
|
- -rm -rf build platform
|
|
|
-Index: Python-2.7.2/configure.in
|
|
|
-===================================================================
|
|
|
---- Python-2.7.2.orig/configure.in
|
|
|
-+++ Python-2.7.2/configure.in
|
|
|
-@@ -4305,6 +4305,23 @@
|
|
|
- done
|
|
|
- AC_MSG_RESULT(done)
|
|
|
-
|
|
|
-+if test "$cross_compiling" = "yes"; then
|
|
|
-+ AC_MSG_CHECKING(python for build)
|
|
|
-+ PYTHON_FOR_BUILD="${PYTHON_FOR_BUILD}"
|
|
|
-+ AC_MSG_RESULT($PYTHON_FOR_BUILD)
|
|
|
-+ AC_MSG_CHECKING(pgen for build)
|
|
|
-+ PGEN_FOR_BUILD="${PGEN_FOR_BUILD}"
|
|
|
-+ AC_MSG_RESULT($PGEN_FOR_BUILD)
|
|
|
-+else
|
|
|
-+ PYTHON_FOR_BUILD='$(BUILDPYTHON)'
|
|
|
-+ PGEN_FOR_BUILD='$(BUILDPGEN)'
|
|
|
-+fi
|
|
|
-+
|
|
|
-+AC_SUBST(PYTHON_FOR_BUILD)
|
|
|
-+AC_SUBST(PGEN_FOR_BUILD)
|
|
|
-+AC_ARG_VAR(PYTHON_FOR_BUILD,[build system Python])
|
|
|
-+AC_ARG_VAR(PGEN_FOR_BUILD,[build system Python pgen])
|
|
|
-+
|
|
|
- # 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])
|