python3: bump to 3.4.0rc1

This commit bumps the Python3 package to use Python 3.4.0rc1.

About the patches:

 * The patches below 100 are significantly changed, because like for
   Python 2.x, a good number of improvements have been made in the
   upstream Python for cross-compilation. Therefore, almost all of
   these patches have been modified.

 * All the patches above 100 are simply updated for Python 3.4.0, with
   a small refactoring for the handling of test modules.

The details of the python3.mk changes are:

 * --without-ensurepip to tell Python to not use PIP at build time.

 * Many environment variables are no longer passed, they were specific
   to our cross-compilation patches

 * The fixup of the LIBDIR in the Python Makefile is no longer needed
   since Python has switched to _sysconfigdata.py for distutils
   configuration instead of parsing the Makefile.

 * A new post patch hooks touches the two files generated by pgen to
   make sure they are newer than the pgen sources, which ensures pgen
   is not built/executed.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Thomas Petazzoni 2014-02-18 21:40:01 +01:00 committed by Peter Korsgaard
parent 249778541b
commit 0d327c267a
33 changed files with 608 additions and 973 deletions

View File

@ -1,158 +0,0 @@
changeset: 79745:f85c3f4d9b98
parent: 79743:36b2ca7dc893
parent: 79744:24d52d3060e8
user: Trent Nelson <trent@trent.me>
date: Tue Oct 16 08:17:11 2012 -0400
summary: Merge issue #15298: ensure _sysconfigdata is generated in build directory,
Taken from upstream.
---
Lib/sysconfig.py | 11 ++++++++++-
Makefile.pre.in | 24 +++++++++++++-----------
setup.py | 14 --------------
3 files changed, 23 insertions(+), 26 deletions(-)
Index: Python-3.3.0/Lib/sysconfig.py
===================================================================
--- Python-3.3.0.orig/Lib/sysconfig.py
+++ Python-3.3.0/Lib/sysconfig.py
@@ -390,13 +390,22 @@
if _PYTHON_BUILD:
vars['LDSHARED'] = vars['BLDSHARED']
- destfile = os.path.join(os.path.dirname(__file__), '_sysconfigdata.py')
+ pybuilddir = 'build/lib.%s-%s' % (get_platform(), sys.version[:3])
+ if hasattr(sys, "gettotalrefcount"):
+ pybuilddir += '-pydebug'
+ os.makedirs(pybuilddir, exist_ok=True)
+ destfile = os.path.join(pybuilddir, '_sysconfigdata.py')
+
with open(destfile, 'w', encoding='utf8') as f:
f.write('# system configuration generated and used by'
' the sysconfig module\n')
f.write('build_time_vars = ')
pprint.pprint(vars, stream=f)
+ # Create file used for sys.path fixup -- see Modules/getpath.c
+ with open('pybuilddir.txt', 'w', encoding='ascii') as f:
+ f.write(pybuilddir)
+
def _init_posix(vars):
"""Initialize the module as appropriate for POSIX systems."""
# _sysconfigdata is generated at build time, see _generate_posix_vars()
Index: Python-3.3.0/Makefile.pre.in
===================================================================
--- Python-3.3.0.orig/Makefile.pre.in
+++ Python-3.3.0/Makefile.pre.in
@@ -410,8 +410,6 @@
Objects/unicodectype.o \
Objects/weakrefobject.o
-SYSCONFIGDATA=$(srcdir)/Lib/_sysconfigdata.py
-
##########################################################################
# objects that get linked into the Python library
LIBRARY_OBJS_OMIT_FROZEN= \
@@ -432,7 +430,7 @@
# Default target
all: build_all
-build_all: $(BUILDPYTHON) $(SYSCONFIGDATA) oldsharedmods sharedmods gdbhooks Modules/_testembed
+build_all: $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks Modules/_testembed
# Compile a binary with gcc profile guided optimization.
profile-opt:
@@ -466,15 +464,17 @@
$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
$(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Modules/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
-platform: $(BUILDPYTHON) $(SYSCONFIGDATA)
+platform: $(BUILDPYTHON)
$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print(get_platform()+"-"+sys.version[0:3])' >platform
-# Generate the sysconfig build-time data
-$(SYSCONFIGDATA): $(BUILDPYTHON)
+# Create build directory and generate the sysconfig build-time data there.
+# pybuilddir.txt contains the name of the build dir and is used for
+# sys.path fixup -- see Modules/getpath.c.
+pybuilddir.txt: $(BUILDPYTHON)
$(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars
# Build the shared modules
-sharedmods: $(BUILDPYTHON) $(SYSCONFIGDATA)
+sharedmods: $(BUILDPYTHON) pybuilddir.txt
case $$MAKEFLAGS in *s*) quiet=-q; esac; \
$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
@@ -1036,7 +1036,7 @@
else true; \
fi; \
done
- @for i in $(srcdir)/Lib/*.py ; \
+ @for i in $(srcdir)/Lib/*.py `cat pybuilddir.txt`/_sysconfigdata.py; \
do \
if test -x $$i; then \
$(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \
@@ -1196,6 +1196,8 @@
--install-scripts=$(BINDIR) \
--install-platlib=$(DESTSHARED) \
--root=$(DESTDIR)/
+ -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata.py
+ -rm -r $(DESTDIR)$(DESTSHARED)/__pycache__
# Here are a couple of targets for MacOSX again, to install a full
# framework-based Python. frameworkinstall installs everything, the
@@ -1341,9 +1343,10 @@
find . -name '*.s[ol]' -exec rm -f {} ';'
find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
find build -name 'fficonfig.h' -exec rm -f {} ';' || true
- find build -name 'fficonfig.py' -exec rm -f {} ';' || true
+ find build -name '*.py' -exec rm -f {} ';' || true
+ find build -name '*.py[co]' -exec rm -f {} ';' || true
+ -rm -f pybuilddir.txt
-rm -f Lib/lib2to3/*Grammar*.pickle
- -rm -f $(SYSCONFIGDATA)
-rm -f Modules/_testembed Modules/_freeze_importlib
profile-removal:
@@ -1367,7 +1370,6 @@
Modules/Setup Modules/Setup.local Modules/Setup.config \
Modules/ld_so_aix Modules/python.exp Misc/python.pc
-rm -f python*-gdb.py
- -rm -f pybuilddir.txt
find $(srcdir) '(' -name '*.fdc' -o -name '*~' \
-o -name '[@,#]*' -o -name '*.old' \
-o -name '*.orig' -o -name '*.rej' \
Index: Python-3.3.0/setup.py
===================================================================
--- Python-3.3.0.orig/setup.py
+++ Python-3.3.0/setup.py
@@ -33,10 +33,6 @@
# This global variable is used to hold the list of modules to be disabled.
disabled_module_list = []
-# File which contains the directory for shared mods (for sys.path fixup
-# when running from the build dir, see Modules/getpath.c)
-_BUILDDIR_COOKIE = "pybuilddir.txt"
-
def add_dir_to_list(dirlist, dir):
"""Add the directory 'dir' to the list 'dirlist' (after any relative
directories) if:
@@ -252,16 +248,6 @@
args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags
self.compiler.set_executables(**args)
- # Not only do we write the builddir cookie, but we manually install
- # the shared modules directory if it isn't already in sys.path.
- # Otherwise trying to import the extensions after building them
- # will fail.
- with open(_BUILDDIR_COOKIE, "wb") as f:
- f.write(self.build_lib.encode('utf-8', 'surrogateescape'))
- abs_build_lib = os.path.join(os.getcwd(), self.build_lib)
- if abs_build_lib not in sys.path:
- sys.path.append(abs_build_lib)
-
build_ext.build_extensions(self)
longest = max([len(e.name) for e in self.extensions])

View File

@ -0,0 +1,36 @@
setup.py: do not add invalid header locations
This piece of code incorrectly adds /usr/include to
self.compiler.include_dirs, and results in the following invalid
compilation line:
/home/thomas/projets/buildroot/output/host/usr/bin/arm-none-linux-gnueabi-gcc
-fPIC -Wno-unused-result -Werror=declaration-after-statement -DNDEBUG -g
-O3 -Wall -Wstrict-prototypes -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -pipe -Os
-I./Include -I/usr/include -I. -IInclude
-I/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/include
-I/home/thomas/projets/buildroot/output/build/python3-3.4.0b1/Include
-I/home/thomas/projets/buildroot/output/build/python3-3.4.0b1
-c /home/thomas/projets/buildroot/output/build/python3-3.4.0b1/Modules/_struct.c
-o build/temp.linux-arm-3.4/home/thomas/projets/buildroot/output/build/python3-3.4.0b1/Modules/_struct.o
cc1: warning: include location "/usr/include" is unsafe for cross-compilation [-Wpoison-system-directories]
The -I/usr/include is wrong when cross compiling, so we disable adding
INCLUDEDIR and LIBDIR from the host when cross compiling.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Index: b/setup.py
===================================================================
--- a/setup.py
+++ b/setup.py
@@ -487,7 +487,8 @@
add_dir_to_list(dir_list, directory)
if os.path.normpath(sys.base_prefix) != '/usr' \
- and not sysconfig.get_config_var('PYTHONFRAMEWORK'):
+ and not sysconfig.get_config_var('PYTHONFRAMEWORK') \
+ and not cross_compiling:
# OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework
# (PYTHONFRAMEWORK is set) to avoid # linking problems when
# building a framework with different architectures than

View File

@ -1,68 +0,0 @@
Add support in Python build system to specify host pgen
Python needs a "pgen" program to build itself. Unfortunately, the
Python build system assumes that it can use the pgen program it has
just built to build itself. Obviously, this cannot work in
cross-compilation mode since the pgen program have been built for the
target.
Therefore, this patch adds support in the Python build system for the
new PGEN_FOR_BUILD variable, so that we can point Python ./configure
script to the 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, and then ported to
python3.3 by Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
Makefile.pre.in | 5 +++--
configure.ac | 5 +++++
2 files changed, 8 insertions(+), 2 deletions(-)
Index: Python-3.3.0/Makefile.pre.in
===================================================================
--- Python-3.3.0.orig/Makefile.pre.in
+++ Python-3.3.0/Makefile.pre.in
@@ -239,6 +239,7 @@
##########################################################################
# Parser
PGEN= Parser/pgen$(EXE)
+PGEN_FOR_BUILD=@PGEN_FOR_BUILD@
PSRCS= \
Parser/acceler.c \
@@ -639,8 +640,8 @@
$(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS)
@$(MKDIR_P) Include
- $(MAKE) $(PGEN)
- $(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
+ $(MAKE) $(PGEN_FOR_BUILD)
+ $(PGEN_FOR_BUILD) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
$(GRAMMAR_C): $(GRAMMAR_H) $(GRAMMAR_INPUT) $(PGENSRCS)
$(MAKE) $(GRAMMAR_H)
touch $(GRAMMAR_C)
Index: Python-3.3.0/configure.ac
===================================================================
--- Python-3.3.0.orig/configure.ac
+++ Python-3.3.0/configure.ac
@@ -51,10 +51,15 @@
AC_MSG_RESULT($interp)
PYTHON_FOR_BUILD="_PYTHON_PROJECT_BASE=$srcdir"' _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(srcdir)/Lib:$(srcdir)/Lib/plat-$(MACHDEP) '$interp
fi
+ AC_MSG_CHECKING(pgen for build)
+ PGEN_FOR_BUILD="${PGEN_FOR_BUILD}"
+ AC_MSG_RESULT($PGEN_FOR_BUILD)
else
PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E'
+ PGEN_FOR_BUILD='./$(PGEN)'
fi
AC_SUBST(PYTHON_FOR_BUILD)
+AC_SUBST(PGEN_FOR_BUILD)
dnl Ensure that if prefix is specified, it does not end in a slash. If
dnl it does, we get path names containing '//' which is both ugly and

View File

@ -1,72 +0,0 @@
Do not look at host headers/libraries in cross-compile mode
When we are cross-compiling, setup.py should never look in /usr or
/usr/local to find headers or libraries. A later patch adds a
mechanism to tell setup.py to look in a specific directory for headers
and libraries.
Patch first written by Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> for python2.7, and then ported
to python3.3 by Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
setup.py | 23 +++++------------------
1 file changed, 5 insertions(+), 18 deletions(-)
Index: Python-3.3.0/setup.py
===================================================================
--- Python-3.3.0.orig/setup.py
+++ Python-3.3.0/setup.py
@@ -447,10 +447,8 @@
if not cross_compiling:
add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
- # only change this for cross builds for 3.3, issues on Mageia
- if cross_compiling:
self.add_gcc_paths()
- self.add_multiarch_paths()
+ self.add_multiarch_paths()
# Add paths specified in the environment variables LDFLAGS and
# CPPFLAGS for header and library files.
@@ -458,10 +456,7 @@
# directly since an inconsistently reproducible issue comes up where
# the environment variable is not set even though the value were passed
# into configure and stored in the Makefile (issue found on OS X 10.3).
- for env_var, arg_name, dir_list in (
- ('LDFLAGS', '-R', self.compiler.runtime_library_dirs),
- ('LDFLAGS', '-L', self.compiler.library_dirs),
- ('CPPFLAGS', '-I', self.compiler.include_dirs)):
+ for env_var, arg_name, dir_list in ():
env_val = sysconfig.get_config_var(env_var)
if env_val:
# To prevent optparse from raising an exception about any
@@ -486,17 +481,6 @@
for directory in reversed(options.dirs):
add_dir_to_list(dir_list, directory)
- if os.path.normpath(sys.base_prefix) != '/usr' \
- and not sysconfig.get_config_var('PYTHONFRAMEWORK'):
- # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework
- # (PYTHONFRAMEWORK is set) to avoid # linking problems when
- # building a framework with different architectures than
- # the one that is currently installed (issue #7473)
- add_dir_to_list(self.compiler.library_dirs,
- sysconfig.get_config_var("LIBDIR"))
- add_dir_to_list(self.compiler.include_dirs,
- sysconfig.get_config_var("INCLUDEDIR"))
-
# lib_dirs and inc_dirs are used to search for files;
# if a file is found in one of those directories, it can
# be assumed that no additional -I,-L directives are needed.
@@ -506,6 +490,9 @@
'/lib', '/usr/lib',
]
inc_dirs = self.compiler.include_dirs + ['/usr/include']
+ else:
+ lib_dirs = self.compiler.library_dirs
+ inc_dirs = self.compiler.include_dirs
exts = []
missing = []

View File

@ -0,0 +1,23 @@
distutils: fix build_ext check to find whether we're building Python or not
The build_ext logic uses
sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")) to
determine whether we're building a third-party Python extension, or a
built-in Python extension. However, this check is wrong in
cross-compilation mode, and instead, the sysconfig.python_build
variable should be used.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Index: b/Lib/distutils/command/build_ext.py
===================================================================
--- a/Lib/distutils/command/build_ext.py
+++ b/Lib/distutils/command/build_ext.py
@@ -246,7 +246,7 @@
# Python's library directory must be appended to library_dirs
# See Issues: #1600860, #4366
if (sysconfig.get_config_var('Py_ENABLE_SHARED')):
- if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")):
+ if not sysconfig.python_build:
# building third party extensions
self.library_dirs.append(sysconfig.get_config_var('LIBDIR'))
else:

View File

@ -1,41 +0,0 @@
Tell setup.py the location of headers/libraries
Allow the libraries detection routine to look for headers and libs in
other directories than /usr/include or /usr/lib through the
environment variables PYTHON_MODULES_INCLUDE and PYTHON_MODULES_LIB.
We can then use it to look for libraries in the buildroot staging
directory.
Ported to python3.3 by Maxime Ripard <maxime.ripard@free-electrons.com> based
on the work by Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
setup.py | 13 +++++++++++++
1 file changed, 13 insertions(+)
Index: Python-3.3.0/setup.py
===================================================================
--- Python-3.3.0.orig/setup.py
+++ Python-3.3.0/setup.py
@@ -441,6 +441,19 @@
os.unlink(tmpfile)
def detect_modules(self):
+ try:
+ modules_include_dirs = os.environ["PYTHON_MODULES_INCLUDE"].split()
+ except KeyError:
+ modules_include_dirs = ['/usr/include']
+ try:
+ modules_lib_dirs = os.environ["PYTHON_MODULES_LIB"].split()
+ except KeyError:
+ modules_lib_dirs = ['/usr/lib']
+ for dir in modules_include_dirs:
+ add_dir_to_list(self.compiler.include_dirs, dir)
+ for dir in modules_lib_dirs:
+ add_dir_to_list(self.compiler.library_dirs, dir)
+
# Ensure that /usr/local is always used, but the local build
# directories (i.e. '.' and 'Include') must be first. See issue
# 10520.

View File

@ -0,0 +1,76 @@
Change the install location of _sysconfigdata.py
The _sysconfigdata.py module contains definitions that are needed when
building Python modules. In cross-compilation mode, when building
Python extensions for the target, we need to use the _sysconfigdata.py
of the target Python while executing the host Python.
However until now, the _sysconfigdata.py module was installed in
build/lib.<arch>-<version> directory, together with a number of
architecture-specific shared objects, which cannot be used with the
host Python.
To solve this problem, this patch moves _sysconfigdata.py to a
separate location, build/sysconfigdata.<arch>-<version>/, and only
this directory gets added to the PYTHONPATH of the host Python
interpreter when building Python modules for the target.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Index: b/Makefile.pre.in
===================================================================
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -543,6 +543,9 @@
# sys.path fixup -- see Modules/getpath.c.
pybuilddir.txt: $(BUILDPYTHON)
$(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars
+ echo `cat pybuilddir.txt`/sysconfigdata > pysysconfigdatadir.txt
+ mkdir -p `cat pysysconfigdatadir.txt`
+ cp `cat pybuilddir.txt`/_sysconfigdata.py `cat pysysconfigdatadir.txt`
# Build the shared modules
# Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for
@@ -1181,7 +1184,7 @@
else true; \
fi; \
done
- @for i in $(srcdir)/Lib/*.py `cat pybuilddir.txt`/_sysconfigdata.py; \
+ @for i in $(srcdir)/Lib/*.py ; \
do \
if test -x $$i; then \
$(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \
@@ -1191,6 +1194,11 @@
echo $(INSTALL_DATA) $$i $(LIBDEST); \
fi; \
done
+ $(INSTALL_DATA) `cat pysysconfigdatadir.txt`/_sysconfigdata.py \
+ $(DESTDIR)$(LIBDEST)
+ mkdir -p $(DESTDIR)$(LIBDEST)/sysconfigdata
+ $(INSTALL_DATA) `cat pysysconfigdatadir.txt`/_sysconfigdata.py \
+ $(DESTDIR)$(LIBDEST)/sysconfigdata
@for d in $(LIBSUBDIRS); \
do \
a=$(srcdir)/Lib/$$d; \
@@ -1513,7 +1521,7 @@
find build -name 'fficonfig.h' -exec rm -f {} ';' || true
find build -name '*.py' -exec rm -f {} ';' || true
find build -name '*.py[co]' -exec rm -f {} ';' || true
- -rm -f pybuilddir.txt
+ -rm -f pybuilddir.txt pysysconfigdatadir.txt
-rm -f Lib/lib2to3/*Grammar*.pickle
-rm -f Modules/_testembed Modules/_freeze_importlib
Index: b/configure.ac
===================================================================
--- a/configure.ac
+++ b/configure.ac
@@ -67,7 +67,7 @@
AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
fi
AC_MSG_RESULT($interp)
- 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
+ PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pysysconfigdatadir.txt && echo $(abs_builddir)/`cat pysysconfigdatadir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp
fi
elif test "$cross_compiling" = maybe; then
AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])

View File

@ -1,27 +0,0 @@
Disable import check when cross-compiling
Once Python has compiled an extension (i.e some C code, potentially
linked to a library), it tries to import it. This cannot work in
cross-compilation mode, so we just disable this check.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
setup.py | 4 ++++
1 file changed, 4 insertions(+)
Index: Python-3.3.0/setup.py
===================================================================
--- Python-3.3.0.orig/setup.py
+++ Python-3.3.0/setup.py
@@ -318,6 +318,10 @@
self.announce('WARNING: skipping import check for Cygwin-based "%s"'
% ext.name)
return
+ if os.environ.get('CROSS_COMPILING') == 'yes':
+ self.announce('WARNING: skipping import check for cross compiled "%s"'
+ % ext.name)
+ return
ext_filename = os.path.join(
self.build_lib,
self.get_ext_filename(self.get_ext_fullname(ext.name)))

View File

@ -8,11 +8,13 @@ See http://www.python.org/dev/peps/pep-3147
Signed-off-by: Daniel Nelson <daniel@sigpwr.com>
--- python3-3.3.0/configure.ac 2013-01-27 16:35:52.429067797 -0800
+++ python3-3.3.0/configure.ac 2013-01-27 16:43:43.528601443 -0800
@@ -1827,6 +1827,23 @@
LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
esac
Index: b/configure.ac
===================================================================
--- a/configure.ac
+++ b/configure.ac
@@ -349,6 +349,23 @@
AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
AC_SUBST(FRAMEWORKINSTALLAPPSPREFIX)
+STDLIB_CACHE_FLAGS=
+AC_MSG_CHECKING(for --enable-old-stdlib-cache)
@ -31,12 +33,14 @@ Signed-off-by: Daniel Nelson <daniel@sigpwr.com>
+])
+AC_SUBST(STDLIB_CACHE_FLAGS)
+
AC_MSG_CHECKING(for --enable-framework)
if test "$enable_framework"
then
--- python3-3.3.0/Makefile.pre.in 2013-01-27 16:35:52.422067642 -0800
+++ python3-3.3.0/Makefile.pre.in 2013-01-27 16:37:03.710650439 -0800
@@ -143,6 +143,9 @@
##AC_ARG_WITH(dyld,
## AS_HELP_STRING([--with-dyld],
## [Use (OpenStep|Rhapsody) dynamic linker]))
Index: b/Makefile.pre.in
===================================================================
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -157,6 +157,9 @@
# Options to enable prebinding (for fast startup prior to Mac OS X 10.3)
OTHER_LIBTOOL_OPT=@OTHER_LIBTOOL_OPT@
@ -46,17 +50,28 @@ Signed-off-by: Daniel Nelson <daniel@sigpwr.com>
# Environment to run shared python without installed libraries
RUNSHARED= @RUNSHARED@
@@ -1079,12 +1082,12 @@
@@ -1231,21 +1234,21 @@
fi
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST) -f \
+ -d $(LIBDEST) -f $(STDLIB_CACHE_FLAGS) \
-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
$(DESTDIR)$(LIBDEST)
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST) -f \
+ -d $(LIBDEST) -f $(STDLIB_CACHE_FLAGS) \
-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
$(DESTDIR)$(LIBDEST)
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST)/site-packages -f \
+ -d $(LIBDEST)/site-packages -f $(STDLIB_CACHE_FLAGS) \
-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST)/site-packages -f \
+ -d $(LIBDEST)/site-packages -f $(STDLIB_CACHE_FLAGS) \
-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \

View File

@ -1,40 +0,0 @@
Do not generate .pyo files
By default, the Python installation byte-compiles all modules in two
forms: the normal bytecode (.pyc) and an optimized bytecode (.pyo).
According to
http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html,
the optimization do not do anything useful, and generating both the
"non-optimized" and "optimized" bytecode variants takes time.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
Makefile.pre.in | 9 ---------
1 file changed, 9 deletions(-)
Index: Python-3.3.0/Makefile.pre.in
===================================================================
--- Python-3.3.0.orig/Makefile.pre.in
+++ Python-3.3.0/Makefile.pre.in
@@ -1082,20 +1082,11 @@
-d $(LIBDEST) -f \
-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
$(DESTDIR)$(LIBDEST)
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
- $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST) -f \
- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
- $(DESTDIR)$(LIBDEST)
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
-d $(LIBDEST)/site-packages -f \
-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
- $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST)/site-packages -f \
- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt

View File

@ -0,0 +1,60 @@
Index: b/Makefile.pre.in
===================================================================
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1232,24 +1232,32 @@
$(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
$(DESTDIR)$(LIBDEST)/distutils/tests ; \
fi
+ifeq (@PYC_BUILD@,yes)
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
-d $(LIBDEST) -f $(STDLIB_CACHE_FLAGS) \
-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
$(DESTDIR)$(LIBDEST)
+endif
+ifeq (@PYO_BUILD@,yes)
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
-d $(LIBDEST) -f $(STDLIB_CACHE_FLAGS) \
-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
$(DESTDIR)$(LIBDEST)
+endif
+ifeq (@PYC_BUILD@,yes)
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
-d $(LIBDEST)/site-packages -f $(STDLIB_CACHE_FLAGS) \
-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+endif
+ifeq (@PYO_BUILD@,yes)
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
-d $(LIBDEST)/site-packages -f $(STDLIB_CACHE_FLAGS) \
-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+endif
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
Index: b/configure.ac
===================================================================
--- a/configure.ac
+++ b/configure.ac
@@ -936,6 +936,18 @@
AC_MSG_CHECKING(LDLIBRARY)
+AC_SUBST(PYC_BUILD)
+
+AC_ARG_ENABLE(pyc-build,
+ AS_HELP_STRING([--disable-pyc-build], [disable build of pyc files]),
+ [ PYC_BUILD="${enableval}" ], [ PYC_BUILD=yes ])
+
+AC_SUBST(PYO_BUILD)
+
+AC_ARG_ENABLE(pyo-build,
+ AS_HELP_STRING([--disable-pyo-build], [disable build of pyo files]),
+ [ PYO_BUILD="${enableval}" ], [ PYO_BUILD=yes ])
+
# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
# library that we build, but we do not want to link against it (we
# will find it with a -framework option). For this reason there is an

View File

@ -6,11 +6,11 @@ Signed-off-by: Vanya Sergeev <vsergeev at gmail.com>
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: Python-3.3.0/configure.ac
Index: b/configure.ac
===================================================================
--- Python-3.3.0.orig/configure.ac
+++ Python-3.3.0/configure.ac
@@ -3204,7 +3204,7 @@
--- a/configure.ac
+++ b/configure.ac
@@ -3423,7 +3423,7 @@
AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)

View File

@ -1,63 +0,0 @@
Make sure setup.py reads the correct CONFIG_ARGS
The setup.py script that builds and installs all the Python modules
shipped with the interpreter looks at the CONFIG_ARGS variable stored
in the "sysconfig" module to look at the ./configure options and
adjust its behaviour accordingly.
Unfortunately, when cross-compiling, the value of CONFIG_ARGS returned
by the sysconfig are the one passed to the ./configure script of the
*host* Python and not the one we're currently building for the target.
In order to avoid that, we re-initialize the values in the sysconfig
module by re-reading the environment at the beginning of the setup.py
script, and we make sure that the CONFIG_ARGS variable is actually
part of the environment of setup.py.
See the beginning of
http://article.gmane.org/gmane.comp.python.devel/99772 for the
inspiration.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
Makefile.pre.in | 4 +++-
setup.py | 3 +++
2 files changed, 6 insertions(+), 1 deletion(-)
Index: Python-3.3.0/setup.py
===================================================================
--- Python-3.3.0.orig/setup.py
+++ Python-3.3.0/setup.py
@@ -30,6 +30,9 @@
# Were we compiled --with-pydebug or with #define Py_DEBUG?
COMPILED_WITH_PYDEBUG = ('--with-pydebug' in sysconfig.get_config_var("CONFIG_ARGS"))
+sysconfig.get_config_vars()
+sysconfig._CONFIG_VARS.update(os.environ)
+
# This global variable is used to hold the list of modules to be disabled.
disabled_module_list = []
Index: Python-3.3.0/Makefile.pre.in
===================================================================
--- Python-3.3.0.orig/Makefile.pre.in
+++ Python-3.3.0/Makefile.pre.in
@@ -478,6 +478,7 @@
sharedmods: $(BUILDPYTHON) pybuilddir.txt
case $$MAKEFLAGS in *s*) quiet=-q; esac; \
$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
+ CONFIG_ARGS="$(CONFIG_ARGS)" \
$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
# Build static library
@@ -1183,7 +1184,8 @@
# Install the dynamically loadable modules
# This goes into $(exec_prefix)
sharedinstall: sharedmods
- $(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \
+ $(RUNSHARED) CONFIG_ARGS="$(CONFIG_ARGS)" \
+ $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \
--prefix=$(prefix) \
--install-scripts=$(BINDIR) \
--install-platlib=$(DESTSHARED) \

View File

@ -1,76 +0,0 @@
Change the location of pyconfig.h
The Python interpreter has a really strange behaviour: at *runtime*,
it reads a Makefile and a header file named pyconfig.h to get some
information about the configuration.
The Makefile is located in usr/lib/python3.3/config-3.3m, which is fine
since this location is kept on the target.
However, by default, the pyconfig.h is installed in
usr/include/python3.3m, but we completely remove the usr/include
directory for the target. Since making an exception just for
pyconfig.h is annoying, this patch also installs pyconfig.h to
usr/lib/python3.3/config-3.3m, and modifies the sysconfig module so that it
looks in this location instead of usr/include.
The pyconfig.h is still kept in usr/include/python3.3m, because it is
needed in the $(STAGING_DIR) when building third-party Python
extensions that contain C code.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
Lib/distutils/sysconfig.py | 3 ++-
Lib/sysconfig.py | 2 +-
Makefile.pre.in | 3 ++-
3 files changed, 5 insertions(+), 3 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
@@ -239,7 +239,8 @@
else:
inc_dir = _sys_home or project_base
else:
- inc_dir = get_python_inc(plat_specific=1)
+ lib_dir = get_python_lib(plat_specific=1, standard_lib=1)
+ inc_dir = os.path.join(lib_dir, "config")
if get_python_version() < '2.2':
config_h = 'config.h'
else:
Index: Python-3.3.0/Lib/sysconfig.py
===================================================================
--- Python-3.3.0.orig/Lib/sysconfig.py
+++ Python-3.3.0/Lib/sysconfig.py
@@ -467,7 +467,7 @@
else:
inc_dir = _sys_home or _PROJECT_BASE
else:
- inc_dir = get_path('platinclude')
+ inc_dir = os.path.join(get_path('stdlib'), "config")
return os.path.join(inc_dir, 'pyconfig.h')
Index: Python-3.3.0/Makefile.pre.in
===================================================================
--- Python-3.3.0.orig/Makefile.pre.in
+++ Python-3.3.0/Makefile.pre.in
@@ -1123,7 +1123,6 @@
echo $(INSTALL_DATA) $$i $(INCLUDEPY); \
$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY); \
done
- $(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
# Install the library and miscellaneous stuff needed for extending/embedding
# This goes into $(exec_prefix)
@@ -1157,6 +1156,8 @@
$(INSTALL_DATA) Modules/python.o $(DESTDIR)$(LIBPL)/python.o
$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in
$(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile
+ $(INSTALL_DATA) pyconfig.h $(DESTDIR)$(LIBPL)/pyconfig.h
+ $(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
$(INSTALL_DATA) Modules/Setup $(DESTDIR)$(LIBPL)/Setup
$(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local
$(INSTALL_DATA) Modules/Setup.config $(DESTDIR)$(LIBPL)/Setup.config

View File

@ -38,11 +38,11 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
setup.py | 5 ++++-
3 files changed, 10 insertions(+), 1 deletion(-)
Index: cpython/Makefile.pre.in
Index: b/Makefile.pre.in
===================================================================
--- cpython.orig/Makefile.pre.in
+++ cpython/Makefile.pre.in
@@ -155,6 +155,8 @@
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -175,6 +175,8 @@
# configure script arguments
CONFIG_ARGS= @CONFIG_ARGS@
@ -51,27 +51,29 @@ Index: cpython/Makefile.pre.in
# Subdirectories with code
SRCDIRS= @SRCDIRS@
@@ -478,6 +480,7 @@
sharedmods: $(BUILDPYTHON) pybuilddir.txt
@@ -561,6 +563,7 @@
esac; \
$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
CONFIG_ARGS="$(CONFIG_ARGS)" \
_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \
+ DISABLED_EXTENSIONS="$(DISABLED_EXTENSIONS)" \
$(PYTHON_FOR_BUILD) $(srcdir)/setup.py build
$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
# Build static library
@@ -1185,6 +1188,7 @@
@@ -1371,7 +1374,8 @@
# Install the dynamically loadable modules
# This goes into $(exec_prefix)
sharedinstall: sharedmods
$(RUNSHARED) CONFIG_ARGS="$(CONFIG_ARGS)" \
+ DISABLED_EXTENSIONS="$(DISABLED_EXTENSIONS)" \
$(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \
- $(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \
+ $(RUNSHARED) DISABLED_EXTENSIONS="$(DISABLED_EXTENSIONS)" \
+ $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \
--prefix=$(prefix) \
--install-scripts=$(BINDIR) \
Index: cpython/configure.ac
--install-platlib=$(DESTSHARED) \
Index: b/configure.ac
===================================================================
--- cpython.orig/configure.ac
+++ cpython/configure.ac
@@ -2175,6 +2175,8 @@
--- a/configure.ac
+++ b/configure.ac
@@ -2360,6 +2360,8 @@
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
@ -80,12 +82,12 @@ Index: cpython/configure.ac
# Check for use of the system expat library
AC_MSG_CHECKING(for --with-system-expat)
AC_ARG_WITH(system_expat,
Index: cpython/setup.py
Index: b/setup.py
===================================================================
--- cpython.orig/setup.py
+++ cpython/setup.py
@@ -34,7 +34,10 @@
sysconfig._CONFIG_VARS.update(os.environ)
--- a/setup.py
+++ b/setup.py
@@ -33,7 +33,10 @@
COMPILED_WITH_PYDEBUG = ('--with-pydebug' in sysconfig.get_config_var("CONFIG_ARGS"))
# This global variable is used to hold the list of modules to be disabled.
-disabled_module_list = []

View File

@ -0,0 +1,58 @@
Index: b/Lib/distutils/sysconfig.py
===================================================================
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -430,49 +430,11 @@
def _init_posix():
"""Initialize the module as appropriate for POSIX systems."""
- g = {}
- # load the installed Makefile:
- try:
- filename = get_makefile_filename()
- parse_makefile(filename, g)
- except OSError as msg:
- my_msg = "invalid Python installation: unable to open %s" % filename
- if hasattr(msg, "strerror"):
- my_msg = my_msg + " (%s)" % msg.strerror
-
- raise DistutilsPlatformError(my_msg)
-
- # load the installed pyconfig.h:
- try:
- filename = get_config_h_filename()
- with open(filename) as file:
- parse_config_h(file, g)
- except OSError as msg:
- my_msg = "invalid Python installation: unable to open %s" % filename
- if hasattr(msg, "strerror"):
- my_msg = my_msg + " (%s)" % msg.strerror
-
- raise DistutilsPlatformError(my_msg)
-
- # On AIX, there are wrong paths to the linker scripts in the Makefile
- # -- these paths are relative to the Python source, but when installed
- # the scripts are in another directory.
- if python_build:
- g['LDSHARED'] = g['BLDSHARED']
-
- elif get_python_version() < '2.1':
- # The following two branches are for 1.5.2 compatibility.
- if sys.platform == 'aix4': # what about AIX 3.x ?
- # Linker script is in the config directory, not in Modules as the
- # Makefile says.
- python_lib = get_python_lib(standard_lib=1)
- ld_so_aix = os.path.join(python_lib, 'config', 'ld_so_aix')
- python_exp = os.path.join(python_lib, 'config', 'python.exp')
-
- g['LDSHARED'] = "%s %s -bI:%s" % (ld_so_aix, g['CC'], python_exp)
-
+ # _sysconfigdata is generated at build time, see the sysconfig module
+ from _sysconfigdata import build_time_vars
global _config_vars
- _config_vars = g
+ _config_vars = {}
+ _config_vars.update(build_time_vars)
def _init_nt():

View File

@ -1,51 +0,0 @@
Remove runtime library paths
For some extensions (sqlite and dbm), Python setup.py script
hardcode a runtime path (rpath) into the extension. However, this
runtime path is incorrect (because it points to the location of the
library directory on the development machine) and useless (because on
the target, all useful libraries are in a standard directory searched
by the dynamic loader). For those reasons, we just get rid of the
runtime paths in cross-compilation mode.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
setup.py | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
Index: Python-3.3.0/setup.py
===================================================================
--- Python-3.3.0.orig/setup.py
+++ Python-3.3.0/setup.py
@@ -1134,11 +1134,15 @@
# can end up with a bad search path order.
if sqlite_incdir not in self.compiler.include_dirs:
include_dirs.append(sqlite_incdir)
+ if cross_compiling:
+ sqlite_runtime_libdir = None
+ else:
+ sqlite_runtime_libdir = sqlite_libdir
exts.append(Extension('_sqlite3', sqlite_srcs,
define_macros=sqlite_defines,
include_dirs=include_dirs,
library_dirs=sqlite_libdir,
- runtime_library_dirs=sqlite_libdir,
+ runtime_library_dirs=sqlite_runtime_libdir,
extra_link_args=sqlite_extra_link_args,
libraries=["sqlite3",]))
else:
@@ -1205,9 +1209,13 @@
elif cand == "bdb":
if db_incs is not None:
if dbm_setup_debug: print("building dbm using bdb")
+ if cross_compiling:
+ dblib_runtime_libdir = None
+ else:
+ dblib_runtime_libdir = dblib_dir
dbmext = Extension('_dbm', ['_dbmmodule.c'],
library_dirs=dblib_dir,
- runtime_library_dirs=dblib_dir,
+ runtime_library_dirs=dblib_runtime_libdir,
include_dirs=db_incs,
define_macros=[
('HAVE_BERKDB_H', None),

View File

@ -0,0 +1,57 @@
Adjust library/header paths for cross-compilation
When cross-compiling third-party extensions, the get_python_inc() or
get_python_lib() can be called, to return the path to headers or
libraries. However, they use the sys.prefix of the host Python, which
returns incorrect paths when cross-compiling (paths pointing to host
headers and libraries).
In order to fix this, we introduce the _python_sysroot, _python_prefix
and _python_exec_prefix variables, that allow to override these
values, and get correct header/library paths when cross-compiling
third-party Python modules.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Index: b/Lib/distutils/sysconfig.py
===================================================================
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -16,10 +16,17 @@
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)
-BASE_PREFIX = os.path.normpath(sys.base_prefix)
-BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix)
+if "_python_sysroot" in os.environ:
+ _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'))
+ BASE_PREFIX = PREFIX
+ BASE_EXEC_PREFIX = EXEC_PREFIX
+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,
Index: b/Lib/distutils/command/build_ext.py
===================================================================
--- a/Lib/distutils/command/build_ext.py
+++ b/Lib/distutils/command/build_ext.py
@@ -248,7 +248,10 @@
if (sysconfig.get_config_var('Py_ENABLE_SHARED')):
if not sysconfig.python_build:
# building third party extensions
- self.library_dirs.append(sysconfig.get_config_var('LIBDIR'))
+ libdir = sysconfig.get_config_var('LIBDIR')
+ if "_python_sysroot" in os.environ:
+ libdir = os.environ.get("_python_sysroot") + libdir
+ self.library_dirs.append(libdir)
else:
# building python standard extensions
self.library_dirs.append('.')

View File

@ -1,26 +0,0 @@
Enables verbose output when building modules
Patch borrowed from OpenBricks.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
Makefile.pre.in | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
Index: Python-3.3.0/Makefile.pre.in
===================================================================
--- Python-3.3.0.orig/Makefile.pre.in
+++ Python-3.3.0/Makefile.pre.in
@@ -476,10 +476,9 @@
# Build the shared modules
sharedmods: $(BUILDPYTHON) pybuilddir.txt
- case $$MAKEFLAGS in *s*) quiet=-q; esac; \
$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
CONFIG_ARGS="$(CONFIG_ARGS)" \
- $(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
+ $(PYTHON_FOR_BUILD) $(srcdir)/setup.py build
# Build static library
# avoid long command lines, same as LIBRARY_OBJS

View File

@ -1,71 +0,0 @@
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)

View File

@ -0,0 +1,22 @@
Don't look in /usr/lib/termcap for libraries
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Index: b/setup.py
===================================================================
--- a/setup.py
+++ b/setup.py
@@ -725,12 +725,9 @@
pass # Issue 7384: Already linked against curses or tinfo.
elif curses_library:
readline_libs.append(curses_library)
- elif self.compiler.find_library_file(lib_dirs +
- ['/usr/lib/termcap'],
- 'termcap'):
+ elif self.compiler.find_library_file(lib_dirs, 'termcap'):
readline_libs.append('termcap')
exts.append( Extension('readline', ['readline.c'],
- library_dirs=['/usr/lib/termcap'],
extra_link_args=readline_extra_link_args,
libraries=readline_libs) )
else:

View File

@ -11,11 +11,11 @@ Signed-off-by: Samuel Martin <s.martin49@gmail.com>
configure.ac | 6 ++++++
2 files changed, 38 insertions(+), 18 deletions(-)
Index: cpython/Makefile.pre.in
Index: b/Makefile.pre.in
===================================================================
--- cpython.orig/Makefile.pre.in
+++ cpython/Makefile.pre.in
@@ -976,8 +976,26 @@
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1120,8 +1120,30 @@
EXTRAPLATDIR= @EXTRAPLATDIR@
MACHDEPS= $(PLATDIR) $(EXTRAPLATDIR)
XMLLIBSUBDIRS= xml xml/dom xml/etree xml/parsers xml/sax
@ -23,13 +23,16 @@ Index: cpython/Makefile.pre.in
- tkinter/test/test_ttk site-packages test \
+LIBSUBDIRS= tkinter \
+ site-packages \
+ asyncio \
+ collections concurrent concurrent/futures encodings \
+ email email/mime \
+ ensurepip ensurepip/_bundled \
+ html json http dbm xmlrpc \
+ sqlite3 \
+ logging csv wsgiref urllib \
+ lib2to3 lib2to3/fixes lib2to3/pgen2 \
+ ctypes ctypes/macholib idlelib idlelib/Icons \
+ ctypes ctypes/macholib \
+ idlelib idlelib/Icons \
+ distutils distutils/command $(XMLLIBSUBDIRS) \
+ importlib \
+ turtledemo \
@ -38,37 +41,34 @@ Index: cpython/Makefile.pre.in
+ venv venv/scripts venv/scripts/posix \
+ curses pydoc_data $(MACHDEPS)
+
+ifeq (@TEST_MODULES@,yes)
+LIBSUBDIRS += tkinter/test tkinter/test/test_tkinter \
+ tkinter/test/test_ttk test \
+TESTSUBDIRS = tkinter/test tkinter/test/test_tkinter tkinter/test/test_ttk \
+ test test/test_asyncio ctypes/test \
+ test/test_email test/test_email/data \
+ test/test_json \
test/audiodata \
test/capath test/data \
test/cjkencodings test/decimaltestdata test/xmltestdata \
test/subprocessdata test/sndhdrdata \
@@ -1000,26 +1018,22 @@
test/namespace_pkgs/project3 \
test/namespace_pkgs/project3/parent \
@@ -1148,28 +1170,20 @@
test/namespace_pkgs/project3/parent/child \
- test/namespace_pkgs/module_and_namespace_package \
- test/namespace_pkgs/module_and_namespace_package/a_test \
test/namespace_pkgs/module_and_namespace_package \
test/namespace_pkgs/module_and_namespace_package/a_test \
- asyncio \
- test/test_asyncio \
- collections concurrent concurrent/futures encodings \
- email email/mime test/test_email test/test_email/data \
- html json test/json_tests http dbm xmlrpc \
- ensurepip ensurepip/_bundled \
- html json test/test_json http dbm xmlrpc \
- sqlite3 sqlite3/test \
- logging csv wsgiref urllib \
- lib2to3 lib2to3/fixes lib2to3/pgen2 lib2to3/tests \
+ test/namespace_pkgs/module_and_namespace_package \
+ test/namespace_pkgs/module_and_namespace_package/a_test \
+ test/test_email test/test_email/data \
+ test/json_tests \
+ sqlite3/test \
+ lib2to3/tests \
lib2to3/tests/data lib2to3/tests/data/fixers \
lib2to3/tests/data/fixers/myfixes \
- ctypes ctypes/test ctypes/macholib idlelib idlelib/Icons \
- ctypes ctypes/test ctypes/macholib \
- idlelib idlelib/Icons idlelib/idle_test \
- distutils distutils/command distutils/tests $(XMLLIBSUBDIRS) \
- importlib test/test_importlib test/test_importlib/builtin \
+ ctypes/test \
+ distutils/tests \
+ sqlite3/test idlelib/idle_test \
+ test/test_importlib test/test_importlib/builtin \
test/test_importlib/extension test/test_importlib/frozen \
test/test_importlib/import_ test/test_importlib/source \
@ -77,17 +77,21 @@ Index: cpython/Makefile.pre.in
- unittest unittest/test unittest/test/testmock \
- venv venv/scripts venv/scripts/posix \
- curses pydoc_data $(MACHDEPS)
+ unittest unittest/test unittest/test/testmock
+ unittest/test unittest/test/testmock \
+ distutils/tests
+
+ifeq (@TEST_MODULES@,yes)
+LIBSUBDIRS += $(TESTSUBDIRS)
+endif
+
libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
@for i in $(SCRIPTDIR) $(LIBDEST); \
do \
Index: cpython/configure.ac
Index: b/configure.ac
===================================================================
--- cpython.orig/configure.ac
+++ cpython/configure.ac
@@ -2449,6 +2449,12 @@
--- a/configure.ac
+++ b/configure.ac
@@ -2667,6 +2667,12 @@
fi

View File

@ -12,11 +12,11 @@ Signed-off-by: Samuel Martin <s.martin49@gmail.com>
setup.py | 9 +++++++--
3 files changed, 19 insertions(+), 3 deletions(-)
Index: cpython/Makefile.pre.in
Index: b/Makefile.pre.in
===================================================================
--- cpython.orig/Makefile.pre.in
+++ cpython/Makefile.pre.in
@@ -952,7 +952,9 @@
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1087,7 +1087,9 @@
-rm -f $(DESTDIR)$(BINDIR)/idle3
(cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3)
-rm -f $(DESTDIR)$(BINDIR)/pydoc3
@ -26,32 +26,32 @@ Index: cpython/Makefile.pre.in
-rm -f $(DESTDIR)$(BINDIR)/2to3
(cd $(DESTDIR)$(BINDIR); $(LN) -s 2to3-$(VERSION) 2to3)
-rm -f $(DESTDIR)$(BINDIR)/pyvenv
@@ -991,7 +993,7 @@
@@ -1138,7 +1140,7 @@
multiprocessing multiprocessing/dummy \
unittest \
venv venv/scripts venv/scripts/posix \
- curses pydoc_data $(MACHDEPS)
+ curses $(MACHDEPS)
ifeq (@TEST_MODULES@,yes)
LIBSUBDIRS += tkinter/test tkinter/test/test_tkinter \
@@ -1034,6 +1036,10 @@
unittest unittest/test unittest/test/testmock
endif
TESTSUBDIRS = tkinter/test tkinter/test/test_tkinter tkinter/test/test_ttk \
test test/test_asyncio ctypes/test \
@@ -1180,6 +1182,10 @@
unittest/test unittest/test/testmock \
distutils/tests
+ifeq (@PYDOC@,yes)
+LIBSUBDIRS += pydoc_data
+endif
+
libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
@for i in $(SCRIPTDIR) $(LIBDEST); \
do \
Index: cpython/configure.ac
ifeq (@TEST_MODULES@,yes)
LIBSUBDIRS += $(TESTSUBDIRS)
endif
Index: b/configure.ac
===================================================================
--- cpython.orig/configure.ac
+++ cpython/configure.ac
@@ -2448,6 +2448,11 @@
esac])
--- a/configure.ac
+++ b/configure.ac
@@ -2666,6 +2666,11 @@
AC_CHECK_FUNCS(pthread_atfork)
fi
+AC_SUBST(PYDOC)
@ -62,11 +62,11 @@ Index: cpython/configure.ac
AC_SUBST(TEST_MODULES)
Index: cpython/setup.py
Index: b/setup.py
===================================================================
--- cpython.orig/setup.py
+++ cpython/setup.py
@@ -2123,6 +2123,12 @@
--- a/setup.py
+++ b/setup.py
@@ -2182,6 +2182,12 @@
# turn off warnings when deprecated modules are imported
import warnings
warnings.filterwarnings("ignore",category=DeprecationWarning)
@ -79,7 +79,7 @@ Index: cpython/setup.py
setup(# PyPI Metadata (PEP 301)
name = "Python",
version = sys.version.split()[0],
@@ -2147,8 +2153,7 @@
@@ -2206,8 +2212,7 @@
# If you change the scripts installed here, you also need to
# check the PyBuildScripts command above, and change the links
# created by the bininstall target in Makefile.pre.in

View File

@ -12,11 +12,11 @@ Signed-off-by: Samuel Martin <s.martin49@gmail.com>
setup.py | 5 +++--
3 files changed, 23 insertions(+), 6 deletions(-)
Index: cpython/Makefile.pre.in
Index: b/Makefile.pre.in
===================================================================
--- cpython.orig/Makefile.pre.in
+++ cpython/Makefile.pre.in
@@ -956,7 +956,9 @@
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1091,7 +1091,9 @@
(cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3)
endif
-rm -f $(DESTDIR)$(BINDIR)/2to3
@ -25,46 +25,44 @@ Index: cpython/Makefile.pre.in
+endif
-rm -f $(DESTDIR)$(BINDIR)/pyvenv
(cd $(DESTDIR)$(BINDIR); $(LN) -s pyvenv-$(VERSION) pyvenv)
@@ -985,7 +987,6 @@
if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \
@@ -1131,7 +1133,6 @@
html json http dbm xmlrpc \
sqlite3 \
logging csv wsgiref urllib \
- lib2to3 lib2to3/fixes lib2to3/pgen2 \
ctypes ctypes/macholib idlelib idlelib/Icons \
ctypes ctypes/macholib \
idlelib idlelib/Icons \
distutils distutils/command $(XMLLIBSUBDIRS) \
importlib \
@@ -1025,9 +1026,6 @@
test/test_email test/test_email/data \
test/json_tests \
sqlite3/test \
@@ -1172,9 +1173,6 @@
test/namespace_pkgs/project3/parent/child \
test/namespace_pkgs/module_and_namespace_package \
test/namespace_pkgs/module_and_namespace_package/a_test \
- lib2to3/tests \
- lib2to3/tests/data lib2to3/tests/data/fixers \
- lib2to3/tests/data/fixers/myfixes \
ctypes/test \
distutils/tests \
sqlite3/test idlelib/idle_test \
test/test_importlib test/test_importlib/builtin \
@@ -1040,6 +1038,16 @@
test/test_importlib/extension test/test_importlib/frozen \
@@ -1186,6 +1184,14 @@
LIBSUBDIRS += pydoc_data
endif
+ifeq (@LIB2TO3@,yes)
+LIBSUBDIRS += lib2to3 lib2to3/fixes lib2to3/pgen2
+ifeq (@TEST_MODULES@,yes)
+LIBSUBDIRS += lib2to3/tests \
+ lib2to3/tests/data \
+ lib2to3/tests/data/fixers \
+ lib2to3/tests/data/fixers/myfixes
+endif
+TESTSUBDIRS += lib2to3/tests \
+ lib2to3/tests/data \
+ lib2to3/tests/data/fixers \
+ lib2to3/tests/data/fixers/myfixes
+endif
+
libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
@for i in $(SCRIPTDIR) $(LIBDEST); \
do \
@@ -1109,10 +1117,12 @@
$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
-d $(LIBDEST)/site-packages -f \
ifeq (@TEST_MODULES@,yes)
LIBSUBDIRS += $(TESTSUBDIRS)
endif
@@ -1281,10 +1287,12 @@
-d $(LIBDEST)/site-packages -f $(STDLIB_CACHE_FLAGS) \
-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
endif
+ifeq (@LIB2TO3@,yes)
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
@ -74,11 +72,11 @@ Index: cpython/Makefile.pre.in
# Create the PLATDIR source directory, if one wasn't distributed..
$(srcdir)/Lib/$(PLATDIR):
Index: cpython/setup.py
Index: b/setup.py
===================================================================
--- cpython.orig/setup.py
+++ cpython/setup.py
@@ -2124,10 +2124,11 @@
--- a/setup.py
+++ b/setup.py
@@ -2183,10 +2183,11 @@
import warnings
warnings.filterwarnings("ignore",category=DeprecationWarning)
@ -92,11 +90,11 @@ Index: cpython/setup.py
setup(# PyPI Metadata (PEP 301)
name = "Python",
Index: cpython/configure.ac
Index: b/configure.ac
===================================================================
--- cpython.orig/configure.ac
+++ cpython/configure.ac
@@ -2460,6 +2460,12 @@
--- a/configure.ac
+++ b/configure.ac
@@ -2678,6 +2678,12 @@
AS_HELP_STRING([--disable-test-modules], [disable test modules]),
[ TEST_MODULES="${enableval}" ], [ TEST_MODULES=yes ])

View File

@ -8,12 +8,12 @@ Signed-off-by: Samuel Martin <s.martin49@gmail.com>
configure.ac | 9 +++++++++
2 files changed, 16 insertions(+), 2 deletions(-)
Index: cpython/configure.ac
Index: b/configure.ac
===================================================================
--- cpython.orig/configure.ac
+++ cpython/configure.ac
@@ -2448,6 +2448,15 @@
esac])
--- a/configure.ac
+++ b/configure.ac
@@ -2666,6 +2666,15 @@
AC_CHECK_FUNCS(pthread_atfork)
fi
+AC_SUBST(SQLITE3)
@ -28,37 +28,36 @@ Index: cpython/configure.ac
AC_SUBST(PYDOC)
AC_ARG_ENABLE(pydoc,
Index: cpython/Makefile.pre.in
Index: b/Makefile.pre.in
===================================================================
--- cpython.orig/Makefile.pre.in
+++ cpython/Makefile.pre.in
@@ -985,7 +985,6 @@
collections concurrent concurrent/futures encodings \
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1131,7 +1131,6 @@
email email/mime \
ensurepip ensurepip/_bundled \
html json http dbm xmlrpc \
- sqlite3 \
logging csv wsgiref urllib \
ctypes ctypes/macholib idlelib idlelib/Icons \
distutils distutils/command $(XMLLIBSUBDIRS) \
@@ -1025,7 +1024,6 @@
test/namespace_pkgs/module_and_namespace_package/a_test \
test/test_email test/test_email/data \
test/json_tests \
- sqlite3/test \
ctypes/test \
distutils/tests \
ctypes ctypes/macholib \
idlelib idlelib/Icons \
@@ -1173,7 +1172,7 @@
test/namespace_pkgs/project3/parent/child \
test/namespace_pkgs/module_and_namespace_package \
test/namespace_pkgs/module_and_namespace_package/a_test \
- sqlite3/test idlelib/idle_test \
+ idlelib/idle_test \
test/test_importlib test/test_importlib/builtin \
@@ -1048,6 +1046,13 @@
endif
test/test_importlib/extension test/test_importlib/frozen \
test/test_importlib/import_ test/test_importlib/source \
@@ -1192,6 +1191,11 @@
lib2to3/tests/data/fixers/myfixes
endif
+ifeq (@SQLITE3@,yes)
+LIBSUBDIRS += sqlite3
+ifeq (@TEST_MODULES@,yes)
+LIBSUBDIRS += sqlite3/test
+endif
+TESTSUBDIRS += sqlite3/test
+endif
+
libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
@for i in $(SCRIPTDIR) $(LIBDEST); \
do \
ifeq (@TEST_MODULES@,yes)
LIBSUBDIRS += $(TESTSUBDIRS)
endif

View File

@ -8,50 +8,47 @@ Signed-off-by: Samuel Martin <s.martin49@gmail.com>
configure.ac | 9 +++++++++
2 files changed, 20 insertions(+), 3 deletions(-)
Index: cpython/Makefile.pre.in
Index: b/Makefile.pre.in
===================================================================
--- cpython.orig/Makefile.pre.in
+++ cpython/Makefile.pre.in
@@ -980,7 +980,7 @@
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1124,7 +1124,7 @@
EXTRAPLATDIR= @EXTRAPLATDIR@
MACHDEPS= $(PLATDIR) $(EXTRAPLATDIR)
XMLLIBSUBDIRS= xml xml/dom xml/etree xml/parsers xml/sax
-LIBSUBDIRS= tkinter \
+LIBSUBDIRS= \
site-packages \
asyncio \
collections concurrent concurrent/futures encodings \
email email/mime \
@@ -996,8 +996,7 @@
@@ -1142,8 +1142,7 @@
venv venv/scripts venv/scripts/posix \
curses $(MACHDEPS)
ifeq (@TEST_MODULES@,yes)
-LIBSUBDIRS += tkinter/test tkinter/test/test_tkinter \
- tkinter/test/test_ttk test \
+LIBSUBDIRS += test \
test/capath test/data \
test/cjkencodings test/decimaltestdata test/xmltestdata \
test/subprocessdata test/sndhdrdata \
@@ -1053,6 +1052,15 @@
endif
-TESTSUBDIRS = tkinter/test tkinter/test/test_tkinter tkinter/test/test_ttk \
- test test/test_asyncio ctypes/test \
+TESTSUBDIRS = test test/test_asyncio ctypes/test \
test/test_email test/test_email/data \
test/test_json \
test/audiodata \
@@ -1196,6 +1195,12 @@
TESTSUBDIRS += sqlite3/test
endif
+ifeq (@TK@,yes)
+LIBSUBDIRS += tkinter
+ifeq (@TEST_MODULES@,yes)
+LIBSUBDIRS += \
+ tkinter/test tkinter/test/test_tkinter \
+ tkinter/test/test_ttk
+endif
+TESTSUBDIRS += tkinter/test tkinter/test/test_tkinter \
+ tkinter/test/test_ttk
+endif
+
libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
@for i in $(SCRIPTDIR) $(LIBDEST); \
do \
Index: cpython/configure.ac
ifeq (@TEST_MODULES@,yes)
LIBSUBDIRS += $(TESTSUBDIRS)
endif
Index: b/configure.ac
===================================================================
--- cpython.orig/configure.ac
+++ cpython/configure.ac
@@ -2457,6 +2457,15 @@
--- a/configure.ac
+++ b/configure.ac
@@ -2675,6 +2675,15 @@
DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _sqlite3"
fi

View File

@ -8,35 +8,35 @@ Signed-off-by: Samuel Martin <s.martin49@gmail.com>
configure.ac | 9 +++++++++
2 files changed, 14 insertions(+), 1 deletion(-)
Index: cpython/Makefile.pre.in
Index: b/Makefile.pre.in
===================================================================
--- cpython.orig/Makefile.pre.in
+++ cpython/Makefile.pre.in
@@ -993,7 +993,7 @@
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1140,7 +1140,7 @@
multiprocessing multiprocessing/dummy \
unittest \
venv venv/scripts venv/scripts/posix \
- curses $(MACHDEPS)
+ $(MACHDEPS)
ifeq (@TEST_MODULES@,yes)
LIBSUBDIRS += test \
@@ -1061,6 +1061,10 @@
endif
TESTSUBDIRS = test test/test_asyncio ctypes/test \
test/test_email test/test_email/data \
@@ -1201,6 +1201,10 @@
tkinter/test/test_ttk
endif
+ifeq (@CURSES@,yes)
+LIBSUBDIRS += curses
+endif
+
libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
@for i in $(SCRIPTDIR) $(LIBDEST); \
do \
Index: cpython/configure.ac
ifeq (@TEST_MODULES@,yes)
LIBSUBDIRS += $(TESTSUBDIRS)
endif
Index: b/configure.ac
===================================================================
--- cpython.orig/configure.ac
+++ cpython/configure.ac
@@ -2466,6 +2466,15 @@
--- a/configure.ac
+++ b/configure.ac
@@ -2684,6 +2684,15 @@
DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _tkinter"
fi

View File

@ -15,20 +15,20 @@ Signed-off-by: Samuel Martin <s.martin49@gmail.com>
setup.py | 2 +-
3 files changed, 19 insertions(+), 7 deletions(-)
Index: cpython/Makefile.pre.in
Index: b/Makefile.pre.in
===================================================================
--- cpython.orig/Makefile.pre.in
+++ cpython/Makefile.pre.in
@@ -987,7 +987,7 @@
html json http dbm xmlrpc \
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1134,7 +1134,7 @@
logging csv wsgiref urllib \
ctypes ctypes/macholib idlelib idlelib/Icons \
ctypes ctypes/macholib \
idlelib idlelib/Icons \
- distutils distutils/command $(XMLLIBSUBDIRS) \
+ distutils distutils/command \
importlib \
turtledemo \
multiprocessing multiprocessing/dummy \
@@ -1065,6 +1065,10 @@
@@ -1205,6 +1205,10 @@
LIBSUBDIRS += curses
endif
@ -36,14 +36,14 @@ Index: cpython/Makefile.pre.in
+LIBSUBDIRS += $(XMLLIBSUBDIRS)
+endif
+
libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
@for i in $(SCRIPTDIR) $(LIBDEST); \
do \
Index: cpython/configure.ac
ifeq (@TEST_MODULES@,yes)
LIBSUBDIRS += $(TESTSUBDIRS)
endif
Index: b/configure.ac
===================================================================
--- cpython.orig/configure.ac
+++ cpython/configure.ac
@@ -2178,13 +2178,21 @@
--- a/configure.ac
+++ b/configure.ac
@@ -2363,13 +2363,21 @@
AC_SUBST(DISABLED_EXTENSIONS)
# Check for use of the system expat library
@ -70,11 +70,11 @@ Index: cpython/configure.ac
# Check for use of the system libffi library
AC_MSG_CHECKING(for --with-system-ffi)
Index: cpython/setup.py
Index: b/setup.py
===================================================================
--- cpython.orig/setup.py
+++ cpython/setup.py
@@ -1404,7 +1404,7 @@
--- a/setup.py
+++ b/setup.py
@@ -1396,7 +1396,7 @@
#
# More information on Expat can be found at www.libexpat.org.
#

View File

@ -6,11 +6,11 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
configure.ac | 6 ++++++
1 file changed, 6 insertions(+)
Index: cpython/configure.ac
Index: b/configure.ac
===================================================================
--- cpython.orig/configure.ac
+++ cpython/configure.ac
@@ -2465,6 +2465,12 @@
--- a/configure.ac
+++ b/configure.ac
@@ -2683,6 +2683,12 @@
DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _sqlite3"
fi

View File

@ -9,11 +9,11 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
configure.ac | 6 ++++++
1 file changed, 6 insertions(+)
Index: cpython/configure.ac
Index: b/configure.ac
===================================================================
--- cpython.orig/configure.ac
+++ cpython/configure.ac
@@ -2471,6 +2471,12 @@
--- a/configure.ac
+++ b/configure.ac
@@ -2689,6 +2689,12 @@
DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _codecs_kr _codecs_jp _codecs_cn _codecs_tw _codecs_hk _codecs_iso2022"
fi])

View File

@ -6,11 +6,11 @@ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
configure.ac | 6 ++++++
1 file changed, 6 insertions(+)
Index: cpython/configure.ac
Index: b/configure.ac
===================================================================
--- cpython.orig/configure.ac
+++ cpython/configure.ac
@@ -2477,6 +2477,12 @@
--- a/configure.ac
+++ b/configure.ac
@@ -2695,6 +2695,12 @@
DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} nis"
fi])

View File

@ -11,11 +11,11 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
setup.py | 4 +++-
3 files changed, 16 insertions(+), 2 deletions(-)
Index: cpython/Makefile.pre.in
Index: b/Makefile.pre.in
===================================================================
--- cpython.orig/Makefile.pre.in
+++ cpython/Makefile.pre.in
@@ -950,7 +950,9 @@
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1085,7 +1085,9 @@
-rm -f $(DESTDIR)$(LIBPC)/python3.pc
(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python3.pc)
-rm -f $(DESTDIR)$(BINDIR)/idle3
@ -25,16 +25,15 @@ Index: cpython/Makefile.pre.in
-rm -f $(DESTDIR)$(BINDIR)/pydoc3
ifeq (@PYDOC@,yes)
(cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3)
@@ -986,7 +988,7 @@
email email/mime \
@@ -1133,7 +1135,6 @@
html json http dbm xmlrpc \
logging csv wsgiref urllib \
- ctypes ctypes/macholib idlelib idlelib/Icons \
+ ctypes ctypes/macholib \
ctypes ctypes/macholib \
- idlelib idlelib/Icons \
distutils distutils/command \
importlib \
turtledemo \
@@ -1069,6 +1071,10 @@
@@ -1209,6 +1210,10 @@
LIBSUBDIRS += $(XMLLIBSUBDIRS)
endif
@ -42,14 +41,14 @@ Index: cpython/Makefile.pre.in
+LIBSUBDIRS += idlelib idlelib/Icons
+endif
+
libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
@for i in $(SCRIPTDIR) $(LIBDEST); \
do \
Index: cpython/configure.ac
ifeq (@TEST_MODULES@,yes)
LIBSUBDIRS += $(TESTSUBDIRS)
endif
Index: b/configure.ac
===================================================================
--- cpython.orig/configure.ac
+++ cpython/configure.ac
@@ -2519,6 +2519,12 @@
--- a/configure.ac
+++ b/configure.ac
@@ -2737,6 +2737,12 @@
AS_HELP_STRING([--disable-lib2to3], [disable lib2to3]),
[ LIB2TO3="${enableval}" ], [ LIB2TO3=yes ])
@ -62,11 +61,11 @@ Index: cpython/configure.ac
# Check for enable-ipv6
AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
AC_MSG_CHECKING([if --enable-ipv6 is specified])
Index: cpython/setup.py
Index: b/setup.py
===================================================================
--- cpython.orig/setup.py
+++ cpython/setup.py
@@ -2124,11 +2124,13 @@
--- a/setup.py
+++ b/setup.py
@@ -2183,11 +2183,13 @@
import warnings
warnings.filterwarnings("ignore",category=DeprecationWarning)

View File

@ -4,10 +4,11 @@
#
################################################################################
PYTHON3_VERSION_MAJOR = 3.3
PYTHON3_VERSION = $(PYTHON3_VERSION_MAJOR).0
PYTHON3_VERSION_MAJOR = 3.4
PYTHON3_VERSION_MINOR = 0
PYTHON3_VERSION = $(PYTHON3_VERSION_MAJOR).$(PYTHON3_VERSION_MINOR)rc1
PYTHON3_SOURCE = Python-$(PYTHON3_VERSION).tar.xz
PYTHON3_SITE = http://python.org/ftp/python/$(PYTHON3_VERSION)
PYTHON3_SITE = http://python.org/ftp/python/$(PYTHON3_VERSION_MAJOR).$(PYTHON3_VERSION_MINOR)
# Python needs itself and a "pgen" program to build itself, both being
# provided in the Python sources. So in order to cross-compile Python,
@ -16,6 +17,7 @@ PYTHON3_SITE = http://python.org/ftp/python/$(PYTHON3_VERSION)
# third-party Python modules.
HOST_PYTHON3_CONF_OPT += \
--without-ensurepip \
--without-cxx-main \
--disable-sqlite3 \
--disable-tk \
@ -25,25 +27,8 @@ HOST_PYTHON3_CONF_OPT += \
--disable-nis \
--disable-unicodedata \
--disable-test-modules \
--disable-idle3
HOST_PYTHON3_MAKE_ENV = \
PYTHON_MODULES_INCLUDE=$(HOST_DIR)/usr/include \
PYTHON_MODULES_LIB="$(HOST_DIR)/lib $(HOST_DIR)/usr/lib"
define HOST_PYTHON3_CONFIGURE_CMDS
(cd $(@D) && rm -rf config.cache; \
$(HOST_CONFIGURE_OPTS) \
CFLAGS="$(HOST_CFLAGS)" \
LDFLAGS="$(HOST_LDFLAGS)" \
$(HOST_PYTHON3_CONF_ENV) \
./configure \
--prefix="$(HOST_DIR)/usr" \
--sysconfdir="$(HOST_DIR)/etc" \
$(HOST_PYTHON3_CONF_OPT) \
)
endef
--disable-idle3 \
--disable-pyo-build
PYTHON3_DEPENDENCIES = host-python3 libffi
@ -72,6 +57,10 @@ ifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY),y)
PYTHON3_CONF_OPT += --enable-old-stdlib-cache
endif
ifeq ($(BR2_PACKAGE_PYTHON3_PY_ONLY),y)
PYTHON3_CONF_OPT += --disable-pyc-build
endif
ifeq ($(BR2_PACKAGE_PYTHON3_SQLITE),y)
PYTHON3_DEPENDENCIES += sqlite
else
@ -99,15 +88,12 @@ PYTHON3_DEPENDENCIES += zlib
endif
PYTHON3_CONF_ENV += \
_PROJECT_BASE=$(PYTHON3_DIR) \
_PYTHON_HOST_PLATFORM=$(BR2_HOSTARCH) \
PYTHON_FOR_BUILD=$(HOST_PYTHON3_DIR)/python \
PGEN_FOR_BUILD=$(HOST_PYTHON3_DIR)/Parser/pgen \
ac_cv_have_long_long_format=yes \
ac_cv_file__dev_ptmx=yes \
ac_cv_file__dev_ptc=yes \
PYTHON3_CONF_OPT += \
--without-ensurepip \
--without-cxx-main \
--with-system-ffi \
--disable-pydoc \
@ -115,22 +101,18 @@ PYTHON3_CONF_OPT += \
--disable-lib2to3 \
--disable-tk \
--disable-nis \
--disable-idle3
--disable-idle3 \
--disable-pyo-build
PYTHON3_MAKE_ENV = \
_PROJECT_BASE=$(PYTHON3_DIR) \
_PYTHON_HOST_PLATFORM=$(BR2_HOSTARCH) \
PYTHON_MODULES_INCLUDE=$(STAGING_DIR)/usr/include \
PYTHON_MODULES_LIB="$(STAGING_DIR)/lib $(STAGING_DIR)/usr/lib"
# This is needed to make sure the Python build process doesn't try to
# regenerate those files with the pgen program. Otherwise, it builds
# pgen for the target, and tries to run it on the host.
# python distutils adds -L$LIBDIR when linking binary extensions, causing
# trouble for cross compilation
define PYTHON3_FIXUP_LIBDIR
$(SED) 's|^LIBDIR=.*|LIBDIR= $(STAGING_DIR)/usr/lib|' \
$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-$(PYTHON3_VERSION_MAJOR)m/Makefile
define PYTHON3_TOUCH_GRAMMAR_FILES
touch $(@D)/Include/graminit.h $(@D)/Python/graminit.c
endef
PYTHON3_POST_INSTALL_STAGING_HOOKS += PYTHON3_FIXUP_LIBDIR
PYTHON3_POST_PATCH_HOOKS += PYTHON3_TOUCH_GRAMMAR_FILES
#
# Remove useless files. In the config/ directory, only the Makefile