Python: Trying to update to v2.7,1
authorMichael Mrozek <EvilDragon@openpandora.org>
Sat, 14 Dec 2013 11:10:10 +0000 (12:10 +0100)
committerMichael Mrozek <EvilDragon@openpandora.org>
Sat, 14 Dec 2013 11:10:10 +0000 (12:10 +0100)
66 files changed:
recipes/python/python-2.6.6/00-fix-parallel-make.patch [new file with mode: 0644]
recipes/python/python-2.6.6/01-use-proper-tools-for-cross-build.patch [new file with mode: 0644]
recipes/python/python-2.6.6/02-remove-test-for-cross.patch [new file with mode: 0644]
recipes/python/python-2.6.6/03-fix-tkinter-detection.patch [new file with mode: 0644]
recipes/python/python-2.6.6/04-default-is-optimized.patch [new file with mode: 0644]
recipes/python/python-2.6.6/05-enable-ctypes-cross-build.patch [new file with mode: 0644]
recipes/python/python-2.6.6/06-ctypes-libffi-fix-configure.patch [new file with mode: 0644]
recipes/python/python-2.6.6/10-distutils-fix-swig-parameter.patch [new file with mode: 0644]
recipes/python/python-2.6.6/11-distutils-never-modify-shebang-line.patch [new file with mode: 0644]
recipes/python/python-2.6.6/12-distutils-prefix-is-inside-staging-area.patch [new file with mode: 0644]
recipes/python/python-2.6.6/debug.patch [new file with mode: 0644]
recipes/python/python-2.6.6/ipv6-cross.patch [new file with mode: 0644]
recipes/python/python-2.6.6/nohostlibs.patch [new file with mode: 0644]
recipes/python/python-2.6.6/pkgconfig-support.patch [new file with mode: 0644]
recipes/python/python-2.6.6/python-module-rpath-fix.patch [new file with mode: 0644]
recipes/python/python-2.6.6/sitecustomize.py [new file with mode: 0644]
recipes/python/python-2.7-manifest.inc [new file with mode: 0644]
recipes/python/python-2.7.1/00-fix-bindir-libdir-for-cross.patch [new file with mode: 0644]
recipes/python/python-2.7.1/01-fix-have-long-long-format.patch [new file with mode: 0644]
recipes/python/python-2.7.1/01-use-proper-tools-for-cross-build.patch [new file with mode: 0644]
recipes/python/python-2.7.1/02-remove-test-for-cross.patch [new file with mode: 0644]
recipes/python/python-2.7.1/03-fix-tkinter-detection.patch [new file with mode: 0644]
recipes/python/python-2.7.1/04-default-is-optimized.patch [new file with mode: 0644]
recipes/python/python-2.7.1/05-enable-ctypes-cross-build.patch [new file with mode: 0644]
recipes/python/python-2.7.1/06-ctypes-libffi-fix-configure.patch [new file with mode: 0644]
recipes/python/python-2.7.1/10-distutils-fix-swig-parameter.patch [new file with mode: 0644]
recipes/python/python-2.7.1/11-distutils-never-modify-shebang-line.patch [new file with mode: 0644]
recipes/python/python-2.7.1/12-distutils-prefix-is-inside-staging-area.patch [new file with mode: 0644]
recipes/python/python-2.7.1/99-ignore-optimization-flag.patch [new file with mode: 0644]
recipes/python/python-2.7.1/debug.patch [new file with mode: 0644]
recipes/python/python-2.7.1/nohostlibs.patch [new file with mode: 0644]
recipes/python/python-2.7.1/sitecustomize.py [new file with mode: 0644]
recipes/python/python-argparse_1.2.1.bb [new file with mode: 0644]
recipes/python/python-caldav_0.1.6.bb [new file with mode: 0644]
recipes/python/python-cheetah_2.4.4.bb [new file with mode: 0644]
recipes/python/python-cython_0.13.bb [new file with mode: 0644]
recipes/python/python-dbus_0.83.2.bb [new file with mode: 0644]
recipes/python/python-django_1.2.1.bb [new file with mode: 0644]
recipes/python/python-lxml_2.2.6.bb [new file with mode: 0644]
recipes/python/python-lxml_2.2.8.bb [new file with mode: 0644]
recipes/python/python-m2crypto_0.20.2.bb [new file with mode: 0644]
recipes/python/python-native_2.6.6.bb [new file with mode: 0644]
recipes/python/python-native_2.7.1.bb [new file with mode: 0644]
recipes/python/python-numeric_24.2.bb [new file with mode: 0644]
recipes/python/python-numpy_1.4.1.bb [new file with mode: 0644]
recipes/python/python-oauth_1.0.1.bb [new file with mode: 0644]
recipes/python/python-pybluez_0.18.bb [new file with mode: 0644]
recipes/python/python-pygtksourceview_2.10.1.bb [new file with mode: 0644]
recipes/python/python-pyopengl-accelerate_3.0.1.bb [new file with mode: 0644]
recipes/python/python-pyopengl_3.0.1.bb [new file with mode: 0644]
recipes/python/python-pyqt-4.8.4/assistantclient-fix.patch [new file with mode: 0644]
recipes/python/python-pyqt-4.8.4/debian_configure_changes.diff [new file with mode: 0644]
recipes/python/python-pyqt-4.8.4/fix_qthelp_ftbfs.diff [new file with mode: 0644]
recipes/python/python-pyqt-4.8.4/fix_the_QAssitant_ftbfs.diff [new file with mode: 0644]
recipes/python/python-pyqt-4.8.4/fix_uiparser_buttonbox.diff [new file with mode: 0644]
recipes/python/python-pyqt-4.8.4/qreal_float_support.diff [new file with mode: 0644]
recipes/python/python-pyqt_4.8.4.bb [new file with mode: 0644]
recipes/python/python-pyrex-0.9.8.5/pyrex-fix-optimized-mode.patch [new file with mode: 0644]
recipes/python/python-pyxdg/desktopentry-cmp.patch [new file with mode: 0644]
recipes/python/python-setuptools_0.6c11.bb [new file with mode: 0644]
recipes/python/python-sip_4.12.2.bb [new file with mode: 0644]
recipes/python/python-wifi_0.5.0.bb [new file with mode: 0644]
recipes/python/python-xmpppy_0.5.0rc1.bb [new file with mode: 0644]
recipes/python/python2.7.inc [new file with mode: 0644]
recipes/python/python_2.6.6.bb [new file with mode: 0644]
recipes/python/python_2.7.1.bb [new file with mode: 0644]

