2455c89bab
This is mostly a mechanical bump, with a refresh of all the patches to accomodate the offsets, and some minor conflict resolution. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
155 lines
6.2 KiB
Diff
155 lines
6.2 KiB
Diff
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])
|