From e0d8bb458606bf2edb5a2a7a524a1533f595e715 Mon Sep 17 00:00:00 2001 From: Michael Mrozek Date: Sat, 14 Dec 2013 12:10:10 +0100 Subject: [PATCH] Python: Trying to update to v2.7,1 --- .../python-2.6.6/00-fix-parallel-make.patch | 40 +++ .../01-use-proper-tools-for-cross-build.patch | 116 ++++++++ .../02-remove-test-for-cross.patch | 106 +++++++ .../03-fix-tkinter-detection.patch | 40 +++ .../04-default-is-optimized.patch | 19 ++ .../05-enable-ctypes-cross-build.patch | 28 ++ .../06-ctypes-libffi-fix-configure.patch | 51 ++++ .../10-distutils-fix-swig-parameter.patch | 16 ++ ...-distutils-never-modify-shebang-line.patch | 18 ++ ...tutils-prefix-is-inside-staging-area.patch | 60 ++++ recipes/python/python-2.6.6/debug.patch | 27 ++ recipes/python/python-2.6.6/ipv6-cross.patch | 13 + recipes/python/python-2.6.6/nohostlibs.patch | 57 ++++ .../python-2.6.6/pkgconfig-support.patch | 94 ++++++ .../python-module-rpath-fix.patch | 24 ++ recipes/python/python-2.6.6/sitecustomize.py | 45 +++ recipes/python/python-2.7-manifest.inc | 272 ++++++++++++++++++ .../00-fix-bindir-libdir-for-cross.patch | 20 ++ .../01-fix-have-long-long-format.patch | 19 ++ .../01-use-proper-tools-for-cross-build.patch | 169 +++++++++++ .../02-remove-test-for-cross.patch | 108 +++++++ .../03-fix-tkinter-detection.patch | 40 +++ .../04-default-is-optimized.patch | 18 ++ .../05-enable-ctypes-cross-build.patch | 28 ++ .../06-ctypes-libffi-fix-configure.patch | 44 +++ .../10-distutils-fix-swig-parameter.patch | 16 ++ ...-distutils-never-modify-shebang-line.patch | 18 ++ ...tutils-prefix-is-inside-staging-area.patch | 60 ++++ .../99-ignore-optimization-flag.patch | 19 ++ recipes/python/python-2.7.1/debug.patch | 27 ++ recipes/python/python-2.7.1/nohostlibs.patch | 29 ++ recipes/python/python-2.7.1/sitecustomize.py | 45 +++ recipes/python/python-argparse_1.2.1.bb | 17 ++ recipes/python/python-caldav_0.1.6.bb | 17 ++ recipes/python/python-cheetah_2.4.4.bb | 19 ++ recipes/python/python-cython_0.13.bb | 18 ++ recipes/python/python-dbus_0.83.2.bb | 33 +++ recipes/python/python-django_1.2.1.bb | 34 +++ recipes/python/python-lxml_2.2.6.bb | 26 ++ recipes/python/python-lxml_2.2.8.bb | 26 ++ recipes/python/python-m2crypto_0.20.2.bb | 27 ++ recipes/python/python-native_2.6.6.bb | 44 +++ recipes/python/python-native_2.7.1.bb | 43 +++ recipes/python/python-numeric_24.2.bb | 13 + recipes/python/python-numpy_1.4.1.bb | 26 ++ recipes/python/python-oauth_1.0.1.bb | 14 + recipes/python/python-pybluez_0.18.bb | 13 + .../python/python-pygtksourceview_2.10.1.bb | 26 ++ .../python-pyopengl-accelerate_3.0.1.bb | 16 ++ recipes/python/python-pyopengl_3.0.1.bb | 16 ++ .../assistantclient-fix.patch | 13 + .../debian_configure_changes.diff | 52 ++++ .../python-pyqt-4.8.4/fix_qthelp_ftbfs.diff | 15 + .../fix_the_QAssitant_ftbfs.diff | 29 ++ .../fix_uiparser_buttonbox.diff | 20 ++ .../qreal_float_support.diff | 248 ++++++++++++++++ recipes/python/python-pyqt_4.8.4.bb | 107 +++++++ .../pyrex-fix-optimized-mode.patch | 13 + .../python-pyxdg/desktopentry-cmp.patch | 15 + recipes/python/python-setuptools_0.6c11.bb | 32 +++ recipes/python/python-sip_4.12.2.bb | 8 + recipes/python/python-wifi_0.5.0.bb | 25 ++ recipes/python/python-xmpppy_0.5.0rc1.bb | 14 + recipes/python/python2.7.inc | 23 ++ recipes/python/python_2.6.6.bb | 134 +++++++++ recipes/python/python_2.7.1.bb | 132 +++++++++ 66 files changed, 2994 insertions(+) create mode 100644 recipes/python/python-2.6.6/00-fix-parallel-make.patch create mode 100644 recipes/python/python-2.6.6/01-use-proper-tools-for-cross-build.patch create mode 100644 recipes/python/python-2.6.6/02-remove-test-for-cross.patch create mode 100644 recipes/python/python-2.6.6/03-fix-tkinter-detection.patch create mode 100644 recipes/python/python-2.6.6/04-default-is-optimized.patch create mode 100644 recipes/python/python-2.6.6/05-enable-ctypes-cross-build.patch create mode 100644 recipes/python/python-2.6.6/06-ctypes-libffi-fix-configure.patch create mode 100644 recipes/python/python-2.6.6/10-distutils-fix-swig-parameter.patch create mode 100644 recipes/python/python-2.6.6/11-distutils-never-modify-shebang-line.patch create mode 100644 recipes/python/python-2.6.6/12-distutils-prefix-is-inside-staging-area.patch create mode 100644 recipes/python/python-2.6.6/debug.patch create mode 100644 recipes/python/python-2.6.6/ipv6-cross.patch create mode 100644 recipes/python/python-2.6.6/nohostlibs.patch create mode 100644 recipes/python/python-2.6.6/pkgconfig-support.patch create mode 100644 recipes/python/python-2.6.6/python-module-rpath-fix.patch create mode 100644 recipes/python/python-2.6.6/sitecustomize.py create mode 100644 recipes/python/python-2.7-manifest.inc create mode 100644 recipes/python/python-2.7.1/00-fix-bindir-libdir-for-cross.patch create mode 100644 recipes/python/python-2.7.1/01-fix-have-long-long-format.patch create mode 100644 recipes/python/python-2.7.1/01-use-proper-tools-for-cross-build.patch create mode 100644 recipes/python/python-2.7.1/02-remove-test-for-cross.patch create mode 100644 recipes/python/python-2.7.1/03-fix-tkinter-detection.patch create mode 100644 recipes/python/python-2.7.1/04-default-is-optimized.patch create mode 100644 recipes/python/python-2.7.1/05-enable-ctypes-cross-build.patch create mode 100644 recipes/python/python-2.7.1/06-ctypes-libffi-fix-configure.patch create mode 100644 recipes/python/python-2.7.1/10-distutils-fix-swig-parameter.patch create mode 100644 recipes/python/python-2.7.1/11-distutils-never-modify-shebang-line.patch create mode 100644 recipes/python/python-2.7.1/12-distutils-prefix-is-inside-staging-area.patch create mode 100644 recipes/python/python-2.7.1/99-ignore-optimization-flag.patch create mode 100644 recipes/python/python-2.7.1/debug.patch create mode 100644 recipes/python/python-2.7.1/nohostlibs.patch create mode 100644 recipes/python/python-2.7.1/sitecustomize.py create mode 100644 recipes/python/python-argparse_1.2.1.bb create mode 100644 recipes/python/python-caldav_0.1.6.bb create mode 100644 recipes/python/python-cheetah_2.4.4.bb create mode 100644 recipes/python/python-cython_0.13.bb create mode 100644 recipes/python/python-dbus_0.83.2.bb create mode 100644 recipes/python/python-django_1.2.1.bb create mode 100644 recipes/python/python-lxml_2.2.6.bb create mode 100644 recipes/python/python-lxml_2.2.8.bb create mode 100644 recipes/python/python-m2crypto_0.20.2.bb create mode 100644 recipes/python/python-native_2.6.6.bb create mode 100644 recipes/python/python-native_2.7.1.bb create mode 100644 recipes/python/python-numeric_24.2.bb create mode 100644 recipes/python/python-numpy_1.4.1.bb create mode 100644 recipes/python/python-oauth_1.0.1.bb create mode 100644 recipes/python/python-pybluez_0.18.bb create mode 100644 recipes/python/python-pygtksourceview_2.10.1.bb create mode 100644 recipes/python/python-pyopengl-accelerate_3.0.1.bb create mode 100644 recipes/python/python-pyopengl_3.0.1.bb create mode 100644 recipes/python/python-pyqt-4.8.4/assistantclient-fix.patch create mode 100644 recipes/python/python-pyqt-4.8.4/debian_configure_changes.diff create mode 100644 recipes/python/python-pyqt-4.8.4/fix_qthelp_ftbfs.diff create mode 100644 recipes/python/python-pyqt-4.8.4/fix_the_QAssitant_ftbfs.diff create mode 100644 recipes/python/python-pyqt-4.8.4/fix_uiparser_buttonbox.diff create mode 100644 recipes/python/python-pyqt-4.8.4/qreal_float_support.diff create mode 100644 recipes/python/python-pyqt_4.8.4.bb create mode 100644 recipes/python/python-pyrex-0.9.8.5/pyrex-fix-optimized-mode.patch create mode 100644 recipes/python/python-pyxdg/desktopentry-cmp.patch create mode 100644 recipes/python/python-setuptools_0.6c11.bb create mode 100644 recipes/python/python-sip_4.12.2.bb create mode 100644 recipes/python/python-wifi_0.5.0.bb create mode 100644 recipes/python/python-xmpppy_0.5.0rc1.bb create mode 100644 recipes/python/python2.7.inc create mode 100644 recipes/python/python_2.6.6.bb create mode 100644 recipes/python/python_2.7.1.bb 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 index 0000000000..c80ca19229 --- /dev/null +++ b/recipes/python/python-2.6.6/00-fix-parallel-make.patch @@ -0,0 +1,40 @@ +upstream: +comment: As in the comment in the issue tracker this is fixed for py3k a little differently . 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 index 0000000000..b7467cc937 --- /dev/null +++ b/recipes/python/python-2.6.6/01-use-proper-tools-for-cross-build.patch @@ -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 + +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 index 0000000000..b1c0bfb859 --- /dev/null +++ b/recipes/python/python-2.6.6/02-remove-test-for-cross.patch @@ -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 +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 +-#include +-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 +-#include +-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 +-#include +-#include +- +-#ifdef HAVE_SYS_TYPES_H +-#include +-#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 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 index 0000000000..a1a385a07c --- /dev/null +++ b/recipes/python/python-2.6.6/03-fix-tkinter-detection.patch @@ -0,0 +1,40 @@ +# We need to supply STAGING_INCDIR here, otherwise the Tk headers +# will not be found. +# Signed-Off: Michael 'Mickey' Lauer + +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 index 0000000000..f99ea4c8eb --- /dev/null +++ b/recipes/python/python-2.6.6/04-default-is-optimized.patch @@ -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 + +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 index 0000000000..58b8078068 --- /dev/null +++ b/recipes/python/python-2.6.6/05-enable-ctypes-cross-build.patch @@ -0,0 +1,28 @@ +# CTypes need to know the actual host we are building on. +# Signed-Off: Michael Dietrich + +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 index 0000000000..3773791385 --- /dev/null +++ b/recipes/python/python-2.6.6/06-ctypes-libffi-fix-configure.patch @@ -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 index 0000000000..f5e852a118 --- /dev/null +++ b/recipes/python/python-2.6.6/10-distutils-fix-swig-parameter.patch @@ -0,0 +1,16 @@ +# Some versions of SWIG do not use the extension parameter. +# Make it optional. +# Signed-Off: Michael 'Mickey' Lauer +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 index 0000000000..8354e266fa --- /dev/null +++ b/recipes/python/python-2.6.6/11-distutils-never-modify-shebang-line.patch @@ -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 + +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 index 0000000000..bf4366f12b --- /dev/null +++ b/recipes/python/python-2.6.6/12-distutils-prefix-is-inside-staging-area.patch @@ -0,0 +1,60 @@ +# The proper prefix is inside our staging area. +# Signed-Off: Michael 'Mickey' Lauer + +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 index 0000000000..beb3adc6db --- /dev/null +++ b/recipes/python/python-2.6.6/debug.patch @@ -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 index 0000000000..3d2ac5ed90 --- /dev/null +++ b/recipes/python/python-2.6.6/ipv6-cross.patch @@ -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 index 0000000000..cc9b28cd50 --- /dev/null +++ b/recipes/python/python-2.6.6/nohostlibs.patch @@ -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 index 0000000000..d970b006da --- /dev/null +++ b/recipes/python/python-2.6.6/pkgconfig-support.patch @@ -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 index 0000000000..a2c80895fb --- /dev/null +++ b/recipes/python/python-2.6.6/python-module-rpath-fix.patch @@ -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 index 0000000000..273901898a --- /dev/null +++ b/recipes/python/python-2.6.6/sitecustomize.py @@ -0,0 +1,45 @@ +# OpenEmbedded sitecustomize.py (C) 2002-2008 Michael 'Mickey' Lauer +# 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 index 0000000000..c6833de62e --- /dev/null +++ b/recipes/python/python-2.7-manifest.inc @@ -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 +# 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 index 0000000000..2559e3a0e4 --- /dev/null +++ b/recipes/python/python-2.7.1/00-fix-bindir-libdir-for-cross.patch @@ -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 + +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 index 0000000000..6cf3cd4959 --- /dev/null +++ b/recipes/python/python-2.7.1/01-fix-have-long-long-format.patch @@ -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 index 0000000000..8420eb3967 --- /dev/null +++ b/recipes/python/python-2.7.1/01-use-proper-tools-for-cross-build.patch @@ -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 + +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 index 0000000000..ab5858c1bf --- /dev/null +++ b/recipes/python/python-2.7.1/02-remove-test-for-cross.patch @@ -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 +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 +-#include +-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 +-#include +-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 +-#include +-#include +- +-#ifdef HAVE_SYS_TYPES_H +-#include +-#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 index 0000000000..47274b3f9b --- /dev/null +++ b/recipes/python/python-2.7.1/03-fix-tkinter-detection.patch @@ -0,0 +1,40 @@ +# We need to supply STAGING_INCDIR here, otherwise the Tk headers +# will not be found. +# Signed-Off: Michael 'Mickey' Lauer + +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 index 0000000000..5131e0ba69 --- /dev/null +++ b/recipes/python/python-2.7.1/04-default-is-optimized.patch @@ -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 + +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 index 0000000000..c33dc9fbf2 --- /dev/null +++ b/recipes/python/python-2.7.1/05-enable-ctypes-cross-build.patch @@ -0,0 +1,28 @@ +# CTypes need to know the actual host we are building on. +# Signed-Off: Michael Dietrich + +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 index 0000000000..b5e59e6eb8 --- /dev/null +++ b/recipes/python/python-2.7.1/06-ctypes-libffi-fix-configure.patch @@ -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 index 0000000000..0e8695467b --- /dev/null +++ b/recipes/python/python-2.7.1/10-distutils-fix-swig-parameter.patch @@ -0,0 +1,16 @@ +# Some versions of SWIG do not use the extension parameter. +# Make it optional. +# Signed-Off: Michael 'Mickey' Lauer +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 index 0000000000..20f36059a8 --- /dev/null +++ b/recipes/python/python-2.7.1/11-distutils-never-modify-shebang-line.patch @@ -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 + +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 index 0000000000..afe420106d --- /dev/null +++ b/recipes/python/python-2.7.1/12-distutils-prefix-is-inside-staging-area.patch @@ -0,0 +1,60 @@ +# The proper prefix is inside our staging area. +# Signed-Off: Michael 'Mickey' Lauer + +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 index 0000000000..f068ecedaf --- /dev/null +++ b/recipes/python/python-2.7.1/99-ignore-optimization-flag.patch @@ -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 + +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 index 0000000000..c7f5081b35 --- /dev/null +++ b/recipes/python/python-2.7.1/debug.patch @@ -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 index 0000000000..6f33a49437 --- /dev/null +++ b/recipes/python/python-2.7.1/nohostlibs.patch @@ -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 index 0000000000..273901898a --- /dev/null +++ b/recipes/python/python-2.7.1/sitecustomize.py @@ -0,0 +1,45 @@ +# OpenEmbedded sitecustomize.py (C) 2002-2008 Michael 'Mickey' Lauer +# 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 index 0000000000..6f2bcb4be1 --- /dev/null +++ b/recipes/python/python-argparse_1.2.1.bb @@ -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 index 0000000000..63c86d94e9 --- /dev/null +++ b/recipes/python/python-caldav_0.1.6.bb @@ -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 index 0000000000..e3ecb1c089 --- /dev/null +++ b/recipes/python/python-cheetah_2.4.4.bb @@ -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 index 0000000000..966e265ffa --- /dev/null +++ b/recipes/python/python-cython_0.13.bb @@ -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 index 0000000000..7c6eebb4a1 --- /dev/null +++ b/recipes/python/python-dbus_0.83.2.bb @@ -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 index 0000000000..0dff6a8430 --- /dev/null +++ b/recipes/python/python-django_1.2.1.bb @@ -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 index 0000000000..93280f1fb4 --- /dev/null +++ b/recipes/python/python-lxml_2.2.6.bb @@ -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 index 0000000000..9eb927c2f0 --- /dev/null +++ b/recipes/python/python-lxml_2.2.8.bb @@ -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 index 0000000000..0a9e66e055 --- /dev/null +++ b/recipes/python/python-m2crypto_0.20.2.bb @@ -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 index 0000000000..2eef01d143 --- /dev/null +++ b/recipes/python/python-native_2.6.6.bb @@ -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 index 0000000000..c2a1cec55a --- /dev/null +++ b/recipes/python/python-native_2.7.1.bb @@ -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 index 0000000000..e8db972e4c --- /dev/null +++ b/recipes/python/python-numeric_24.2.bb @@ -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 index 0000000000..f4941cfb52 --- /dev/null +++ b/recipes/python/python-numpy_1.4.1.bb @@ -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 index 0000000000..8de36af002 --- /dev/null +++ b/recipes/python/python-oauth_1.0.1.bb @@ -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 index 0000000000..f30d30896b --- /dev/null +++ b/recipes/python/python-pybluez_0.18.bb @@ -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 index 0000000000..0730cf41c4 --- /dev/null +++ b/recipes/python/python-pygtksourceview_2.10.1.bb @@ -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 index 0000000000..ea4bbc2c77 --- /dev/null +++ b/recipes/python/python-pyopengl-accelerate_3.0.1.bb @@ -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 index 0000000000..08cc3c86f9 --- /dev/null +++ b/recipes/python/python-pyopengl_3.0.1.bb @@ -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 index 0000000000..15f83d23b0 --- /dev/null +++ b/recipes/python/python-pyqt-4.8.4/assistantclient-fix.patch @@ -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 ++#include + %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 index 0000000000..8f065a275a --- /dev/null +++ b/recipes/python/python-pyqt-4.8.4/debian_configure_changes.diff @@ -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 index 0000000000..e7a68829ad --- /dev/null +++ b/recipes/python/python-pyqt-4.8.4/fix_qthelp_ftbfs.diff @@ -0,0 +1,15 @@ +Description: Fix QtHelp FTBFS with ld --no-add-needed. +Author: Felix Geyer + +--- 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 index 0000000000..96e3062471 --- /dev/null +++ b/recipes/python/python-pyqt-4.8.4/fix_the_QAssitant_ftbfs.diff @@ -0,0 +1,29 @@ +From aa85ab2be6be7cb3c4df68139a8271fc4c8c11c8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?= +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 index 0000000000..7bb6468f94 --- /dev/null +++ b/recipes/python/python-pyqt-4.8.4/fix_uiparser_buttonbox.diff @@ -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 index 0000000000..abdf70fab0 --- /dev/null +++ b/recipes/python/python-pyqt-4.8.4/qreal_float_support.diff @@ -0,0 +1,248 @@ +## 03_qreal_float_support.dpatch by Michael Casadevall +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 > is implemented as a Python list of 2-element tuples. ++%MappedType QList > ++{ ++%TypeHeaderCode ++#include ++#include ++%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 &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 > *ql = new QList >; ++ 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(first, second)); ++ } ++ ++ *sipCppPtr = ql; ++ ++ return sipGetState(sipTransferObj); ++%End ++}; ++%End ++%If (Qt_4_3_0 -) ++// QList > is implemented as a Python list of 2-element tuples. ++template ++%MappedType QList > ++{ ++%TypeHeaderCode ++#include ++#include ++%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 &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 > *ql = new QList >; ++ 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(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(d, *t)); ++ ++ sipReleaseInstance(t, sipClass_TYPE, state); ++ } ++ ++ *sipCppPtr = ql; ++ ++ return sipGetState(sipTransferObj); ++%End ++}; ++%End ++ ++// QList is implemented as a Python list of doubles. ++%MappedType QList ++{ ++%TypeHeaderCode ++#include ++%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 *ql = new QList; ++ 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 index 0000000000..e0bdf0b169 --- /dev/null +++ b/recipes/python/python-pyqt_4.8.4.bb @@ -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 index 0000000000..a1f5bb29ba --- /dev/null +++ b/recipes/python/python-pyrex-0.9.8.5/pyrex-fix-optimized-mode.patch @@ -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 index 0000000000..bb2905ab3d --- /dev/null +++ b/recipes/python/python-pyxdg/desktopentry-cmp.patch @@ -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 index 0000000000..bede20377d --- /dev/null +++ b/recipes/python/python-setuptools_0.6c11.bb @@ -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 index 0000000000..0578486606 --- /dev/null +++ b/recipes/python/python-sip_4.12.2.bb @@ -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 index 0000000000..faa3b43ef4 --- /dev/null +++ b/recipes/python/python-wifi_0.5.0.bb @@ -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 index 0000000000..1ae218091b --- /dev/null +++ b/recipes/python/python-xmpppy_0.5.0rc1.bb @@ -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 index 0000000000..c5f58d0cc5 --- /dev/null +++ b/recipes/python/python2.7.inc @@ -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 index 0000000000..eacc5c2b96 --- /dev/null +++ b/recipes/python/python_2.6.6.bb @@ -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 index 0000000000..6346026e02 --- /dev/null +++ b/recipes/python/python_2.7.1.bb @@ -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" -- 2.39.5