diff --git a/recipes/python/python-2.6.6/00-fix-parallel-make.patch b/recipes/python/python-2.6.6/00-fix-parallel-make.patch
new file mode 100644 (file)
index 0000000..c80ca19
--- /dev/null
@@ -0,0 +1,40 @@
+upstream: <http://bugs.python.org/issue10013>
+comment: As in the comment in the issue tracker this is fixed for py3k a little differently <http://svn.python.org/view?view=rev&revision=84068>. This patch is taken from Fedora.
+
+diff -up Python-2.7/Makefile.pre.in.fix-parallel-make Python-2.7/Makefile.pre.in
+--- Python-2.7/Makefile.pre.in.fix-parallel-make       2010-07-22 15:01:39.567996932 -0400
++++ Python-2.7/Makefile.pre.in 2010-07-22 15:47:02.437998509 -0400
+@@ -197,6 +197,7 @@ SIGNAL_OBJS=       @SIGNAL_OBJS@
+ ##########################################################################
+ # Grammar
++GRAMMAR_STAMP=        $(srcdir)/grammar-stamp
+ GRAMMAR_H=    $(srcdir)/Include/graminit.h
+ GRAMMAR_C=    $(srcdir)/Python/graminit.c
+ GRAMMAR_INPUT=        $(srcdir)/Grammar/Grammar
+@@ -514,10 +515,24 @@ Modules/getpath.o: $(srcdir)/Modules/get
+ Modules/python.o: $(srcdir)/Modules/python.c
+       $(MAINCC) -c $(PY_CFLAGS) -o $@ $(srcdir)/Modules/python.c
++# GNU "make" interprets rules with two dependents as two copies of the rule.
++# 
++# In a parallel build this can lead to pgen being run twice, once for each of
++# GRAMMAR_H and GRAMMAR_C, leading to race conditions in which the compiler
++# reads a partially-overwritten copy of one of these files, leading to syntax
++# errors (or linker errors if the fragment happens to be syntactically valid C)
++#
++# See http://www.gnu.org/software/hello/manual/automake/Multiple-Outputs.html
++# for more information.
++#
++# Introduce ".grammar-stamp" as a contrived single output from PGEN to avoid
++# this:
++$(GRAMMAR_H) $(GRAMMAR_C): $(GRAMMAR_STAMP)
+-$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
++$(GRAMMAR_STAMP): $(PGEN) $(GRAMMAR_INPUT)
+               -@$(INSTALL) -d Include
+               -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
++              touch $(GRAMMAR_STAMP)
+ $(PGEN):      $(PGENOBJS)
+               $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
diff --git a/recipes/python/python-2.6.6/01-use-proper-tools-for-cross-build.patch b/recipes/python/python-2.6.6/01-use-proper-tools-for-cross-build.patch
new file mode 100644 (file)
index 0000000..b7467cc
--- /dev/null
@@ -0,0 +1,116 @@
+# We need to ensure our host tools get run during build, not the freshly
+# built cross-tools (this will not work), so we introduce HOSTPYTHON and HOSTPGEN.
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+
+Index: Python-2.6.6/Makefile.pre.in
+===================================================================
+--- Python-2.6.6.orig/Makefile.pre.in
++++ Python-2.6.6/Makefile.pre.in
+@@ -175,6 +175,7 @@ UNICODE_OBJS=   @UNICODE_OBJS@
+ PYTHON=               python$(EXE)
+ BUILDPYTHON=  python$(BUILDEXE)
++HOSTPYTHON=   $(BUILDPYTHON)
+ # 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
+ ##########################################################################
+ # Parser
+ PGEN=         Parser/pgen$(EXE)
+-
++HOSTPGEN=     $(PGEN)$(EXE)
+ POBJS=                \
+               Parser/acceler.o \
+               Parser/grammar1.o \
+@@ -394,8 +395,8 @@ platform: $(BUILDPYTHON)
+ # Build the shared modules
+ sharedmods: $(BUILDPYTHON)
+       @case $$MAKEFLAGS in \
+-      *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' LDFLAGS='$(LDFLAGS)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \
+-      *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' LDFLAGS='$(LDFLAGS)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \
++      *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' LDFLAGS='$(LDFLAGS)' OPT='$(OPT)' $(HOSTPYTHON) -E $(srcdir)/setup.py -q build;; \
++      *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' LDFLAGS='$(LDFLAGS)' OPT='$(OPT)' $(HOSTPYTHON) -E $(srcdir)/setup.py build;; \
+       esac
+ # Build static library
+@@ -517,7 +518,7 @@ Modules/python.o: $(srcdir)/Modules/pyth
+ $(GRAMMAR_STAMP): $(PGEN) $(GRAMMAR_INPUT)
+               -@$(INSTALL) -d Include
+-              -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
++              -$(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
+               touch $(GRAMMAR_STAMP)
+ $(PGEN):      $(PGENOBJS)
+@@ -887,23 +888,23 @@ libinstall:      build_all $(srcdir)/Lib/$(PL
+       done
+       $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
+       PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \
+-              ./$(BUILDPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
++              $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
+               -d $(LIBDEST) -f \
+               -x 'bad_coding|badsyntax|site-packages' $(DESTDIR)$(LIBDEST)
+       PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+-              ./$(BUILDPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
++              $(HOSTPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
+               -d $(LIBDEST) -f \
+               -x 'bad_coding|badsyntax|site-packages' $(DESTDIR)$(LIBDEST)
+       -PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \
+-              ./$(BUILDPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
++              $(HOSTPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
+               -d $(LIBDEST)/site-packages -f \
+               -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+       -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+-              ./$(BUILDPYTHON) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
++              $(HOSTPYTHON) -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()"
++              $(HOSTPYTHON) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"
+ # Create the PLATDIR source directory, if one wasn't distributed..
+ $(srcdir)/Lib/$(PLATDIR):
+@@ -1001,7 +1002,7 @@ libainstall:     all
+ # Install the dynamically loadable modules
+ # This goes into $(exec_prefix)
+ sharedinstall:
+-      $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \
++      $(RUNSHARED) $(HOSTPYTHON) -E $(srcdir)/setup.py install \
+               --prefix=$(prefix) \
+               --install-scripts=$(BINDIR) \
+               --install-platlib=$(DESTSHARED) \
+Index: Python-2.6.6/setup.py
+===================================================================
+--- Python-2.6.6.orig/setup.py
++++ Python-2.6.6/setup.py
+@@ -322,6 +322,7 @@ class PyBuildExt(build_ext):
+             self.failed.append(ext.name)
+             self.announce('*** WARNING: renaming "%s" since importing it'
+                           ' failed: %s' % (ext.name, why), level=3)
++            return
+             assert not self.inplace
+             basename, tail = os.path.splitext(ext_filename)
+             newname = basename + "_failed" + tail
+@@ -356,8 +357,8 @@ class PyBuildExt(build_ext):
+     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')
++        # add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
++        # add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+         # Add paths specified in the environment variables LDFLAGS and
+         # CPPFLAGS for header and library files.
+@@ -456,6 +457,9 @@ class PyBuildExt(build_ext):
+         # XXX Omitted modules: gl, pure, dl, SGI-specific modules
++        lib_dirs = [ os.getenv( "STAGING_LIBDIR" ) ]
++        inc_dirs = [ os.getenv( "STAGING_INCDIR" ) ]
++
+         #
+         # The following modules are all pretty straightforward, and compile
+         # on pretty much any POSIXish platform.
diff --git a/recipes/python/python-2.6.6/02-remove-test-for-cross.patch b/recipes/python/python-2.6.6/02-remove-test-for-cross.patch
new file mode 100644 (file)
index 0000000..b1c0bfb
--- /dev/null
@@ -0,0 +1,106 @@
+# OpenEmbedded prepopulates the autotools site cache, so if this
+# would be using AC_TRY_CACHE, we could patch it in a more sane way
+# Alas, I don't have enough autotalent to do that.
+#
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+Index: Python-2.6.1/configure.in
+===================================================================
+--- Python-2.6.5.orig/configure.in     2010-07-06 04:37:09.000000000 -0700
++++ Python-2.6.5/configure.in  2010-07-06 04:40:18.000000000 -0700
+@@ -2697,50 +2697,6 @@
+   AC_CHECK_LIB(resolv, inet_aton)
+ )
+-# On Tru64, chflags seems to be present, but calling it will
+-# exit Python
+-AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
+-AC_TRY_RUN([[
+-#include <sys/stat.h>
+-#include <unistd.h>
+-int main(int argc, char*argv[])
+-{
+-  if(chflags(argv[0], 0) != 0)
+-    return 1;
+-  return 0;
+-}
+-]], ac_cv_have_chflags=yes,
+-   ac_cv_have_chflags=no,
+-   ac_cv_have_chflags=cross)
+-])
+-if test "$ac_cv_have_chflags" = cross ; then
+-  AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
+-fi
+-if test "$ac_cv_have_chflags" = yes ; then
+-  AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
+-fi
+-
+-AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
+-AC_TRY_RUN([[
+-#include <sys/stat.h>
+-#include <unistd.h>
+-int main(int argc, char*argv[])
+-{
+-  if(lchflags(argv[0], 0) != 0)
+-    return 1;
+-  return 0;
+-}
+-]], ac_cv_have_lchflags=yes,
+-   ac_cv_have_lchflags=no,
+-   ac_cv_have_lchflags=cross)
+-])
+-if test "$ac_cv_have_lchflags" = cross ; then
+-  AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
+-fi
+-if test "$ac_cv_have_lchflags" = yes ; then
+-  AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
+-fi
+-
+ dnl Check if system zlib has *Copy() functions
+ dnl
+ dnl On MacOSX the linker will search for dylibs on the entire linker path
+@@ -3844,45 +3800,6 @@
+   AC_MSG_RESULT(no)
+ fi
+-AC_MSG_CHECKING(for %zd printf() format support)
+-AC_TRY_RUN([#include <stdio.h>
+-#include <stddef.h>
+-#include <string.h>
+-
+-#ifdef HAVE_SYS_TYPES_H
+-#include <sys/types.h>
+-#endif
+-
+-#ifdef HAVE_SSIZE_T
+-typedef ssize_t Py_ssize_t;
+-#elif SIZEOF_VOID_P == SIZEOF_LONG
+-typedef long Py_ssize_t;
+-#else
+-typedef int Py_ssize_t;
+-#endif
+-
+-int main()
+-{
+-    char buffer[256];
+-
+-    if(sprintf(buffer, "%zd", (size_t)123) < 0)
+-              return 1;
+-
+-    if (strcmp(buffer, "123"))
+-      return 1;
+-
+-    if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
+-              return 1;
+-
+-    if (strcmp(buffer, "-123"))
+-      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_CHECK_TYPE(socklen_t,,
+   AC_DEFINE(socklen_t,int,
+             Define to `int' if <sys/socket.h> does not define.),[
diff --git a/recipes/python/python-2.6.6/03-fix-tkinter-detection.patch b/recipes/python/python-2.6.6/03-fix-tkinter-detection.patch
new file mode 100644 (file)
index 0000000..a1a385a
--- /dev/null
@@ -0,0 +1,40 @@
+# We need to supply STAGING_INCDIR here, otherwise the Tk headers
+# will not be found.
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille.de>
+
+Index: Python-2.6.1/setup.py
+===================================================================
+--- Python-2.6.1.orig/setup.py
++++ Python-2.6.1/setup.py
+@@ -1543,7 +1543,7 @@ class PyBuildExt(build_ext):
+                 dotversion = dotversion[:-1] + '.' + dotversion[-1]
+             tcl_include_sub = []
+             tk_include_sub = []
+-            for dir in inc_dirs:
++            for dir in [os.getenv("STAGING_INCDIR")]:
+                 tcl_include_sub += [dir + os.sep + "tcl" + dotversion]
+                 tk_include_sub += [dir + os.sep + "tk" + dotversion]
+             tk_include_sub += tcl_include_sub
+@@ -1562,22 +1562,6 @@ class PyBuildExt(build_ext):
+             if dir not in include_dirs:
+                 include_dirs.append(dir)
+-        # Check for various platform-specific directories
+-        if platform == 'sunos5':
+-            include_dirs.append('/usr/openwin/include')
+-            added_lib_dirs.append('/usr/openwin/lib')
+-        elif os.path.exists('/usr/X11R6/include'):
+-            include_dirs.append('/usr/X11R6/include')
+-            added_lib_dirs.append('/usr/X11R6/lib64')
+-            added_lib_dirs.append('/usr/X11R6/lib')
+-        elif os.path.exists('/usr/X11R5/include'):
+-            include_dirs.append('/usr/X11R5/include')
+-            added_lib_dirs.append('/usr/X11R5/lib')
+-        else:
+-            # Assume default location for X11
+-            include_dirs.append('/usr/X11/include')
+-            added_lib_dirs.append('/usr/X11/lib')
+-
+         # If Cygwin, then verify that X is installed before proceeding
+         if platform == 'cygwin':
+             x11_inc = find_file('X11/Xlib.h', [], include_dirs)
diff --git a/recipes/python/python-2.6.6/04-default-is-optimized.patch b/recipes/python/python-2.6.6/04-default-is-optimized.patch
new file mode 100644 (file)
index 0000000..f99ea4c
--- /dev/null
@@ -0,0 +1,19 @@
+# when compiling for an embedded system, we need every bit of
+# performance we can get. default to optimized with the option
+# of opt-out.
+# 
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+
+Index: Python-2.6.6/Python/compile.c
+===================================================================
+--- Python-2.6.6.orig/Python/compile.c
++++ Python-2.6.6/Python/compile.c
+@@ -32,7 +32,7 @@
+ #include "symtable.h"
+ #include "opcode.h"
+-int Py_OptimizeFlag = 0;
++int Py_OptimizeFlag = 1;
+ #define DEFAULT_BLOCK_SIZE 16
+ #define DEFAULT_BLOCKS 8
diff --git a/recipes/python/python-2.6.6/05-enable-ctypes-cross-build.patch b/recipes/python/python-2.6.6/05-enable-ctypes-cross-build.patch
new file mode 100644 (file)
index 0000000..58b8078
--- /dev/null
@@ -0,0 +1,28 @@
+# CTypes need to know the actual host we are building on.
+# Signed-Off: Michael Dietrich <mdt@emdete.de>
+
+Index: Python-2.6.1/setup.py
+===================================================================
+--- Python-2.6.1.orig/setup.py
++++ Python-2.6.1/setup.py
+@@ -1656,16 +1656,16 @@ class PyBuildExt(build_ext):
+                                          ffi_configfile):
+                 from distutils.dir_util import mkpath
+                 mkpath(ffi_builddir)
+-                config_args = []
++                config_args = ['--host=%s' % os.environ["HOST_SYS"], ]
+                 # Pass empty CFLAGS because we'll just append the resulting
+                 # CFLAGS to Python's; -g or -O2 is to be avoided.
+-                cmd = "cd %s && env CFLAGS='' '%s/configure' %s" \
+-                      % (ffi_builddir, ffi_srcdir, " ".join(config_args))
++                cmd = "(cd %s && autoconf -W cross) && (cd %s && env CFLAGS='' '%s/configure' %s)" \
++                      % (ffi_srcdir, ffi_builddir, ffi_srcdir, " ".join(config_args))
+                 res = os.system(cmd)
+                 if res or not os.path.exists(ffi_configfile):
+-                    print "Failed to configure _ctypes module"
++                    print "Failed to configure _ctypes module (res=%d) or missing conffile=%s" % ( res, ffi_configfile )
+                     return False
+             fficonfig = {}
diff --git a/recipes/python/python-2.6.6/06-ctypes-libffi-fix-configure.patch b/recipes/python/python-2.6.6/06-ctypes-libffi-fix-configure.patch
new file mode 100644 (file)
index 0000000..3773791
--- /dev/null
@@ -0,0 +1,51 @@
+This fixes configure issues with recent autoconf, e.g:
+  autoreconf: Entering directory `Modules/_ctypes/libffi'
+  autoreconf: configure.ac: not using Gettext
+  autoreconf: running: aclocal --force
+  configure.ac:26: error: m4_copy: won't overwrite defined macro: _AC_ARG_VAR_PRECIOUS
+  configure.ac:26: the top level
+
+The problem is still present in python-2.6.5 but fixed in python-svn.
+
+diff -pruN Python-2.6.4.orig//Modules/_ctypes/libffi/configure.ac Python-2.6.4/Modules/_ctypes/libffi/configure.ac
+--- Python-2.6.4.orig//Modules/_ctypes/libffi/configure.ac      2009-04-28 22:01:18.000000000 +0200
++++ Python-2.6.4/Modules/_ctypes/libffi/configure.ac    2010-04-20 22:46:02.000000000 +0200
+@@ -23,6 +23,7 @@ AM_INIT_AUTOMAKE
+ m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
+ m4_define([_AC_ARG_VAR_PRECIOUS],[])
+ AC_PROG_CC
++m4_undefine([_AC_ARG_VAR_PRECIOUS])
+ m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
+ AC_SUBST(CFLAGS)
+@@ -366,7 +367,7 @@ test -d src/$TARGETDIR || mkdir src/$TAR
+ AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h)
+-AC_CONFIG_FILES(include/ffi.h)
++AC_CONFIG_FILES(include/ffi.h include/Makefile Makefile)
+ AC_CONFIG_LINKS(include/ffi_common.h:include/ffi_common.h)
+diff -pruN Python-2.6.4.orig//Modules/_ctypes/libffi/Makefile.am Python-2.6.4/Modules/_ctypes/libffi/Makefile.am
+--- Python-2.6.4.orig//Modules/_ctypes/libffi/Makefile.am       2008-03-04 21:09:11.000000000 +0100
++++ Python-2.6.4/Modules/_ctypes/libffi/Makefile.am     2010-04-20 22:54:03.000000000 +0200
+@@ -2,7 +2,7 @@
+ AUTOMAKE_OPTIONS = foreign subdir-objects
+-SUBDIRS = include testsuite man
++SUBDIRS = include
+ EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \
+        src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \
+@@ -32,8 +32,6 @@ EXTRA_DIST = LICENSE ChangeLog.v1 Change
+        src/frv/ffi.c src/frv/eabi.S src/frv/ffitarget.h src/dlmalloc.c \
+        libtool-version ChangeLog.libffi
+-info_TEXINFOS = doc/libffi.texi
+-
+ ## ################################################################
+ ##
+
diff --git a/recipes/python/python-2.6.6/10-distutils-fix-swig-parameter.patch b/recipes/python/python-2.6.6/10-distutils-fix-swig-parameter.patch
new file mode 100644 (file)
index 0000000..f5e852a
--- /dev/null
@@ -0,0 +1,16 @@
+# Some versions of SWIG do not use the extension parameter.
+# Make it optional.
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+Index: Python-2.6.1/Lib/distutils/command/build_ext.py
+===================================================================
+--- Python-2.6.1.orig/Lib/distutils/command/build_ext.py
++++ Python-2.6.1/Lib/distutils/command/build_ext.py
+@@ -566,7 +566,7 @@ class build_ext (Command):
+             target_lang=language)
+-    def swig_sources (self, sources, extension):
++    def swig_sources (self, sources, extension=None):
+         """Walk the list of source files in 'sources', looking for SWIG
+         interface (.i) files.  Run SWIG on all that are found, and
diff --git a/recipes/python/python-2.6.6/11-distutils-never-modify-shebang-line.patch b/recipes/python/python-2.6.6/11-distutils-never-modify-shebang-line.patch
new file mode 100644 (file)
index 0000000..8354e26
--- /dev/null
@@ -0,0 +1,18 @@
+# Don't modify the she-bang line for a cross-build.
+# Otherwise it points to our hostpython (which we do not want)
+#
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+
+Index: Python-2.6.1/Lib/distutils/command/build_scripts.py
+===================================================================
+--- Python-2.6.1.orig/Lib/distutils/command/build_scripts.py
++++ Python-2.6.1/Lib/distutils/command/build_scripts.py
+@@ -87,7 +87,7 @@ class build_scripts (Command):
+                     continue
+                 match = first_line_re.match(first_line)
+-                if match:
++                if False: #match:
+                     adjust = 1
+                     post_interp = match.group(1) or ''
diff --git a/recipes/python/python-2.6.6/12-distutils-prefix-is-inside-staging-area.patch b/recipes/python/python-2.6.6/12-distutils-prefix-is-inside-staging-area.patch
new file mode 100644 (file)
index 0000000..bf4366f
--- /dev/null
@@ -0,0 +1,60 @@
+# The proper prefix is inside our staging area.
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+
+Index: Python-2.6.6/Lib/distutils/sysconfig.py
+===================================================================
+--- Python-2.6.6.orig/Lib/distutils/sysconfig.py
++++ Python-2.6.6/Lib/distutils/sysconfig.py
+@@ -19,8 +19,8 @@ import sys
+ from distutils.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)
++PREFIX = os.path.normpath(sys.prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
++EXEC_PREFIX = os.path.normpath(sys.exec_prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
+ # 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,
+@@ -70,7 +70,10 @@ def get_python_inc(plat_specific=0, pref
+     sys.exec_prefix -- i.e., ignore 'plat_specific'.
+     """
+     if prefix is None:
+-        prefix = plat_specific and EXEC_PREFIX or PREFIX
++        if plat_specific:
++            prefix = plat_specific and os.environ['STAGING_INCDIR'].rstrip('include')
++        else:
++            prefix = plat_specific and EXEC_PREFIX or PREFIX
+     if os.name == "posix":
+         if python_build:
+@@ -116,7 +119,10 @@ def get_python_lib(plat_specific=0, stan
+     sys.exec_prefix -- i.e., ignore 'plat_specific'.
+     """
+     if prefix is None:
+-        prefix = plat_specific and EXEC_PREFIX or PREFIX
++        if plat_specific:
++            prefix = plat_specific and os.environ['STAGING_LIBDIR'].rstrip('lib')
++        else:
++            prefix = plat_specific and EXEC_PREFIX or PREFIX
+     if os.name == "posix":
+         libpython = os.path.join(prefix,
+@@ -216,7 +222,7 @@ def get_config_h_filename():
+     else:
+         # The name of the config.h file changed in 2.2
+         config_h = 'pyconfig.h'
+-    return os.path.join(inc_dir, config_h)
++    return os.path.join(inc_dir, config_h).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
+ def get_makefile_filename():
+@@ -225,7 +231,7 @@ def get_makefile_filename():
+         return os.path.join(os.path.dirname(os.path.realpath(sys.executable)),
+                             "Makefile")
+     lib_dir = get_python_lib(plat_specific=1, standard_lib=1)
+-    return os.path.join(lib_dir, "config", "Makefile")
++    return os.path.join(lib_dir, "config", "Makefile").replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
+ def parse_config_h(fp, g=None):
diff --git a/recipes/python/python-2.6.6/debug.patch b/recipes/python/python-2.6.6/debug.patch
new file mode 100644 (file)
index 0000000..beb3adc
--- /dev/null
@@ -0,0 +1,27 @@
+Index: Python-2.6.1/Lib/distutils/unixccompiler.py
+===================================================================
+--- Python-2.6.1.orig/Lib/distutils/unixccompiler.py   2009-11-13 16:04:54.000000000 +0000
++++ Python-2.6.1/Lib/distutils/unixccompiler.py        2009-11-13 16:06:27.000000000 +0000
+@@ -300,6 +300,8 @@
+         dylib_f = self.library_filename(lib, lib_type='dylib')
+         static_f = self.library_filename(lib, lib_type='static')
++        print "Looking in %s for %s" % (lib, dirs)
++
+         for dir in dirs:
+             shared = os.path.join(dir, shared_f)
+             dylib = os.path.join(dir, dylib_f)
+@@ -309,10 +311,13 @@
+             # assuming that *all* Unix C compilers do.  And of course I'm
+             # ignoring even GCC's "-static" option.  So sue me.
+             if os.path.exists(dylib):
++                print "Found %s" % (dylib)
+                 return dylib
+             elif os.path.exists(shared):
++                print "Found %s" % (shared)
+                 return shared
+             elif os.path.exists(static):
++                print "Found %s" % (static)
+                 return static
+         # Oops, didn't find it in *any* of 'dirs'
diff --git a/recipes/python/python-2.6.6/ipv6-cross.patch b/recipes/python/python-2.6.6/ipv6-cross.patch
new file mode 100644 (file)
index 0000000..3d2ac5e
--- /dev/null
@@ -0,0 +1,13 @@
+Index: Python-2.6.5/configure.in
+===================================================================
+--- Python-2.6.5.orig/configure.in     2011-01-15 14:42:42.068656002 -0800
++++ Python-2.6.5/configure.in  2011-01-15 15:18:39.668656002 -0800
+@@ -2951,7 +2951,7 @@
+ buggygetaddrinfo=yes
+ ])
+-if test "$buggygetaddrinfo" = "yes"; then
++if test "$buggygetaddrinfo" = "yes" -a x"$cross_compiling" != "xyes"; then
+       if test "$ipv6" = "yes"; then
+               echo 'Fatal: You must get working getaddrinfo() function.'
+               echo '       or you can specify "--disable-ipv6"'.
diff --git a/recipes/python/python-2.6.6/nohostlibs.patch b/recipes/python/python-2.6.6/nohostlibs.patch
new file mode 100644 (file)
index 0000000..cc9b28c
--- /dev/null
@@ -0,0 +1,57 @@
+Index: Python-2.6.6/setup.py
+===================================================================
+--- Python-2.6.6.orig/setup.py
++++ Python-2.6.6/setup.py
+@@ -356,8 +356,8 @@ class PyBuildExt(build_ext):
+     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')
++        #add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
++        #add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+         # Add paths specified in the environment variables LDFLAGS and
+         # CPPFLAGS for header and library files.
+@@ -393,10 +393,10 @@ class PyBuildExt(build_ext):
+                     for directory in reversed(options.dirs):
+                         add_dir_to_list(dir_list, directory)
+-        if os.path.normpath(sys.prefix) != '/usr':
+-            add_dir_to_list(self.compiler.library_dirs,
++
++        add_dir_to_list(self.compiler.library_dirs,
+                             sysconfig.get_config_var("LIBDIR"))
+-            add_dir_to_list(self.compiler.include_dirs,
++        add_dir_to_list(self.compiler.include_dirs,
+                             sysconfig.get_config_var("INCLUDEDIR"))
+         try:
+@@ -407,11 +407,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.
+-        lib_dirs = self.compiler.library_dirs + [
+-            '/lib64', '/usr/lib64',
+-            '/lib', '/usr/lib',
+-            ]
+-        inc_dirs = self.compiler.include_dirs + ['/usr/include']
++        lib_dirs = self.compiler.library_dirs
++        inc_dirs = self.compiler.include_dirs
+         exts = []
+         missing = []
+@@ -661,8 +658,7 @@ class PyBuildExt(build_ext):
+                 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'],
++            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:
diff --git a/recipes/python/python-2.6.6/pkgconfig-support.patch b/recipes/python/python-2.6.6/pkgconfig-support.patch
new file mode 100644 (file)
index 0000000..d970b00
--- /dev/null
@@ -0,0 +1,94 @@
+diff -Naur Python-2.6.6-orig/Makefile.pre.in Python-2.6.6/Makefile.pre.in
+--- Python-2.6.6-orig/Makefile.pre.in  2010-08-02 00:05:31.000000000 +0200
++++ Python-2.6.6/Makefile.pre.in       2011-05-24 21:16:19.943550002 +0200
+@@ -763,6 +763,9 @@
+       (cd $(DESTDIR)$(BINDIR); $(LN) python$(VERSION)$(EXE) $(PYTHON))
+       -rm -f $(DESTDIR)$(BINDIR)/python-config
+       (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python-config)
++      -test -d $(DESTDIR)$(LIBPC) || $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC)
++      -rm -f $(DESTDIR)$(LIBPC)/python.pc
++      (cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python.pc)
+ # Install the interpreter with $(VERSION) affixed
+ # This goes into $(exec_prefix)
+@@ -936,8 +939,12 @@
+ # Install the library and miscellaneous stuff needed for extending/embedding
+ # This goes into $(exec_prefix)
+ LIBPL=                $(LIBP)/config
++
++# pkgconfig directory
++LIBPC=                $(LIBDIR)/pkgconfig
++
+ libainstall:  all
+-      @for i in $(LIBDIR) $(LIBP) $(LIBPL); \
++      @for i in $(LIBDIR) $(LIBP) $(LIBPL) $(LIBPC); \
+       do \
+               if test ! -d $(DESTDIR)$$i; then \
+                       echo "Creating directory $$i"; \
+@@ -964,6 +971,7 @@
+       $(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
++      $(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(VERSION).pc
+       $(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup
+       $(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh
+       # Substitution happens here, as the completely-expanded BINDIR
+@@ -1159,7 +1167,8 @@
+ # Keep configure and Python-ast.[ch], it's possible they can't be generated
+ distclean: clobber
+       -rm -f core Makefile Makefile.pre config.status \
+-              Modules/Setup Modules/Setup.local Modules/Setup.config
++              Modules/Setup Modules/Setup.local Modules/Setup.config \
++              Misc/python.pc
+       find $(srcdir) '(' -name '*.fdc' -o -name '*~' \
+                          -o -name '[@,#]*' -o -name '*.old' \
+                          -o -name '*.orig' -o -name '*.rej' \
+diff -Naur Python-2.6.6-orig/Misc/python.pc.in Python-2.6.6/Misc/python.pc.in
+--- Python-2.6.6-orig/Misc/python.pc.in        1970-01-01 01:00:00.000000000 +0100
++++ Python-2.6.6/Misc/python.pc.in     2011-05-24 21:09:22.733550002 +0200
+@@ -0,0 +1,13 @@
++prefix=@prefix@
++exec_prefix=@exec_prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name: Python
++Description: Python library
++Requires: 
++Version: @VERSION@
++Libs.private: @LIBS@
++Libs: -L${libdir} -lpython@VERSION@
++Cflags: -I${includedir}/python@VERSION@ 
++
+diff -Naur Python-2.6.6-orig/configure Python-2.6.6/configure
+--- Python-2.6.6-orig/configure        2010-05-25 04:27:03.000000000 +0200
++++ Python-2.6.6/configure     2011-05-24 21:14:55.553550001 +0200
+@@ -12863,7 +12863,7 @@
+ $as_echo "done" >&6; }
+ # generate output files
+-ac_config_files="$ac_config_files Makefile.pre Modules/Setup.config"
++ac_config_files="$ac_config_files Makefile.pre Modules/Setup.config Misc/python.pc"
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+@@ -13557,6 +13557,7 @@
+     "Mac/Resources/app/Info.plist") CONFIG_FILES="$CONFIG_FILES Mac/Resources/app/Info.plist" ;;
+     "Makefile.pre") CONFIG_FILES="$CONFIG_FILES Makefile.pre" ;;
+     "Modules/Setup.config") CONFIG_FILES="$CONFIG_FILES Modules/Setup.config" ;;
++    "Misc/python.pc") CONFIG_FILES="$CONFIG_FILES Misc/python.pc" ;;
+   *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+   esac
+diff -Naur Python-2.6.6-orig/configure.in Python-2.6.6/configure.in
+--- Python-2.6.6-orig/configure.in     2010-05-25 04:27:03.000000000 +0200
++++ Python-2.6.6/configure.in  2011-05-24 21:09:53.733550001 +0200
+@@ -3935,7 +3935,7 @@
+ AC_MSG_RESULT(done)
+ # generate output files
+-AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
++AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
+ AC_OUTPUT
+ echo "creating Modules/Setup"
diff --git a/recipes/python/python-2.6.6/python-module-rpath-fix.patch b/recipes/python/python-2.6.6/python-module-rpath-fix.patch
new file mode 100644 (file)
index 0000000..a2c8089
--- /dev/null
@@ -0,0 +1,24 @@
+Index: Python-2.6.5/setup.py
+===================================================================
+--- Python-2.6.5.orig/setup.py
++++ Python-2.6.5/setup.py
+@@ -973,13 +973,18 @@ class PyBuildExt(build_ext):
+                 sqlite_extra_link_args = ('-Wl,-search_paths_first',)
+             else:
+                 sqlite_extra_link_args = ()
++          # Check weather we are cross compiling
++            if (os.environ.get('HOST_SYS') != os.environ.get('BUILD_SYS')):
++                runtime_library_dirs_temp=[os.environ.get('libdir')]
++          else:
++              runtime_library_dirs_temp=sqlite_libdir
+             exts.append(Extension('_sqlite3', sqlite_srcs,
+                                   define_macros=sqlite_defines,
+                                   include_dirs=["Modules/_sqlite",
+                                                 sqlite_incdir],
+                                   library_dirs=sqlite_libdir,
+-                                  runtime_library_dirs=sqlite_libdir,
++                                  runtime_library_dirs=runtime_library_dirs_temp,
+                                   extra_link_args=sqlite_extra_link_args,
+                                   libraries=["sqlite3",]))
+         else:
diff --git a/recipes/python/python-2.6.6/sitecustomize.py b/recipes/python/python-2.6.6/sitecustomize.py
new file mode 100644 (file)
index 0000000..2739018
--- /dev/null
@@ -0,0 +1,45 @@
+# OpenEmbedded sitecustomize.py (C) 2002-2008 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
+# GPLv2 or later
+# Version: 20081123
+# Features:
+# * set proper default encoding
+# * enable readline completion in the interactive interpreter
+# * load command line history on startup
+# * save command line history on exit 
+
+import os
+
+def __exithandler():
+    try:
+        readline.write_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) )
+    except IOError:
+        pass
+
+def __registerExitHandler():
+    import atexit
+    atexit.register( __exithandler )
+
+def __enableReadlineSupport():
+    readline.set_history_length( 1000 )
+    readline.parse_and_bind( "tab: complete" )
+    try:
+        readline.read_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) )
+    except IOError:
+        pass
+
+def __enableDefaultEncoding():
+    import sys
+    try:
+        sys.setdefaultencoding( "utf8" )
+    except LookupError:
+        pass
+
+import sys
+try:
+    import rlcompleter, readline
+except ImportError:
+    pass
+else:
+    __enableDefaultEncoding()
+    __registerExitHandler()
+    __enableReadlineSupport()
diff --git a/recipes/python/python-2.7-manifest.inc b/recipes/python/python-2.7-manifest.inc
new file mode 100644 (file)
index 0000000..c6833de
--- /dev/null
@@ -0,0 +1,272 @@
+
+# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file.
+# Generator: '../../contrib/python/generate-manifest-2.7.py' Version 20100908 (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
+# Visit the Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy
+
+
+PROVIDES+="python-codecs python-threading python-distutils python-doctest python-stringold python-curses python-ctypes python-pickle python-datetime python-core python-io python-compression python-re python-profile python-xmlrpc python-terminal python-dev python-email python-image python-tests python-core-dbg python-resource python-json python-difflib python-math python-syslog python-hotshot python-unixadmin python-textutils python-tkinter python-gdbm python-elementtree python-fcntl python-netclient python-pprint python-netserver python-compiler python-smtpd python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-sqlite3 python-sqlite3-tests python-unittest python-multiprocessing python-robotparser python-compile python-debugger python-pkgutil python-shell python-bsddb python-numbers python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio "
+
+PACKAGES="python-core-dbg python-codecs python-threading python-distutils python-doctest python-stringold python-curses python-ctypes python-pickle python-datetime python-core python-io python-compression python-re python-profile python-xmlrpc python-terminal python-dev python-email python-image python-tests python-resource python-json python-difflib python-math python-syslog python-hotshot python-unixadmin python-textutils python-tkinter python-gdbm python-elementtree python-fcntl python-netclient python-pprint python-netserver python-compiler python-smtpd python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-sqlite3 python-sqlite3-tests python-unittest python-multiprocessing python-robotparser python-compile python-debugger python-pkgutil python-shell python-bsddb python-numbers python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio python-modules"
+
+DESCRIPTION_python-codecs="Python Codecs, Encodings & i18n Support"
+RDEPENDS_python-codecs="python-core python-lang"
+FILES_python-codecs="${libdir}/python2.7/codecs.* ${libdir}/python2.7/encodings ${libdir}/python2.7/gettext.* ${libdir}/python2.7/locale.* ${libdir}/python2.7/lib-dynload/_locale.so ${libdir}/python2.7/lib-dynload/unicodedata.so ${libdir}/python2.7/stringprep.* ${libdir}/python2.7/xdrlib.* "
+
+DESCRIPTION_python-threading="Python Threading & Synchronization Support"
+RDEPENDS_python-threading="python-core python-lang"
+FILES_python-threading="${libdir}/python2.7/_threading_local.* ${libdir}/python2.7/dummy_thread.* ${libdir}/python2.7/dummy_threading.* ${libdir}/python2.7/mutex.* ${libdir}/python2.7/threading.* ${libdir}/python2.7/Queue.* "
+
+DESCRIPTION_python-distutils="Python Distribution Utilities"
+RDEPENDS_python-distutils="python-core"
+FILES_python-distutils="${libdir}/python2.7/config ${libdir}/python2.7/distutils "
+
+DESCRIPTION_python-doctest="Python framework for running examples in docstrings."
+RDEPENDS_python-doctest="python-core python-lang python-io python-re python-unittest python-debugger python-difflib"
+FILES_python-doctest="${libdir}/python2.7/doctest.* "
+
+DESCRIPTION_python-stringold="Python String APIs [deprecated]"
+RDEPENDS_python-stringold="python-core python-re"
+FILES_python-stringold="${libdir}/python2.7/lib-dynload/strop.so ${libdir}/python2.7/string.* "
+
+DESCRIPTION_python-curses="Python Curses Support"
+RDEPENDS_python-curses="python-core"
+FILES_python-curses="${libdir}/python2.7/curses ${libdir}/python2.7/lib-dynload/_curses.so ${libdir}/python2.7/lib-dynload/_curses_panel.so "
+
+DESCRIPTION_python-ctypes="Python C Types Support"
+RDEPENDS_python-ctypes="python-core"
+FILES_python-ctypes="${libdir}/python2.7/ctypes ${libdir}/python2.7/lib-dynload/_ctypes.so "
+
+DESCRIPTION_python-pickle="Python Persistence Support"
+RDEPENDS_python-pickle="python-core python-codecs python-io python-re"
+FILES_python-pickle="${libdir}/python2.7/pickle.* ${libdir}/python2.7/shelve.* ${libdir}/python2.7/lib-dynload/cPickle.so "
+
+DESCRIPTION_python-datetime="Python Calendar and Time support"
+RDEPENDS_python-datetime="python-core python-codecs"
+FILES_python-datetime="${libdir}/python2.7/_strptime.* ${libdir}/python2.7/calendar.* ${libdir}/python2.7/lib-dynload/datetime.so "
+
+DESCRIPTION_python-core="Python Interpreter and core modules (needed!)"
+RDEPENDS_python-core=""
+FILES_python-core="${libdir}/python2.7/__future__.* ${libdir}/python2.7/_abcoll.* ${libdir}/python2.7/abc.* ${libdir}/python2.7/copy.* ${libdir}/python2.7/copy_reg.* ${libdir}/python2.7/ConfigParser.* ${libdir}/python2.7/genericpath.* ${libdir}/python2.7/getopt.* ${libdir}/python2.7/linecache.* ${libdir}/python2.7/new.* ${libdir}/python2.7/os.* ${libdir}/python2.7/posixpath.* ${libdir}/python2.7/struct.* ${libdir}/python2.7/warnings.* ${libdir}/python2.7/site.* ${libdir}/python2.7/stat.* ${libdir}/python2.7/UserDict.* ${libdir}/python2.7/UserList.* ${libdir}/python2.7/UserString.* ${libdir}/python2.7/lib-dynload/binascii.so ${libdir}/python2.7/lib-dynload/_struct.so ${libdir}/python2.7/lib-dynload/time.so ${libdir}/python2.7/lib-dynload/xreadlines.so ${libdir}/python2.7/types.* ${libdir}/python2.7/platform.* ${bindir}/python* "
+
+DESCRIPTION_python-io="Python Low-Level I/O"
+RDEPENDS_python-io="python-core python-math"
+FILES_python-io="${libdir}/python2.7/lib-dynload/_socket.so ${libdir}/python2.7/lib-dynload/_ssl.so ${libdir}/python2.7/lib-dynload/select.so ${libdir}/python2.7/lib-dynload/termios.so ${libdir}/python2.7/lib-dynload/cStringIO.so ${libdir}/python2.7/pipes.* ${libdir}/python2.7/socket.* ${libdir}/python2.7/ssl.* ${libdir}/python2.7/tempfile.* ${libdir}/python2.7/StringIO.* "
+
+DESCRIPTION_python-compression="Python High Level Compression Support"
+RDEPENDS_python-compression="python-core python-zlib"
+FILES_python-compression="${libdir}/python2.7/gzip.* ${libdir}/python2.7/zipfile.* ${libdir}/python2.7/tarfile.* ${libdir}/python2.7/lib-dynload/bz2.so "
+
+DESCRIPTION_python-re="Python Regular Expression APIs"
+RDEPENDS_python-re="python-core"
+FILES_python-re="${libdir}/python2.7/re.* ${libdir}/python2.7/sre.* ${libdir}/python2.7/sre_compile.* ${libdir}/python2.7/sre_constants* ${libdir}/python2.7/sre_parse.* "
+
+DESCRIPTION_python-profile="Python Basic Profiling Support"
+RDEPENDS_python-profile="python-core python-textutils"
+FILES_python-profile="${libdir}/python2.7/profile.* ${libdir}/python2.7/pstats.* ${libdir}/python2.7/cProfile.* ${libdir}/python2.7/lib-dynload/_lsprof.so "
+
+DESCRIPTION_python-xmlrpc="Python XMLRPC Support"
+RDEPENDS_python-xmlrpc="python-core python-xml python-netserver python-lang"
+FILES_python-xmlrpc="${libdir}/python2.7/xmlrpclib.* ${libdir}/python2.7/SimpleXMLRPCServer.* "
+
+DESCRIPTION_python-terminal="Python Terminal Controlling Support"
+RDEPENDS_python-terminal="python-core python-io"
+FILES_python-terminal="${libdir}/python2.7/pty.* ${libdir}/python2.7/tty.* "
+
+DESCRIPTION_python-dev="Python Development Package"
+RDEPENDS_python-dev="python-core"
+FILES_python-dev="${includedir} ${libdir}/libpython2.6.so ${libdir}/python2.7/config "
+
+DESCRIPTION_python-email="Python Email Support"
+RDEPENDS_python-email="python-core python-io python-re python-mime python-audio python-image python-netclient"
+FILES_python-email="${libdir}/python2.7/imaplib.* ${libdir}/python2.7/email "
+
+DESCRIPTION_python-image="Python Graphical Image Handling"
+RDEPENDS_python-image="python-core"
+FILES_python-image="${libdir}/python2.7/colorsys.* ${libdir}/python2.7/imghdr.* ${libdir}/python2.7/lib-dynload/imageop.so ${libdir}/python2.7/lib-dynload/rgbimg.so "
+
+DESCRIPTION_python-tests="Python Tests"
+RDEPENDS_python-tests="python-core"
+FILES_python-tests="${libdir}/python2.7/test "
+
+DESCRIPTION_python-core-dbg="Python core module debug information"
+RDEPENDS_python-core-dbg="python-core"
+FILES_python-core-dbg="${libdir}/python2.7/config/.debug ${libdir}/python2.7/lib-dynload/.debug ${bindir}/.debug ${libdir}/.debug "
+
+DESCRIPTION_python-resource="Python Resource Control Interface"
+RDEPENDS_python-resource="python-core"
+FILES_python-resource="${libdir}/python2.7/lib-dynload/resource.so "
+
+DESCRIPTION_python-json="Python JSON Support"
+RDEPENDS_python-json="python-core python-math python-re"
+FILES_python-json="${libdir}/python2.7/json "
+
+DESCRIPTION_python-difflib="Python helpers for computing deltas between objects."
+RDEPENDS_python-difflib="python-lang python-re"
+FILES_python-difflib="${libdir}/python2.7/difflib.* "
+
+DESCRIPTION_python-math="Python Math Support"
+RDEPENDS_python-math="python-core"
+FILES_python-math="${libdir}/python2.7/lib-dynload/cmath.so ${libdir}/python2.7/lib-dynload/math.so ${libdir}/python2.7/lib-dynload/_random.so ${libdir}/python2.7/random.* ${libdir}/python2.7/sets.* "
+
+DESCRIPTION_python-syslog="Python Syslog Interface"
+RDEPENDS_python-syslog="python-core"
+FILES_python-syslog="${libdir}/python2.7/lib-dynload/syslog.so "
+
+DESCRIPTION_python-hotshot="Python Hotshot Profiler"
+RDEPENDS_python-hotshot="python-core"
+FILES_python-hotshot="${libdir}/python2.7/hotshot ${libdir}/python2.7/lib-dynload/_hotshot.so "
+
+DESCRIPTION_python-unixadmin="Python Unix Administration Support"
+RDEPENDS_python-unixadmin="python-core"
+FILES_python-unixadmin="${libdir}/python2.7/lib-dynload/nis.so ${libdir}/python2.7/lib-dynload/grp.so ${libdir}/python2.7/lib-dynload/pwd.so ${libdir}/python2.7/getpass.* "
+
+DESCRIPTION_python-textutils="Python Option Parsing, Text Wrapping and Comma-Separated-Value Support"
+RDEPENDS_python-textutils="python-core python-io python-re python-stringold"
+FILES_python-textutils="${libdir}/python2.7/lib-dynload/_csv.so ${libdir}/python2.7/csv.* ${libdir}/python2.7/optparse.* ${libdir}/python2.7/textwrap.* "
+
+DESCRIPTION_python-tkinter="Python Tcl/Tk Bindings"
+RDEPENDS_python-tkinter="python-core"
+FILES_python-tkinter="${libdir}/python2.7/lib-dynload/_tkinter.so ${libdir}/python2.7/lib-tk "
+
+DESCRIPTION_python-gdbm="Python GNU Database Support"
+RDEPENDS_python-gdbm="python-core"
+FILES_python-gdbm="${libdir}/python2.7/lib-dynload/gdbm.so "
+
+DESCRIPTION_python-elementtree="Python elementree"
+RDEPENDS_python-elementtree="python-core"
+FILES_python-elementtree="${libdir}/python2.7/lib-dynload/_elementtree.so "
+
+DESCRIPTION_python-fcntl="Python's fcntl Interface"
+RDEPENDS_python-fcntl="python-core"
+FILES_python-fcntl="${libdir}/python2.7/lib-dynload/fcntl.so "
+
+DESCRIPTION_python-netclient="Python Internet Protocol Clients"
+RDEPENDS_python-netclient="python-core python-crypt python-datetime python-io python-lang python-logging python-mime"
+FILES_python-netclient="${libdir}/python2.7/*Cookie*.* ${libdir}/python2.7/base64.* ${libdir}/python2.7/cookielib.* ${libdir}/python2.7/ftplib.* ${libdir}/python2.7/gopherlib.* ${libdir}/python2.7/hmac.* ${libdir}/python2.7/httplib.* ${libdir}/python2.7/mimetypes.* ${libdir}/python2.7/nntplib.* ${libdir}/python2.7/poplib.* ${libdir}/python2.7/smtplib.* ${libdir}/python2.7/telnetlib.* ${libdir}/python2.7/urllib.* ${libdir}/python2.7/urllib2.* ${libdir}/python2.7/urlparse.* ${libdir}/python2.7/uuid.* ${libdir}/python2.7/rfc822.* ${libdir}/python2.7/mimetools.* "
+
+DESCRIPTION_python-pprint="Python Pretty-Print Support"
+RDEPENDS_python-pprint="python-core"
+FILES_python-pprint="${libdir}/python2.7/pprint.* "
+
+DESCRIPTION_python-netserver="Python Internet Protocol Servers"
+RDEPENDS_python-netserver="python-core python-netclient"
+FILES_python-netserver="${libdir}/python2.7/cgi.* ${libdir}/python2.7/*HTTPServer.* ${libdir}/python2.7/SocketServer.* "
+
+DESCRIPTION_python-compiler="Python Compiler Support"
+RDEPENDS_python-compiler="python-core"
+FILES_python-compiler="${libdir}/python2.7/compiler "
+
+DESCRIPTION_python-smtpd="Python Simple Mail Transport Daemon"
+RDEPENDS_python-smtpd="python-core python-netserver python-email python-mime"
+FILES_python-smtpd="${bindir}/smtpd.* "
+
+DESCRIPTION_python-html="Python HTML Processing"
+RDEPENDS_python-html="python-core"
+FILES_python-html="${libdir}/python2.7/formatter.* ${libdir}/python2.7/htmlentitydefs.* ${libdir}/python2.7/htmllib.* ${libdir}/python2.7/markupbase.* ${libdir}/python2.7/sgmllib.* "
+
+DESCRIPTION_python-readline="Python Readline Support"
+RDEPENDS_python-readline="python-core"
+FILES_python-readline="${libdir}/python2.7/lib-dynload/readline.so ${libdir}/python2.7/rlcompleter.* "
+
+DESCRIPTION_python-subprocess="Python Subprocess Support"
+RDEPENDS_python-subprocess="python-core python-io python-re python-fcntl python-pickle"
+FILES_python-subprocess="${libdir}/python2.7/subprocess.* "
+
+DESCRIPTION_python-pydoc="Python Interactive Help Support"
+RDEPENDS_python-pydoc="python-core python-lang python-stringold python-re"
+FILES_python-pydoc="${bindir}/pydoc ${libdir}/python2.7/pydoc.* "
+
+DESCRIPTION_python-logging="Python Logging Support"
+RDEPENDS_python-logging="python-core python-io python-lang python-pickle python-stringold"
+FILES_python-logging="${libdir}/python2.7/logging "
+
+DESCRIPTION_python-mailbox="Python Mailbox Format Support"
+RDEPENDS_python-mailbox="python-core python-mime"
+FILES_python-mailbox="${libdir}/python2.7/mailbox.* "
+
+DESCRIPTION_python-xml="Python basic XML support."
+RDEPENDS_python-xml="python-core python-re"
+FILES_python-xml="${libdir}/python2.7/lib-dynload/pyexpat.so ${libdir}/python2.7/xml ${libdir}/python2.7/xmllib.* "
+
+DESCRIPTION_python-mime="Python MIME Handling APIs"
+RDEPENDS_python-mime="python-core python-io"
+FILES_python-mime="${libdir}/python2.7/mimetools.* ${libdir}/python2.7/uu.* ${libdir}/python2.7/quopri.* ${libdir}/python2.7/rfc822.* "
+
+DESCRIPTION_python-sqlite3="Python Sqlite3 Database Support"
+RDEPENDS_python-sqlite3="python-core python-datetime python-lang python-crypt python-io python-threading python-zlib"
+FILES_python-sqlite3="${libdir}/python2.7/lib-dynload/_sqlite3.so ${libdir}/python2.7/sqlite3/dbapi2.* ${libdir}/python2.7/sqlite3/__init__.* ${libdir}/python2.7/sqlite3/dump.* "
+
+DESCRIPTION_python-sqlite3-tests="Python Sqlite3 Database Support Tests"
+RDEPENDS_python-sqlite3-tests="python-core python-sqlite3"
+FILES_python-sqlite3-tests="${libdir}/python2.7/sqlite3/test "
+
+DESCRIPTION_python-unittest="Python Unit Testing Framework"
+RDEPENDS_python-unittest="python-core python-stringold python-lang"
+FILES_python-unittest="${libdir}/python2.7/unittest.* "
+
+DESCRIPTION_python-multiprocessing="Python Multiprocessing Support"
+RDEPENDS_python-multiprocessing="python-core python-io python-lang"
+FILES_python-multiprocessing="${libdir}/python2.7/lib-dynload/_multiprocessing.so ${libdir}/python2.7/multiprocessing "
+
+DESCRIPTION_python-robotparser="Python robots.txt parser"
+RDEPENDS_python-robotparser="python-core python-netclient"
+FILES_python-robotparser="${libdir}/python2.7/robotparser.* "
+
+DESCRIPTION_python-compile="Python Bytecode Compilation Support"
+RDEPENDS_python-compile="python-core"
+FILES_python-compile="${libdir}/python2.7/py_compile.* ${libdir}/python2.7/compileall.* "
+
+DESCRIPTION_python-debugger="Python Debugger"
+RDEPENDS_python-debugger="python-core python-io python-lang python-re python-stringold python-shell python-pprint"
+FILES_python-debugger="${libdir}/python2.7/bdb.* ${libdir}/python2.7/pdb.* "
+
+DESCRIPTION_python-pkgutil="Python Package Extension Utility Support"
+RDEPENDS_python-pkgutil="python-core"
+FILES_python-pkgutil="${libdir}/python2.7/pkgutil.* "
+
+DESCRIPTION_python-shell="Python Shell-Like Functionality"
+RDEPENDS_python-shell="python-core python-re"
+FILES_python-shell="${libdir}/python2.7/cmd.* ${libdir}/python2.7/commands.* ${libdir}/python2.7/dircache.* ${libdir}/python2.7/fnmatch.* ${libdir}/python2.7/glob.* ${libdir}/python2.7/popen2.* ${libdir}/python2.7/shlex.* ${libdir}/python2.7/shutil.* "
+
+DESCRIPTION_python-bsddb="Python Berkeley Database Bindings"
+RDEPENDS_python-bsddb="python-core"
+FILES_python-bsddb="${libdir}/python2.7/bsddb ${libdir}/python2.7/lib-dynload/_bsddb.so "
+
+DESCRIPTION_python-numbers="Python Number APIs"
+RDEPENDS_python-numbers="python-core python-lang python-re"
+FILES_python-numbers="${libdir}/python2.7/decimal.* ${libdir}/python2.7/numbers.* "
+
+DESCRIPTION_python-mmap="Python Memory-Mapped-File Support"
+RDEPENDS_python-mmap="python-core python-io"
+FILES_python-mmap="${libdir}/python2.7/lib-dynload/mmap.so "
+
+DESCRIPTION_python-zlib="Python zlib Support."
+RDEPENDS_python-zlib="python-core"
+FILES_python-zlib="${libdir}/python2.7/lib-dynload/zlib.so "
+
+DESCRIPTION_python-db="Python File-Based Database Support"
+RDEPENDS_python-db="python-core"
+FILES_python-db="${libdir}/python2.7/anydbm.* ${libdir}/python2.7/dumbdbm.* ${libdir}/python2.7/whichdb.* "
+
+DESCRIPTION_python-crypt="Python Basic Cryptographic and Hashing Support"
+RDEPENDS_python-crypt="python-core"
+FILES_python-crypt="${libdir}/python2.7/hashlib.* ${libdir}/python2.7/md5.* ${libdir}/python2.7/sha.* ${libdir}/python2.7/lib-dynload/crypt.so ${libdir}/python2.7/lib-dynload/_hashlib.so ${libdir}/python2.7/lib-dynload/_sha256.so ${libdir}/python2.7/lib-dynload/_sha512.so "
+
+DESCRIPTION_python-idle="Python Integrated Development Environment"
+RDEPENDS_python-idle="python-core python-tkinter"
+FILES_python-idle="${bindir}/idle ${libdir}/python2.7/idlelib "
+
+DESCRIPTION_python-lang="Python Low-Level Language Support"
+RDEPENDS_python-lang="python-core"
+FILES_python-lang="${libdir}/python2.7/lib-dynload/_bisect.so ${libdir}/python2.7/lib-dynload/_collections.so ${libdir}/python2.7/lib-dynload/_heapq.so ${libdir}/python2.7/lib-dynload/_weakref.so ${libdir}/python2.7/lib-dynload/_functools.so ${libdir}/python2.7/lib-dynload/array.so ${libdir}/python2.7/lib-dynload/itertools.so ${libdir}/python2.7/lib-dynload/operator.so ${libdir}/python2.7/lib-dynload/parser.so ${libdir}/python2.7/atexit.* ${libdir}/python2.7/bisect.* ${libdir}/python2.7/code.* ${libdir}/python2.7/codeop.* ${libdir}/python2.7/collections.* ${libdir}/python2.7/dis.* ${libdir}/python2.7/functools.* ${libdir}/python2.7/heapq.* ${libdir}/python2.7/inspect.* ${libdir}/python2.7/keyword.* ${libdir}/python2.7/opcode.* ${libdir}/python2.7/symbol.* ${libdir}/python2.7/repr.* ${libdir}/python2.7/token.* ${libdir}/python2.7/tokenize.* ${libdir}/python2.7/traceback.* ${libdir}/python2.7/linecache.* ${libdir}/python2.7/weakref.* "
+
+DESCRIPTION_python-audio="Python Audio Handling"
+RDEPENDS_python-audio="python-core"
+FILES_python-audio="${libdir}/python2.7/wave.* ${libdir}/python2.7/chunk.* ${libdir}/python2.7/sndhdr.* ${libdir}/python2.7/lib-dynload/ossaudiodev.so ${libdir}/python2.7/lib-dynload/audioop.so "
+
+DESCRIPTION_python-modules="All Python modules"
+RDEPENDS_python-modules="python-codecs python-threading python-distutils python-doctest python-stringold python-curses python-ctypes python-pickle python-datetime python-core python-io python-compression python-re python-profile python-xmlrpc python-terminal python-email python-image python-tests python-resource python-json python-difflib python-math python-syslog python-hotshot python-unixadmin python-textutils python-tkinter python-gdbm python-elementtree python-fcntl python-netclient python-pprint python-netserver python-compiler python-smtpd python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-sqlite3 python-sqlite3-tests python-unittest python-multiprocessing python-robotparser python-compile python-debugger python-pkgutil python-shell python-bsddb python-numbers python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio  "
+ALLOW_EMPTY_python-modules = "1"
+
+
diff --git a/recipes/python/python-2.7.1/00-fix-bindir-libdir-for-cross.patch b/recipes/python/python-2.7.1/00-fix-bindir-libdir-for-cross.patch
new file mode 100644 (file)
index 0000000..2559e3a
--- /dev/null
@@ -0,0 +1,20 @@
+# $(exec_prefix) points to the wrong directory, when installing
+# a cross-build. @bindir@ and @libdir@ works better and doesn't
+# affect the native build.
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+
+Index: Python-2.6.1/Makefile.pre.in
+===================================================================
+--- Python-2.6.1.orig/Makefile.pre.in
++++ Python-2.6.1/Makefile.pre.in
+@@ -86,8 +86,8 @@ exec_prefix= @exec_prefix@
+ datarootdir=    @datarootdir@
+ # Expanded directories
+-BINDIR=               $(exec_prefix)/bin
+-LIBDIR=               $(exec_prefix)/lib
++BINDIR=               @bindir@
++LIBDIR=               @libdir@
+ MANDIR=               @mandir@
+ INCLUDEDIR=   @includedir@
+ CONFINCLUDEDIR=       $(exec_prefix)/include
diff --git a/recipes/python/python-2.7.1/01-fix-have-long-long-format.patch b/recipes/python/python-2.7.1/01-fix-have-long-long-format.patch
new file mode 100644 (file)
index 0000000..6cf3cd4
--- /dev/null
@@ -0,0 +1,19 @@
+# The configure script assumes the %lld printf format is not available as it
+# can't run its check script. For some reason python refuses to compile without
+# this functionality, so we just assume that our printf supports %lld.
+#
+# Include/pyport.h:243:13: error: #error "This platform's pyconfig.h needs to define PY_FORMAT_LONG_LONG"
+
+Index: Python-2.7.1/configure.in
+===================================================================
+--- Python-2.7.1.orig/configure.in
++++ Python-2.7.1/configure.in
+@@ -4151,7 +4151,7 @@ then
+   ]]])],
+   [ac_cv_have_long_long_format=yes],
+   [ac_cv_have_long_long_format=no],
+-  [ac_cv_have_long_long_format=no])
++  [ac_cv_have_long_long_format=yes])
+   )
+   AC_MSG_RESULT($ac_cv_have_long_long_format)
+ fi
diff --git a/recipes/python/python-2.7.1/01-use-proper-tools-for-cross-build.patch b/recipes/python/python-2.7.1/01-use-proper-tools-for-cross-build.patch
new file mode 100644 (file)
index 0000000..8420eb3
--- /dev/null
@@ -0,0 +1,169 @@
+# We need to ensure our host tools get run during build, not the freshly
+# built cross-tools (this will not work), so we introduce HOSTPYTHON and HOSTPGEN.
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+
+Index: Python-2.7.1/setup.py
+===================================================================
+--- Python-2.7.1.orig/setup.py 2010-12-27 13:16:38.032631011 -0500
++++ Python-2.7.1/setup.py      2010-12-27 13:16:50.130290766 -0500
+@@ -313,6 +313,7 @@
+             self.failed.append(ext.name)
+             self.announce('*** WARNING: renaming "%s" since importing it'
+                           ' failed: %s' % (ext.name, why), level=3)
++            return
+             assert not self.inplace
+             basename, tail = os.path.splitext(ext_filename)
+             newname = basename + "_failed" + tail
+@@ -347,8 +348,8 @@
+     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')
++        # add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
++        # add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+         # Add paths specified in the environment variables LDFLAGS and
+         # CPPFLAGS for header and library files.
+@@ -452,6 +453,9 @@
+         # XXX Omitted modules: gl, pure, dl, SGI-specific modules
++        lib_dirs = [ os.getenv( "STAGING_LIBDIR" ) ]
++        inc_dirs = [ os.getenv( "STAGING_INCDIR" ) ]
++
+         #
+         # The following modules are all pretty straightforward, and compile
+         # on pretty much any POSIXish platform.
+Index: Python-2.7.1/Makefile.pre.in
+===================================================================
+--- Python-2.7.1.orig/Makefile.pre.in  2010-12-27 13:16:38.022628181 -0500
++++ Python-2.7.1/Makefile.pre.in       2010-12-27 13:17:31.870473931 -0500
+@@ -201,6 +201,7 @@
+ ##########################################################################
+ # Grammar
++GRAMMAR_STAMP=        $(srcdir)/grammar-stamp
+ GRAMMAR_H=    $(srcdir)/Include/graminit.h
+ GRAMMAR_C=    $(srcdir)/Python/graminit.c
+ GRAMMAR_INPUT=        $(srcdir)/Grammar/Grammar
+@@ -380,7 +381,7 @@
+       $(MAKE) all CFLAGS="$(CFLAGS) -fprofile-generate" LIBS="$(LIBS) -lgcov"
+ run_profile_task:
+-      ./$(BUILDPYTHON) $(PROFILE_TASK)
++      $(HOSTPYTHON) $(PROFILE_TASK)
+ build_all_use_profile:
+       $(MAKE) all CFLAGS="$(CFLAGS) -fprofile-use"
+@@ -398,14 +399,14 @@
+                       $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
+ platform: $(BUILDPYTHON)
+-      $(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
+ sharedmods: $(BUILDPYTHON)
+       @case $$MAKEFLAGS in \
+-      *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \
+-      *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \
++      *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' $(HOSTPYTHON) -E $(srcdir)/setup.py -q build;; \
++      *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' $(HOSTPYTHON) -E $(srcdir)/setup.py build;; \
+       esac
+ # Build static library
+@@ -535,10 +536,24 @@
+ Modules/python.o: $(srcdir)/Modules/python.c
+       $(MAINCC) -c $(PY_CFLAGS) -o $@ $(srcdir)/Modules/python.c
++# GNU "make" interprets rules with two dependents as two copies of the rule.
++#
++# In a parallel build this can lead to pgen being run twice, once for each of
++# GRAMMAR_H and GRAMMAR_C, leading to race conditions in which the compiler
++# reads a partially-overwritten copy of one of these files, leading to syntax
++# errors (or linker errors if the fragment happens to be syntactically valid C)
++#
++# See http://www.gnu.org/software/hello/manual/automake/Multiple-Outputs.html
++# for more information.
++#
++# Introduce ".grammar-stamp" as a contrived single output from PGEN to avoid
++# this:
++$(GRAMMAR_H) $(GRAMMAR_C): $(GRAMMAR_STAMP)
+-$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
++$(GRAMMAR_STAMP): $(PGEN) $(GRAMMAR_INPUT)
+               -@$(INSTALL) -d Include
+               -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
++              touch $(GRAMMAR_STAMP)
+ $(PGEN):      $(PGENOBJS)
+               $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
+@@ -921,25 +936,25 @@
+       done
+       $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
+       PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \
+-              ./$(BUILDPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
++              $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
+               -d $(LIBDEST) -f \
+               -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+               $(DESTDIR)$(LIBDEST)
+       PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+-              ./$(BUILDPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
++              $(HOSTPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
+               -d $(LIBDEST) -f \
+               -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+               $(DESTDIR)$(LIBDEST)
+       -PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \
+-              ./$(BUILDPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
++              $(HOSTPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
+               -d $(LIBDEST)/site-packages -f \
+               -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+       -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+-              ./$(BUILDPYTHON) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
++              $(HOSTPYTHON) -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()"
++              $(HOSTPYTHON) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"
+ # Create the PLATDIR source directory, if one wasn't distributed..
+ $(srcdir)/Lib/$(PLATDIR):
+@@ -1044,7 +1059,7 @@
+ # Install the dynamically loadable modules
+ # This goes into $(exec_prefix)
+ sharedinstall: sharedmods
+-      $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \
++      $(RUNSHARED) $(HOSTPYTHON) -E $(srcdir)/setup.py install \
+               --prefix=$(prefix) \
+               --install-scripts=$(BINDIR) \
+               --install-platlib=$(DESTSHARED) \
+@@ -1117,7 +1132,7 @@
+ # This installs a few of the useful scripts in Tools/scripts
+ scriptsinstall:
+       SRCDIR=$(srcdir) $(RUNSHARED) \
+-      ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/setup.py install \
++      $(HOSTPYTHON) $(srcdir)/Tools/scripts/setup.py install \
+       --prefix=$(prefix) \
+       --install-scripts=$(BINDIR) \
+       --root=/$(DESTDIR)
+@@ -1139,7 +1154,7 @@
+ # Run reindent on the library
+ reindent:
+-      ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/reindent.py -r $(srcdir)/Lib
++      $(HOSTPYTHON) $(srcdir)/Tools/scripts/reindent.py -r $(srcdir)/Lib
+ # Rerun configure with the same options as it was run last time,
+ # provided the config.status script exists
+@@ -1242,7 +1257,7 @@
+ # Perform some verification checks on any modified files.
+ patchcheck:
+-      $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/patchcheck.py
++      $(RUNSHARED) $(HOSTPYTHON) $(srcdir)/Tools/scripts/patchcheck.py
+ # Dependencies
diff --git a/recipes/python/python-2.7.1/02-remove-test-for-cross.patch b/recipes/python/python-2.7.1/02-remove-test-for-cross.patch
new file mode 100644 (file)
index 0000000..ab5858c
--- /dev/null
@@ -0,0 +1,108 @@
+# OpenEmbedded prepopulates the autotools site cache, so if this
+# would be using AC_TRY_CACHE, we could patch it in a more sane way
+# Alas, I don't have enough autotalent to do that.
+#
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+Index: Python-2.7.1/configure.in
+===================================================================
+--- Python-2.7.1.orig/configure.in     2010-12-26 10:02:03.222663593 -0500
++++ Python-2.7.1/configure.in  2010-12-26 10:02:19.891414484 -0500
+@@ -2822,49 +2822,6 @@
+   AC_CHECK_LIB(resolv, inet_aton)
+ )
+-# On Tru64, chflags seems to be present, but calling it will
+-# exit Python
+-AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
+-AC_RUN_IFELSE([AC_LANG_SOURCE([[[
+-#include <sys/stat.h>
+-#include <unistd.h>
+-int main(int argc, char*argv[])
+-{
+-  if(chflags(argv[0], 0) != 0)
+-    return 1;
+-  return 0;
+-}
+-]]])],
+-[ac_cv_have_chflags=yes],
+-[ac_cv_have_chflags=no],
+-[ac_cv_have_chflags=cross])
+-])
+-if test "$ac_cv_have_chflags" = cross ; then
+-  AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
+-fi
+-if test "$ac_cv_have_chflags" = yes ; then
+-  AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the `chflags' function.])
+-fi
+-
+-AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
+-AC_RUN_IFELSE([AC_LANG_SOURCE([[[
+-#include <sys/stat.h>
+-#include <unistd.h>
+-int main(int argc, char*argv[])
+-{
+-  if(lchflags(argv[0], 0) != 0)
+-    return 1;
+-  return 0;
+-}
+-]]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
+-])
+-if test "$ac_cv_have_lchflags" = cross ; then
+-  AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
+-fi
+-if test "$ac_cv_have_lchflags" = yes ; then
+-  AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the `lchflags' function.])
+-fi
+-
+ dnl Check if system zlib has *Copy() functions
+ dnl
+ dnl On MacOSX the linker will search for dylibs on the entire linker path
+@@ -4210,48 +4167,6 @@
+       LIBS="$LIBS -framework CoreFoundation"
+ fi
+-
+-AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
+-AC_RUN_IFELSE([AC_LANG_SOURCE([[
+-#include <stdio.h>
+-#include <stddef.h>
+-#include <string.h>
+-
+-#ifdef HAVE_SYS_TYPES_H
+-#include <sys/types.h>
+-#endif
+-
+-#ifdef HAVE_SSIZE_T
+-typedef ssize_t Py_ssize_t;
+-#elif SIZEOF_VOID_P == SIZEOF_LONG
+-typedef long Py_ssize_t;
+-#else
+-typedef int Py_ssize_t;
+-#endif
+-
+-int main()
+-{
+-    char buffer[256];
+-
+-    if(sprintf(buffer, "%zd", (size_t)123) < 0)
+-              return 1;
+-
+-    if (strcmp(buffer, "123"))
+-      return 1;
+-
+-    if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
+-              return 1;
+-
+-    if (strcmp(buffer, "-123"))
+-      return 1;
+-
+-    return 0;
+-}
+-]])],
+-[ac_cv_have_size_t_format=yes],
+-[ac_cv_have_size_t_format=no],
+-[ac_cv_have_size_t_format="cross -- assuming yes"
+-])])
+ if test "$ac_cv_have_size_t_format" != no ; then
+   AC_DEFINE(PY_FORMAT_SIZE_T, "z",
+   [Define to printf format modifier for Py_ssize_t])
diff --git a/recipes/python/python-2.7.1/03-fix-tkinter-detection.patch b/recipes/python/python-2.7.1/03-fix-tkinter-detection.patch
new file mode 100644 (file)
index 0000000..47274b3
--- /dev/null
@@ -0,0 +1,40 @@
+# We need to supply STAGING_INCDIR here, otherwise the Tk headers
+# will not be found.
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille.de>
+
+Index: Python-2.7.1/setup.py
+===================================================================
+--- Python-2.7.1.orig/setup.py 2010-12-26 10:01:38.992621096 -0500
++++ Python-2.7.1/setup.py      2010-12-26 10:02:31.032604626 -0500
+@@ -1712,7 +1712,7 @@
+                 dotversion = dotversion[:-1] + '.' + dotversion[-1]
+             tcl_include_sub = []
+             tk_include_sub = []
+-            for dir in inc_dirs:
++            for dir in [os.getenv("STAGING_INCDIR")]:
+                 tcl_include_sub += [dir + os.sep + "tcl" + dotversion]
+                 tk_include_sub += [dir + os.sep + "tk" + dotversion]
+             tk_include_sub += tcl_include_sub
+@@ -1731,22 +1731,6 @@
+             if dir not in include_dirs:
+                 include_dirs.append(dir)
+-        # Check for various platform-specific directories
+-        if platform == 'sunos5':
+-            include_dirs.append('/usr/openwin/include')
+-            added_lib_dirs.append('/usr/openwin/lib')
+-        elif os.path.exists('/usr/X11R6/include'):
+-            include_dirs.append('/usr/X11R6/include')
+-            added_lib_dirs.append('/usr/X11R6/lib64')
+-            added_lib_dirs.append('/usr/X11R6/lib')
+-        elif os.path.exists('/usr/X11R5/include'):
+-            include_dirs.append('/usr/X11R5/include')
+-            added_lib_dirs.append('/usr/X11R5/lib')
+-        else:
+-            # Assume default location for X11
+-            include_dirs.append('/usr/X11/include')
+-            added_lib_dirs.append('/usr/X11/lib')
+-
+         # If Cygwin, then verify that X is installed before proceeding
+         if platform == 'cygwin':
+             x11_inc = find_file('X11/Xlib.h', [], include_dirs)
diff --git a/recipes/python/python-2.7.1/04-default-is-optimized.patch b/recipes/python/python-2.7.1/04-default-is-optimized.patch
new file mode 100644 (file)
index 0000000..5131e0b
--- /dev/null
@@ -0,0 +1,18 @@
+# When compiling for an embedded system, we need every bit of
+# performance we can get. default to optimized with the option
+# of opt-out.
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+
+Index: Python-2.6.1/Python/compile.c
+===================================================================
+--- Python-2.6.1.orig/Python/compile.c
++++ Python-2.6.1/Python/compile.c
+@@ -32,7 +32,7 @@
+ #include "symtable.h"
+ #include "opcode.h"
+-int Py_OptimizeFlag = 0;
++int Py_OptimizeFlag = 1;
+ #define DEFAULT_BLOCK_SIZE 16
+ #define DEFAULT_BLOCKS 8
diff --git a/recipes/python/python-2.7.1/05-enable-ctypes-cross-build.patch b/recipes/python/python-2.7.1/05-enable-ctypes-cross-build.patch
new file mode 100644 (file)
index 0000000..c33dc9f
--- /dev/null
@@ -0,0 +1,28 @@
+# CTypes need to know the actual host we are building on.
+# Signed-Off: Michael Dietrich <mdt@emdete.de>
+
+Index: Python-2.7.1/setup.py
+===================================================================
+--- Python-2.7.1.orig/setup.py 2010-12-26 10:02:31.032604626 -0500
++++ Python-2.7.1/setup.py      2010-12-26 10:02:43.182604395 -0500
+@@ -1825,16 +1825,16 @@
+                                          ffi_configfile):
+                 from distutils.dir_util import mkpath
+                 mkpath(ffi_builddir)
+-                config_args = []
++                config_args = ['--host=%s' % os.environ["HOST_SYS"], ]
+                 # Pass empty CFLAGS because we'll just append the resulting
+                 # CFLAGS to Python's; -g or -O2 is to be avoided.
+-                cmd = "cd %s && env CFLAGS='' '%s/configure' %s" \
+-                      % (ffi_builddir, ffi_srcdir, " ".join(config_args))
++                cmd = "(cd %s && autoconf -W cross) && (cd %s && env CFLAGS='' '%s/configure' %s)" \
++                      % (ffi_srcdir, ffi_builddir, ffi_srcdir, " ".join(config_args))
+                 res = os.system(cmd)
+                 if res or not os.path.exists(ffi_configfile):
+-                    print "Failed to configure _ctypes module"
++                    print "Failed to configure _ctypes module (res=%d) or missing conffile=%s" % ( res, ffi_configfile )
+                     return False
+             fficonfig = {}
diff --git a/recipes/python/python-2.7.1/06-ctypes-libffi-fix-configure.patch b/recipes/python/python-2.7.1/06-ctypes-libffi-fix-configure.patch
new file mode 100644 (file)
index 0000000..b5e59e6
--- /dev/null
@@ -0,0 +1,44 @@
+This fixes configure issues with recent autoconf, e.g:
+  autoreconf: Entering directory `Modules/_ctypes/libffi'
+  autoreconf: configure.ac: not using Gettext
+  autoreconf: running: aclocal --force
+  configure.ac:26: error: m4_copy: won't overwrite defined macro: _AC_ARG_VAR_PRECIOUS
+  configure.ac:26: the top level
+
+The problem is still present in python-2.6.5 but fixed in python-svn.
+
+Index: Python-2.7.1/Modules/_ctypes/libffi/Makefile.am
+===================================================================
+--- Python-2.7.1.orig/Modules/_ctypes/libffi/Makefile.am       2010-03-19 14:59:20.000000000 -0400
++++ Python-2.7.1/Modules/_ctypes/libffi/Makefile.am    2010-12-26 10:05:56.112625174 -0500
+@@ -2,7 +2,7 @@
+ AUTOMAKE_OPTIONS = foreign subdir-objects
+-SUBDIRS = include testsuite man
++SUBDIRS = include
+ EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \
+       src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \
+@@ -34,8 +34,6 @@
+       libtool-version ChangeLog.libffi m4/libtool.m4 \
+       m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4
+-info_TEXINFOS = doc/libffi.texi
+-
+ ## ################################################################
+ ##
+Index: Python-2.7.1/Modules/_ctypes/libffi/configure.ac
+===================================================================
+--- Python-2.7.1.orig/Modules/_ctypes/libffi/configure.ac      2010-12-26 10:06:09.752605599 -0500
++++ Python-2.7.1/Modules/_ctypes/libffi/configure.ac   2010-12-26 10:07:18.260769612 -0500
+@@ -409,7 +409,7 @@
+ AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h)
+-AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc)
++AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc Makefile)
+ AC_CONFIG_LINKS(include/ffi_common.h:include/ffi_common.h)
diff --git a/recipes/python/python-2.7.1/10-distutils-fix-swig-parameter.patch b/recipes/python/python-2.7.1/10-distutils-fix-swig-parameter.patch
new file mode 100644 (file)
index 0000000..0e86954
--- /dev/null
@@ -0,0 +1,16 @@
+# Some versions of SWIG do not use the extension parameter.
+# Make it optional.
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+Index: Python-2.7.1/Lib/distutils/command/build_ext.py
+===================================================================
+--- Python-2.7.1.orig/Lib/distutils/command/build_ext.py       2010-09-10 16:03:17.000000000 -0400
++++ Python-2.7.1/Lib/distutils/command/build_ext.py    2010-12-26 10:07:28.492632349 -0500
+@@ -531,7 +531,7 @@
+             target_lang=language)
+-    def swig_sources (self, sources, extension):
++    def swig_sources (self, sources, extension=None):
+         """Walk the list of source files in 'sources', looking for SWIG
+         interface (.i) files.  Run SWIG on all that are found, and
diff --git a/recipes/python/python-2.7.1/11-distutils-never-modify-shebang-line.patch b/recipes/python/python-2.7.1/11-distutils-never-modify-shebang-line.patch
new file mode 100644 (file)
index 0000000..20f3605
--- /dev/null
@@ -0,0 +1,18 @@
+# Don't modify the she-bang line for a cross-build.
+# Otherwise it points to our hostpython (which we do not want)
+#
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+
+Index: Python-2.7.1/Lib/distutils/command/build_scripts.py
+===================================================================
+--- Python-2.7.1.orig/Lib/distutils/command/build_scripts.py   2010-01-23 04:23:15.000000000 -0500
++++ Python-2.7.1/Lib/distutils/command/build_scripts.py        2010-12-26 10:07:35.762597668 -0500
+@@ -85,7 +85,7 @@
+                     continue
+                 match = first_line_re.match(first_line)
+-                if match:
++                if False: #match:
+                     adjust = 1
+                     post_interp = match.group(1) or ''
diff --git a/recipes/python/python-2.7.1/12-distutils-prefix-is-inside-staging-area.patch b/recipes/python/python-2.7.1/12-distutils-prefix-is-inside-staging-area.patch
new file mode 100644 (file)
index 0000000..afe4201
--- /dev/null
@@ -0,0 +1,60 @@
+# The proper prefix is inside our staging area.
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+
+Index: Python-2.7.1/Lib/distutils/sysconfig.py
+===================================================================
+--- Python-2.7.1.orig/Lib/distutils/sysconfig.py       2010-11-06 10:16:30.000000000 -0400
++++ Python-2.7.1/Lib/distutils/sysconfig.py    2010-12-26 10:08:40.760410838 -0500
+@@ -19,8 +19,8 @@
+ from distutils.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)
++PREFIX = os.path.normpath(sys.prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
++EXEC_PREFIX = os.path.normpath(sys.exec_prefix).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
+ # 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,
+@@ -70,7 +70,10 @@
+     sys.exec_prefix -- i.e., ignore 'plat_specific'.
+     """
+     if prefix is None:
+-        prefix = plat_specific and EXEC_PREFIX or PREFIX
++        if plat_specific:
++            prefix = plat_specific and os.environ['STAGING_INCDIR'].rstrip('include')
++        else:
++            prefix = plat_specific and EXEC_PREFIX or PREFIX
+     if os.name == "posix":
+         if python_build:
+@@ -111,7 +114,10 @@
+     sys.exec_prefix -- i.e., ignore 'plat_specific'.
+     """
+     if prefix is None:
+-        prefix = plat_specific and EXEC_PREFIX or PREFIX
++        if plat_specific:
++            prefix = plat_specific and os.environ['STAGING_LIBDIR'].rstrip('lib')
++        else:
++            prefix = plat_specific and EXEC_PREFIX or PREFIX
+     if os.name == "posix":
+         libpython = os.path.join(prefix,
+@@ -199,7 +205,7 @@
+     else:
+         # The name of the config.h file changed in 2.2
+         config_h = 'pyconfig.h'
+-    return os.path.join(inc_dir, config_h)
++    return os.path.join(inc_dir, config_h).replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
+ def get_makefile_filename():
+@@ -207,7 +213,7 @@
+     if python_build:
+         return os.path.join(os.path.dirname(sys.executable), "Makefile")
+     lib_dir = get_python_lib(plat_specific=1, standard_lib=1)
+-    return os.path.join(lib_dir, "config", "Makefile")
++    return os.path.join(lib_dir, "config", "Makefile").replace( os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
+ def parse_config_h(fp, g=None):
diff --git a/recipes/python/python-2.7.1/99-ignore-optimization-flag.patch b/recipes/python/python-2.7.1/99-ignore-optimization-flag.patch
new file mode 100644 (file)
index 0000000..f068ece
--- /dev/null
@@ -0,0 +1,19 @@
+# Reinstate the empty -O option to fix weird mixing of native and target
+# binaries and libraries with LD_LIBRARY_PATH when host==target
+#
+# Signed-off-by: Denys Dmytriyenko <denis@denix.org>
+
+Index: Python-2.7.1/Modules/main.c
+===================================================================
+--- Python-2.7.1.orig/Modules/main.c   2010-06-13 02:50:39.000000000 -0400
++++ Python-2.7.1/Modules/main.c        2010-12-26 10:09:34.300455892 -0500
+@@ -329,8 +329,7 @@
+         /* case 'J': reserved for Jython */
+-        case 'O':
+-            Py_OptimizeFlag++;
++        case 'O': /* ignore it */
+             break;
+         case 'B':
diff --git a/recipes/python/python-2.7.1/debug.patch b/recipes/python/python-2.7.1/debug.patch
new file mode 100644 (file)
index 0000000..c7f5081
--- /dev/null
@@ -0,0 +1,27 @@
+Index: Python-2.7.1/Lib/distutils/unixccompiler.py
+===================================================================
+--- Python-2.7.1.orig/Lib/distutils/unixccompiler.py   2010-06-27 08:36:16.000000000 -0400
++++ Python-2.7.1/Lib/distutils/unixccompiler.py        2010-12-26 10:09:44.282632589 -0500
+@@ -318,6 +318,8 @@
++        print "Looking in %s for %s" % (lib, dirs)
++
+         for dir in dirs:
+             shared = os.path.join(dir, shared_f)
+             dylib = os.path.join(dir, dylib_f)
+@@ -336,10 +338,13 @@
+             # assuming that *all* Unix C compilers do.  And of course I'm
+             # ignoring even GCC's "-static" option.  So sue me.
+             if os.path.exists(dylib):
++                print "Found %s" % (dylib)
+                 return dylib
+             elif os.path.exists(shared):
++                print "Found %s" % (shared)
+                 return shared
+             elif os.path.exists(static):
++                print "Found %s" % (static)
+                 return static
+         # Oops, didn't find it in *any* of 'dirs'
diff --git a/recipes/python/python-2.7.1/nohostlibs.patch b/recipes/python/python-2.7.1/nohostlibs.patch
new file mode 100644 (file)
index 0000000..6f33a49
--- /dev/null
@@ -0,0 +1,29 @@
+Index: Python-2.7.1/setup.py
+===================================================================
+--- Python-2.7.1.orig/setup.py 2010-12-26 10:02:43.000000000 -0500
++++ Python-2.7.1/setup.py      2010-12-26 10:12:30.920427195 -0500
+@@ -404,11 +404,8 @@
+         # 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.
+-        lib_dirs = self.compiler.library_dirs + [
+-            '/lib64', '/usr/lib64',
+-            '/lib', '/usr/lib',
+-            ]
+-        inc_dirs = self.compiler.include_dirs + ['/usr/include']
++        lib_dirs = self.compiler.library_dirs
++        inc_dirs = self.compiler.include_dirs
+         exts = []
+         missing = []
+@@ -657,9 +654,7 @@
+                 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'],
diff --git a/recipes/python/python-2.7.1/sitecustomize.py b/recipes/python/python-2.7.1/sitecustomize.py
new file mode 100644 (file)
index 0000000..2739018
--- /dev/null
@@ -0,0 +1,45 @@
+# OpenEmbedded sitecustomize.py (C) 2002-2008 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
+# GPLv2 or later
+# Version: 20081123
+# Features:
+# * set proper default encoding
+# * enable readline completion in the interactive interpreter
+# * load command line history on startup
+# * save command line history on exit 
+
+import os
+
+def __exithandler():
+    try:
+        readline.write_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) )
+    except IOError:
+        pass
+
+def __registerExitHandler():
+    import atexit
+    atexit.register( __exithandler )
+
+def __enableReadlineSupport():
+    readline.set_history_length( 1000 )
+    readline.parse_and_bind( "tab: complete" )
+    try:
+        readline.read_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) )
+    except IOError:
+        pass
+
+def __enableDefaultEncoding():
+    import sys
+    try:
+        sys.setdefaultencoding( "utf8" )
+    except LookupError:
+        pass
+
+import sys
+try:
+    import rlcompleter, readline
+except ImportError:
+    pass
+else:
+    __enableDefaultEncoding()
+    __registerExitHandler()
+    __enableReadlineSupport()
diff --git a/recipes/python/python-argparse_1.2.1.bb b/recipes/python/python-argparse_1.2.1.bb
new file mode 100644 (file)
index 0000000..6f2bcb4
--- /dev/null
@@ -0,0 +1,17 @@
+DESCRIPTION = "Python command-line parsing library"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=09d08bb5b7047e2688ea3faad6408aa8"
+SRCNAME = argparse
+
+SRC_URI = "http://argparse.googlecode.com/files/${SRCNAME}-${PV}.tar.gz"
+SRC_URI[md5sum] = "2fbef8cb61e506c706957ab6e135840c"
+SRC_URI[sha256sum] = "ddaf4b0a618335a32b6664d4ae038a1de8fbada3b25033f9021510ed2b3941a4"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+BBCLASSEXTEND = "native"
+NATIVE_INSTALL_WORKS = "1"
diff --git a/recipes/python/python-caldav_0.1.6.bb b/recipes/python/python-caldav_0.1.6.bb
new file mode 100644 (file)
index 0000000..63c86d9
--- /dev/null
@@ -0,0 +1,17 @@
+DESCRIPTION = "This project is a CalDAV (RFC4791) client library for Python."
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+HOMEPAGE = "http://bitbucket.org/cyrilrbt/caldav"
+SRCNAME = "caldav"
+PR = "r0"
+DEPENDS = "python python-lxml python-vobject"
+RDEPENDS_${PN} = "python-lxml python-vobject"
+
+SRC_URI  = "http://pypi.python.org/packages/source/c/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+SRC_URI[md5sum] = "e5eace7a3b6b7f511a1929a539e6a15d"
+SRC_URI[sha256sum] = "4a3b1855000feb8023ab05f8c9e0cfa1648a9abab9ca65ad3e933c22bab61310"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/recipes/python/python-cheetah_2.4.4.bb b/recipes/python/python-cheetah_2.4.4.bb
new file mode 100644 (file)
index 0000000..e3ecb1c
--- /dev/null
@@ -0,0 +1,19 @@
+DESCRIPTION = "Python template engine and code generation tool"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT"
+SRCNAME = "Cheetah"
+PR = "r1"
+
+SRC_URI = "http://pypi.python.org/packages/source/C/Cheetah/Cheetah-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} = "python-pickle python-pprint"
+
+NATIVE_INSTALL_WORKS = "1"
+BBCLASSEXTEND = "native"
+
+SRC_URI[md5sum] = "853917116e731afbc8c8a43c37e6ddba"
+SRC_URI[sha256sum] = "be308229f0c1e5e5af4f27d7ee06d90bb19e6af3059794e5fd536a6f29a9b550"
diff --git a/recipes/python/python-cython_0.13.bb b/recipes/python/python-cython_0.13.bb
new file mode 100644 (file)
index 0000000..966e265
--- /dev/null
@@ -0,0 +1,18 @@
+DESCRIPTION = "Cython is a language specially designed for writing Python extension modules. \
+It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \
+and the messy, low-level world of C."
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "Apache-2.0"
+SRCNAME = "Cython"
+BBCLASSEXTEND = "native"
+NATIVE_INSTALL_WORKS = "1"
+DEPENDS = "python"
+
+SRC_URI = "http://www.cython.org/release/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+SRC_URI[md5sum] = "ed2ec5e0df60a6b8e500bedf93bb1feb"
+SRC_URI[sha256sum] = "a30d5e26c82ec65d65703c7cf312161a21b30339addc1a42d3b2965dea254ca6"
+
+inherit distutils
diff --git a/recipes/python/python-dbus_0.83.2.bb b/recipes/python/python-dbus_0.83.2.bb
new file mode 100644 (file)
index 0000000..7c6eebb
--- /dev/null
@@ -0,0 +1,33 @@
+DESCRIPTION = "Python bindings for DBus, a socket-based message bus system for interprocess communication"
+SECTION = "devel/python"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+LICENSE = "MIT"
+DEPENDS = "expat dbus dbus-glib virtual/libintl python-pyrex-native python-epydoc-native"
+PR = "ml0"
+
+SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz"
+S = "${WORKDIR}/dbus-python-${PV}"
+
+inherit distutils-base autotools pkgconfig
+
+export BUILD_SYS
+export HOST_SYS
+
+RDEPENDS_${PN} = "\
+  python-io \
+  python-lang \
+  python-logging \
+  python-threading \
+  python-xml \
+"
+
+FILES_${PN}-dev += "\
+  ${libdir}/pkgconfig \
+"
+
+do_configure_append() {
+       find ${S} -name Makefile | xargs -n 1 sed -i 's,prefix}lib,prefix}/lib,g'
+}
+
+SRC_URI[md5sum] = "4ebcaa905bdcb4132b915196b0a3691b"
+SRC_URI[sha256sum] = "883729c98f40790021e3be0f7028ae863ee1c4a7b922a5578c1342592adfff64"
diff --git a/recipes/python/python-django_1.2.1.bb b/recipes/python/python-django_1.2.1.bb
new file mode 100644 (file)
index 0000000..0dff6a8
--- /dev/null
@@ -0,0 +1,34 @@
+DESCRIPTION = "Python Web framework"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "BSD"
+SRCNAME = "Django"
+RELEASE = "1.2"
+PR = "r0"
+
+SRC_URI = "http://media.djangoproject.com/releases/${RELEASE}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+DISTUTILS_INSTALL_ARGS = "--root=${D} --prefix=${prefix}"
+
+# TODO: huge package, increase granularity
+
+RDEPENDS_${PN} = "\
+  python-email \
+  python-html \
+  python-netserver \
+  python-numbers \
+  python-pickle \
+  python-pprint \
+  python-shell \
+  python-sqlite3 \
+  python-textutils \
+  python-threading \
+  python-unixadmin \
+  python-xml \
+"
+
+SRC_URI[md5sum] = "2351efb20f6b7b5d9ce80fa4cb1bd9ca"
+SRC_URI[sha256sum] = "eaa29f2344568cc871c4517a348de0d5c39fbd055b4c998cd4a80601bb51e7b9"
diff --git a/recipes/python/python-lxml_2.2.6.bb b/recipes/python/python-lxml_2.2.6.bb
new file mode 100644 (file)
index 0000000..93280f1
--- /dev/null
@@ -0,0 +1,26 @@
+DESCRIPTION = "Powerful and Pythonic XML processing library combining \
+libxml2/libxslt with the ElementTree API."
+HOMEPAGE = "http://codespeak.net/lxml"
+LICENSE = "BSD"
+SRCNAME = "lxml"
+PR = "r0"
+DEPENDS = "libxml2 libxslt"
+RDEPENDS_${PN} += "libxml2 libxslt python-compression"
+
+SRC_URI = "http://pypi.python.org/packages/source/l/${SRCNAME}/${SRCNAME}-${PV}.tar.gz;name=lxml"
+SRC_URI[lxml.md5sum] = "b1f700fb22d7ee9b977ee3eceb65b20c"
+SRC_URI[lxml.sha256sum] = "7fd36e4a56360cd5d7319e357b04a90e2c6b836ea220c88f9451c300ae33cc5e"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+DISTUTILS_BUILD_ARGS += " \
+                     --with-xslt-config='${STAGING_BINDIR_NATIVE}/pkg-config libxslt' \
+                     --with-xml2-config='${STAGING_BINDIR_NATIVE}/xml2-config' \
+"
+
+DISTUTILS_INSTALL_ARGS += " \
+                     --with-xslt-config='${STAGING_BINDIR_NATIVE}/pkg-config libxslt' \
+                     --with-xml2-config='${STAGING_BINDIR_NATIVE}/xml2-config' \
+"
diff --git a/recipes/python/python-lxml_2.2.8.bb b/recipes/python/python-lxml_2.2.8.bb
new file mode 100644 (file)
index 0000000..9eb927c
--- /dev/null
@@ -0,0 +1,26 @@
+DESCRIPTION = "Powerful and Pythonic XML processing library combining \
+libxml2/libxslt with the ElementTree API."
+HOMEPAGE = "http://codespeak.net/lxml"
+LICENSE = "BSD"
+SRCNAME = "lxml"
+
+DEPENDS = "libxml2 libxslt"
+RDEPENDS_${PN} += "libxml2 libxslt python-compression"
+
+SRC_URI = "http://pypi.python.org/packages/source/l/${SRCNAME}/${SRCNAME}-${PV}.tar.gz;name=lxml"
+SRC_URI[lxml.md5sum] = "d6c612d63a84d79440912a1b29d3b981"
+SRC_URI[lxml.sha256sum] = "89b73925b5e3295dcf4675cb948007a20eb029fe35c9a162ae19ec11f1abafe5"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+DISTUTILS_BUILD_ARGS += " \
+                     --with-xslt-config='${STAGING_BINDIR_NATIVE}/pkg-config libxslt' \
+                     --with-xml2-config='${STAGING_BINDIR_NATIVE}/xml2-config' \
+"
+
+DISTUTILS_INSTALL_ARGS += " \
+                     --with-xslt-config='${STAGING_BINDIR_NATIVE}/pkg-config libxslt' \
+                     --with-xml2-config='${STAGING_BINDIR_NATIVE}/xml2-config' \
+"
diff --git a/recipes/python/python-m2crypto_0.20.2.bb b/recipes/python/python-m2crypto_0.20.2.bb
new file mode 100644 (file)
index 0000000..0a9e66e
--- /dev/null
@@ -0,0 +1,27 @@
+DESCRIPTION = "A Python crypto and SSL toolkit"
+SECTION = "devel/python"
+HOMEPAGE = "http://chandlerproject.org/bin/view/Projects/MeTooCrypto"
+PRIORITY = "optional"
+DEPENDS = "openssl swig-native"
+LICENSE = "BSD"
+SRCNAME = "M2Crypto"
+PR = "ml0"
+
+SRC_URI = "\
+  http://pypi.python.org/packages/source/M/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
+  file://install.patch \
+  file://m2crypto-0.20.2-openssl-1.0.0.patch;striplevel=0 \
+"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+export STAGING_DIR
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+SRC_URI[md5sum] = "6c24410410d6eb1920ea43f77a93613a"
+SRC_URI[sha256sum] = "fc66b96ad2a14de1a502358286d3490677eda30385645fca995fffff22b73e6e"
+
+NATIVE_INSTALL_WORKS = "1"
+BBCLASSEXTEND = "native"
diff --git a/recipes/python/python-native_2.6.6.bb b/recipes/python/python-native_2.6.6.bb
new file mode 100644 (file)
index 0000000..2eef01d
--- /dev/null
@@ -0,0 +1,44 @@
+require python.inc
+DEPENDS = "openssl-native bzip2-full-native zlib-native readline-native sqlite3-native"
+PR = "${INC_PR}.0"
+
+FILESPATHPKG .= ":python-${PV}:python"
+SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \
+           file://00-fix-parallel-make.patch \
+           file://04-default-is-optimized.patch \
+           file://05-enable-ctypes-cross-build.patch \
+           file://06-ctypes-libffi-fix-configure.patch \
+           file://10-distutils-fix-swig-parameter.patch \
+           file://11-distutils-never-modify-shebang-line.patch \
+           file://12-distutils-prefix-is-inside-staging-area.patch \
+           file://debug.patch \
+           file://nohostlibs.patch"
+SRC_URI[md5sum] = "cf4e6881bb84a7ce6089e4a307f71f14"
+SRC_URI[sha256sum] = "134c5e0736bae2e5570d0b915693374f11108ded63c35a23a35d282737d2ce83"
+
+S = "${WORKDIR}/Python-${PV}"
+
+inherit native
+
+EXTRA_OECONF_append = '\
+  --enable-unicode=ucs4 \
+'
+
+EXTRA_OEMAKE = '\
+  BUILD_SYS="" \
+  HOST_SYS="" \
+  LIBC="" \
+  STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE} \
+  STAGING_INCDIR=${STAGING_INCDIR_NATIVE} \
+'
+
+do_install() {
+       oe_runmake 'DESTDIR=${D}' install
+       install -d ${D}${bindir}/
+       install -m 0755 Parser/pgen ${D}${bindir}/
+
+       # Make sure we use /usr/bin/env python
+       for PYTHSCRIPT in `grep -rIl ${bindir}/python ${D}${bindir}`; do
+               sed -i -e '1s|^#!.*|#!/usr/bin/env python|' $PYTHSCRIPT
+       done
+}
diff --git a/recipes/python/python-native_2.7.1.bb b/recipes/python/python-native_2.7.1.bb
new file mode 100644 (file)
index 0000000..c2a1cec
--- /dev/null
@@ -0,0 +1,43 @@
+require python2.7.inc
+DEPENDS = "openssl-native bzip2-full-native zlib-native readline-native sqlite3-native"
+PR = "${INC_PR}.2"
+
+FILESPATHPKG .= ":python-${PV}:python"
+SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \
+           file://04-default-is-optimized.patch \
+           file://05-enable-ctypes-cross-build.patch \
+           file://06-ctypes-libffi-fix-configure.patch \
+           file://10-distutils-fix-swig-parameter.patch \
+           file://11-distutils-never-modify-shebang-line.patch \
+           file://12-distutils-prefix-is-inside-staging-area.patch \
+           file://debug.patch \
+           file://nohostlibs.patch"
+SRC_URI[md5sum] = "aa27bc25725137ba155910bd8e5ddc4f"
+SRC_URI[sha256sum] = "80e387bcf57eae8ce26726753584fd63e060ec11682d1145af921e85fd612292"
+
+S = "${WORKDIR}/Python-${PV}"
+
+inherit native
+
+EXTRA_OECONF_append = '\
+  --enable-unicode=ucs4 \
+'
+
+EXTRA_OEMAKE = '\
+  BUILD_SYS="" \
+  HOST_SYS="" \
+  LIBC="" \
+  STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE} \
+  STAGING_INCDIR=${STAGING_INCDIR_NATIVE} \
+'
+
+do_install() {
+       oe_runmake 'DESTDIR=${D}' install
+       install -d ${D}${bindir}/
+
+       # Make sure we use /usr/bin/env python
+       for PYTHSCRIPT in `grep -rIl ${bindir}/python ${D}${bindir}`; do
+               sed -i -e '1s|^#!.*|#!/usr/bin/env python|' $PYTHSCRIPT
+       done
+       install -m 0755 Parser/pgen ${D}${bindir}/
+}
diff --git a/recipes/python/python-numeric_24.2.bb b/recipes/python/python-numeric_24.2.bb
new file mode 100644 (file)
index 0000000..e8db972
--- /dev/null
@@ -0,0 +1,13 @@
+DESCRIPTION = "A sophisticated Numeric Processing Package for Python"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "PSF"
+PR = "ml1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/numpy/Numeric-${PV}.tar.gz"
+S = "${WORKDIR}/Numeric-${PV}"
+
+inherit distutils
+
+SRC_URI[md5sum] = "2ae672656e06716a149acb048cca3093"
+SRC_URI[sha256sum] = "5f72e729eb6ff57442f2a38bfc9931738b59e5077928e2e70d22b4610ff15258"
diff --git a/recipes/python/python-numpy_1.4.1.bb b/recipes/python/python-numpy_1.4.1.bb
new file mode 100644 (file)
index 0000000..f4941cf
--- /dev/null
@@ -0,0 +1,26 @@
+DESCRIPTION = "A sophisticated Numeric Processing Package for Python"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "PSF"
+PR = "ml0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/numpy/numpy-${PV}.tar.gz \
+          file://config.h \
+          file://numpyconfig.h \
+         "
+
+S = "${WORKDIR}/numpy-${PV}"
+
+inherit distutils
+
+# Make the build fail and replace *config.h with proper one
+# This is a ugly, ugly hack - Koen
+do_compile_prepend() {
+         BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+         ${STAGING_BINDIR_NATIVE}/python setup.py build ${DISTUTILS_BUILD_ARGS} || \
+         true
+        cp ${WORKDIR}/*config.h ${S}/build/$(ls ${S}/build | grep src)/numpy/core/include/numpy/
+}
+
+SRC_URI[md5sum] = "5c7b5349dc3161763f7f366ceb96516b"
+SRC_URI[sha256sum] = "2e7bb84573e5123e07f3c919fd433bc09b78d606252b6b719e385c2a981d8e06"
diff --git a/recipes/python/python-oauth_1.0.1.bb b/recipes/python/python-oauth_1.0.1.bb
new file mode 100644 (file)
index 0000000..8de36af
--- /dev/null
@@ -0,0 +1,14 @@
+DESCRIPTION = "Library for OAuth version 1.0a."
+HOMEPAGE = "http://code.google.com/p/oauth/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+SOURCE = "oauth"
+PR = "r0"
+
+SRC_URI = "http://pypi.python.org/packages/source/o/${SOURCE}/${SOURCE}-${PV}.tar.gz"
+SRC_URI[md5sum] = "30ed3cc8c11d7841a89feab437aabf81"
+SRC_URI[sha256sum] = "e769819ff0b0c043d020246ce1defcaadd65b9c21d244468a45a7f06cb88af5d"
+
+S = "${WORKDIR}/${SOURCE}-${PV}"
+
+inherit setuptools
diff --git a/recipes/python/python-pybluez_0.18.bb b/recipes/python/python-pybluez_0.18.bb
new file mode 100644 (file)
index 0000000..f30d308
--- /dev/null
@@ -0,0 +1,13 @@
+DESCRIPTION = "Python bindings for the Linux Bluetooth stack"
+SECTION = "devel/python"
+DEPENDS = "bluez-libs"
+LICENSE = "GPL"
+PR = "ml0"
+
+SRC_URI = "http://pybluez.googlecode.com/files/PyBluez-${PV}.tar.gz"
+S = "${WORKDIR}/PyBluez-${PV}"
+
+inherit distutils
+
+SRC_URI[md5sum] = "be8c8ce615c3189fda1aaf3d568314b2"
+SRC_URI[sha256sum] = "66b2184e0eaad5e1ecc89eb4c81cba0696b3028b85d1301186b45b0bbd761065"
diff --git a/recipes/python/python-pygtksourceview_2.10.1.bb b/recipes/python/python-pygtksourceview_2.10.1.bb
new file mode 100644 (file)
index 0000000..0730cf4
--- /dev/null
@@ -0,0 +1,26 @@
+DESCRIPTION = "Python gtksourceview Bindings"
+SECTION = "devel/python"
+HOMEPAGE = "http://projects.gnome.org/gtksourceview/pygtksourceview.html"
+PRIORITY = "optional"
+DEPENDS = "gtksourceview2 python-pygtk"
+SRCNAME = "pygtksourceview"
+LICENSE = "LGPL"
+PR = "r0"
+
+MAJ_VER = "${@bb.data.getVar('PV',d,1).split('.')[0]}.${@bb.data.getVar('PV',d,1).split('.')[1]}"
+SRC_URI = "ftp://ftp.gnome.org/pub/gnome/sources/pygtksourceview/${MAJ_VER}/${SRCNAME}-${PV}.tar.bz2"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit autotools pkgconfig distutils-base
+
+do_configure_prepend() {
+       sed -i \
+               -e s:'`$PKG_CONFIG --variable=codegendir pygtk-2.0`':\"${STAGING_DATADIR}/pygobject/2.0/codegen\":g \
+               ${S}/configure.ac
+}
+
+FILES_${PN} += "${datadir}/pygtk/2.0/defs/gtksourceview2.defs"
+
+SRC_URI[md5sum] = "2654354d61422fb79d8375fc3a3b5393"
+SRC_URI[sha256sum] = "b4b47c5aeb67a26141cb03663091dfdf5c15c8a8aae4d69c46a6a943ca4c5974"
diff --git a/recipes/python/python-pyopengl-accelerate_3.0.1.bb b/recipes/python/python-pyopengl-accelerate_3.0.1.bb
new file mode 100644 (file)
index 0000000..ea4bbc2
--- /dev/null
@@ -0,0 +1,16 @@
+DESCRIPTION = "Acceleration code for PyOpenGL"
+SECTION = "devel/python"
+PRIORITY = "optional"
+DEPENDS = "python-pyopengl"
+LICENSE = "BSD"
+SRCNAME = "PyOpenGL-accelerate"
+
+SRC_URI = "\
+  http://pypi.python.org/packages/source/P/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
+"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+SRC_URI[md5sum] = "4014cd203dd5f52109a76edc4c14a480"
+SRC_URI[sha256sum] = "51bc771fd2fc9fc0acec5caf4dc3bd0739127eec4addc04baca545f8c3fe17cd"
diff --git a/recipes/python/python-pyopengl_3.0.1.bb b/recipes/python/python-pyopengl_3.0.1.bb
new file mode 100644 (file)
index 0000000..08cc3c8
--- /dev/null
@@ -0,0 +1,16 @@
+DESCRIPTION = "Standard OpenGL bindings for Python"
+SECTION = "devel/python"
+PRIORITY = "optional"
+DEPENDS = "python-numeric"
+LICENSE = "BSD"
+SRCNAME = "PyOpenGL"
+
+SRC_URI = "\
+  http://pypi.python.org/packages/source/P/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
+"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+SRC_URI[md5sum] = "cdf03284f24279b8d9914bb680a37b5e"
+SRC_URI[sha256sum] = "79065ba0fec47e9e9514f3be543866f07d7b08071336d566fbf3ab138c442635"
diff --git a/recipes/python/python-pyqt-4.8.4/assistantclient-fix.patch b/recipes/python/python-pyqt-4.8.4/assistantclient-fix.patch
new file mode 100644 (file)
index 0000000..15f83d2
--- /dev/null
@@ -0,0 +1,13 @@
+Index: PyQt-x11-gpl-4.8.3/sip/QtAssistant/qassistantclient.sip
+===================================================================
+--- PyQt-x11-gpl-4.8.3.orig/sip/QtAssistant/qassistantclient.sip
++++ PyQt-x11-gpl-4.8.3/sip/QtAssistant/qassistantclient.sip
+@@ -33,7 +33,7 @@
+ class QAssistantClient : QObject
+ {
+ %TypeHeaderCode
+-#include <qassistantclient.h>
++#include <QtAssistant/qassistantclient.h>
+ %End
+ %ConvertToSubClassCode
diff --git a/recipes/python/python-pyqt-4.8.4/debian_configure_changes.diff b/recipes/python/python-pyqt-4.8.4/debian_configure_changes.diff
new file mode 100644 (file)
index 0000000..8f065a2
--- /dev/null
@@ -0,0 +1,52 @@
+Index: python-qt4-4.8.3/configure.py
+===================================================================
+--- python-qt4-4.8.3.org/configure.py  2011-01-25 22:28:37.000000000 +0100
++++ python-qt4-4.8.3/configure.py      2011-01-26 00:04:40.174212637 +0100
+@@ -843,31 +843,6 @@
+             makefile.generate()
+             tool.append("dbus")
+-        # Only include ElementTree for older versions of Python.
+-        if sipcfg.py_version < 0x020500:
+-            sipconfig.inform("Creating elementtree Makefile...")
+-
+-            makefile = sipconfig.PythonModuleMakefile(
+-                configuration=sipcfg,
+-                dstdir=os.path.join(pyqt_modroot, "elementtree"),
+-                dir="elementtree"
+-            )
+-
+-            makefile.generate()
+-            tool.append("elementtree")
+-
+-        # Create the pyuic4 wrapper.  Use the GUI version on MacOS (so that
+-        # previews work properly and normal console use will work anyway), but
+-        # not on Windows (so that normal console use will work).
+-        sipconfig.inform("Creating pyuic4 wrapper...")
+-
+-        if sys.platform == 'darwin':
+-            gui = True
+-            use_arch = opts.use_arch
+-        else:
+-            gui = False
+-            use_arch = ''
+-
+         # The pyuic directory may not exist if we are building away from the
+         # source directory.
+         try:
+@@ -876,7 +851,6 @@
+             pass
+         uicdir=os.path.join(pyqt_modroot, "uic")
+-        wrapper = sipconfig.create_wrapper(os.path.join(uicdir, "pyuic.py"), os.path.join("pyuic", "pyuic4"), gui, use_arch)
+         sipconfig.inform("Creating pyuic4 Makefile...")
+@@ -885,7 +859,6 @@
+             dstdir=uicdir,
+             srcdir=os.path.join(src_dir, "pyuic", "uic"),
+             dir="pyuic",
+-            installs=[[os.path.basename(wrapper), opts.pyqtbindir]]
+         )
+         makefile.generate()
diff --git a/recipes/python/python-pyqt-4.8.4/fix_qthelp_ftbfs.diff b/recipes/python/python-pyqt-4.8.4/fix_qthelp_ftbfs.diff
new file mode 100644 (file)
index 0000000..e7a6882
--- /dev/null
@@ -0,0 +1,15 @@
+Description: Fix QtHelp FTBFS with ld --no-add-needed.
+Author: Felix Geyer <debfx-pkg@fobos.de>
+
+--- python-qt4-4.8.1.orig/configure.py
++++ python-qt4-4.8.1/configure.py
+@@ -364,7 +364,8 @@ class ConfigurePyQt4:
+         pyqt_modules.append("QtCore")
+         check_module("QtGui", "qwidget.h", "new QWidget()")
+-        check_module("QtHelp", "qhelpengine.h", "new QHelpEngine(\"foo\")")
++        check_module("QtHelp", "qhelpengine.h", "new QHelpEngine(\"foo\")",
++                extra_libs=["QtCore"])
+         check_module("QtMultimedia", "QAudioDeviceInfo",
+                 "new QAudioDeviceInfo()")
+         check_module("QtNetwork", "qhostaddress.h", "new QHostAddress()")
diff --git a/recipes/python/python-pyqt-4.8.4/fix_the_QAssitant_ftbfs.diff b/recipes/python/python-pyqt-4.8.4/fix_the_QAssitant_ftbfs.diff
new file mode 100644 (file)
index 0000000..96e3062
--- /dev/null
@@ -0,0 +1,29 @@
+From aa85ab2be6be7cb3c4df68139a8271fc4c8c11c8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?= <picca@synchrotron-soleil.fr>
+Date: Tue, 1 Mar 2011 21:49:23 +0100
+Subject: [PATCH] * fix the QAssitant ftbfs
+
+---
+ configure.py |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.py b/configure.py
+index 7ed9582..185ec9f 100644
+--- a/configure.py
++++ b/configure.py
+@@ -354,10 +354,10 @@ class ConfigurePyQt4:
+         if opts.mwg_ssl_dir:
+             ass_lib_dirs = [os.path.join(opts.mwg_ssl_dir, "lib")]
+-            ass_libs = ["ssleay32", "libeay32"]
++            ass_libs = ["ssleay32", "libeay32", "QtCore"]
+         else:
+             ass_lib_dirs = None
+-            ass_libs = None
++            ass_libs = ["QtCore"]
+         # Note that the order in which we check is important for the
+         # consolidated module - a module's dependencies must be checked first.
+-- 
+1.7.4.1
+
diff --git a/recipes/python/python-pyqt-4.8.4/fix_uiparser_buttonbox.diff b/recipes/python/python-pyqt-4.8.4/fix_uiparser_buttonbox.diff
new file mode 100644 (file)
index 0000000..7bb6468
--- /dev/null
@@ -0,0 +1,20 @@
+Index: python-qt4-4.8.3/pyuic/uic/uiparser.py
+===================================================================
+--- python-qt4-4.8.3.orig/pyuic/uic/uiparser.py        2011-01-23 10:08:28.000000000 +0000
++++ python-qt4-4.8.3/pyuic/uic/uiparser.py     2011-02-07 15:13:39.038141245 +0000
+@@ -228,7 +228,14 @@
+         elif isinstance(widget, QtGui.QAbstractButton):
+             bg_i18n = self.wprops.getAttribute(elem, "buttonGroup")
+             if bg_i18n is not None:
+-                bg_name = bg_i18n.string
++                # This should be handled properly in case the problem arises
++                # elsewhere as well.
++                try:
++                    # We are compiling the .ui file.
++                    bg_name = bg_i18n.string
++                except AttributeError:
++                    # We are loading the .ui file.
++                    bg_name = bg_i18n
+                 for bg in self.button_groups:
+                     if bg.objectName() == bg_name:
diff --git a/recipes/python/python-pyqt-4.8.4/qreal_float_support.diff b/recipes/python/python-pyqt-4.8.4/qreal_float_support.diff
new file mode 100644 (file)
index 0000000..abdf70f
--- /dev/null
@@ -0,0 +1,248 @@
+## 03_qreal_float_support.dpatch by Michael Casadevall <sonicmctails@gmail.com>
+Index: python-qt4-4.8.3/configure.py
+===================================================================
+--- python-qt4-4.8.3.orig/configure.py 2011-02-24 10:33:30.000000000 +0200
++++ python-qt4-4.8.3/configure.py      2011-02-24 10:33:18.000000000 +0200
+@@ -2004,8 +2004,9 @@
+     out << "PyQt_NoOpenGLES\\n";
+ #endif
+-    if (sizeof (qreal) != sizeof (double))
++#if defined(QT_NO_FPU) || defined(QT_ARCH_ARM) || defined(QT_ARCH_WINDOWSCE)
+         out << "PyQt_qreal_double\\n";
++#endif
+     return 0;
+ }
+Index: python-qt4-4.8.3/sip/QtCore/qlist.sip
+===================================================================
+--- python-qt4-4.8.3.orig/sip/QtCore/qlist.sip 2011-02-24 10:33:27.000000000 +0200
++++ python-qt4-4.8.3/sip/QtCore/qlist.sip      2011-02-24 10:33:18.000000000 +0200
+@@ -811,3 +811,227 @@
+     return sipGetState(sipTransferObj);
+ %End
+ };
++
++// If we're on an architecture where qreal != double, then we need to also
++// explicately handle doubles. On architectures where qreal == double, they
++// will automaticially be cast upwards
++
++%If (!PyQt_qreal_double)
++
++%If (Qt_4_3_0 -)
++// QList<QPair<double, double> > is implemented as a Python list of 2-element tuples.
++%MappedType QList<QPair<double, double> >
++{
++%TypeHeaderCode
++#include <qlist.h>
++#include <qpair.h>
++%End
++
++%ConvertFromTypeCode
++    // Create the list.
++    PyObject *l;
++
++    if ((l = PyList_New(sipCpp->size())) == NULL)
++        return NULL;
++
++    // Set the list elements.
++    for (int i = 0; i < sipCpp->size(); ++i)
++    {
++        const QPair<double, double> &p = sipCpp->at(i);
++        PyObject *pobj;
++
++        if ((pobj = Py_BuildValue((char *)"dd", p.first, p.second)) == NULL)
++        {
++            Py_DECREF(l);
++
++            return NULL;
++        }
++
++        PyList_SET_ITEM(l, i, pobj);
++    }
++
++    return l;
++%End
++
++%ConvertToTypeCode
++    SIP_SSIZE_T len;
++
++    // Check the type if that is all that is required.
++    if (sipIsErr == NULL)
++    {
++        if (!PySequence_Check(sipPy) || (len = PySequence_Size(sipPy)) < 0)
++            return 0;
++
++        for (SIP_SSIZE_T i = 0; i < len; ++i)
++        {
++            PyObject *tup = PySequence_ITEM(sipPy, i);
++
++            if (!PySequence_Check(tup) || PySequence_Size(tup) != 2)
++                return 0;
++        }
++
++        return 1;
++    }
++
++    QList<QPair<double, double> > *ql = new QList<QPair<double, double> >;
++    len = PySequence_Size(sipPy);
++ 
++    for (SIP_SSIZE_T i = 0; i < len; ++i)
++    {
++        PyObject *tup = PySequence_ITEM(sipPy, i);
++
++        double first = PyFloat_AsDouble(PySequence_ITEM(tup, 0));
++        double second = PyFloat_AsDouble(PySequence_ITEM(tup, 1));
++ 
++        ql->append(QPair<double, double>(first, second));
++    }
++ 
++    *sipCppPtr = ql;
++ 
++    return sipGetState(sipTransferObj);
++%End
++};
++%End
++%If (Qt_4_3_0 -)
++// QList<QPair<double, TYPE> > is implemented as a Python list of 2-element tuples.
++template<double, TYPE>
++%MappedType QList<QPair<double, TYPE> >
++{
++%TypeHeaderCode
++#include <qlist.h>
++#include <qpair.h>
++%End
++
++%ConvertFromTypeCode
++    // Create the list.
++    PyObject *l;
++
++    if ((l = PyList_New(sipCpp->size())) == NULL)
++        return NULL;
++
++    // Set the list elements.
++    for (int i = 0; i < sipCpp->size(); ++i)
++    {
++        const QPair<double, TYPE> &p = sipCpp->at(i);
++        TYPE *t = new TYPE(p.second);
++        PyObject *pobj;
++
++        if ((pobj = sipBuildResult(NULL, "(dB)", p.first, t, sipClass_TYPE, sipTransferObj)) == NULL)
++        {
++            Py_DECREF(l);
++            delete t;
++
++            return NULL;
++        }
++
++        PyList_SET_ITEM(l, i, pobj);
++    }
++
++    return l;
++%End
++
++%ConvertToTypeCode
++    SIP_SSIZE_T len;
++
++    // Check the type if that is all that is required.
++    if (sipIsErr == NULL)
++    {
++        if (!PySequence_Check(sipPy) || (len = PySequence_Size(sipPy)) < 0)
++            return 0;
++
++        for (SIP_SSIZE_T i = 0; i < len; ++i)
++        {
++            PyObject *tup = PySequence_ITEM(sipPy, i);
++
++            if (!PySequence_Check(tup) || PySequence_Size(tup) != 2)
++                return 0;
++
++            if (!sipCanConvertToInstance(PySequence_ITEM(tup, 1), sipClass_TYPE, SIP_NOT_NONE))
++                return 0;
++        }
++
++        return 1;
++    }
++
++    QList<QPair<double, TYPE> > *ql = new QList<QPair<double, TYPE> >;
++    len = PySequence_Size(sipPy);
++ 
++    for (SIP_SSIZE_T i = 0; i < len; ++i)
++    {
++        PyObject *tup = PySequence_ITEM(sipPy, i);
++        double d;
++        int state;
++
++        d = PyFloat_AsDouble(PySequence_ITEM(tup, 0));
++        TYPE *t = reinterpret_cast<TYPE *>(sipConvertToInstance(PySequence_ITEM(tup, 1), sipClass_TYPE, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ 
++        if (*sipIsErr)
++        {
++            sipReleaseInstance(t, sipClass_TYPE, state);
++
++            delete ql;
++            return 0;
++        }
++
++        ql->append(QPair<double, TYPE>(d, *t));
++
++        sipReleaseInstance(t, sipClass_TYPE, state);
++    }
++ 
++    *sipCppPtr = ql;
++ 
++    return sipGetState(sipTransferObj);
++%End
++};
++%End
++
++// QList<double> is implemented as a Python list of doubles.
++%MappedType QList<double>
++{
++%TypeHeaderCode
++#include <qlist.h>
++%End
++
++%ConvertFromTypeCode
++    // Create the list.
++    PyObject *l;
++
++    if ((l = PyList_New(sipCpp->size())) == NULL)
++        return NULL;
++
++    // Set the list elements.
++    for (int i = 0; i < sipCpp->size(); ++i)
++    {
++        PyObject *pobj;
++
++        if ((pobj = PyFloat_FromDouble(sipCpp->value(i))) == NULL)
++        {
++            Py_DECREF(l);
++
++            return NULL;
++        }
++
++        PyList_SET_ITEM(l, i, pobj);
++    }
++
++    return l;
++%End
++
++%ConvertToTypeCode
++    // Check the type if that is all that is required.
++    if (sipIsErr == NULL)
++        return (PySequence_Check(sipPy) && PySequence_Size(sipPy) >= 0);
++
++    QList<double> *ql = new QList<double>;
++    SIP_SSIZE_T len = PySequence_Size(sipPy);
++ 
++    for (SIP_SSIZE_T i = 0; i < len; ++i)
++        ql->append(PyFloat_AsDouble(PySequence_ITEM(sipPy, i)));
++ 
++    *sipCppPtr = ql;
++ 
++    return sipGetState(sipTransferObj);
++%End
++};
++
++%End
diff --git a/recipes/python/python-pyqt_4.8.4.bb b/recipes/python/python-pyqt_4.8.4.bb
new file mode 100644 (file)
index 0000000..e0bdf0b
--- /dev/null
@@ -0,0 +1,107 @@
+DESCRIPTION = "Python Qt4 Bindings"
+HOMEPAGE = "http://riverbankcomputing.co.uk"
+AUTHOR = "Phil Thomson @ riverbank.co.uk"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "sip-native python-sip"
+RDEPENDS_${PN} = "python-core"
+SRCNAME = "pyqt"
+PR = "r0"
+
+PYQT_OE_VERSION = "Qt_4_7_1"
+
+SRC_URI = "\
+  http://www.riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-x11-gpl-${PV}.tar.gz \
+  \
+  file://fix_qthelp_ftbfs.diff;apply=yes \
+  file://fix_the_QAssitant_ftbfs.diff;apply=yes \
+  file://assistantclient-fix.patch;apply=yes \
+"
+SRC_URI[md5sum] = "97c5dc1042feb5b3fe20baabad055af1"
+SRC_URI[sha256sum] = "fcfa3ecc0b4fad6d93227751b36a6f81ea104ee19dd26905f52de59f060b3e98"
+S = "${WORKDIR}/PyQt-x11-gpl-${PV}"
+
+# arm and mips machines need some extra patches
+SRC_URI_append_arm = "\
+  file://qreal_float_support.diff;apply=yes \
+"
+
+SRC_URI_append_mipsel = "\
+  file://qreal_float_support.diff;apply=yes \
+"
+
+inherit qt4x11 sip distutils-base
+
+PARALLEL_MAKE = ""
+
+QMAKE_PROFILES = "pyqt.pro"
+# NOTE: has to match with MIN(qt version we have in OE, last known Qt version by SIP/PyQt)
+EXTRA_SIPTAGS = "-tWS_X11 -t${PYQT_OE_VERSION} -xVendorID -xPyQt_SessionManager -xPyQt_Accessibility"
+EXTRA_OEMAKE = " MAKEFLAGS= "
+
+# arm and mips need extra params for the qreal issue
+EXTRA_SIPTAGS_append_arm = " -x PyQt_qreal_double"
+EXTRA_SIPTAGS_append_mipsel = " -x PyQt_qreal_double" 
+
+SIP_MODULES = "QtCore QtDeclarative QtGui QtNetwork QtSql QtSvg QtXml QtWebKit"
+MAKE_MODULES = "qpy ${SIP_MODULES}"
+
+EXTRA_QMAKEVARS_POST += "\
+  INCLUDEPATH+=${OE_QMAKE_INCDIR_QT}/Qt \
+  INCLUDEPATH+=${STAGING_INCDIR}/${PYTHON_DIR} \
+  INCLUDEPATH+=../qpy/QtCore \
+  INCLUDEPATH+=../qpy/QtGui \
+  INCLUDEPATH+=../qpy/QtDeclarative \
+  INCLUDEPATH+=${OE_QMAKE_INCDIR_QT}/QtCore \
+  INCLUDEPATH+=${OE_QMAKE_INCDIR_QT}/QtGui \
+  INCLUDEPATH+=${OE_QMAKE_INCDIR_QT}/QtDeclarative \
+  INCLUDEPATH+=${OE_QMAKE_INCDIR_QT}/QtWebKit \
+  INCLUDEPATH+=${OE_QMAKE_INCDIR_QT}/QtNetwork \
+"
+FIX_QREAL = "\
+"
+
+do_generate_prepend() {
+    for i in ${FIX_QREAL}; do
+        sed -i -e s,qreal,float,g sip/$i
+    done
+}
+
+do_configure_prepend() {
+    printf "TEMPLATE=subdirs\nSUBDIRS=${MAKE_MODULES}\n" >pyqt.pro
+    printf "TEMPLATE=subdirs\nSUBDIRS=QtCore QtDeclarative QtGui\n" >qpy/qpy.pro
+    ln -sf ./qpycore.pro qpy/QtCore/QtCore.pro
+    ln -sf ./qpydeclarative.pro qpy/QtDeclarative/QtDeclarative.pro
+    ln -sf ./qpygui.pro qpy/QtGui/QtGui.pro
+    echo "INCLUDEPATH+=${S}/QtCore" >>qpy/QtCore/QtCore.pro
+    echo "INCLUDEPATH+=${S}/QtGui" >>qpy/QtGui/QtGui.pro
+    echo "INCLUDEPATH+=${S}/QtDeclarative" >>qpy/QtDeclarative/QtDeclarative.pro
+    echo "LIBS+=-L../qpy/QtGui/ -lqpygui" >>QtGui/QtGui.pro
+    echo "LIBS+=-L../qpy/QtCore/ -lqpycore" >>QtCore/QtCore.pro
+    echo "LIBS+=-L../qpy/QtDeclarative/ -lqpydeclarative" >>QtDeclarative/QtDeclarative.pro
+}
+
+do_stage() {
+    install -d ${STAGING_SIPDIR}/qt/
+    install -d ${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages
+    for module in ${SIP_MODULES}
+    do
+        install -m 0644 ${S}/sip/${module}/*.sip ${STAGING_SIPDIR}/qt/
+       install -m 0755 ${module}/lib${module}.so ${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/${module}.so
+    done
+}
+
+do_install() {
+    install -d ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4
+    for module in ${SIP_MODULES}
+    do
+               echo "from PyQt4.${module} import *\n" >> ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4/Qt.py
+               install -m 0755 ${module}/lib${module}.so ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4/${module}.so
+    done
+       cp -pPR elementtree ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4/
+       cp __init__.py ${D}${libdir}/${PYTHON_DIR}/site-packages/PyQt4/
+}
+
+FILES_${PN} = "${libdir}/${PYTHON_DIR}/site-packages"
+
diff --git a/recipes/python/python-pyrex-0.9.8.5/pyrex-fix-optimized-mode.patch b/recipes/python/python-pyrex-0.9.8.5/pyrex-fix-optimized-mode.patch
new file mode 100644 (file)
index 0000000..a1f5bb2
--- /dev/null
@@ -0,0 +1,13 @@
+Index: Pyrex-0.9.8.4/Pyrex/Distutils/extension.py
+===================================================================
+--- Pyrex-0.9.8.4.orig/Pyrex/Distutils/extension.py
++++ Pyrex-0.9.8.4/Pyrex/Distutils/extension.py
+@@ -15,7 +15,7 @@ except ImportError:
+     warnings = None
+ class Extension(_Extension.Extension):
+-    _Extension.Extension.__doc__ + \
++    _Extension.Extension.__doc__ or "" + \
+     """pyrex_include_dirs : [string]
+         list of directories to search for Pyrex header files (.pxd) (in
+         Unix form for portability)
diff --git a/recipes/python/python-pyxdg/desktopentry-cmp.patch b/recipes/python/python-pyxdg/desktopentry-cmp.patch
new file mode 100644 (file)
index 0000000..bb2905a
--- /dev/null
@@ -0,0 +1,15 @@
+This method definition causes an infinite recursion, and has been dropped
+from later releases.
+
+--- pyxdg-0.15/xdg/DesktopEntry.py.orig        2010-08-03 03:01:34.000000000 +0200
++++ pyxdg-0.15/xdg/DesktopEntry.py     2010-08-03 03:01:46.000000000 +0200
+@@ -29,9 +29,6 @@
+       def __str__(self):
+               return self.getName()
+-      def __cmp__(self, other):
+-              return cmp(self, other)
+-
+       def parse(self, file):
+               IniFile.parse(self, file, ["Desktop Entry", "KDE Desktop Entry"])
diff --git a/recipes/python/python-setuptools_0.6c11.bb b/recipes/python/python-setuptools_0.6c11.bb
new file mode 100644 (file)
index 0000000..bede203
--- /dev/null
@@ -0,0 +1,32 @@
+DESCRIPTION = "Download, build, install, upgrade, and uninstall Python packages"
+HOMEPAGE = "http://cheeseshop.python.org/pypi/setuptools"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT"
+SRCNAME = "setuptools"
+PR = "ml2"
+DEPENDS += "python"
+DEPENDS_virtclass-native += "python-native"
+
+SRC_URI = "\
+  http://cheeseshop.python.org/packages/source/s/setuptools/${SRCNAME}-${PV}.tar.gz\
+"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+do_install_prepend() {
+    install -d ${D}/${libdir}/${PYTHON_DIR}/site-packages
+}
+
+RDEPENDS_${PN} = "\
+  python-distutils \
+  python-compression \
+"
+
+SRC_URI[md5sum] = "7df2a529a074f613b509fb44feefe74e"
+SRC_URI[sha256sum] = "630fea9b726320b73ee3ca6ff61732cb32675b0389be658080fe46383b87a1d3"
+
+BBCLASSEXTEND = "native"
+
+NATIVE_INSTALL_WORKS = "1"
diff --git a/recipes/python/python-sip_4.12.2.bb b/recipes/python/python-sip_4.12.2.bb
new file mode 100644 (file)
index 0000000..0578486
--- /dev/null
@@ -0,0 +1,8 @@
+require python-sip.inc
+PR = "r0"
+
+SRC_URI[md5sum] = "9df80f88e0e4022cdd8a8891c6c38048"
+SRC_URI[sha256sum] = "3e42bea028a1713558b5b8a317af4195d3b0feaa6c179d99401a7048f1a3cec4"
+
+
+
diff --git a/recipes/python/python-wifi_0.5.0.bb b/recipes/python/python-wifi_0.5.0.bb
new file mode 100644 (file)
index 0000000..faa3b43
--- /dev/null
@@ -0,0 +1,25 @@
+DESCRIPTION = "Provides access to Linux Wireless Extensions"
+HOMEPAGE = "http://pythonwifi.wikispot.org/"
+SECTION = "devel/python"
+LICENSE = "LGPLv2+"
+LICENSE_${PN}-examples = "GPLv2+"
+RDEPENDS_${PN} = "python-ctypes python-datetime"
+
+SRC_URI = "http://download.berlios.de/pythonwifi/${P}.tar.bz2"
+SRC_URI[md5sum] = "8fe7fd0a4edce1f9bedaff4acb7fd500"
+SRC_URI[sha256sum] = "3e3f645d37ab20450f60c785cec5f21b330f28a6c46c7c1b0898305dd7a34b26"
+
+inherit setuptools
+
+do_install_append() {
+        install -d ${D}${docdir}/${PN}
+        mv ${D}${datadir}/README ${D}${docdir}/${PN}
+        mv ${D}${datadir}/INSTALL ${D}${docdir}/${PN}
+        mv ${D}${datadir}/docs/* ${D}${docdir}/${PN}
+        install -d ${D}${sbindir}
+        mv ${D}${datadir}/examples/* ${D}${sbindir}
+}
+
+PACKAGES =+ "${PN}-examples"
+
+FILES_${PN}-examples = "${sbindir}"
diff --git a/recipes/python/python-xmpppy_0.5.0rc1.bb b/recipes/python/python-xmpppy_0.5.0rc1.bb
new file mode 100644 (file)
index 0000000..1ae2180
--- /dev/null
@@ -0,0 +1,14 @@
+DESCRIPTION = "Library for handling xmpp with python"
+HOMEPAGE = "http://sourceforge.net/projects/xmpppy/"
+SECTION = "devel/python"
+LICENSE = "GPL"
+SOURCE = "xmpppy"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SOURCE}/${SOURCE}-${PV}.tar.gz"
+SRC_URI[md5sum] = "e0d2b3f9e4a278c163431e64adb0c861"
+SRC_URI[sha256sum] = "519b025b3c9600c26c5805d0c612fe01e61330d2b9869f05c7c416c627820b9a"
+
+S = "${WORKDIR}/${SOURCE}-${PV}"
+
+inherit setuptools
diff --git a/recipes/python/python2.7.inc b/recipes/python/python2.7.inc
new file mode 100644 (file)
index 0000000..c5f58d0
--- /dev/null
@@ -0,0 +1,23 @@
+DESCRIPTION = "The Python Programming Language"
+HOMEPAGE = "http://www.python.org"
+LICENSE = "PSF"
+SECTION = "devel/python"
+PRIORITY = "optional"
+# bump this on every change in contrib/python/generate-manifest-2.7.py
+INC_PR = "ml1"
+
+DEFAULT_PREFERENCE = "-27"
+
+PYTHON_MAJMIN = "2.7"
+
+inherit autotools
+
+EXTRA_OECONF = "\
+  --with-threads \
+  --with-pymalloc \
+  --with-cyclic-gc \
+  --without-cxx \
+  --with-signal-module \
+  --with-wctype-functions \
+  --enable-shared \
+"
diff --git a/recipes/python/python_2.6.6.bb b/recipes/python/python_2.6.6.bb
new file mode 100644 (file)
index 0000000..eacc5c2
--- /dev/null
@@ -0,0 +1,134 @@
+require python.inc
+DEPENDS = "python-native db gdbm openssl readline sqlite3 tcl zlib\
+           ${@base_contains('DISTRO_FEATURES', 'tk', 'tk', '', d)}"
+DEPENDS_sharprom = "python-native db readline zlib gdbm openssl"
+# set to .0 on every increase of INC_PR
+PR = "${INC_PR}.3"
+
+SRC_URI = "\
+  http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \
+  file://00-fix-parallel-make.patch \
+  file://01-use-proper-tools-for-cross-build.patch \
+  file://02-remove-test-for-cross.patch \
+  file://03-fix-tkinter-detection.patch \
+  file://04-default-is-optimized.patch \
+  file://05-enable-ctypes-cross-build.patch \
+  file://06-ctypes-libffi-fix-configure.patch \
+  file://ipv6-cross.patch \
+  file://python-module-rpath-fix.patch \
+  file://sitecustomize.py \
+  file://pkgconfig-support.patch \
+"
+SRC_URI[md5sum] = "cf4e6881bb84a7ce6089e4a307f71f14"
+SRC_URI[sha256sum] = "134c5e0736bae2e5570d0b915693374f11108ded63c35a23a35d282737d2ce83"
+
+S = "${WORKDIR}/Python-${PV}"
+
+inherit autotools
+
+# The 3 lines below are copied from the libffi recipe, ctypes ships its own copy of the libffi sources
+#Somehow gcc doesn't set __SOFTFP__ when passing -mfloatabi=softp :(
+TARGET_CC_ARCH_append_armv6 = " -D__SOFTFP__"
+TARGET_CC_ARCH_append_armv7a = " -D__SOFTFP__"
+
+do_configure_prepend() {
+       autoreconf -Wcross --verbose --install --force --exclude=autopoint Modules/_ctypes/libffi || oenote "_ctypes failed to autoreconf"
+}
+
+#
+# Copy config.h and an appropriate Makefile for distutils.sysconfig,
+# which laters uses the information out of these to compile extensions
+#
+do_compile_prepend() {
+       install -d ${STAGING_INCDIR}/python${PYTHON_MAJMIN}/
+       install -d ${STAGING_LIBDIR}/python${PYTHON_MAJMIN}/config/
+       install -m 0644 pyconfig.h ${STAGING_INCDIR}/python${PYTHON_MAJMIN}/
+       install -m 0644 Makefile Makefile.orig
+       install -m 0644 Makefile Makefile.backup
+       sed -e 's,${includedir},${STAGING_INCDIR},' < Makefile.backup > Makefile
+       install -m 0644 Makefile Makefile.backup
+       sed -e 's,${libdir},${STAGING_LIBDIR},' < Makefile.backup > Makefile
+       install -m 0644 Makefile ${STAGING_LIBDIR}/python${PYTHON_MAJMIN}/config/
+}
+
+do_compile() {
+       oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/pgen \
+               HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python \
+               STAGING_LIBDIR=${STAGING_LIBDIR} \
+               STAGING_INCDIR=${STAGING_INCDIR} \
+               BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+               OPT="${CFLAGS}" libpython${PYTHON_MAJMIN}.so
+
+       oe_libinstall -so libpython${PYTHON_MAJMIN} ${STAGING_LIBDIR}
+
+       oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/pgen \
+               HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python \
+               STAGING_LIBDIR=${STAGING_LIBDIR} \
+               STAGING_INCDIR=${STAGING_INCDIR} \
+               BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+               RUNSHARED= OPT="${CFLAGS}"
+}
+
+do_install() {
+       install -m 0644 Makefile.orig Makefile
+       
+       oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/pgen \
+               HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python \
+               STAGING_LIBDIR=${STAGING_LIBDIR} \
+               STAGING_INCDIR=${STAGING_INCDIR} \
+               BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+               DESTDIR=${D} LIBDIR=${libdir} RUNSHARED= install
+
+       install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}
+
+       # remove hardcoded ccache, see http://bugs.openembedded.net/show_bug.cgi?id=4144
+       sed -i -e s,ccache,'$(CCACHE)', ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
+}
+
+do_install_append() {
+       # remove unecessary files from python-distutils' packages
+       rm ${D}/${libdir}/python${PYTHON_MAJMIN}/config/libpython2.6.a
+       rm ${D}/${libdir}/python${PYTHON_MAJMIN}/distutils/command/win*
+}
+
+require python-${PYTHON_MAJMIN}-manifest.inc
+
+# manual dependency additions
+RPROVIDES_${PN}-core = "${PN}"
+RRECOMMENDS_${PN}-core = "${PN}-readline"
+RRECOMMENDS_${PN}-crypt = "openssl"
+
+# add sitecustomize
+FILES_${PN}-core += "${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py"
+# ship 2to3
+FILES_${PN}-core += "${bindir}/2to3"
+
+# package libpython2
+PACKAGES =+ "lib${PN}2"
+FILES_lib${PN}2 = "${libdir}/libpython*.so.*"
+
+# additional stuff -dev
+
+FILES_${PN}-dev += "\
+  ${includedir} \
+  ${libdir}/lib*${SOLIBSDEV} \
+  ${libdir}/*.la \
+  ${libdir}/*.a \
+  ${libdir}/*.o \
+  ${libdir}/pkgconfig \
+  ${base_libdir}/*.a \
+  ${base_libdir}/*.o \
+  ${datadir}/aclocal \
+  ${datadir}/pkgconfig \
+"
+
+# catch debug extensions (isn't that already in python-core-dbg?)
+FILES_${PN}-dbg += "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/.debug"
+
+# catch all the rest (unsorted)
+PACKAGES += "${PN}-misc"
+FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN}"
+
+# catch manpage
+PACKAGES += "${PN}-man"
+FILES_${PN}-man = "${datadir}/man"
diff --git a/recipes/python/python_2.7.1.bb b/recipes/python/python_2.7.1.bb
new file mode 100644 (file)
index 0000000..6346026
--- /dev/null
@@ -0,0 +1,132 @@
+require python2.7.inc
+DEPENDS = "python-native db gdbm openssl readline sqlite3 tcl zlib\
+           ${@base_contains('DISTRO_FEATURES', 'tk', 'tk', '', d)}"
+DEPENDS_sharprom = "python-native db readline zlib gdbm openssl"
+# set to .0 on every increase of INC_PR
+PR = "${INC_PR}.2"
+
+SRC_URI = "\
+  http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \
+  file://01-fix-have-long-long-format.patch \
+  file://01-use-proper-tools-for-cross-build.patch \
+  file://02-remove-test-for-cross.patch \
+  file://03-fix-tkinter-detection.patch \
+  file://04-default-is-optimized.patch \
+  file://05-enable-ctypes-cross-build.patch \
+  file://06-ctypes-libffi-fix-configure.patch \
+  file://99-ignore-optimization-flag.patch \
+  file://sitecustomize.py \
+"
+SRC_URI[md5sum] = "aa27bc25725137ba155910bd8e5ddc4f"
+SRC_URI[sha256sum] = "80e387bcf57eae8ce26726753584fd63e060ec11682d1145af921e85fd612292"
+
+S = "${WORKDIR}/Python-${PV}"
+
+inherit autotools
+
+# The 3 lines below are copied from the libffi recipe, ctypes ships its own copy of the libffi sources
+#Somehow gcc doesn't set __SOFTFP__ when passing -mfloatabi=softp :(
+TARGET_CC_ARCH_append_armv6 = " -D__SOFTFP__"
+TARGET_CC_ARCH_append_armv7a = " -D__SOFTFP__"
+
+do_configure_prepend() {
+       autoreconf -Wcross --verbose --install --force --exclude=autopoint Modules/_ctypes/libffi || oenote "_ctypes failed to autoreconf"
+}
+
+#
+# Copy config.h and an appropriate Makefile for distutils.sysconfig,
+# which laters uses the information out of these to compile extensions
+#
+do_compile_prepend() {
+       install -d ${STAGING_INCDIR}/python${PYTHON_MAJMIN}/
+       install -d ${STAGING_LIBDIR}/python${PYTHON_MAJMIN}/config/
+       install -m 0644 pyconfig.h ${STAGING_INCDIR}/python${PYTHON_MAJMIN}/
+       install -m 0644 Makefile Makefile.orig
+       install -m 0644 Makefile Makefile.backup
+       sed -e 's,${includedir},${STAGING_INCDIR},' < Makefile.backup > Makefile
+       install -m 0644 Makefile Makefile.backup
+       sed -e 's,${libdir},${STAGING_LIBDIR},' < Makefile.backup > Makefile
+       install -m 0644 Makefile ${STAGING_LIBDIR}/python${PYTHON_MAJMIN}/config/
+}
+
+do_compile() {
+       oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/pgen \
+               HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python \
+               STAGING_LIBDIR=${STAGING_LIBDIR} \
+               STAGING_INCDIR=${STAGING_INCDIR} \
+               BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+               OPT="${CFLAGS}" libpython${PYTHON_MAJMIN}.so
+
+       oe_libinstall -so libpython${PYTHON_MAJMIN} ${STAGING_LIBDIR}
+
+       oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/pgen \
+               HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python \
+               STAGING_LIBDIR=${STAGING_LIBDIR} \
+               STAGING_INCDIR=${STAGING_INCDIR} \
+               BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+               RUNSHARED= OPT="${CFLAGS}"
+}
+
+do_install() {
+       install -m 0644 Makefile.orig Makefile
+       
+       oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/pgen \
+               HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python \
+               STAGING_LIBDIR=${STAGING_LIBDIR} \
+               STAGING_INCDIR=${STAGING_INCDIR} \
+               BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+               DESTDIR=${D} LIBDIR=${libdir} RUNSHARED= install
+
+       install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}
+
+       # remove hardcoded ccache, see http://bugs.openembedded.net/show_bug.cgi?id=4144
+       sed -i -e s,ccache,'$(CCACHE)', ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
+}
+
+do_install_append() {
+       # remove unecessary files from python-distutils' packages
+       rm ${D}/${libdir}/python${PYTHON_MAJMIN}/config/libpython2.7.a
+       rm ${D}/${libdir}/python${PYTHON_MAJMIN}/distutils/command/win*
+}
+
+require python-${PYTHON_MAJMIN}-manifest.inc
+
+# manual dependency additions
+RPROVIDES_python-core = "python"
+RRECOMMENDS_python-core = "python-readline"
+RRECOMMENDS_python-crypt = "openssl"
+
+# add sitecustomize
+FILES_python-core += "${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py"
+# ship 2to3
+FILES_python-core += "${bindir}/2to3"
+
+# package libpython2
+PACKAGES =+ "libpython2"
+FILES_libpython2 = "${libdir}/libpython*.so.*"
+
+# additional stuff -dev
+
+FILES_${PN}-dev += "\
+  ${includedir} \
+  ${libdir}/lib*${SOLIBSDEV} \
+  ${libdir}/*.la \
+  ${libdir}/*.a \
+  ${libdir}/*.o \
+  ${libdir}/pkgconfig \
+  ${base_libdir}/*.a \
+  ${base_libdir}/*.o \
+  ${datadir}/aclocal \
+  ${datadir}/pkgconfig \
+"
+
+# catch debug extensions (isn't that already in python-core-dbg?)
+FILES_python-dbg += "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/.debug"
+
+# catch all the rest (unsorted)
+PACKAGES += "python-misc"
+FILES_python-misc = "${libdir}/python${PYTHON_MAJMIN}"
+
+# catch manpage
+PACKAGES += "python-man"
+FILES_python-man = "${datadir}/man"