--- /dev/null
+diff --git a/lang/python/Makefile b/lang/python/Makefile
+index 95e036e..2a541d0 100644
+--- a/lang/python/Makefile
++++ b/lang/python/Makefile
+@@ -8,12 +8,12 @@
+ include $(TOPDIR)/rules.mk
+
+ PKG_NAME:=python
+-PKG_VERSION:=2.6.4
+-PKG_RELEASE:=4
++PKG_VERSION:=2.7.3rc2
++PKG_RELEASE:=1
+
+ PKG_SOURCE:=Python-$(PKG_VERSION).tar.bz2
+ PKG_SOURCE_URL:=http://www.python.org/ftp/python/$(PKG_VERSION)/
+-PKG_MD5SUM:=fee5408634a54e721a93531aba37f8c1
++PKG_MD5SUM:=67059e1bcaf19e19394d16b80637f75f
+
+ PKG_INSTALL:=1
+ PKG_BUILD_PARALLEL:=1
+@@ -105,10 +105,11 @@ $(call Package/python/Default)
+ DEPENDS+=+python-mini
+ endef
+
++# Needs datetime
+ define Package/python-sqlite3
+ $(call Package/python/Default)
+ TITLE:=Python support for sqlite3
+- DEPENDS+=+python-mini +libsqlite3
++ DEPENDS+=+python +libsqlite3
+ endef
+
+ define Package/python-gdbm
+@@ -117,39 +118,41 @@ $(call Package/python/Default)
+ DEPENDS+=+python-mini +libgdbm
+ endef
+
+-PY_DISABLED_MODULES:= \
+- readline _curses _curses_panel _tkinter nis
+-
+ MAKE_FLAGS:=\
+ $(TARGET_CONFIGURE_OPTS) \
+- PYTHON_DISABLE_MODULES="$(PY_DISABLED_MODULES)" \
+- PYTHON_MODULES_INCLUDE="$(STAGING_DIR)/usr/include" \
+- PYTHON_MODULES_LIB="$(STAGING_DIR)/usr/lib" \
+ DESTDIR="$(PKG_INSTALL_DIR)" \
+ CROSS_COMPILE=yes \
+- CFLAGS="$(TARGET_CFLAGS) -fno-inline" \
++ CFLAGS="$(TARGET_CFLAGS) -DNDEBUG -fno-inline" \
+ LDFLAGS="$(TARGET_LDFLAGS)" \
+ LD="$(TARGET_CC)" \
+ HOSTPYTHON=./hostpython \
+ HOSTPGEN=./hostpgen
+
++ENABLE_IPV6:=
++ifeq ($(CONFIG_IPV6),y)
++ ENABLE_IPV6 += --enable-ipv6
++endif
++
+ define Build/Configure
+ -$(MAKE) -C $(PKG_BUILD_DIR) distclean
+ (cd $(PKG_BUILD_DIR); autoreconf --force --install || exit 0)
+ # The python executable needs to stay in the rootdir since its location will
+ # be used to compute the path of the config files.
+ $(CP) $(STAGING_DIR_HOST)/bin/pgen $(PKG_BUILD_DIR)/hostpgen
+- $(CP) $(STAGING_DIR_HOST)/bin/python $(PKG_BUILD_DIR)/hostpython
++ $(CP) $(STAGING_DIR_HOST)/bin/python$(PYTHON_VERSION) $(PKG_BUILD_DIR)/hostpython
+ $(call Build/Configure/Default, \
+ --sysconfdir=/etc \
+ --disable-shared \
+ --without-cxx-main \
+ --with-threads \
+- --with-system-ffi \
++ --with-system-ffi="$(STAGING_DIR)/usr" \
++ $(ENABLE_IPV6) \
+ ac_cv_lib_readline_readline=no \
+ ac_cv_have_chflags=no \
+ ac_cv_have_lchflags=no \
+ ac_cv_py_format_size_t=no \
++ ac_cv_have_long_long_format=yes \
++ ac_cv_buggy_getaddrinfo=no \
+ OPT="$(TARGET_CFLAGS)" \
+ )
+ endef
+@@ -170,7 +173,7 @@ define Build/InstallDev
+ $(1)/usr/lib/python$(PYTHON_VERSION)/
+
+ $(CP) \
+- $(STAGING_DIR_HOST)/bin/python \
++ $(STAGING_DIR_HOST)/bin/python$(PYTHON_VERSION) \
+ $(1)/usr/bin/hostpython
+ (cd $(2)/bin; \
+ ln -sf ../../usr/bin/hostpython python$(PYTHON_VERSION); \
+@@ -189,7 +192,6 @@ define PyPackage/python/filespec
+ +|/usr/lib/python$(PYTHON_VERSION)
+ -|/usr/lib/python$(PYTHON_VERSION)/bsddb/test
+ -|/usr/lib/python$(PYTHON_VERSION)/config
+-+|/usr/lib/python$(PYTHON_VERSION)/config/Makefile
+ -|/usr/lib/python$(PYTHON_VERSION)/ctypes/test
+ -|/usr/lib/python$(PYTHON_VERSION)/distutils/command/wininst-*.exe
+ -|/usr/lib/python$(PYTHON_VERSION)/distutils/tests
+@@ -206,7 +208,7 @@ define PyPackage/python/filespec
+ -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sqlite3.so
+ -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ssl.so
+ -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/pyexpat.so
+--|/usr/lib/python$(PYTHON_VERSION)/pydoc_topics.py
++-|/usr/lib/python$(PYTHON_VERSION)/pydoc_data
+ -|/usr/lib/python$(PYTHON_VERSION)/pydoc.py
+ -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ctypes_test.so
+ -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_testcapi.so
+@@ -247,7 +249,6 @@ define PyPackage/python/filespec
+ -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/syslog.so
+ -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/time.so
+ -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/unicodedata.so
+--|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_weakref.so
+ -|/usr/lib/python$(PYTHON_VERSION)/linecache.py
+ -|/usr/lib/python$(PYTHON_VERSION)/md5.py
+ -|/usr/lib/python$(PYTHON_VERSION)/new.py
+@@ -285,6 +286,17 @@ define PyPackage/python/filespec
+ -|/usr/lib/python$(PYTHON_VERSION)/UserDict.py
+ -|/usr/lib/python$(PYTHON_VERSION)/warnings.py
+ -|/usr/lib/python$(PYTHON_VERSION)/weakref.py
++-|/usr/lib/python$(PYTHON_VERSION)/_weakrefset.py
++-|/usr/lib/python$(PYTHON_VERSION)/sysconfig.py
++-|/usr/lib/python$(PYTHON_VERSION)/functools.py
++-|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_functools.so
++-|/usr/lib/python$(PYTHON_VERSION)/collections.py
++-|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_collections.so
++-|/usr/lib/python$(PYTHON_VERSION)/keyword.py
++-|/usr/lib/python$(PYTHON_VERSION)/heapq.py
++-|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_heapq.so
++-|/usr/lib/python$(PYTHON_VERSION)/bisect.py
++-|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_bisect.so
+ endef
+
+ define PyPackage/python-mini/filespec
+@@ -325,7 +337,6 @@ define PyPackage/python-mini/filespec
+ +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/syslog.so
+ +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/time.so
+ +|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/unicodedata.so
+-+|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_weakref.so
+ +|/usr/lib/python$(PYTHON_VERSION)/linecache.py
+ +|/usr/lib/python$(PYTHON_VERSION)/md5.py
+ +|/usr/lib/python$(PYTHON_VERSION)/new.py
+@@ -363,6 +374,18 @@ define PyPackage/python-mini/filespec
+ +|/usr/lib/python$(PYTHON_VERSION)/UserDict.py
+ +|/usr/lib/python$(PYTHON_VERSION)/warnings.py
+ +|/usr/lib/python$(PYTHON_VERSION)/weakref.py
+++|/usr/lib/python$(PYTHON_VERSION)/_weakrefset.py
+++|/usr/lib/python$(PYTHON_VERSION)/config/Makefile
+++|/usr/lib/python$(PYTHON_VERSION)/sysconfig.py
+++|/usr/lib/python$(PYTHON_VERSION)/functools.py
+++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_functools.so
+++|/usr/lib/python$(PYTHON_VERSION)/collections.py
+++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_collections.so
+++|/usr/lib/python$(PYTHON_VERSION)/keyword.py
+++|/usr/lib/python$(PYTHON_VERSION)/heapq.py
+++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_heapq.so
+++|/usr/lib/python$(PYTHON_VERSION)/bisect.py
+++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_bisect.so
+ +|/usr/include/python$(PYTHON_VERSION)/pyconfig.h
+ endef
+
+@@ -371,7 +394,7 @@ define PyPackage/python-mini/install
+ endef
+
+ define PyPackage/python-doc/filespec
+-+|/usr/lib/python$(PYTHON_VERSION)/pydoc_topics.py
+++|/usr/lib/python$(PYTHON_VERSION)/pydoc_data
+ +|/usr/lib/python$(PYTHON_VERSION)/pydoc.py
+ endef
+
+diff --git a/lang/python/files/python-package.mk b/lang/python/files/python-package.mk
+index 995e411..70e6300 100644
+--- a/lang/python/files/python-package.mk
++++ b/lang/python/files/python-package.mk
+@@ -5,7 +5,7 @@
+ # See /LICENSE for more information.
+ #
+
+-PYTHON_VERSION=2.6
++PYTHON_VERSION=2.7
+
+ PYTHON_DIR:=$(STAGING_DIR)/usr
+ PYTHON_BIN_DIR:=$(PYTHON_DIR)/bin
+diff --git a/lang/python/patches/000-cross-compile.patch b/lang/python/patches/000-cross-compile.patch
+index efbe070..a6f208e 100644
+--- a/lang/python/patches/000-cross-compile.patch
++++ b/lang/python/patches/000-cross-compile.patch
+@@ -4,7 +4,7 @@
+
+ --- a/Makefile.pre.in
+ +++ b/Makefile.pre.in
+-@@ -175,6 +175,7 @@ UNICODE_OBJS= @UNICODE_OBJS@
++@@ -182,6 +182,7 @@ UNICODE_OBJS= @UNICODE_OBJS@
+
+ PYTHON= python$(EXE)
+ BUILDPYTHON= python$(BUILDEXE)
+@@ -12,16 +12,15 @@
+
+ # 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
+-@@ -205,7 +206,7 @@ GRAMMAR_INPUT= $(srcdir)/Grammar/Grammar
++@@ -214,6 +215,7 @@ LIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@
+ ##########################################################################
+ # Parser
+ PGEN= Parser/pgen$(EXE)
+--
+ +HOSTPGEN= $(PGEN)$(EXE)
++
+ POBJS= \
+ Parser/acceler.o \
+- Parser/grammar1.o \
+-@@ -370,7 +371,7 @@ build_all_generate_profile:
++@@ -384,7 +386,7 @@ build_all_generate_profile:
+ $(MAKE) all CFLAGS="$(CFLAGS) -fprofile-generate" LIBS="$(LIBS) -lgcov"
+
+ run_profile_task:
+@@ -30,12 +29,12 @@
+
+ build_all_use_profile:
+ $(MAKE) all CFLAGS="$(CFLAGS) -fprofile-use"
+-@@ -388,14 +389,14 @@ $(BUILDPYTHON): Modules/python.o $(LIBRA
++@@ -402,14 +404,14 @@ $(BUILDPYTHON): Modules/python.o $(LIBRA
+ $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
+
+ platform: $(BUILDPYTHON)
+-- $(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
+-+ $(RUNSHARED) $(HOSTPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
++- $(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from sysconfig import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
+++ $(RUNSHARED) $(HOSTPYTHON) -E -c 'import sys ; from sysconfig import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
+
+
+ # Build the shared modules
+@@ -48,34 +47,34 @@
+ esac
+
+ # Build static library
+-@@ -517,7 +518,7 @@ Modules/python.o: $(srcdir)/Modules/pyth
+-
+- $(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
++@@ -543,7 +545,7 @@ Modules/python.o: $(srcdir)/Modules/pyth
++ $(GRAMMAR_H) $(GRAMMAR_C): Parser/pgen.stamp
++ Parser/pgen.stamp: $(PGEN) $(GRAMMAR_INPUT)
+ -@$(INSTALL) -d Include
+-- -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
+-+ -$(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
++- $(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
+++ $(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
++ -touch Parser/pgen.stamp
+
+ $(PGEN): $(PGENOBJS)
+- $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
+-@@ -676,7 +677,7 @@ $(LIBRARY_OBJS) $(MODOBJS) Modules/pytho
++@@ -708,7 +710,7 @@ $(LIBRARY_OBJS) $(MODOBJS) Modules/pytho
+
+ TESTOPTS= -l $(EXTRATESTOPTS)
+ TESTPROG= $(srcdir)/Lib/test/regrtest.py
+--TESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) -E -tt
+-+TESTPYTHON= $(RUNSHARED) $(HOSTPYTHON) -E -tt
++-TESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) -Wd -3 -E -tt $(TESTPYTHONOPTS)
+++TESTPYTHON= $(RUNSHARED) $(HOSTPYTHON) -Wd -3 -E -tt $(TESTPYTHONOPTS)
+ test: all platform
+ -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
+ -$(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
+-@@ -1001,7 +1002,7 @@ libainstall: all
++@@ -1062,7 +1064,7 @@ libainstall: all python-config
+ # Install the dynamically loadable modules
+ # This goes into $(exec_prefix)
+- sharedinstall:
++ sharedinstall: sharedmods
+ - $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \
+ + $(RUNSHARED) $(HOSTPYTHON) -E $(srcdir)/setup.py install \
+ --prefix=$(prefix) \
+ --install-scripts=$(BINDIR) \
+ --install-platlib=$(DESTSHARED) \
+-@@ -1039,7 +1040,7 @@ frameworkinstallstructure: $(LDLIBRARY)
++@@ -1100,7 +1102,7 @@ frameworkinstallstructure: $(LDLIBRARY)
+ fi; \
+ done
+ $(LN) -fsn include/python$(VERSION) $(DESTDIR)$(prefix)/Headers
+@@ -84,7 +83,7 @@
+ $(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current
+ $(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK)
+ $(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers
+-@@ -1081,7 +1082,7 @@ frameworkinstallextras:
++@@ -1135,7 +1137,7 @@ frameworkinstallextras:
+ # This installs a few of the useful scripts in Tools/scripts
+ scriptsinstall:
+ SRCDIR=$(srcdir) $(RUNSHARED) \
+@@ -92,8 +91,8 @@
+ + $(HOSTPYTHON) $(srcdir)/Tools/scripts/setup.py install \
+ --prefix=$(prefix) \
+ --install-scripts=$(BINDIR) \
+- --root=/$(DESTDIR)
+-@@ -1103,7 +1104,7 @@ config.status: $(srcdir)/configure
++ --root=$(DESTDIR)/
++@@ -1157,7 +1159,7 @@ config.status: $(srcdir)/configure
+
+ # Run reindent on the library
+ reindent:
+@@ -102,7 +101,7 @@
+
+ # Rerun configure with the same options as it was run last time,
+ # provided the config.status script exists
+-@@ -1200,7 +1201,7 @@ funny:
++@@ -1260,7 +1262,7 @@ funny:
+
+ # Perform some verification checks on any modified files.
+ patchcheck:
+diff --git a/lang/python/patches/010-cannot-run-test-programm.patch b/lang/python/patches/010-cannot-run-test-programm.patch
+deleted file mode 100644
+index c981b46..0000000
+--- a/lang/python/patches/010-cannot-run-test-programm.patch
++++ /dev/null
+@@ -1,89 +0,0 @@
+----
+- configure.in | 46 ++++++++++++++++++++++++++++++++++------------
+- 1 file changed, 34 insertions(+), 12 deletions(-)
+-
+---- a/configure.in
+-+++ b/configure.in
+-@@ -2653,6 +2653,7 @@ AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_
+- # On Tru64, chflags seems to be present, but calling it will
+- # exit Python
+- AC_MSG_CHECKING(for chflags)
+-+AC_CACHE_VAL(ac_cv_have_chflags, [
+- AC_TRY_RUN([
+- #include <sys/stat.h>
+- #include <unistd.h>
+-@@ -2662,12 +2663,19 @@ int main(int argc, char*argv[])
+- return 1;
+- return 0;
+- }
+--],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
+-- AC_MSG_RESULT(yes),
+-- AC_MSG_RESULT(no)
+--)
+-+],
+-+ac_cv_have_chflags=yes,
+-+ac_cv_have_chflags=no,
+-+ac_cv_have_chflags=no)])
+-+AC_MSG_RESULT($ac_cv_have_chflags)
+-+if test "$ac_cv_have_chflags" = yes
+-+then
+-+ AC_DEFINE(HAVE_CHFLAGS, 1,
+-+ [Define to 1 if you have the `chflags' function.])
+-+fi
+-
+- AC_MSG_CHECKING(for lchflags)
+-+AC_CACHE_VAL(ac_cv_have_lchflags, [
+- AC_TRY_RUN([
+- #include <sys/stat.h>
+- #include <unistd.h>
+-@@ -2677,10 +2685,16 @@ int main(int argc, char*argv[])
+- return 1;
+- return 0;
+- }
+--],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
+-- AC_MSG_RESULT(yes),
+-- AC_MSG_RESULT(no)
+--)
+-+],
+-+ac_cv_have_lchflags=yes,
+-+ac_cv_have_lchflags=no,
+-+ac_cv_have_lchflags=no)])
+-+AC_MSG_RESULT($ac_cv_have_lchflags)
+-+if test "$ac_cv_have_lchflags" = yes
+-+then
+-+ AC_DEFINE(HAVE_CHFLAGS, 1,
+-+ [Define to 1 if you have the `lchflags' function.])
+-+fi
+-
+- dnl Check if system zlib has *Copy() functions
+- dnl
+-@@ -3781,6 +3795,7 @@ else
+- fi
+-
+- AC_MSG_CHECKING(for %zd printf() format support)
+-+AC_CACHE_VAL(ac_cv_py_format_size_t, [
+- AC_TRY_RUN([#include <stdio.h>
+- #include <stddef.h>
+- #include <string.h>
+-@@ -3814,10 +3829,17 @@ int main()
+- return 1;
+-
+- return 0;
+--}],
+--[AC_MSG_RESULT(yes)
+-- AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
+-- AC_MSG_RESULT(no))
+-+}
+-+],
+-+ac_cv_py_format_size_t=yes,
+-+ac_cv_py_format_size_t=no,
+-+ac_cv_py_format_size_t=no)])
+-+AC_MSG_RESULT($ac_cv_py_format_size_t)
+-+if test "$ac_cv_pyt_format_t" = yes
+-+then
+-+ AC_DEFINE(PY_FORMAT_SIZE_T, "z",
+-+ [Define to printf format modifier for Py_ssize_t])
+-+fi
+-
+- AC_CHECK_TYPE(socklen_t,,
+- AC_DEFINE(socklen_t,int,
+diff --git a/lang/python/patches/011-linux-3.x-compat.patch b/lang/python/patches/011-linux-3.x-compat.patch
+deleted file mode 100644
+index 088618d..0000000
+--- a/lang/python/patches/011-linux-3.x-compat.patch
++++ /dev/null
+@@ -1,20 +0,0 @@
+---- a/configure
+-+++ b/configure
+-@@ -2070,6 +2070,7 @@ then
+- MACHDEP="$ac_md_system$ac_md_release"
+-
+- case $MACHDEP in
+-+ linux3) MACHDEP="linux2";;
+- cygwin*) MACHDEP="cygwin";;
+- darwin*) MACHDEP="darwin";;
+- atheos*) MACHDEP="atheos";;
+---- a/configure.in
+-+++ b/configure.in
+-@@ -240,6 +240,7 @@ then
+- MACHDEP="$ac_md_system$ac_md_release"
+-
+- case $MACHDEP in
+-+ linux3) MACHDEP="linux2";;
+- cygwin*) MACHDEP="cygwin";;
+- darwin*) MACHDEP="darwin";;
+- atheos*) MACHDEP="atheos";;
+diff --git a/lang/python/patches/020-dont-compile-python-files.patch b/lang/python/patches/020-dont-compile-python-files.patch
+index d9c092b..57bd51d 100644
+--- a/lang/python/patches/020-dont-compile-python-files.patch
++++ b/lang/python/patches/020-dont-compile-python-files.patch
+@@ -4,18 +4,20 @@
+
+ --- a/Makefile.pre.in
+ +++ b/Makefile.pre.in
+-@@ -887,22 +887,6 @@ libinstall: build_all $(srcdir)/Lib/$(PL
+- done; \
+- done
+- $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
++@@ -940,26 +940,6 @@ libinstall: build_all $(srcdir)/Lib/$(PL
++ $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
++ $(DESTDIR)$(LIBDEST)/distutils/tests ; \
++ fi
+ - PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+ - ./$(BUILDPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
+ - -d $(LIBDEST) -f \
+-- -x 'bad_coding|badsyntax|site-packages' $(DESTDIR)$(LIBDEST)
++- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
++- $(DESTDIR)$(LIBDEST)
+ - PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+ - ./$(BUILDPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
+ - -d $(LIBDEST) -f \
+-- -x 'bad_coding|badsyntax|site-packages' $(DESTDIR)$(LIBDEST)
++- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
++- $(DESTDIR)$(LIBDEST)
+ - -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+ - ./$(BUILDPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
+ - -d $(LIBDEST)/site-packages -f \
+@@ -24,6 +26,8 @@
+ - ./$(BUILDPYTHON) -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()"
++- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
++- ./$(BUILDPYTHON) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"
+
++ # Create the PLATDIR source directory, if one wasn't distributed..
++ $(srcdir)/Lib/$(PLATDIR):
+diff --git a/lang/python/patches/030-fixup-include-dirs.patch b/lang/python/patches/030-fixup-include-dirs.patch
+index 409b3e6..6cc6bba 100644
+--- a/lang/python/patches/030-fixup-include-dirs.patch
++++ b/lang/python/patches/030-fixup-include-dirs.patch
+@@ -4,29 +4,37 @@
+
+ --- a/setup.py
+ +++ b/setup.py
+-@@ -309,9 +309,6 @@ class PyBuildExt(build_ext):
+- return sys.platform
++@@ -368,11 +368,6 @@ class PyBuildExt(build_ext):
++ os.unlink(tmpfile)
+
+ def detect_modules(self):
+ - # Ensure that /usr/local is always used
+ - add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
+ - add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+-
++- self.add_multiarch_paths()
++-
+ # Add paths specified in the environment variables LDFLAGS and
+ # CPPFLAGS for header and library files.
+-@@ -347,11 +344,6 @@ class PyBuildExt(build_ext):
++ # We must get the values from the Makefile and not the environment
++@@ -407,17 +402,6 @@ class PyBuildExt(build_ext):
+ for directory in reversed(options.dirs):
+ add_dir_to_list(dir_list, directory)
+
+-- if os.path.normpath(sys.prefix) != '/usr':
++- if os.path.normpath(sys.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"))
+-
++-
+ try:
+ have_unicode = unicode
+-@@ -361,11 +353,8 @@ class PyBuildExt(build_ext):
++ except NameError:
++@@ -426,11 +410,8 @@ class PyBuildExt(build_ext):
+ # 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.
+diff --git a/lang/python/patches/040-dont-import-cross-compiled-modules.patch b/lang/python/patches/040-dont-import-cross-compiled-modules.patch
+index 5c99598..1793569 100644
+--- a/lang/python/patches/040-dont-import-cross-compiled-modules.patch
++++ b/lang/python/patches/040-dont-import-cross-compiled-modules.patch
+@@ -4,7 +4,7 @@
+
+ --- a/setup.py
+ +++ b/setup.py
+-@@ -270,36 +270,6 @@ class PyBuildExt(build_ext):
++@@ -307,36 +307,6 @@ class PyBuildExt(build_ext):
+ ext_filename = os.path.join(
+ self.build_lib,
+ self.get_ext_filename(self.get_ext_fullname(ext.name)))
+diff --git a/lang/python/patches/070-dont-clean-ipkg-install.patch b/lang/python/patches/070-dont-clean-ipkg-install.patch
+index 593bcff..0796c19 100644
+--- a/lang/python/patches/070-dont-clean-ipkg-install.patch
++++ b/lang/python/patches/070-dont-clean-ipkg-install.patch
+@@ -4,7 +4,7 @@
+
+ --- a/Makefile.pre.in
+ +++ b/Makefile.pre.in
+-@@ -1118,11 +1118,11 @@ TAGS::
++@@ -1169,12 +1169,12 @@ TAGS::
+ # Sanitation targets -- clean leaves libraries, executables and tags
+ # files, which clobber removes as well
+ pycremoval:
+@@ -12,10 +12,12 @@
+ + find $(srcdir) ! -path './ipkg-install/*' -name '*.py[co]' -exec rm -f {} ';'
+
+ clean: pycremoval
+-- find . -name '*.o' -exec rm -f {} ';'
++- find . -name '*.[oa]' -exec rm -f {} ';'
+ - find . -name '*.s[ol]' -exec rm -f {} ';'
+-+ find . ! -path './ipkg-install/*' -name '*.o' -exec rm -f {} ';'
++- find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
+++ find . ! -path './ipkg-install/*' -name '*.[oa]' -exec rm -f {} ';'
+ + find . ! -path './ipkg-install/*' -name '*.s[ol]' -exec rm -f {} ';'
+- find $(srcdir)/build -name 'fficonfig.h' -exec rm -f {} ';' || true
+- find $(srcdir)/build -name 'fficonfig.py' -exec rm -f {} ';' || true
+++ find . ! -path './ipkg-install/*' -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
+ -rm -f Lib/lib2to3/*Grammar*.pickle
+diff --git a/lang/python/patches/080-distutils-dont_adjust_files.patch b/lang/python/patches/080-distutils-dont_adjust_files.patch
+index a32e034..97d62fb 100644
+--- a/lang/python/patches/080-distutils-dont_adjust_files.patch
++++ b/lang/python/patches/080-distutils-dont_adjust_files.patch
+@@ -4,7 +4,7 @@
+
+ --- a/Lib/distutils/command/build_scripts.py
+ +++ b/Lib/distutils/command/build_scripts.py
+-@@ -54,10 +54,7 @@ class build_scripts (Command):
++@@ -51,10 +51,7 @@ class build_scripts (Command):
+
+
+ def copy_scripts (self):
+@@ -14,9 +14,9 @@
+ - line to refer to the current Python interpreter as we copy.
+ + """Copy each script listed in 'self.scripts'
+ """
++ _sysconfig = __import__('sysconfig')
+ self.mkpath(self.build_dir)
+- outfiles = []
+-@@ -80,41 +77,9 @@ class build_scripts (Command):
++@@ -78,41 +75,9 @@ class build_scripts (Command):
+ if not self.dry_run:
+ raise
+ f = None
+@@ -36,16 +36,16 @@
+ - self.build_dir)
+ - if not self.dry_run:
+ - outf = open(outfile, "w")
+-- if not sysconfig.python_build:
++- if not _sysconfig.is_python_build():
+ - outf.write("#!%s%s\n" %
+ - (self.executable,
+ - post_interp))
+ - else:
+ - outf.write("#!%s%s\n" %
+ - (os.path.join(
+-- sysconfig.get_config_var("BINDIR"),
+-- "python%s%s" % (sysconfig.get_config_var("VERSION"),
+-- sysconfig.get_config_var("EXE"))),
++- _sysconfig.get_config_var("BINDIR"),
++- "python%s%s" % (_sysconfig.get_config_var("VERSION"),
++- _sysconfig.get_config_var("EXE"))),
+ - post_interp))
+ - outf.writelines(f.readlines())
+ - outf.close()
+diff --git a/lang/python/patches/090-fix-ctypes.patch b/lang/python/patches/090-fix-ctypes.patch
+deleted file mode 100644
+index 6e93182..0000000
+--- a/lang/python/patches/090-fix-ctypes.patch
++++ /dev/null
+@@ -1,16 +0,0 @@
+----
+- Lib/ctypes/__init__.py | 6 ------
+- 1 file changed, 6 deletions(-)
+-
+---- a/Lib/ctypes/__init__.py
+-+++ b/Lib/ctypes/__init__.py
+-@@ -538,9 +538,3 @@ for kind in [c_ushort, c_uint, c_ulong,
+- elif sizeof(kind) == 4: c_uint32 = kind
+- elif sizeof(kind) == 8: c_uint64 = kind
+- del(kind)
+--
+--# XXX for whatever reasons, creating the first instance of a callback
+--# function is needed for the unittests on Win64 to succeed. This MAY
+--# be a compiler bug, since the problem occurs only when _ctypes is
+--# compiled with the MS SDK compiler. Or an uninitialized variable?
+--CFUNCTYPE(c_int)(lambda: None)
+diff --git a/lang/python/patches/120-force-internal-modules-for-hashlib.patch b/lang/python/patches/120-force-internal-modules-for-hashlib.patch
+index ca29aa6..ad10a44 100644
+--- a/lang/python/patches/120-force-internal-modules-for-hashlib.patch
++++ b/lang/python/patches/120-force-internal-modules-for-hashlib.patch
+@@ -4,26 +4,21 @@
+
+ --- a/setup.py
+ +++ b/setup.py
+-@@ -622,9 +622,10 @@ class PyBuildExt(build_ext):
++@@ -704,8 +704,7 @@ class PyBuildExt(build_ext):
+
+- #print 'openssl_ver = 0x%08x' % openssl_ver
++ min_openssl_ver = 0x00907000
++ have_any_openssl = ssl_incs is not None and ssl_libs is not None
++- have_usable_openssl = (have_any_openssl and
++- openssl_ver >= min_openssl_ver)
+++ have_usable_openssl = False
+
+-- if (ssl_incs is not None and
+-- ssl_libs is not None and
+-- openssl_ver >= 0x00907000):
+-+# if (ssl_incs is not None and
+-+# ssl_libs is not None and
+-+# openssl_ver >= 0x00907000):
+-+ if False:
+- # The _hashlib module wraps optimized implementations
+- # of hash functions from the OpenSSL library.
+- exts.append( Extension('_hashlib', ['_hashopenssl.c'],
+-@@ -644,7 +645,8 @@ class PyBuildExt(build_ext):
++ if have_any_openssl:
++ if have_usable_openssl:
++@@ -730,7 +729,7 @@ class PyBuildExt(build_ext):
+ depends = ['md5.h']) )
+- missing.append('_hashlib')
+
+-- if (openssl_ver < 0x00908000):
+-+# if (openssl_ver < 0x00908000):
++ min_sha2_openssl_ver = 0x00908000
++- if COMPILED_WITH_PYDEBUG or openssl_ver < min_sha2_openssl_ver:
+ + if True:
+ # OpenSSL doesn't do these until 0.9.8 so we'll bring our own hash
+ exts.append( Extension('_sha256', ['sha256module.c']) )