summaryrefslogtreecommitdiff
path: root/recipes/python
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/python')
-rw-r--r--recipes/python/divmod.inc17
-rw-r--r--recipes/python/files/06-libffi-enable-default-mips.patch12
-rw-r--r--recipes/python/files/pyrex-fix-optimized-mode.patch13
-rw-r--r--recipes/python/fix-path.inc22
-rw-r--r--recipes/python/python-2.6-manifest.inc263
-rw-r--r--recipes/python/python-2.6.1/00-fix-bindir-libdir-for-cross.patch20
-rw-r--r--recipes/python/python-2.6.1/01-use-proper-tools-for-cross-build.patch116
-rw-r--r--recipes/python/python-2.6.1/02-remove-test-for-cross.patch94
-rw-r--r--recipes/python/python-2.6.1/03-fix-tkinter-detection.patch40
-rw-r--r--recipes/python/python-2.6.1/04-default-is-optimized.patch52
-rw-r--r--recipes/python/python-2.6.1/05-enable-ctypes-cross-build.patch28
-rw-r--r--recipes/python/python-2.6.1/99-ignore-optimization-flag.patch19
-rw-r--r--recipes/python/python-2.6.1/sitecustomize.py45
-rw-r--r--recipes/python/python-ao_0.82.bb19
-rw-r--r--recipes/python/python-cheetah_2.0.1.bb13
-rw-r--r--recipes/python/python-coherence_0.6.2.bb20
-rw-r--r--recipes/python/python-coherence_svn.bb25
-rw-r--r--recipes/python/python-configobj_4.5.3.bb10
-rw-r--r--recipes/python/python-connexion_svn.bb29
-rw-r--r--recipes/python/python-constraint_1.1.bb13
-rw-r--r--recipes/python/python-cython-native_0.10.3.bb10
-rw-r--r--recipes/python/python-cython_0.10.3.bb13
-rw-r--r--recipes/python/python-daap_0.7.1.bb12
-rw-r--r--recipes/python/python-dbus_0.83.0.bb22
-rw-r--r--recipes/python/python-dialog_2.7.bb11
-rw-r--r--recipes/python/python-divmodaxiom_0.5.30.bb8
-rw-r--r--recipes/python/python-divmodepsilon-native_0.5.11.bb11
-rw-r--r--recipes/python/python-divmodepsilon_0.5.11.bb7
-rw-r--r--recipes/python/python-django_1.0.2.bb28
-rw-r--r--recipes/python/python-docutils-native_0.5.bb8
-rw-r--r--recipes/python/python-docutils_0.5.bb10
-rw-r--r--recipes/python/python-dweba_0.9.9+1.0.0pre14.bb14
-rw-r--r--recipes/python/python-ecore_svn.bb7
-rw-r--r--recipes/python/python-edbus_svn.bb6
-rw-r--r--recipes/python/python-edje/0001-fix-unicode-conversion.patch41
-rw-r--r--recipes/python/python-edje_svn.bb5
-rw-r--r--recipes/python/python-efl.inc38
-rw-r--r--recipes/python/python-egenix-mx-base_3.1.1.bb19
-rw-r--r--recipes/python/python-elementary_svn.bb9
-rw-r--r--recipes/python/python-elementtree_1.2.7-20070827-preview.bb14
-rw-r--r--recipes/python/python-emotion_svn.bb3
-rw-r--r--recipes/python/python-epsilon_svn.bb4
-rw-r--r--recipes/python/python-etk_svn.bb9
-rw-r--r--recipes/python/python-evas_svn.bb6
-rw-r--r--recipes/python/python-fam_1.1.1.bb14
-rw-r--r--recipes/python/python-flup_1.0.1.bb11
-rw-r--r--recipes/python/python-fnorb_1.3.bb11
-rw-r--r--recipes/python/python-formencode_1.2.1.bb11
-rw-r--r--recipes/python/python-fpconst_0.7.2.bb15
-rw-r--r--recipes/python/python-fugrep_0.50.bb11
-rw-r--r--recipes/python/python-fuse_0.2.bb13
-rw-r--r--recipes/python/python-fusil_1.1.bb22
-rw-r--r--recipes/python/python-gammu_0.26.bb10
-rw-r--r--recipes/python/python-gdata_1.2.4.bb15
-rw-r--r--recipes/python/python-gmpy_1.0.1.bb12
-rw-r--r--recipes/python/python-gnosis_1.2.2.bb12
-rw-r--r--recipes/python/python-gst/import-gobject-instead-of-pygtk.patch19
-rw-r--r--recipes/python/python-gst/python-path.patch33
-rw-r--r--recipes/python/python-gst_0.10.10.bb35
-rw-r--r--recipes/python/python-imaging/path.patch37
-rw-r--r--recipes/python/python-imaging_1.1.6.bb30
-rw-r--r--recipes/python/python-imdbpy_3.9.bb14
-rw-r--r--recipes/python/python-inotify_0.1.0.bb10
-rw-r--r--recipes/python/python-irclib_0.4.6.bb11
-rw-r--r--recipes/python/python-libgmail_0.1.11.bb31
-rw-r--r--recipes/python/python-logilab-common/fix-future-in-setup.patch16
-rw-r--r--recipes/python/python-logilab-common_0.37.1.bb14
-rw-r--r--recipes/python/python-lxml/use-pkgconfig-to-detect.patch31
-rw-r--r--recipes/python/python-m2crypto/install.patch24
-rw-r--r--recipes/python/python-m2crypto_0.18.2.bb19
-rw-r--r--recipes/python/python-mad_0.6.bb21
-rw-r--r--recipes/python/python-mako_0.2.2.bb12
-rw-r--r--recipes/python/python-mysqldb/mysqlpath.patch19
-rw-r--r--recipes/python/python-mysqldb/site.patch22
-rw-r--r--recipes/python/python-mysqldb_1.2.1.bb20
-rw-r--r--recipes/python/python-native-2.6.1/00-fix-bindir-libdir-for-cross.patch20
-rw-r--r--recipes/python/python-native-2.6.1/04-default-is-optimized.patch18
-rw-r--r--recipes/python/python-native-2.6.1/10-distutils-fix-swig-parameter.patch16
-rw-r--r--recipes/python/python-native-2.6.1/11-distutils-never-modify-shebang-line.patch18
-rw-r--r--recipes/python/python-native-2.6.1/12-distutils-prefix-is-inside-staging-area.patch60
-rw-r--r--recipes/python/python-native-2.6.1/sitecustomize.py45
-rw-r--r--recipes/python/python-native_2.6.1.bb28
-rw-r--r--recipes/python/python-netfilter_0.5.5.bb12
-rw-r--r--recipes/python/python-nevow_0.9.32.bb10
-rw-r--r--recipes/python/python-numarray_1.1.1.bb13
-rw-r--r--recipes/python/python-numeric/no-lapack.patch33
-rw-r--r--recipes/python/python-numeric_23.7.bb16
-rw-r--r--recipes/python/python-numpy/arm/config.h21
-rw-r--r--recipes/python/python-numpy/arm/numpyconfig.h17
-rw-r--r--recipes/python/python-numpy/trycompile.diff33
-rw-r--r--recipes/python/python-numpy/unbreak-assumptions.diff16
-rw-r--r--recipes/python/python-numpy_1.1.1.bb27
-rw-r--r--recipes/python/python-ogg_1.3.bb24
-rw-r--r--recipes/python/python-opendir/opendir.pyx149
-rw-r--r--recipes/python/python-opendir/setup.py25
-rw-r--r--recipes/python/python-opendir_1.0.bb15
-rw-r--r--recipes/python/python-pexpect_2.3.bb20
-rw-r--r--recipes/python/python-psyco_1.6.bb14
-rw-r--r--recipes/python/python-ptrace_0.5.bb9
-rw-r--r--recipes/python/python-pyalsa_1.0.16.bb12
-rw-r--r--recipes/python/python-pyalsaaudio_0.4.bb12
-rw-r--r--recipes/python/python-pybluez_0.15.bb10
-rw-r--r--recipes/python/python-pycairo/fix-setup-py.patch24
-rw-r--r--recipes/python/python-pycairo_1.4.0.bb21
-rw-r--r--recipes/python/python-pycairo_1.8.0.bb24
-rw-r--r--recipes/python/python-pycap_0.1.6.bb12
-rw-r--r--recipes/python/python-pychecker_0.8.18.bb12
-rw-r--r--recipes/python/python-pycodes/no-docs.patch18
-rw-r--r--recipes/python/python-pycodes_1.2.bb14
-rw-r--r--recipes/python/python-pycrypto_2.0.1.bb12
-rw-r--r--recipes/python/python-pycrypto_git.bb13
-rw-r--r--recipes/python/python-pycurl/no-static-link.patch14
-rw-r--r--recipes/python/python-pycurl_7.18.2.bb17
-rw-r--r--recipes/python/python-pydirectfb/fix-directfb-detection.patch16
-rw-r--r--recipes/python/python-pyephem_3.7.3.3.bb11
-rw-r--r--recipes/python/python-pyfits_1.3.bb12
-rw-r--r--recipes/python/python-pyflakes_0.3.0.bb12
-rw-r--r--recipes/python/python-pyftpdlib_0.5.1.bb12
-rw-r--r--recipes/python/python-pygame-1.8.1/Setup63
-rw-r--r--recipes/python/python-pygame_1.8.1.bb30
-rw-r--r--recipes/python/python-pygobject-native_2.14.2.bb16
-rw-r--r--recipes/python/python-pygobject-native_2.16.0.bb18
-rw-r--r--recipes/python/python-pygobject/generate-constants.patch18
-rw-r--r--recipes/python/python-pygobject/python-path.patch46
-rw-r--r--recipes/python/python-pygobject_2.14.2.bb32
-rw-r--r--recipes/python/python-pygobject_2.16.0.bb38
-rw-r--r--recipes/python/python-pygoogle_0.6.bb16
-rw-r--r--recipes/python/python-pygtk-1.2/acinclude.m490
-rw-r--r--recipes/python/python-pygtk-1.2/remove-imlib-et-al.patch31
-rw-r--r--recipes/python/python-pygtk-1.2_0.6.12.bb25
-rw-r--r--recipes/python/python-pygtk/acinclude.m490
-rw-r--r--recipes/python/python-pygtk/fix-gtkunixprint.patch16
-rw-r--r--recipes/python/python-pygtk/nodocs.patch13
-rw-r--r--recipes/python/python-pygtk/prevent_to_get_display_during_import.patch18
-rw-r--r--recipes/python/python-pygtk_2.10.4.bb64
-rw-r--r--recipes/python/python-pygtk_2.6.3.bb34
-rw-r--r--recipes/python/python-pygtk_2.8.6.bb27
-rw-r--r--recipes/python/python-pyid3lib_0.5.1.bb14
-rw-r--r--recipes/python/python-pyiw-0.3.3/Makefile18
-rw-r--r--recipes/python/python-pylinda/honor-datadir.patch15
-rw-r--r--recipes/python/python-pylinda_0.6.bb15
-rw-r--r--recipes/python/python-pylint_0.15.2.bb16
-rw-r--r--recipes/python/python-pylirc_0.0.5.bb11
-rw-r--r--recipes/python/python-pymetar_0.14.bb11
-rw-r--r--recipes/python/python-pymp3_0.3.4.bb29
-rw-r--r--recipes/python/python-pyode/install.patch16
-rw-r--r--recipes/python/python-pyode_1.2.0.bb19
-rw-r--r--recipes/python/python-pyopenssl_0.8.bb15
-rw-r--r--recipes/python/python-pyqt/01_configure.dpatch288
-rw-r--r--recipes/python/python-pyqt/02_htmllinks.dpatch18
-rw-r--r--recipes/python/python-pyqt/03_qreal.dpatch18
-rw-r--r--recipes/python/python-pyqt/04_qreal_api_fixes-for-4.4.3.dpatch260
-rw-r--r--recipes/python/python-pyqt/04_qreal_api_fixes.dpatch259
-rw-r--r--recipes/python/python-pyqt/assistantclient-fix.patch13
-rw-r--r--recipes/python/python-pyqt/cross-compile.patch33
-rw-r--r--recipes/python/python-pyqt_4.4.3.bb73
-rw-r--r--recipes/python/python-pyrad_1.1.bb12
-rw-r--r--recipes/python/python-pyraf_1.7.bb14
-rw-r--r--recipes/python/python-pyreverse/fix-future.patch16
-rw-r--r--recipes/python/python-pyrex-native_0.9.8.5.bb10
-rw-r--r--recipes/python/python-pyrex_0.9.8.5.bb16
-rw-r--r--recipes/python/python-pyro/pyro-unattended-install.patch16
-rw-r--r--recipes/python/python-pyro_3.8.1.bb31
-rw-r--r--recipes/python/python-pyrtc_git.bb16
-rw-r--r--recipes/python/python-pyserial_2.4.bb19
-rw-r--r--recipes/python/python-pysqlite2/fix-setup.patch9
-rw-r--r--recipes/python/python-pysqlite2_2.4.0.bb32
-rw-r--r--recipes/python/python-pytester_0.6.0.bb14
-rw-r--r--recipes/python/python-pyusb_0.4.1.bb12
-rw-r--r--recipes/python/python-pyvisa_1.3.bb15
-rw-r--r--recipes/python/python-pyweather_0.7.0.bb12
-rw-r--r--recipes/python/python-pyxdg_0.15.bb9
-rw-r--r--recipes/python/python-pyxml_0.8.4.bb14
-rw-r--r--recipes/python/python-pyxmlrpc_0.8.8.3.bb11
-rw-r--r--recipes/python/python-pyyaml/setup.py64
-rw-r--r--recipes/python/python-pyyaml_svn.bb20
-rw-r--r--recipes/python/python-pyzeroconf_0.12.bb18
-rw-r--r--recipes/python/python-rpyc_3.02.bb11
-rw-r--r--recipes/python/python-scapy_2.0.0.9.bb20
-rw-r--r--recipes/python/python-scons-native_1.2.0.bb14
-rw-r--r--recipes/python/python-scons_1.2.0.bb10
-rw-r--r--recipes/python/python-setuptools-native_0.6c9.bb9
-rw-r--r--recipes/python/python-setuptools/fix-log-usage.patch13
-rw-r--r--recipes/python/python-setuptools_0.6c9.bb25
-rw-r--r--recipes/python/python-sgmlop_1.1.bb10
-rw-r--r--recipes/python/python-simplejson_2.0.7.bb20
-rw-r--r--recipes/python/python-sip.inc42
-rw-r--r--recipes/python/python-sip_4.7.9.bb2
-rw-r--r--recipes/python/python-soappy/fix-future.patch54
-rw-r--r--recipes/python/python-soappy/fpconst.py111
-rw-r--r--recipes/python/python-soappy_0.11.6.bb19
-rw-r--r--recipes/python/python-sphinx_0.5.1.bb9
-rw-r--r--recipes/python/python-sphinxsearch_0.1.bb12
-rw-r--r--recipes/python/python-spydi_0.9.7.bb14
-rw-r--r--recipes/python/python-sqlalchemy_0.5.0.bb13
-rw-r--r--recipes/python/python-sqlobject_0.10.4.bb16
-rw-r--r--recipes/python/python-tlslite_0.3.8.bb14
-rw-r--r--recipes/python/python-traits_3.0.3.bb18
-rw-r--r--recipes/python/python-twisted-2.5.0/remove-zope-check.patch18
-rw-r--r--recipes/python/python-twisted-native_8.2.0.bb9
-rw-r--r--recipes/python/python-twisted_2.5.0.bb197
-rw-r--r--recipes/python/python-twisted_8.2.0.bb212
-rw-r--r--recipes/python/python-vorbis/disable-oggcheck.patch16
-rw-r--r--recipes/python/python-vorbis_1.4.bb23
-rw-r--r--recipes/python/python-webpy_0.31.bb17
-rw-r--r--recipes/python/python-xappy_0.5.bb15
-rw-r--r--recipes/python/python-xlib_0.14.bb10
-rw-r--r--recipes/python/python.inc23
-rw-r--r--recipes/python/python_2.6.1.bb117
209 files changed, 6016 insertions, 0 deletions
diff --git a/recipes/python/divmod.inc b/recipes/python/divmod.inc
new file mode 100644
index 0000000000..20be1b2e38
--- /dev/null
+++ b/recipes/python/divmod.inc
@@ -0,0 +1,17 @@
+SRC_URI = "http://divmod.org/trac/attachment/wiki/SoftwareReleases/${REALPN}-${PV}.tar.gz?format=raw"
+
+DEPENDS += "python-twisted-native"
+
+do_unpack2() {
+ cd ${WORKDIR}
+ tar zxvf ${REALPN}-${PV}.tar.gz?format=raw
+}
+
+addtask unpack2 after do_unpack before do_configure
+
+inherit distutils
+
+S = "${WORKDIR}/${REALPN}-${PV}"
+
+
+
diff --git a/recipes/python/files/06-libffi-enable-default-mips.patch b/recipes/python/files/06-libffi-enable-default-mips.patch
new file mode 100644
index 0000000000..b01f0c751d
--- /dev/null
+++ b/recipes/python/files/06-libffi-enable-default-mips.patch
@@ -0,0 +1,12 @@
+Index: Python-2.6.1/Modules/_ctypes/libffi/fficonfig.py.in
+===================================================================
+--- Python-2.6.1.orig/Modules/_ctypes/libffi/fficonfig.py.in
++++ Python-2.6.1/Modules/_ctypes/libffi/fficonfig.py.in
+@@ -5,6 +5,7 @@ src/prep_cif.c
+ ffi_platforms = {
+ 'MIPS_IRIX': ['src/mips/ffi.c', 'src/mips/o32.S', 'src/mips/n32.S'],
+ 'MIPS_LINUX': ['src/mips/ffi.c', 'src/mips/o32.S'],
++ 'MIPS': ['src/mips/ffi.c', 'src/mips/o32.S'],
+ 'X86': ['src/x86/ffi.c', 'src/x86/sysv.S'],
+ 'X86_FREEBSD': ['src/x86/ffi.c', 'src/x86/sysv.S'],
+ 'X86_WIN32': ['src/x86/ffi.c', 'src/x86/win32.S'],
diff --git a/recipes/python/files/pyrex-fix-optimized-mode.patch b/recipes/python/files/pyrex-fix-optimized-mode.patch
new file mode 100644
index 0000000000..a1f5bb29ba
--- /dev/null
+++ b/recipes/python/files/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/fix-path.inc b/recipes/python/fix-path.inc
new file mode 100644
index 0000000000..0738c59ada
--- /dev/null
+++ b/recipes/python/fix-path.inc
@@ -0,0 +1,22 @@
+do_install_append() {
+ for i in `find ${D} -name "*.py"` ; do \
+ sed -i -e s:${D}::g $i
+ done
+
+ for i in `find ${D} -name "*.la"` ; do \
+ sed -i -e s:${STAGING_LIBDIR}:${libdir}:g $i
+ done
+
+ if test -e ${D}${bindir} ; then
+ for i in ${D}${bindir}/* ; do \
+ sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
+ done
+ fi
+
+ if test -e ${D}${sbindir} ; then
+ for i in ${D}${sbindir}/* ; do \
+ sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
+ done
+ fi
+}
+
diff --git a/recipes/python/python-2.6-manifest.inc b/recipes/python/python-2.6-manifest.inc
new file mode 100644
index 0000000000..b8b8d1c27c
--- /dev/null
+++ b/recipes/python/python-2.6-manifest.inc
@@ -0,0 +1,263 @@
+# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file.
+# Generator: '../org.openembedded.dev/contrib/python/generate-manifest-2.6.py' Version 20081214 (C) 2002-2008 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
+# Visit the Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy
+
+
+
+PROVIDES+="python-profile python-threading python-distutils python-doctest python-codecs python-ctypes python-pickle python-bzip2 python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-tests python-core-dbg python-resource python-devel 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-curses 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-stringold python-robotparser python-compile python-debugger python-pkgutil python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio "
+
+PACKAGES="python-profile python-threading python-distutils python-doctest python-codecs python-ctypes python-pickle python-bzip2 python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-tests python-core-dbg python-resource python-devel 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-curses 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-stringold python-robotparser python-compile python-debugger python-pkgutil python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio python-modules"
+
+DESCRIPTION_python-profile="Python Basic Profiling Support"
+RDEPENDS_python-profile="python-core python-textutils"
+FILES_python-profile="${libdir}/python2.6/profile.* ${libdir}/python2.6/pstats.* ${libdir}/python2.6/cProfile.* ${libdir}/python2.6/lib-dynload/_lsprof.so "
+
+DESCRIPTION_python-threading="Python Threading & Synchronization Support"
+RDEPENDS_python-threading="python-core python-lang"
+FILES_python-threading="${libdir}/python2.6/_threading_local.* ${libdir}/python2.6/dummy_thread.* ${libdir}/python2.6/dummy_threading.* ${libdir}/python2.6/mutex.* ${libdir}/python2.6/threading.* ${libdir}/python2.6/Queue.* "
+
+DESCRIPTION_python-distutils="Python Distribution Utilities"
+RDEPENDS_python-distutils="python-core"
+FILES_python-distutils="${libdir}/python2.6/config ${libdir}/python2.6/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.6/doctest.* "
+
+DESCRIPTION_python-codecs="Python Codecs, Encodings & i18n Support"
+RDEPENDS_python-codecs="python-core python-lang"
+FILES_python-codecs="${libdir}/python2.6/codecs.* ${libdir}/python2.6/encodings ${libdir}/python2.6/gettext.* ${libdir}/python2.6/locale.* ${libdir}/python2.6/lib-dynload/_locale.so ${libdir}/python2.6/lib-dynload/unicodedata.so ${libdir}/python2.6/stringprep.* ${libdir}/python2.6/xdrlib.* "
+
+DESCRIPTION_python-ctypes="Python C Types Support"
+RDEPENDS_python-ctypes="python-core"
+FILES_python-ctypes="${libdir}/python2.6/ctypes ${libdir}/python2.6/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.6/pickle.* ${libdir}/python2.6/shelve.* ${libdir}/python2.6/lib-dynload/cPickle.so "
+
+DESCRIPTION_python-bzip2="Python bzip2 support"
+RDEPENDS_python-bzip2="python-core"
+FILES_python-bzip2="${libdir}/python2.6/lib-dynload/bz2.so "
+
+DESCRIPTION_python-datetime="Python Calendar and Time support"
+RDEPENDS_python-datetime="python-core python-codecs"
+FILES_python-datetime="${libdir}/python2.6/_strptime.* ${libdir}/python2.6/calendar.* ${libdir}/python2.6/lib-dynload/datetime.so "
+
+DESCRIPTION_python-core="Python Interpreter and core modules (needed!)"
+RDEPENDS_python-core=""
+FILES_python-core="${libdir}/python2.6/__future__.* ${libdir}/python2.6/_abcoll.* ${libdir}/python2.6/abc.* ${libdir}/python2.6/copy.* ${libdir}/python2.6/copy_reg.* ${libdir}/python2.6/ConfigParser.* ${libdir}/python2.6/genericpath.* ${libdir}/python2.6/getopt.* ${libdir}/python2.6/linecache.* ${libdir}/python2.6/new.* ${libdir}/python2.6/os.* ${libdir}/python2.6/posixpath.* ${libdir}/python2.6/struct.* ${libdir}/python2.6/warnings.* ${libdir}/python2.6/site.* ${libdir}/python2.6/stat.* ${libdir}/python2.6/UserDict.* ${libdir}/python2.6/UserList.* ${libdir}/python2.6/UserString.* ${libdir}/python2.6/lib-dynload/binascii.so ${libdir}/python2.6/lib-dynload/_struct.so ${libdir}/python2.6/lib-dynload/time.so ${libdir}/python2.6/lib-dynload/xreadlines.so ${libdir}/python2.6/types.* ${bindir}/python* "
+
+DESCRIPTION_python-io="Python Low-Level I/O"
+RDEPENDS_python-io="python-core python-math"
+FILES_python-io="${libdir}/python2.6/lib-dynload/_socket.so ${libdir}/python2.6/lib-dynload/_ssl.so ${libdir}/python2.6/lib-dynload/select.so ${libdir}/python2.6/lib-dynload/termios.so ${libdir}/python2.6/lib-dynload/cStringIO.so ${libdir}/python2.6/pipes.* ${libdir}/python2.6/socket.* ${libdir}/python2.6/tempfile.* ${libdir}/python2.6/StringIO.* "
+
+DESCRIPTION_python-compiler="Python Compiler Support"
+RDEPENDS_python-compiler="python-core"
+FILES_python-compiler="${libdir}/python2.6/compiler "
+
+DESCRIPTION_python-compression="Python High Level Compression Support"
+RDEPENDS_python-compression="python-core python-zlib"
+FILES_python-compression="${libdir}/python2.6/gzip.* ${libdir}/python2.6/zipfile.* ${libdir}/python2.6/tarfile.* "
+
+DESCRIPTION_python-re="Python Regular Expression APIs"
+RDEPENDS_python-re="python-core"
+FILES_python-re="${libdir}/python2.6/re.* ${libdir}/python2.6/sre.* ${libdir}/python2.6/sre_compile.* ${libdir}/python2.6/sre_constants* ${libdir}/python2.6/sre_parse.* "
+
+DESCRIPTION_python-xmlrpc="Python XMLRPC Support"
+RDEPENDS_python-xmlrpc="python-core python-xml python-netserver python-lang"
+FILES_python-xmlrpc="${libdir}/python2.6/xmlrpclib.* ${libdir}/python2.6/SimpleXMLRPCServer.* "
+
+DESCRIPTION_python-terminal="Python Terminal Controlling Support"
+RDEPENDS_python-terminal="python-core python-io"
+FILES_python-terminal="${libdir}/python2.6/pty.* ${libdir}/python2.6/tty.* "
+
+DESCRIPTION_python-email="Python Email Support"
+RDEPENDS_python-email="python-core python-io python-re python-mime python-audio python-image"
+FILES_python-email="${libdir}/python2.6/email "
+
+DESCRIPTION_python-image="Python Graphical Image Handling"
+RDEPENDS_python-image="python-core"
+FILES_python-image="${libdir}/python2.6/colorsys.* ${libdir}/python2.6/imghdr.* ${libdir}/python2.6/lib-dynload/imageop.so ${libdir}/python2.6/lib-dynload/rgbimg.so "
+
+DESCRIPTION_python-tests="Python Tests"
+RDEPENDS_python-tests="python-core"
+FILES_python-tests="${libdir}/python2.6/test "
+
+DESCRIPTION_python-core-dbg="Python core module debug information"
+RDEPENDS_python-core-dbg="python-core"
+FILES_python-core-dbg="${libdir}/python2.6/lib-dynload/.debug ${bindir}/.debug ${libdir}/.debug "
+
+DESCRIPTION_python-resource="Python Resource Control Interface"
+RDEPENDS_python-resource="python-core"
+FILES_python-resource="${libdir}/python2.6/lib-dynload/resource.so "
+
+DESCRIPTION_python-devel="Python Development Package"
+RDEPENDS_python-devel="python-core"
+FILES_python-devel="${includedir} ${libdir}/python2.6/config "
+
+DESCRIPTION_python-difflib="Python helpers for computing deltas between objects."
+RDEPENDS_python-difflib="python-lang python-re"
+FILES_python-difflib="${libdir}/python2.6/difflib.* "
+
+DESCRIPTION_python-math="Python Math Support"
+RDEPENDS_python-math="python-core"
+FILES_python-math="${libdir}/python2.6/lib-dynload/cmath.so ${libdir}/python2.6/lib-dynload/math.so ${libdir}/python2.6/lib-dynload/_random.so ${libdir}/python2.6/random.* ${libdir}/python2.6/sets.* "
+
+DESCRIPTION_python-syslog="Python's Syslog Interface"
+RDEPENDS_python-syslog="python-core"
+FILES_python-syslog="${libdir}/python2.6/lib-dynload/syslog.so "
+
+DESCRIPTION_python-hotshot="Python Hotshot Profiler"
+RDEPENDS_python-hotshot="python-core"
+FILES_python-hotshot="${libdir}/python2.6/hotshot ${libdir}/python2.6/lib-dynload/_hotshot.so "
+
+DESCRIPTION_python-unixadmin="Python Unix Administration Support"
+RDEPENDS_python-unixadmin="python-core"
+FILES_python-unixadmin="${libdir}/python2.6/lib-dynload/nis.so ${libdir}/python2.6/lib-dynload/grp.so ${libdir}/python2.6/lib-dynload/pwd.so ${libdir}/python2.6/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.6/lib-dynload/_csv.so ${libdir}/python2.6/csv.* ${libdir}/python2.6/optparse.* ${libdir}/python2.6/textwrap.* "
+
+DESCRIPTION_python-tkinter="Python Tcl/Tk Bindings"
+RDEPENDS_python-tkinter="python-core"
+FILES_python-tkinter="${libdir}/python2.6/lib-dynload/_tkinter.so ${libdir}/python2.6/lib-tk "
+
+DESCRIPTION_python-gdbm="Python GNU Database Support"
+RDEPENDS_python-gdbm="python-core"
+FILES_python-gdbm="${libdir}/python2.6/lib-dynload/gdbm.so "
+
+DESCRIPTION_python-elementtree="Python elementree"
+RDEPENDS_python-elementtree="python-core"
+FILES_python-elementtree="${libdir}/python2.6/lib-dynload/_elementtree.so "
+
+DESCRIPTION_python-fcntl="Python's fcntl Interface"
+RDEPENDS_python-fcntl="python-core"
+FILES_python-fcntl="${libdir}/python2.6/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.6/*Cookie*.* ${libdir}/python2.6/base64.* ${libdir}/python2.6/cookielib.* ${libdir}/python2.6/ftplib.* ${libdir}/python2.6/gopherlib.* ${libdir}/python2.6/hmac.* ${libdir}/python2.6/httplib.* ${libdir}/python2.6/mimetypes.* ${libdir}/python2.6/nntplib.* ${libdir}/python2.6/poplib.* ${libdir}/python2.6/smtplib.* ${libdir}/python2.6/telnetlib.* ${libdir}/python2.6/urllib.* ${libdir}/python2.6/urllib2.* ${libdir}/python2.6/urlparse.* ${libdir}/python2.6/uuid.* "
+
+DESCRIPTION_python-pprint="Python Pretty-Print Support"
+RDEPENDS_python-pprint="python-core"
+FILES_python-pprint="${libdir}/python2.6/pprint.* "
+
+DESCRIPTION_python-netserver="Python Internet Protocol Servers"
+RDEPENDS_python-netserver="python-core python-netclient"
+FILES_python-netserver="${libdir}/python2.6/cgi.* ${libdir}/python2.6/BaseHTTPServer.* ${libdir}/python2.6/SimpleHTTPServer.* ${libdir}/python2.6/SocketServer.* "
+
+DESCRIPTION_python-curses="Python Curses Support"
+RDEPENDS_python-curses="python-core"
+FILES_python-curses="${libdir}/python2.6/curses ${libdir}/python2.6/lib-dynload/_curses.so ${libdir}/python2.6/lib-dynload/_curses_panel.so "
+
+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.6/formatter.* ${libdir}/python2.6/htmlentitydefs.* ${libdir}/python2.6/htmllib.* ${libdir}/python2.6/markupbase.* ${libdir}/python2.6/sgmllib.* "
+
+DESCRIPTION_python-readline="Python Readline Support"
+RDEPENDS_python-readline="python-core"
+FILES_python-readline="${libdir}/python2.6/lib-dynload/readline.so ${libdir}/python2.6/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.6/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.6/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.6/logging "
+
+DESCRIPTION_python-mailbox="Python Mailbox Format Support"
+RDEPENDS_python-mailbox="python-core python-mime"
+FILES_python-mailbox="${libdir}/python2.6/mailbox.* "
+
+DESCRIPTION_python-xml="Python basic XML support."
+RDEPENDS_python-xml="python-core python-re"
+FILES_python-xml="${libdir}/python2.6/lib-dynload/pyexpat.so ${libdir}/python2.6/xml ${libdir}/python2.6/xmllib.* "
+
+DESCRIPTION_python-mime="Python MIME Handling APIs"
+RDEPENDS_python-mime="python-core python-io"
+FILES_python-mime="${libdir}/python2.6/mimetools.* ${libdir}/python2.6/uu.* ${libdir}/python2.6/quopri.* ${libdir}/python2.6/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.6/lib-dynload/_sqlite3.so ${libdir}/python2.6/sqlite3/dbapi2.* ${libdir}/python2.6/sqlite3/__init__.* "
+
+DESCRIPTION_python-sqlite3-tests="Python Sqlite3 Database Support Tests"
+RDEPENDS_python-sqlite3-tests="python-core python-sqlite3"
+FILES_python-sqlite3-tests="${libdir}/python2.6/sqlite3/test "
+
+DESCRIPTION_python-unittest="Python Unit Testing Framework"
+RDEPENDS_python-unittest="python-core python-stringold python-lang"
+FILES_python-unittest="${libdir}/python2.6/unittest.* "
+
+DESCRIPTION_python-stringold="Python String APIs [deprecated]"
+RDEPENDS_python-stringold="python-core python-re"
+FILES_python-stringold="${libdir}/python2.6/lib-dynload/strop.so ${libdir}/python2.6/string.* "
+
+DESCRIPTION_python-robotparser="Python robots.txt parser"
+RDEPENDS_python-robotparser="python-core python-netclient"
+FILES_python-robotparser="${libdir}/python2.6/robotparser.* "
+
+DESCRIPTION_python-compile="Python Bytecode Compilation Support"
+RDEPENDS_python-compile="python-core"
+FILES_python-compile="${libdir}/python2.6/py_compile.* ${libdir}/python2.6/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.6/bdb.* ${libdir}/python2.6/pdb.* "
+
+DESCRIPTION_python-pkgutil="Python Package Extension Utility Support"
+RDEPENDS_python-pkgutil="python-core"
+FILES_python-pkgutil="${libdir}/python2.6/pkgutil.* "
+
+DESCRIPTION_python-shell="Python Shell-Like Functionality"
+RDEPENDS_python-shell="python-core python-re"
+FILES_python-shell="${libdir}/python2.6/cmd.* ${libdir}/python2.6/commands.* ${libdir}/python2.6/dircache.* ${libdir}/python2.6/fnmatch.* ${libdir}/python2.6/glob.* ${libdir}/python2.6/popen2.* ${libdir}/python2.6/shlex.* ${libdir}/python2.6/shutil.* "
+
+DESCRIPTION_python-bsddb="Python Berkeley Database Bindings"
+RDEPENDS_python-bsddb="python-core"
+FILES_python-bsddb="${libdir}/python2.6/bsddb ${libdir}/python2.6/lib-dynload/_bsddb.so "
+
+DESCRIPTION_python-mmap="Python Memory-Mapped-File Support"
+RDEPENDS_python-mmap="python-core python-io"
+FILES_python-mmap="${libdir}/python2.6/lib-dynload/mmap.so "
+
+DESCRIPTION_python-zlib="Python zlib Support."
+RDEPENDS_python-zlib="python-core"
+FILES_python-zlib="${libdir}/python2.6/lib-dynload/zlib.so "
+
+DESCRIPTION_python-db="Python File-Based Database Support"
+RDEPENDS_python-db="python-core"
+FILES_python-db="${libdir}/python2.6/anydbm.* ${libdir}/python2.6/dumbdbm.* ${libdir}/python2.6/whichdb.* "
+
+DESCRIPTION_python-crypt="Python Basic Cryptographic and Hashing Support"
+RDEPENDS_python-crypt="python-core"
+FILES_python-crypt="${libdir}/python2.6/hashlib.* ${libdir}/python2.6/md5.* ${libdir}/python2.6/sha.* ${libdir}/python2.6/lib-dynload/crypt.so ${libdir}/python2.6/lib-dynload/_hashlib.so ${libdir}/python2.6/lib-dynload/_sha256.so ${libdir}/python2.6/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.6/idlelib "
+
+DESCRIPTION_python-lang="Python Low-Level Language Support"
+RDEPENDS_python-lang="python-core"
+FILES_python-lang="${libdir}/python2.6/lib-dynload/_bisect.so ${libdir}/python2.6/lib-dynload/_collections.so ${libdir}/python2.6/lib-dynload/_heapq.so ${libdir}/python2.6/lib-dynload/_weakref.so ${libdir}/python2.6/lib-dynload/_functools.so ${libdir}/python2.6/lib-dynload/array.so ${libdir}/python2.6/lib-dynload/itertools.so ${libdir}/python2.6/lib-dynload/operator.so ${libdir}/python2.6/lib-dynload/parser.so ${libdir}/python2.6/atexit.* ${libdir}/python2.6/bisect.* ${libdir}/python2.6/code.* ${libdir}/python2.6/codeop.* ${libdir}/python2.6/collections.* ${libdir}/python2.6/dis.* ${libdir}/python2.6/functools.* ${libdir}/python2.6/heapq.* ${libdir}/python2.6/inspect.* ${libdir}/python2.6/keyword.* ${libdir}/python2.6/opcode.* ${libdir}/python2.6/symbol.* ${libdir}/python2.6/repr.* ${libdir}/python2.6/token.* ${libdir}/python2.6/tokenize.* ${libdir}/python2.6/traceback.* ${libdir}/python2.6/linecache.* ${libdir}/python2.6/weakref.* "
+
+DESCRIPTION_python-audio="Python Audio Handling"
+RDEPENDS_python-audio="python-core"
+FILES_python-audio="${libdir}/python2.6/wave.* ${libdir}/python2.6/chunk.* ${libdir}/python2.6/sndhdr.* ${libdir}/python2.6/lib-dynload/ossaudiodev.so ${libdir}/python2.6/lib-dynload/audioop.so "
+
+DESCRIPTION_python-modules="All Python modules"
+RDEPENDS_python-modules="python-profile python-threading python-distutils python-doctest python-codecs python-ctypes python-pickle python-bzip2 python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-tests python-resource python-devel 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-curses 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-stringold python-robotparser python-compile python-debugger python-pkgutil python-shell python-bsddb 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.6.1/00-fix-bindir-libdir-for-cross.patch b/recipes/python/python-2.6.1/00-fix-bindir-libdir-for-cross.patch
new file mode 100644
index 0000000000..2559e3a0e4
--- /dev/null
+++ b/recipes/python/python-2.6.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 <mickey@vanille-media.de>
+
+Index: Python-2.6.1/Makefile.pre.in
+===================================================================
+--- Python-2.6.1.orig/Makefile.pre.in
++++ Python-2.6.1/Makefile.pre.in
+@@ -86,8 +86,8 @@ exec_prefix= @exec_prefix@
+ datarootdir= @datarootdir@
+
+ # Expanded directories
+-BINDIR= $(exec_prefix)/bin
+-LIBDIR= $(exec_prefix)/lib
++BINDIR= @bindir@
++LIBDIR= @libdir@
+ MANDIR= @mandir@
+ INCLUDEDIR= @includedir@
+ CONFINCLUDEDIR= $(exec_prefix)/include
diff --git a/recipes/python/python-2.6.1/01-use-proper-tools-for-cross-build.patch b/recipes/python/python-2.6.1/01-use-proper-tools-for-cross-build.patch
new file mode 100644
index 0000000000..e89faa4fb0
--- /dev/null
+++ b/recipes/python/python-2.6.1/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 <mickey@vanille-media.de>
+
+Index: Python-2.6.1/Makefile.pre.in
+===================================================================
+--- Python-2.6.1.orig/Makefile.pre.in
++++ Python-2.6.1/Makefile.pre.in
+@@ -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)' 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
+@@ -513,7 +514,7 @@ Modules/python.o: $(srcdir)/Modules/pyth
+
+ $(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
+ -@$(INSTALL) -d Include
+- -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
++ -$(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
+
+ $(PGEN): $(PGENOBJS)
+ $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
+@@ -879,23 +880,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):
+@@ -993,7 +994,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.1/setup.py
+===================================================================
+--- Python-2.6.1.orig/setup.py
++++ Python-2.6.1/setup.py
+@@ -276,6 +276,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
+@@ -310,8 +311,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.
+@@ -410,6 +411,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.1/02-remove-test-for-cross.patch b/recipes/python/python-2.6.1/02-remove-test-for-cross.patch
new file mode 100644
index 0000000000..48386ea462
--- /dev/null
+++ b/recipes/python/python-2.6.1/02-remove-test-for-cross.patch
@@ -0,0 +1,94 @@
+# OpenEmbedded prepopulates the autotools site cache, so if this
+# would be using AC_TRY_CACHE, we could patch it in a more sane way
+# Alas, I don't have enough autotalent to do that.
+#
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+Index: Python-2.6.1/configure.in
+===================================================================
+--- Python-2.6.1.orig/configure.in
++++ Python-2.6.1/configure.in
+@@ -2556,38 +2556,6 @@ AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_
+ AC_CHECK_LIB(resolv, inet_aton)
+ )
+
+-# On Tru64, chflags seems to be present, but calling it will
+-# exit Python
+-AC_MSG_CHECKING(for chflags)
+-AC_TRY_RUN([
+-#include <sys/stat.h>
+-#include <unistd.h>
+-int main(int argc, char*argv[])
+-{
+- if(chflags(argv[0], 0) != 0)
+- return 1;
+- return 0;
+-}
+-],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
+- AC_MSG_RESULT(yes),
+- AC_MSG_RESULT(no)
+-)
+-
+-AC_MSG_CHECKING(for lchflags)
+-AC_TRY_RUN([
+-#include <sys/stat.h>
+-#include <unistd.h>
+-int main(int argc, char*argv[])
+-{
+- if(lchflags(argv[0], 0) != 0)
+- return 1;
+- return 0;
+-}
+-],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
+- AC_MSG_RESULT(yes),
+- AC_MSG_RESULT(no)
+-)
+-
+ dnl Check if system zlib has *Copy() functions
+ dnl
+ dnl On MacOSX the linker will search for dylibs on the entire linker path
+@@ -3649,45 +3617,6 @@ else
+ AC_MSG_RESULT(no)
+ fi
+
+-AC_MSG_CHECKING(for %zd printf() format support)
+-AC_TRY_RUN([#include <stdio.h>
+-#include <stddef.h>
+-#include <string.h>
+-
+-#ifdef HAVE_SYS_TYPES_H
+-#include <sys/types.h>
+-#endif
+-
+-#ifdef HAVE_SSIZE_T
+-typedef ssize_t Py_ssize_t;
+-#elif SIZEOF_VOID_P == SIZEOF_LONG
+-typedef long Py_ssize_t;
+-#else
+-typedef int Py_ssize_t;
+-#endif
+-
+-int main()
+-{
+- char buffer[256];
+-
+- if(sprintf(buffer, "%zd", (size_t)123) < 0)
+- return 1;
+-
+- if (strcmp(buffer, "123"))
+- return 1;
+-
+- if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
+- return 1;
+-
+- if (strcmp(buffer, "-123"))
+- return 1;
+-
+- return 0;
+-}],
+-[AC_MSG_RESULT(yes)
+- AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
+- AC_MSG_RESULT(no))
+-
+ AC_CHECK_TYPE(socklen_t,,
+ AC_DEFINE(socklen_t,int,
+ Define to `int' if <sys/socket.h> does not define.),[
diff --git a/recipes/python/python-2.6.1/03-fix-tkinter-detection.patch b/recipes/python/python-2.6.1/03-fix-tkinter-detection.patch
new file mode 100644
index 0000000000..a1a385a07c
--- /dev/null
+++ b/recipes/python/python-2.6.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 <mickey@vanille.de>
+
+Index: Python-2.6.1/setup.py
+===================================================================
+--- Python-2.6.1.orig/setup.py
++++ Python-2.6.1/setup.py
+@@ -1543,7 +1543,7 @@ class PyBuildExt(build_ext):
+ dotversion = dotversion[:-1] + '.' + dotversion[-1]
+ tcl_include_sub = []
+ tk_include_sub = []
+- for dir in inc_dirs:
++ for dir in [os.getenv("STAGING_INCDIR")]:
+ tcl_include_sub += [dir + os.sep + "tcl" + dotversion]
+ tk_include_sub += [dir + os.sep + "tk" + dotversion]
+ tk_include_sub += tcl_include_sub
+@@ -1562,22 +1562,6 @@ class PyBuildExt(build_ext):
+ if dir not in include_dirs:
+ include_dirs.append(dir)
+
+- # Check for various platform-specific directories
+- if platform == 'sunos5':
+- include_dirs.append('/usr/openwin/include')
+- added_lib_dirs.append('/usr/openwin/lib')
+- elif os.path.exists('/usr/X11R6/include'):
+- include_dirs.append('/usr/X11R6/include')
+- added_lib_dirs.append('/usr/X11R6/lib64')
+- added_lib_dirs.append('/usr/X11R6/lib')
+- elif os.path.exists('/usr/X11R5/include'):
+- include_dirs.append('/usr/X11R5/include')
+- added_lib_dirs.append('/usr/X11R5/lib')
+- else:
+- # Assume default location for X11
+- include_dirs.append('/usr/X11/include')
+- added_lib_dirs.append('/usr/X11/lib')
+-
+ # If Cygwin, then verify that X is installed before proceeding
+ if platform == 'cygwin':
+ x11_inc = find_file('X11/Xlib.h', [], include_dirs)
diff --git a/recipes/python/python-2.6.1/04-default-is-optimized.patch b/recipes/python/python-2.6.1/04-default-is-optimized.patch
new file mode 100644
index 0000000000..805f4f696c
--- /dev/null
+++ b/recipes/python/python-2.6.1/04-default-is-optimized.patch
@@ -0,0 +1,52 @@
+# when compiling for an embedded system, we need every bit of
+# performance we can get. default to optimized with the option
+# of opt-out.
+# Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
+
+Index: Python-2.6.1/Python/compile.c
+===================================================================
+--- Python-2.6.1.orig/Python/compile.c
++++ Python-2.6.1/Python/compile.c
+@@ -32,7 +32,7 @@
+ #include "symtable.h"
+ #include "opcode.h"
+
+-int Py_OptimizeFlag = 0;
++int Py_OptimizeFlag = 1;
+
+ #define DEFAULT_BLOCK_SIZE 16
+ #define DEFAULT_BLOCKS 8
+Index: Python-2.6.1/Modules/main.c
+===================================================================
+--- Python-2.6.1.orig/Modules/main.c
++++ Python-2.6.1/Modules/main.c
+@@ -40,7 +40,7 @@ static char **orig_argv;
+ static int orig_argc;
+
+ /* command line options */
+-#define BASE_OPTS "3bBc:dEhiJm:OQ:sStuUvVW:xX?"
++#define BASE_OPTS "3bBc:dEhiJm:NOQ:sStuUvVW:xX?"
+
+ #ifndef RISCOS
+ #define PROGRAM_OPTS BASE_OPTS
+@@ -69,8 +69,7 @@ Options and arguments (and corresponding
+ static char *usage_2 = "\
+ if stdin does not appear to be a terminal; also PYTHONINSPECT=x\n\
+ -m mod : run library module as a script (terminates option list)\n\
+--O : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x\n\
+--OO : remove doc-strings in addition to the -O optimizations\n\
++-N : do NOT optimize generated bytecode\n\
+ -Q arg : division options: -Qold (default), -Qwarn, -Qwarnall, -Qnew\n\
+ -s : don't add user site directory to sys.path; also PYTHONNOUSERSITE\n\
+ -S : don't imply 'import site' on initialization\n\
+@@ -353,8 +352,8 @@ Py_Main(int argc, char **argv)
+
+ /* case 'J': reserved for Jython */
+
+- case 'O':
+- Py_OptimizeFlag++;
++ case 'N':
++ Py_OptimizeFlag=0;
+ break;
+
+ case 'B':
diff --git a/recipes/python/python-2.6.1/05-enable-ctypes-cross-build.patch b/recipes/python/python-2.6.1/05-enable-ctypes-cross-build.patch
new file mode 100644
index 0000000000..874b8be01d
--- /dev/null
+++ b/recipes/python/python-2.6.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 <mdt@emdete.de>
+
+Index: Python-2.6.1/setup.py
+===================================================================
+--- Python-2.6.1.orig/setup.py
++++ Python-2.6.1/setup.py
+@@ -1656,16 +1656,16 @@ class PyBuildExt(build_ext):
+ ffi_configfile):
+ from distutils.dir_util import mkpath
+ mkpath(ffi_builddir)
+- config_args = []
++ config_args = ['--host=%s' % os.environ["HOST_SYS"], ]
+
+ # Pass empty CFLAGS because we'll just append the resulting
+ # CFLAGS to Python's; -g or -O2 is to be avoided.
+- cmd = "cd %s && env CFLAGS='' '%s/configure' %s" \
+- % (ffi_builddir, ffi_srcdir, " ".join(config_args))
++ cmd = "(cd %s && autoconf -W cross) && (cd %s && env CFLAGS='' '%s/configure' %s)" \
++ % (ffi_srcdir, ffi_builddir, ffi_srcdir, " ".join(config_args))
+
+ res = os.system(cmd)
+ if res or not os.path.exists(ffi_configfile):
+- print "Failed to configure _ctypes module"
++ print "Failed to configure _ctypes module (ret=%d) or missing conffile=%s" % ( ret, ffi_configfile )
+ return False
+
+ fficonfig = {}
diff --git a/recipes/python/python-2.6.1/99-ignore-optimization-flag.patch b/recipes/python/python-2.6.1/99-ignore-optimization-flag.patch
new file mode 100644
index 0000000000..02dc44c847
--- /dev/null
+++ b/recipes/python/python-2.6.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 <denis@denix.org>
+
+Index: Python-2.6.1/Modules/main.c
+===================================================================
+--- Python-2.6.1-orig/Modules/main.c
++++ Python-2.6.1/Modules/main.c
+@@ -352,6 +352,9 @@ Py_Main(int argc, char **argv)
+
+ /* case 'J': reserved for Jython */
+
++ case 'O': /* ignore it */
++ break;
++
+ case 'N':
+ Py_OptimizeFlag=0;
+ break;
diff --git a/recipes/python/python-2.6.1/sitecustomize.py b/recipes/python/python-2.6.1/sitecustomize.py
new file mode 100644
index 0000000000..273901898a
--- /dev/null
+++ b/recipes/python/python-2.6.1/sitecustomize.py
@@ -0,0 +1,45 @@
+# OpenEmbedded sitecustomize.py (C) 2002-2008 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
+# GPLv2 or later
+# Version: 20081123
+# Features:
+# * set proper default encoding
+# * enable readline completion in the interactive interpreter
+# * load command line history on startup
+# * save command line history on exit
+
+import os
+
+def __exithandler():
+ try:
+ readline.write_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) )
+ except IOError:
+ pass
+
+def __registerExitHandler():
+ import atexit
+ atexit.register( __exithandler )
+
+def __enableReadlineSupport():
+ readline.set_history_length( 1000 )
+ readline.parse_and_bind( "tab: complete" )
+ try:
+ readline.read_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) )
+ except IOError:
+ pass
+
+def __enableDefaultEncoding():
+ import sys
+ try:
+ sys.setdefaultencoding( "utf8" )
+ except LookupError:
+ pass
+
+import sys
+try:
+ import rlcompleter, readline
+except ImportError:
+ pass
+else:
+ __enableDefaultEncoding()
+ __registerExitHandler()
+ __enableReadlineSupport()
diff --git a/recipes/python/python-ao_0.82.bb b/recipes/python/python-ao_0.82.bb
new file mode 100644
index 0000000000..98c8af40e0
--- /dev/null
+++ b/recipes/python/python-ao_0.82.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Python Bindings for libao"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "libao"
+SRCNAME = "pyao"
+PR = "ml1"
+
+SRC_URI = "http://www.andrewchatham.com/pyogg/download/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+do_configure_prepend() {
+ touch Setup
+ echo "ao_libs = ao" >>Setup
+ echo "ao_lib_dir = ${STAGING_LIBDIR}" >>Setup
+ echo "ao_include_dir = ${STAGING_INCDIR}" >>Setup
+}
diff --git a/recipes/python/python-cheetah_2.0.1.bb b/recipes/python/python-cheetah_2.0.1.bb
new file mode 100644
index 0000000000..8777aaf719
--- /dev/null
+++ b/recipes/python/python-cheetah_2.0.1.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Python template engine and code generation tool"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT"
+SRCNAME = "Cheetah"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/cheetahtemplate/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+RDEPENDS = "python-pickle python-pprint"
diff --git a/recipes/python/python-coherence_0.6.2.bb b/recipes/python/python-coherence_0.6.2.bb
new file mode 100644
index 0000000000..54eed59574
--- /dev/null
+++ b/recipes/python/python-coherence_0.6.2.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Coherence is a DLNA/UPnP mediaserver + backends"
+SECTION = "devel/python"
+LICENSE = "MIT"
+HOMEPAGE = "http://coherence.beebits.net/wiki"
+PR = "r1"
+
+inherit setuptools
+
+SRC_URI = "http://coherence.beebits.net/download/Coherence-${PV}.tar.gz"
+S = "${WORKDIR}/Coherence-${PV}"
+
+FILES_${PN} += "${datadir}"
+
+DEPENDS = "libxml2 libxml2-native"
+RDEPENDS_${PN} += "python-twisted-pair python-divmodepsilon python-nevow python-gst python-dbus \
+ python-configobj python-twisted python-twisted-core python-twisted-protocols python-misc \
+ python-zopeinterface python-modules python-pygobject python-gdata \
+ python-divmodaxiom"
+
+
diff --git a/recipes/python/python-coherence_svn.bb b/recipes/python/python-coherence_svn.bb
new file mode 100644
index 0000000000..031067672e
--- /dev/null
+++ b/recipes/python/python-coherence_svn.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Coherence is a DLNA/UPnP mediaserver + backends"
+SECTION = "devel/python"
+LICENSE = "MIT"
+HOMEPAGE = "http://coherence.beebits.net/wiki"
+
+PR = "r1"
+
+PV = "0.6.0+svnr${SRCREV}"
+
+inherit setuptools
+
+DISTUTILS_INSTALL_ARGS = "--root=${D} \
+ --prefix=${prefix} \
+ --install-data=${datadir}"
+
+SRC_URI = "svn://coherence.beebits.net/svn/trunk;module=Coherence;proto=https"
+S = "${WORKDIR}/Coherence"
+
+FILES_${PN} += "${datadir}"
+RDEPENDS_${PN} += "python-twisted-pair python-divmodepsilon python-nevow python-gst python-dbus \
+ python-configobj python-twisted python-twisted-core python-twisted-protocols python-misc \
+ python-zopeinterface zope python-modules python-pygobject python-gdata python-inotify \
+ python-divmodaxiom"
+
+
diff --git a/recipes/python/python-configobj_4.5.3.bb b/recipes/python/python-configobj_4.5.3.bb
new file mode 100644
index 0000000000..89ea344bae
--- /dev/null
+++ b/recipes/python/python-configobj_4.5.3.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "ConfigObj is a simple but powerful config file reader and writer"
+LICENSE = "BSD"
+
+SRC_URI = "http://pypi.python.org/packages/source/C/ConfigObj/configobj-${PV}.tar.gz"
+
+inherit distutils
+
+S = "${WORKDIR}/configobj-${PV}"
+
+
diff --git a/recipes/python/python-connexion_svn.bb b/recipes/python/python-connexion_svn.bb
new file mode 100644
index 0000000000..ae546f5256
--- /dev/null
+++ b/recipes/python/python-connexion_svn.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "A versatile network connection library"
+HOMEPAGE = "http://www.radlinux.org/connexion/"
+SECTION = "devel/python"
+LICENSE = "GPL"
+BV = "0.4.6"
+PV = "${BV}+svnr${SRCREV}"
+PR = "ml1"
+
+inherit distutils
+
+SRC_URI = "svn://radlinux.org/radlinux/branches/${BV};module=lib"
+S = "${WORKDIR}/lib"
+
+MODULES = "cxutil cxnet"
+
+do_compile() {
+ for i in ${MODULES}; do
+ cd ${S}/$i && distutils_do_compile
+ done
+}
+
+do_install() {
+ for i in ${MODULES}; do
+ cd ${S}/$i && distutils_do_install
+ done
+}
+
+RDEPENDS_${PN} += "python-ctypes"
+
diff --git a/recipes/python/python-constraint_1.1.bb b/recipes/python/python-constraint_1.1.bb
new file mode 100644
index 0000000000..06c6a909a4
--- /dev/null
+++ b/recipes/python/python-constraint_1.1.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "The constraint package is a constraint \
+satisfaction problem solver written in 100% pure Python, using \
+constraint propagation algorithms. So far, facilities are \
+provided to work with finite domains only."
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+PR = "ml1"
+
+SRC_URI = "http://labix.org/download/python-constraint/python-constraint-${PV}.tar.bz2"
+
+inherit distutils
+
diff --git a/recipes/python/python-cython-native_0.10.3.bb b/recipes/python/python-cython-native_0.10.3.bb
new file mode 100644
index 0000000000..a5c78cebe2
--- /dev/null
+++ b/recipes/python/python-cython-native_0.10.3.bb
@@ -0,0 +1,10 @@
+require python-cython_${PV}.bb
+inherit native
+DEPENDS = "python-native"
+RDEPENDS = ""
+
+do_stage() {
+ BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+ STAGING_LIBDIR=${STAGING_LIBDIR} STAGING_INCDIR=${STAGING_INCDIR} \
+ ${STAGING_BINDIR}/python setup.py install --prefix=${STAGING_BINDIR}/.. --install-data=${STAGING_DATADIR}
+}
diff --git a/recipes/python/python-cython_0.10.3.bb b/recipes/python/python-cython_0.10.3.bb
new file mode 100644
index 0000000000..f78ba38e87
--- /dev/null
+++ b/recipes/python/python-cython_0.10.3.bb
@@ -0,0 +1,13 @@
+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 = "GPL"
+SRCNAME = "Cython"
+PR = "ml0"
+
+SRC_URI = "http://www.cython.org/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-daap_0.7.1.bb b/recipes/python/python-daap_0.7.1.bb
new file mode 100644
index 0000000000..e3ddde1116
--- /dev/null
+++ b/recipes/python/python-daap_0.7.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "A pure Python DAAP client implementation"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+
+inherit distutils
+
+SRC_URI = "http://jerakeen.org/files/PythonDaap-${PV}.tar.gz"
+S = "${WORKDIR}/PythonDaap-${PV}"
+
+RDEPENDS = "python-compression"
+
diff --git a/recipes/python/python-dbus_0.83.0.bb b/recipes/python/python-dbus_0.83.0.bb
new file mode 100644
index 0000000000..7bc81f0396
--- /dev/null
+++ b/recipes/python/python-dbus_0.83.0.bb
@@ -0,0 +1,22 @@
+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"
+PR = "ml1"
+
+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
+
+do_stage() {
+ autotools_stage_all
+}
+
+RDEPENDS = "python-io python-logging python-stringold python-threading python-xml"
+
+FILES_${PN}-dev += "${libdir}/pkgconfig
diff --git a/recipes/python/python-dialog_2.7.bb b/recipes/python/python-dialog_2.7.bb
new file mode 100644
index 0000000000..9d66d297e0
--- /dev/null
+++ b/recipes/python/python-dialog_2.7.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Dialog-like functionality for Python Console Programs"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+SRCNAME = "pythondialog"
+PR = "ml1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}.tar.bz2"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-divmodaxiom_0.5.30.bb b/recipes/python/python-divmodaxiom_0.5.30.bb
new file mode 100644
index 0000000000..94c8a5317b
--- /dev/null
+++ b/recipes/python/python-divmodaxiom_0.5.30.bb
@@ -0,0 +1,8 @@
+DESCRIPTION = "An object oriented database"
+LICENSE = "MIT"
+
+REALPN = "Axiom"
+
+DEPENDS += "python-divmodepsilon-native"
+
+require divmod.inc
diff --git a/recipes/python/python-divmodepsilon-native_0.5.11.bb b/recipes/python/python-divmodepsilon-native_0.5.11.bb
new file mode 100644
index 0000000000..185708b611
--- /dev/null
+++ b/recipes/python/python-divmodepsilon-native_0.5.11.bb
@@ -0,0 +1,11 @@
+require python-divmodepsilon_${PV}.bb
+inherit native
+
+DEPENDS = "python-native python-twisted-native zope-native"
+
+do_stage() {
+ BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+ STAGING_LIBDIR=${STAGING_LIBDIR} STAGING_INCDIR=${STAGING_INCDIR} \
+ ${STAGING_BINDIR}/python setup.py install --prefix=${STAGING_BINDIR}/.. --install-data=${STAGING_DATADIR}
+}
+
diff --git a/recipes/python/python-divmodepsilon_0.5.11.bb b/recipes/python/python-divmodepsilon_0.5.11.bb
new file mode 100644
index 0000000000..5184b69252
--- /dev/null
+++ b/recipes/python/python-divmodepsilon_0.5.11.bb
@@ -0,0 +1,7 @@
+DESCRIPTION = "A small utility package that depends on tools too recent for Twisted "
+LICENSE = "MIT"
+
+REALPN = "Epsilon"
+
+require divmod.inc
+
diff --git a/recipes/python/python-django_1.0.2.bb b/recipes/python/python-django_1.0.2.bb
new file mode 100644
index 0000000000..0c572eeeda
--- /dev/null
+++ b/recipes/python/python-django_1.0.2.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "Python Web framework"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "BSD"
+SRCNAME = "Django"
+PR = "ml0"
+
+SRC_URI = "http://media.djangoproject.com/releases/${PV}/${SRCNAME}-${PV}-final.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}-final"
+
+inherit distutils
+
+DISTUTILS_INSTALL_ARGS = "--root=${D} --prefix=${prefix}"
+
+# TODO: huge package, increase granularity
+
+RDEPENDS_${PN} = "\
+ python-email \
+ python-netserver \
+ python-pickle \
+ python-pprint \
+ python-shell \
+ python-sqlite \
+ python-textutils \
+ python-threading \
+ python-unixadmin \
+ python-xml \
+"
diff --git a/recipes/python/python-docutils-native_0.5.bb b/recipes/python/python-docutils-native_0.5.bb
new file mode 100644
index 0000000000..5e294e55a2
--- /dev/null
+++ b/recipes/python/python-docutils-native_0.5.bb
@@ -0,0 +1,8 @@
+require python-docutils_${PV}.bb
+DEPENDS = "python-native"
+inherit native
+
+do_stage() {
+ distutils_stage_all
+}
+
diff --git a/recipes/python/python-docutils_0.5.bb b/recipes/python/python-docutils_0.5.bb
new file mode 100644
index 0000000000..2fc7184b83
--- /dev/null
+++ b/recipes/python/python-docutils_0.5.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "Text processing system"
+HOMEPAGE = "http://docutils.sourceforge.net"
+SECTION = "devel/python"
+LICENSE = "PSF"
+PR = "ml0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/docutils/docutils-${PV}.tar.gz"
+S = "${WORKDIR}/docutils-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-dweba_0.9.9+1.0.0pre14.bb b/recipes/python/python-dweba_0.9.9+1.0.0pre14.bb
new file mode 100644
index 0000000000..ddc5979eab
--- /dev/null
+++ b/recipes/python/python-dweba_0.9.9+1.0.0pre14.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Dweba is a framework to develop distributed and web applications \
+for the python programming language."
+HOMEPAGE = "http://www.threekong.com"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT"
+PR = "ml0"
+
+RPV = "1.0.0-pre14"
+
+SRC_URI = "http://www.threekong.com/download/dweba/dweba-${RPV}.tar.gz"
+S = "${WORKDIR}/dweba-${RPV}"
+
+inherit distutils
diff --git a/recipes/python/python-ecore_svn.bb b/recipes/python/python-ecore_svn.bb
new file mode 100644
index 0000000000..9907b27262
--- /dev/null
+++ b/recipes/python/python-ecore_svn.bb
@@ -0,0 +1,7 @@
+require python-efl.inc
+DEPENDS += "python-evas ecore"
+RDEPENDS += "python-evas"
+
+do_stage() {
+ distutils_stage_all
+}
diff --git a/recipes/python/python-edbus_svn.bb b/recipes/python/python-edbus_svn.bb
new file mode 100644
index 0000000000..6a9b61e441
--- /dev/null
+++ b/recipes/python/python-edbus_svn.bb
@@ -0,0 +1,6 @@
+require python-efl.inc
+DEPENDS += "edbus python-dbus"
+RDEPENDS += "python-dbus"
+
+SRC_URI = "svn://svn.enlightenment.org/svn/e/trunk/BINDINGS/python;module=python-e_dbus;proto=http"
+S = "${WORKDIR}/python-e_dbus"
diff --git a/recipes/python/python-edje/0001-fix-unicode-conversion.patch b/recipes/python/python-edje/0001-fix-unicode-conversion.patch
new file mode 100644
index 0000000000..7964e097d1
--- /dev/null
+++ b/recipes/python/python-edje/0001-fix-unicode-conversion.patch
@@ -0,0 +1,41 @@
+From fa12a33b5a3c0e86231ca84967d9eff456e5f314 Mon Sep 17 00:00:00 2001
+From: Jan Luebbe <jluebbe@debian.org>
+Date: Sat, 9 Aug 2008 18:30:04 +0200
+Subject: [PATCH] fix unicode conversion
+
+---
+ edje/edje.c_edje_object.pxi | 11 +++++++----
+ 1 files changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/edje/edje.c_edje_object.pxi b/edje/edje.c_edje_object.pxi
+index 0f4da68..21c237e 100644
+--- a/edje/edje.c_edje_object.pxi
++++ b/edje/edje.c_edje_object.pxi
+@@ -391,17 +391,20 @@ cdef public class Edje(evas.c_evas.Object) [object PyEdje, type PyEdje_Type]:
+ else:
+ raise TypeError("func must be callable or None")
+
+- def part_text_set(self, char *part, char *text):
+- edje_object_part_text_set(self.obj, part, text)
++ def part_text_set(self, char *part, text):
++ cdef char *s
++ u = text.encode("utf8")
++ s = u
++ edje_object_part_text_set(self.obj, part, s)
+
+ def part_text_get(self, char *part):
+- "@rtype: str"
++ "@rtype: unicode"
+ cdef char *s
+ s = edje_object_part_text_get(self.obj, part)
+ if s == NULL:
+ return None
+ else:
+- return s
++ return s.decode("utf8")
+
+ def part_swallow(self, char *part, c_evas.Object obj):
+ """Swallows an object into the edje
+--
+1.5.6.3
+
diff --git a/recipes/python/python-edje_svn.bb b/recipes/python/python-edje_svn.bb
new file mode 100644
index 0000000000..5b429b4922
--- /dev/null
+++ b/recipes/python/python-edje_svn.bb
@@ -0,0 +1,5 @@
+require python-efl.inc
+DEPENDS += "edje python-evas"
+RDEPENDS += "python-evas"
+
+SRC_URI += "file://0001-fix-unicode-conversion.patch;patch=1"
diff --git a/recipes/python/python-efl.inc b/recipes/python/python-efl.inc
new file mode 100644
index 0000000000..acd1660f08
--- /dev/null
+++ b/recipes/python/python-efl.inc
@@ -0,0 +1,38 @@
+DESCRIPTION = "${PN} bindings"
+LICENSE = "BSD"
+AUTHOR = "Gustavo Sverzut Barbieri <barbieri@gmail.com>"
+HOMEPAGE = "http://www.enlightenment.org"
+# NOTE: Due to a bug in distutils, even if we don't use pyrex but cython,
+# we need to build pyrex otherwise cython doesn't get called to build
+# the extension modules.
+DEPENDS = "python-cython-native python-pyrex-native python-numeric eina"
+RDEPENDS += "python-lang"
+PV = "0.3.1+svnr${SRCREV}"
+PR = "ml0"
+
+inherit setuptools
+
+SRC_URI = "svn://svn.enlightenment.org/svn/e/trunk/BINDINGS/python;module=${PN};proto=http"
+S = "${WORKDIR}/${PN}"
+
+do_install_append() {
+ if [ -e examples ]; then
+ for i in `find examples -name "*.edc"`; do
+ cd ${S}/`dirname $i`
+ echo "Generating .edj file for $i..."
+ edje_cc `basename $i`
+ echo "Removing sources in this directory..."
+ rm -f *.edc *.png *.ttf *.jpeg
+ done
+ cd ${S}
+ install -d ${D}${datadir}/${PN}/
+ cp -a examples ${D}${datadir}/${PN}/
+ find ${D}${datadir}/${PN}/examples -name "CVS" | xargs rm -rf
+ find ${D}${datadir}/${PN}/examples -name ".cvsignore" | xargs rm -f
+ fi
+}
+
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/*.egg/*/*/.debug"
+
+PACKAGES += "${PN}-examples"
+FILES_${PN}-examples = "${datadir}/${PN}/examples"
diff --git a/recipes/python/python-egenix-mx-base_3.1.1.bb b/recipes/python/python-egenix-mx-base_3.1.1.bb
new file mode 100644
index 0000000000..aba3a710c7
--- /dev/null
+++ b/recipes/python/python-egenix-mx-base_3.1.1.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "The eGenix.com mx Extensions for Python are a collection of professional quality Python software \
+tools which enhance Python's usability in many important areas such as ODBC database connectivity, fast text \
+processing, date/time processing and web site programming."
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "EGENIX"
+SRCNAME = "egenix-mx-base"
+PR = "ml0"
+
+SRC_URI = "http://downloads.egenix.com/python/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+export INCLUDE = "${STAGING_INCDIR}/${PYTHON_DIR}"
+export LIB = "${STAGING_LIBDIR}"
+
+FILES_${PN} += "${datadir}"
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/mx/*/*/.debug"
diff --git a/recipes/python/python-elementary_svn.bb b/recipes/python/python-elementary_svn.bb
new file mode 100644
index 0000000000..44c5613edf
--- /dev/null
+++ b/recipes/python/python-elementary_svn.bb
@@ -0,0 +1,9 @@
+require python-efl.inc
+DEPENDS += "elementary"
+RDEPENDS += "python-evas python-ecore python-edje"
+PV = "0.1+svnr${SRCREV}"
+PR = "ml0"
+
+do_stage() {
+ distutils_stage_all
+}
diff --git a/recipes/python/python-elementtree_1.2.7-20070827-preview.bb b/recipes/python/python-elementtree_1.2.7-20070827-preview.bb
new file mode 100644
index 0000000000..f1e4c8b322
--- /dev/null
+++ b/recipes/python/python-elementtree_1.2.7-20070827-preview.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Lightweight Python components for handling XML"
+SECTION = "devel/python"
+LICENSE = "Python"
+HOMEPAGE = "http://effbot.org/zone/element-index.htm"
+PR = "r0"
+
+inherit distutils
+
+SRC_URI = "http://effbot.org/media/downloads/elementtree-${PV}.zip"
+S = "${WORKDIR}/elementtree-${PV}"
+
+FILES_${PN} += "${datadir}"
+
+
diff --git a/recipes/python/python-emotion_svn.bb b/recipes/python/python-emotion_svn.bb
new file mode 100644
index 0000000000..9a9628ef50
--- /dev/null
+++ b/recipes/python/python-emotion_svn.bb
@@ -0,0 +1,3 @@
+require python-efl.inc
+DEPENDS += "emotion python-evas"
+RDEPENDS += "python-ecore"
diff --git a/recipes/python/python-epsilon_svn.bb b/recipes/python/python-epsilon_svn.bb
new file mode 100644
index 0000000000..97b06609c1
--- /dev/null
+++ b/recipes/python/python-epsilon_svn.bb
@@ -0,0 +1,4 @@
+require python-efl.inc
+DEPENDS += "epsilon python-ecore"
+RDEPENDS += "python-ecore"
+
diff --git a/recipes/python/python-etk_svn.bb b/recipes/python/python-etk_svn.bb
new file mode 100644
index 0000000000..aff6b1f982
--- /dev/null
+++ b/recipes/python/python-etk_svn.bb
@@ -0,0 +1,9 @@
+require python-efl.inc
+DEPENDS += "etk python-evas python-ecore"
+RDEPENDS += "python-evas python-ecore python-edje python-numeric python-math etk-themes"
+PV = "0.1.1+svnr${SRCREV}"
+PR = "ml1"
+
+do_stage() {
+ distutils_stage_all
+}
diff --git a/recipes/python/python-evas_svn.bb b/recipes/python/python-evas_svn.bb
new file mode 100644
index 0000000000..8a95b4418c
--- /dev/null
+++ b/recipes/python/python-evas_svn.bb
@@ -0,0 +1,6 @@
+require python-efl.inc
+DEPENDS += "evas"
+
+do_stage() {
+ distutils_stage_all
+}
diff --git a/recipes/python/python-fam_1.1.1.bb b/recipes/python/python-fam_1.1.1.bb
new file mode 100644
index 0000000000..0a49402973
--- /dev/null
+++ b/recipes/python/python-fam_1.1.1.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Python access to the File Alteration Monitor"
+HOMEPAGE = "http://python-fam.sourceforge.net/"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "fam"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz"
+
+inherit distutils
+
+RDEPENDS = "fam python-core python-io"
+
diff --git a/recipes/python/python-flup_1.0.1.bb b/recipes/python/python-flup_1.0.1.bb
new file mode 100644
index 0000000000..d5f865da11
--- /dev/null
+++ b/recipes/python/python-flup_1.0.1.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Random assortment of WSGI servers"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "BSD"
+SRCNAME = "flup"
+PR = "ml0"
+
+SRC_URI = "http://pypi.python.org/packages/source/f/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/recipes/python/python-fnorb_1.3.bb b/recipes/python/python-fnorb_1.3.bb
new file mode 100644
index 0000000000..15ae037ca6
--- /dev/null
+++ b/recipes/python/python-fnorb_1.3.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "A Pure Python CORBA 2.0 Package"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "FNORB"
+SRCNAME = "Fnorb"
+PR = "r2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/fnorb/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-formencode_1.2.1.bb b/recipes/python/python-formencode_1.2.1.bb
new file mode 100644
index 0000000000..99d0537e78
--- /dev/null
+++ b/recipes/python/python-formencode_1.2.1.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "HTML form validation, generation, and conversion package"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+SRCNAME = "FormEncode"
+PR = "ml0"
+
+inherit setuptools
+
+SRC_URI = "http://pypi.python.org/packages/source/F/FormEncode/FormEncode-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
diff --git a/recipes/python/python-fpconst_0.7.2.bb b/recipes/python/python-fpconst_0.7.2.bb
new file mode 100644
index 0000000000..13e2377e02
--- /dev/null
+++ b/recipes/python/python-fpconst_0.7.2.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "This python module implements constants and \
+functions for working with IEEE754 double-precision special values. \
+It provides constants for Not-a-Number (NaN), Positive Infinity \
+(Inf), and Negative Infinity (-Inf), as well as functions \
+to test for these values."
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+SRCNAME = "fpconst"
+PR = "ml0"
+
+SRC_URI = "http://pypi.python.org/packages/source/f/fpconst/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-fugrep_0.50.bb b/recipes/python/python-fugrep_0.50.bb
new file mode 100644
index 0000000000..9df257388d
--- /dev/null
+++ b/recipes/python/python-fugrep_0.50.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "FuGrep is a Python library for fuzzy pattern matching."
+HOMEPAGE = "http://www.j-raedler.de/pages/software/fugrep.php"
+SECTION = "devel/python"
+LICENSE = "${PN}"
+SRCNAME = "FuGrep"
+PR = "ml1"
+
+SRC_URI = "http://www.j-raedler.de/media/Software/FuGrep-${PV}.zip"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-fuse_0.2.bb b/recipes/python/python-fuse_0.2.bb
new file mode 100644
index 0000000000..099a0e386a
--- /dev/null
+++ b/recipes/python/python-fuse_0.2.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "FUSE Python bindings."
+SECTION = "devel/python"
+LICENSE = "GPLv2"
+DEPENDS = "fuse"
+SRCNAME = "fuse-python"
+PR = "ml0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/fuse/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+FILES_${PN}-dbg += "${libdir}/python*/site-packages/fuseparts/.debu*"
diff --git a/recipes/python/python-fusil_1.1.bb b/recipes/python/python-fusil_1.1.bb
new file mode 100644
index 0000000000..f67612eb45
--- /dev/null
+++ b/recipes/python/python-fusil_1.1.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "Fusil is a Python library used to write fuzzing programs."
+HOMEPAGE = "http://fusil.hachoir.org/"
+SECTION = "devel/python"
+LICENSE = "GPLv2"
+SRCNAME = "fusil"
+PR = "r1"
+
+SRC_URI = "http://pypi.python.org/packages/source/f/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+RDEPENDS_${PN} = "\
+ python-ptrace \
+ python-ctypes \
+ python-lang \
+ python-logging \
+ python-datetime \
+ python-shell \
+ python-resource \
+ python-subprocess \
+"
diff --git a/recipes/python/python-gammu_0.26.bb b/recipes/python/python-gammu_0.26.bb
new file mode 100644
index 0000000000..13e5484171
--- /dev/null
+++ b/recipes/python/python-gammu_0.26.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "Python bindings for the gammu GSM phone communication library."
+HOMEPAGE = "http://cihar.com/gammu/python"
+SECTION = "devel/python"
+DEPENDS = "gammu"
+LICENSE = "GPL"
+PR = "ml1"
+
+SRC_URI = "http://dl.cihar.com/python-gammu/latest/python-gammu-${PV}.tar.bz2"
+
+inherit distutils
diff --git a/recipes/python/python-gdata_1.2.4.bb b/recipes/python/python-gdata_1.2.4.bb
new file mode 100644
index 0000000000..2e7e424976
--- /dev/null
+++ b/recipes/python/python-gdata_1.2.4.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Google Data APIs Python Client Library"
+SECTION = "devel/python"
+LICENSE = "Apache"
+HOMEPAGE = "http://code.google.com/p/gdata-python-client/"
+PR = "r0"
+
+inherit distutils
+
+SRC_URI = "http://gdata-python-client.googlecode.com/files/gdata.py-${PV}.tar.gz"
+S = "${WORKDIR}/gdata.py-${PV}"
+
+FILES_${PN} += "${datadir}"
+
+RDEPENDS = "python-elementtree"
+
diff --git a/recipes/python/python-gmpy_1.0.1.bb b/recipes/python/python-gmpy_1.0.1.bb
new file mode 100644
index 0000000000..a5f064261b
--- /dev/null
+++ b/recipes/python/python-gmpy_1.0.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "General Multiprecision PYthon"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "gmp"
+SRCNAME = "gmpy"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-sources-101.zip"
+S = "${WORKDIR}/${SRCNAME}"
+
+inherit distutils
diff --git a/recipes/python/python-gnosis_1.2.2.bb b/recipes/python/python-gnosis_1.2.2.bb
new file mode 100644
index 0000000000..c4ee333990
--- /dev/null
+++ b/recipes/python/python-gnosis_1.2.2.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Gnosis Utils contains several Python modules for XML processing, plus other generally useful tools"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPLv2"
+SRCNAME = "Gnosis_Utils"
+PR = "ml1"
+
+SRC_URI = "http://gnosis.cx/download/Gnosis_Utils.More/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
diff --git a/recipes/python/python-gst/import-gobject-instead-of-pygtk.patch b/recipes/python/python-gst/import-gobject-instead-of-pygtk.patch
new file mode 100644
index 0000000000..b4dafa1cea
--- /dev/null
+++ b/recipes/python/python-gst/import-gobject-instead-of-pygtk.patch
@@ -0,0 +1,19 @@
+Index: gst-python-0.10.10/gst/__init__.py
+===================================================================
+--- gst-python-0.10.10.orig/gst/__init__.py
++++ gst-python-0.10.10/gst/__init__.py
+@@ -28,13 +28,8 @@ try:
+ except:
+ pass
+
+-import sys
++import sys, gobject
+
+-# we always require 2.0 of pygtk; so if pygtk is not imported anywhere
+-# yet, we import pygtk here and .require
+-if 'gobject' not in sys.modules:
+- import pygtk
+- pygtk.require('2.0')
+
+ class Value:
+ def __init__(self, type):
diff --git a/recipes/python/python-gst/python-path.patch b/recipes/python/python-gst/python-path.patch
new file mode 100644
index 0000000000..6cbad8cc5f
--- /dev/null
+++ b/recipes/python/python-gst/python-path.patch
@@ -0,0 +1,33 @@
+Index: gst-python-0.10.10/acinclude.m4
+===================================================================
+--- gst-python-0.10.10.orig/acinclude.m4
++++ gst-python-0.10.10/acinclude.m4
+@@ -43,16 +43,20 @@ AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
+ [AC_REQUIRE([AM_PATH_PYTHON])
+ AC_MSG_CHECKING(for headers required to compile python extensions)
+ dnl deduce PYTHON_INCLUDES
+-py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+-py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
+-if $PYTHON-config --help 2>/dev/null; then
+- PYTHON_INCLUDES=`$PYTHON-config --includes 2>/dev/null`
++
++AC_ARG_WITH(python-includes,
++ [ --with-python-includes=DIR path to Python includes], py_exec_prefix=$withval)
++if test x$py_exec_prefix != x; then
++ PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+ else
+- PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+- if test "$py_prefix" != "$py_exec_prefix"; then
+- PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+- fi
++ py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
++ py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
++ PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
++if test "$py_prefix" != "$py_exec_prefix"; then
++ PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
++ fi
+ fi
++
+ AC_SUBST(PYTHON_INCLUDES)
+ dnl check if the headers exist:
+ save_CPPFLAGS="$CPPFLAGS"
diff --git a/recipes/python/python-gst_0.10.10.bb b/recipes/python/python-gst_0.10.10.bb
new file mode 100644
index 0000000000..faef7cb5f1
--- /dev/null
+++ b/recipes/python/python-gst_0.10.10.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "Python Gstreamer bindings"
+SECTION = "devel/python"
+LICENSE = "LGPL"
+DEPENDS = "gstreamer gst-plugins-base python-pygobject"
+PR = "ml3"
+
+SRC_URI = "\
+ http://gstreamer.freedesktop.org/src/gst-python/gst-python-${PV}.tar.bz2 \
+ file://python-path.patch;patch=1 \
+ file://import-gobject-instead-of-pygtk.patch;patch=1 \
+"
+S = "${WORKDIR}/gst-python-${PV}"
+
+inherit autotools distutils-base pkgconfig
+
+EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
+
+do_configure_prepend() {
+ install -d ${S}/m4
+ install -m 0644 ${S}/common/m4/*.m4 ${S}/m4/
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+PACKAGES =+ "${PN}-examples"
+
+FILES_${PN} += "${datadir}/gst-python"
+FILES_${PN}-dev += "\
+ ${datadir}/gst-python/0.10/defs \
+ ${libdir}/${PYTHON_DIR}/site-packages/gst-0.10/gst/*.la \
+"
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/gst-0.10/gst/.debug/"
+FILES_${PN}-examples = "${datadir}/gst-python/0.10/examples"
diff --git a/recipes/python/python-imaging/path.patch b/recipes/python/python-imaging/path.patch
new file mode 100644
index 0000000000..1dc467a56d
--- /dev/null
+++ b/recipes/python/python-imaging/path.patch
@@ -0,0 +1,37 @@
+Index: Imaging-1.1.5/setup.py
+===================================================================
+--- Imaging-1.1.5.orig/setup.py 2005-03-23 19:16:40.000000000 +0100
++++ Imaging-1.1.5/setup.py 2006-05-31 14:36:07.000000000 +0200
+@@ -28,12 +28,13 @@
+ #
+ # TIFF_ROOT = libinclude("/opt/tiff")
+
+-FREETYPE_ROOT = None
+-JPEG_ROOT = None
++FREETYPE_ROOT = os.environ['STAGING_LIBDIR'], os.environ['STAGING_INCDIR']
++JPEG_ROOT = os.environ['STAGING_LIBDIR']
+ TIFF_ROOT = None
+-ZLIB_ROOT = None
++ZLIB_ROOT = os.environ['STAGING_LIBDIR']
+ TCL_ROOT = None
+
++
+ # FIXME: add mechanism to explicitly *disable* the use of a library
+
+ # --------------------------------------------------------------------
+@@ -175,15 +176,6 @@
+ add_directory(include_dirs, include_root)
+
+ #
+- # add standard directories
+-
+- add_directory(library_dirs, "/usr/local/lib")
+- add_directory(include_dirs, "/usr/local/include")
+-
+- add_directory(library_dirs, "/usr/lib")
+- add_directory(include_dirs, "/usr/include")
+-
+- #
+ # insert new dirs *before* default libs, to avoid conflicts
+ # between Python PYD stub libs and real libraries
+
diff --git a/recipes/python/python-imaging_1.1.6.bb b/recipes/python/python-imaging_1.1.6.bb
new file mode 100644
index 0000000000..03e0330e1c
--- /dev/null
+++ b/recipes/python/python-imaging_1.1.6.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "Python Imaging Library"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "freetype jpeg tiff"
+RDEPENDS = "python-lang python-stringold"
+SRCNAME = "Imaging"
+PR = "ml1"
+
+SRC_URI = "http://effbot.org/downloads/Imaging-${PV}.tar.gz \
+ file://path.patch;patch=1"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+do_compile() {
+ export STAGING_LIBDIR=${STAGING_LIBDIR}
+ export STAGING_INCDIR=${STAGING_INCDIR}
+ distutils_do_compile
+}
+
+do_install() {
+ export STAGING_LIBDIR=${STAGING_LIBDIR}
+ export STAGING_INCDIR=${STAGING_INCDIR}
+ distutils_do_install
+ install -d ${D}${datadir}/doc/${PN}/html/
+ install -m 0644 ${S}/README ${D}${datadir}/doc/${PN}/
+ install -m 0644 ${S}/Docs/* ${D}${datadir}/doc/${PN}/html/
+
+}
diff --git a/recipes/python/python-imdbpy_3.9.bb b/recipes/python/python-imdbpy_3.9.bb
new file mode 100644
index 0000000000..72d30fb89b
--- /dev/null
+++ b/recipes/python/python-imdbpy_3.9.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "IMDbPY is a Python package useful to retrieve and manage the data of the IMDb movie database."
+SECTION = "devel/python"
+HOMEPAGE = "http://imdbpy.sourceforge.net/"
+PRIORITY = "optional"
+LICENSE = "GPL"
+SRCNAME = "IMDbPY"
+PR = "ml0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/imdbpy/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/imdb/parser/common/.debug"
diff --git a/recipes/python/python-inotify_0.1.0.bb b/recipes/python/python-inotify_0.1.0.bb
new file mode 100644
index 0000000000..13031d31a7
--- /dev/null
+++ b/recipes/python/python-inotify_0.1.0.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "Python Linux Inotify Wrapper"
+SECTION = "devel/python"
+HOMEPAGE = "http://rudd-o.com/projects/python-inotify/"
+LICENSE = "GPL"
+PR = "ml1"
+
+SRC_URI = "http://rudd-o.com/wp-content/uploads/projects/files/python-inotify/python-inotify-${PV}.tar.gz"
+
+inherit distutils
+
diff --git a/recipes/python/python-irclib_0.4.6.bb b/recipes/python/python-irclib_0.4.6.bb
new file mode 100644
index 0000000000..e416156e92
--- /dev/null
+++ b/recipes/python/python-irclib_0.4.6.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Python IRC (Internet Relay Chat) Support Library"
+SECTION = "devel/python"
+HOMEPAGE = "http://python-irclib.sourceforge.net/"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+PR = "ml1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/python-irclib/python-irclib-${PV}.tar.gz"
+
+inherit distutils
+
diff --git a/recipes/python/python-libgmail_0.1.11.bb b/recipes/python/python-libgmail_0.1.11.bb
new file mode 100644
index 0000000000..b0fcb1f83f
--- /dev/null
+++ b/recipes/python/python-libgmail_0.1.11.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Python Bindings for Google's Gmail Service"
+SECTION = "devel/python"
+HOMEPAGE = "http://libgmail.sourceforge.net/"
+PRIORITY = "optional"
+LICENSE = "GPL"
+SRCNAME = "libgmail"
+PR = "ml0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils-base
+
+do_install() {
+ install -d ${D}${libdir}/${PYTHON_DIR}
+ for file in *.py
+ do
+ install -m 0755 ${file} ${D}${libdir}/${PYTHON_DIR}
+ done
+}
+
+RDEPENDS = "\
+ python-core \
+ python-netclient \
+ python-email \
+ python-mime \
+ python-pprint \
+ python-re \
+ python-pickle \
+"
+
diff --git a/recipes/python/python-logilab-common/fix-future-in-setup.patch b/recipes/python/python-logilab-common/fix-future-in-setup.patch
new file mode 100644
index 0000000000..1abde49bef
--- /dev/null
+++ b/recipes/python/python-logilab-common/fix-future-in-setup.patch
@@ -0,0 +1,16 @@
+Index: common-0.9.3/setup.py
+===================================================================
+--- common-0.9.3.orig/setup.py
++++ common-0.9.3/setup.py
+@@ -17,9 +17,10 @@
+ # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ """ Generic Setup script, takes package info from __pkginfo__.py file """
+
++from __future__ import nested_scopes
++
+ __revision__ = '$Id: setup.py,v 1.23 2004/05/27 12:07:23 syt Exp $'
+
+-from __future__ import nested_scopes
+ import os
+ import sys
+ import shutil
diff --git a/recipes/python/python-logilab-common_0.37.1.bb b/recipes/python/python-logilab-common_0.37.1.bb
new file mode 100644
index 0000000000..1f8c41e883
--- /dev/null
+++ b/recipes/python/python-logilab-common_0.37.1.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "This package contains some modules used by different \
+projects released by Logilab, including abstract syntax \
+tree manipulation tools, database helper functions, HTML generation, \
+command line argument parsing, logging, and process daemonization."
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+SRCNAME = "logilab-common"
+PR = "ml0"
+
+SRC_URI = "ftp://ftp.logilab.fr/pub/common/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-lxml/use-pkgconfig-to-detect.patch b/recipes/python/python-lxml/use-pkgconfig-to-detect.patch
new file mode 100644
index 0000000000..b79f1b2300
--- /dev/null
+++ b/recipes/python/python-lxml/use-pkgconfig-to-detect.patch
@@ -0,0 +1,31 @@
+Index: lxml-1.3.3/setupinfo.py
+===================================================================
+--- lxml-1.3.3.orig/setupinfo.py 2007-08-20 22:39:09.000000000 +0000
++++ lxml-1.3.3/setupinfo.py 2007-08-20 22:39:46.000000000 +0000
+@@ -86,7 +86,7 @@
+ return static_library_dirs
+ # filter them from xslt-config --libs
+ result = []
+- possible_library_dirs = flags('xslt-config --libs')
++ possible_library_dirs = flags('pkg-config libxslt --libs')
+ for possible_library_dir in possible_library_dirs:
+ if possible_library_dir.startswith('-L'):
+ result.append(possible_library_dir[2:])
+@@ -100,7 +100,7 @@
+ return static_include_dirs
+ # filter them from xslt-config --cflags
+ result = []
+- possible_include_dirs = flags('xslt-config --cflags')
++ possible_include_dirs = flags('pkg-config libxslt --cflags')
+ for possible_include_dir in possible_include_dirs:
+ if possible_include_dir.startswith('-I'):
+ result.append(possible_include_dir[2:])
+@@ -119,7 +119,7 @@
+ return result
+
+ # anything from xslt-config --cflags that doesn't start with -I
+- possible_cflags = flags('xslt-config --cflags')
++ possible_cflags = flags('pkg-config libxslt --cflags')
+ for possible_cflag in possible_cflags:
+ if not possible_cflag.startswith('-I'):
+ result.append(possible_cflag)
diff --git a/recipes/python/python-m2crypto/install.patch b/recipes/python/python-m2crypto/install.patch
new file mode 100644
index 0000000000..6c70ccf516
--- /dev/null
+++ b/recipes/python/python-m2crypto/install.patch
@@ -0,0 +1,24 @@
+Index: m2crypto-0.18.2/setup.py
+===================================================================
+--- m2crypto-0.18.2.orig/setup.py
++++ m2crypto-0.18.2/setup.py
+@@ -38,7 +38,7 @@ class _M2CryptoBuildExt(build_ext.build_
+ self.openssl = 'c:\\pkg'
+ else:
+ self.libraries = ['ssl', 'crypto']
+- self.openssl = '/usr'
++ self.openssl = os.environ.get( "STAGING_DIR" )
+
+
+ def finalize_options(self):
+@@ -47,8 +47,8 @@ class _M2CryptoBuildExt(build_ext.build_
+
+ build_ext.build_ext.finalize_options(self)
+
+- opensslIncludeDir = os.path.join(self.openssl, 'include')
+- opensslLibraryDir = os.path.join(self.openssl, 'lib')
++ opensslIncludeDir = os.environ.get( "STAGING_INCDIR" )
++ opensslLibraryDir = os.environ.get( "STAGING_LIBDIR" )
+
+ self.swig_opts = ['-I%s' % i for i in self.include_dirs + \
+ [opensslIncludeDir]]
diff --git a/recipes/python/python-m2crypto_0.18.2.bb b/recipes/python/python-m2crypto_0.18.2.bb
new file mode 100644
index 0000000000..fb11aa0890
--- /dev/null
+++ b/recipes/python/python-m2crypto_0.18.2.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "A Python crypto and SSL toolkit"
+SECTION = "devel/python"
+PRIORITY = "optional"
+DEPENDS = "openssl swig-native"
+LICENSE = "BSD"
+SRCNAME = "M2Crypto"
+PR = "ml1"
+
+SRC_URI = "\
+ http://chandlerproject.org/pub/Projects/MeTooCrypto/m2crypto-${PV}.tar.gz \
+ file://install.patch;patch=1 \
+"
+S = "${WORKDIR}/m2crypto-0.18.2"
+
+inherit setuptools
+
+export STAGING_DIR
+export STAGING_INCDIR
+export STAGING_LIBDIR
diff --git a/recipes/python/python-mad_0.6.bb b/recipes/python/python-mad_0.6.bb
new file mode 100644
index 0000000000..7ae43779e9
--- /dev/null
+++ b/recipes/python/python-mad_0.6.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Python libmad Bindings"
+SECTION = "devel/python"
+HOMEPAGE = "http://spacepants.org/src/pymad/"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "libmad"
+SRCNAME = "pymad"
+PR = "ml1"
+
+SRC_URI = "http://spacepants.org/src/pymad/download/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+do_configure_prepend() {
+ touch Setup
+ echo "endian = little" >>Setup # FIXME, not always true
+ echo "mad_libs = mad" >>Setup
+ echo "mad_lib_dir = ${STAGING_LIBDIR}" >>Setup
+ echo "mad_include_dir = ${STAGING_INCDIR}" >>Setup
+}
diff --git a/recipes/python/python-mako_0.2.2.bb b/recipes/python/python-mako_0.2.2.bb
new file mode 100644
index 0000000000..6b1b9595af
--- /dev/null
+++ b/recipes/python/python-mako_0.2.2.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "A super-fast templating language that borrows the best ideas from the existing templating languages"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT"
+HOMEPAGE = "http://www.makotemplates.org/"
+SRCNAME = "Mako"
+PR = "ml1"
+
+SRC_URI = "http://pypi.python.org/packages/source/M/Mako/Mako-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/recipes/python/python-mysqldb/mysqlpath.patch b/recipes/python/python-mysqldb/mysqlpath.patch
new file mode 100644
index 0000000000..3f471a1703
--- /dev/null
+++ b/recipes/python/python-mysqldb/mysqlpath.patch
@@ -0,0 +1,19 @@
+Index: MySQL-python-1.2.1_p2/_mysql.c
+===================================================================
+--- MySQL-python-1.2.1_p2.orig/_mysql.c 2006-05-31 12:07:36.000000000 +0200
++++ MySQL-python-1.2.1_p2/_mysql.c 2006-05-31 12:08:25.000000000 +0200
+@@ -36,10 +36,10 @@
+ #endif
+
+ #include "structmember.h"
+-#include "mysql.h"
+-#include "my_config.h"
+-#include "mysqld_error.h"
+-#include "errmsg.h"
++#include "mysql/mysql.h"
++#include "mysql/my_config.h"
++#include "mysql/mysqld_error.h"
++#include "mysql/errmsg.h"
+
+ #if PY_VERSION_HEX < 0x02020000
+ # define MyTuple_Resize(t,n,d) _PyTuple_Resize(t, n, d)
diff --git a/recipes/python/python-mysqldb/site.patch b/recipes/python/python-mysqldb/site.patch
new file mode 100644
index 0000000000..c2d1346767
--- /dev/null
+++ b/recipes/python/python-mysqldb/site.patch
@@ -0,0 +1,22 @@
+Index: MySQL-python-1.2.1_p2/site.cfg
+===================================================================
+--- MySQL-python-1.2.1_p2.orig/site.cfg 2009-01-24 16:36:21.000000000 +0100
++++ MySQL-python-1.2.1_p2/site.cfg 2009-01-24 16:37:07.000000000 +0100
+@@ -6,7 +6,7 @@
+
+ [options]
+ embedded = False
+-threadsafe = True
++threadsafe = False
+ static = False
+
+ # Use the compiler section to add additional options for the extension build.
+@@ -26,3 +26,8 @@
+ # advapi32
+ #extra_compile_args:
+ #extra_objects:
++
++# Without the following line, bitbake would fail with:
++# CROSS COMPILE Badness: /usr/include in INCLUDEPATH: /usr/include/mysql
++include_dirs:
++
diff --git a/recipes/python/python-mysqldb_1.2.1.bb b/recipes/python/python-mysqldb_1.2.1.bb
new file mode 100644
index 0000000000..9a9ca0fe56
--- /dev/null
+++ b/recipes/python/python-mysqldb_1.2.1.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Python interface to MySQL"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "mysql"
+SRCNAME = "MySQL-python"
+
+inherit distutils
+
+SRC_URI = "\
+ ${SOURCEFORGE_MIRROR}/mysql-python/MySQL-python-${PV}_p2.tar.gz \
+ file://mysqlpath.patch;patch=1 \
+ file://site.patch;patch=1 \
+"
+S = "${WORKDIR}/${SRCNAME}-${PV}_p2"
+
+do_install_append() {
+ install -d ${D}${datadir}/doc/${PN}/
+ install -m 0644 ${S}/doc/*.txt ${D}${datadir}/doc/${PN}/
+}
diff --git a/recipes/python/python-native-2.6.1/00-fix-bindir-libdir-for-cross.patch b/recipes/python/python-native-2.6.1/00-fix-bindir-libdir-for-cross.patch
new file mode 100644
index 0000000000..2559e3a0e4
--- /dev/null
+++ b/recipes/python/python-native-2.6.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 <mickey@vanille-media.de>
+
+Index: Python-2.6.1/Makefile.pre.in
+===================================================================
+--- Python-2.6.1.orig/Makefile.pre.in
++++ Python-2.6.1/Makefile.pre.in
+@@ -86,8 +86,8 @@ exec_prefix= @exec_prefix@
+ datarootdir= @datarootdir@
+
+ # Expanded directories
+-BINDIR= $(exec_prefix)/bin
+-LIBDIR= $(exec_prefix)/lib
++BINDIR= @bindir@
++LIBDIR= @libdir@
+ MANDIR= @mandir@
+ INCLUDEDIR= @includedir@
+ CONFINCLUDEDIR= $(exec_prefix)/include
diff --git a/recipes/python/python-native-2.6.1/04-default-is-optimized.patch b/recipes/python/python-native-2.6.1/04-default-is-optimized.patch
new file mode 100644
index 0000000000..5131e0ba69
--- /dev/null
+++ b/recipes/python/python-native-2.6.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 <mickey@vanille-media.de>
+
+Index: Python-2.6.1/Python/compile.c
+===================================================================
+--- Python-2.6.1.orig/Python/compile.c
++++ Python-2.6.1/Python/compile.c
+@@ -32,7 +32,7 @@
+ #include "symtable.h"
+ #include "opcode.h"
+
+-int Py_OptimizeFlag = 0;
++int Py_OptimizeFlag = 1;
+
+ #define DEFAULT_BLOCK_SIZE 16
+ #define DEFAULT_BLOCKS 8
diff --git a/recipes/python/python-native-2.6.1/10-distutils-fix-swig-parameter.patch b/recipes/python/python-native-2.6.1/10-distutils-fix-swig-parameter.patch
new file mode 100644
index 0000000000..f5e852a118
--- /dev/null
+++ b/recipes/python/python-native-2.6.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 <mickey@vanille-media.de>
+Index: Python-2.6.1/Lib/distutils/command/build_ext.py
+===================================================================
+--- Python-2.6.1.orig/Lib/distutils/command/build_ext.py
++++ Python-2.6.1/Lib/distutils/command/build_ext.py
+@@ -566,7 +566,7 @@ class build_ext (Command):
+ target_lang=language)
+
+
+- def swig_sources (self, sources, extension):
++ def swig_sources (self, sources, extension=None):
+
+ """Walk the list of source files in 'sources', looking for SWIG
+ interface (.i) files. Run SWIG on all that are found, and
diff --git a/recipes/python/python-native-2.6.1/11-distutils-never-modify-shebang-line.patch b/recipes/python/python-native-2.6.1/11-distutils-never-modify-shebang-line.patch
new file mode 100644
index 0000000000..8354e266fa
--- /dev/null
+++ b/recipes/python/python-native-2.6.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 <mickey@vanille-media.de>
+
+Index: Python-2.6.1/Lib/distutils/command/build_scripts.py
+===================================================================
+--- Python-2.6.1.orig/Lib/distutils/command/build_scripts.py
++++ Python-2.6.1/Lib/distutils/command/build_scripts.py
+@@ -87,7 +87,7 @@ class build_scripts (Command):
+ continue
+
+ match = first_line_re.match(first_line)
+- if match:
++ if False: #match:
+ adjust = 1
+ post_interp = match.group(1) or ''
+
diff --git a/recipes/python/python-native-2.6.1/12-distutils-prefix-is-inside-staging-area.patch b/recipes/python/python-native-2.6.1/12-distutils-prefix-is-inside-staging-area.patch
new file mode 100644
index 0000000000..aa4393679f
--- /dev/null
+++ b/recipes/python/python-native-2.6.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 <mickey@vanille-media.de>
+
+Index: Python-2.6.1/Lib/distutils/sysconfig.py
+===================================================================
+--- Python-2.6.1.orig/Lib/distutils/sysconfig.py
++++ Python-2.6.1/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:
+ base = os.path.dirname(os.path.abspath(sys.executable))
+@@ -112,7 +115,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,
+@@ -218,7 +218,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():
+@@ -226,7 +226,7 @@ def get_makefile_filename():
+ 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-native-2.6.1/sitecustomize.py b/recipes/python/python-native-2.6.1/sitecustomize.py
new file mode 100644
index 0000000000..273901898a
--- /dev/null
+++ b/recipes/python/python-native-2.6.1/sitecustomize.py
@@ -0,0 +1,45 @@
+# OpenEmbedded sitecustomize.py (C) 2002-2008 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
+# GPLv2 or later
+# Version: 20081123
+# Features:
+# * set proper default encoding
+# * enable readline completion in the interactive interpreter
+# * load command line history on startup
+# * save command line history on exit
+
+import os
+
+def __exithandler():
+ try:
+ readline.write_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) )
+ except IOError:
+ pass
+
+def __registerExitHandler():
+ import atexit
+ atexit.register( __exithandler )
+
+def __enableReadlineSupport():
+ readline.set_history_length( 1000 )
+ readline.parse_and_bind( "tab: complete" )
+ try:
+ readline.read_history_file( "%s/.python-history" % os.getenv( "HOME", "/tmp" ) )
+ except IOError:
+ pass
+
+def __enableDefaultEncoding():
+ import sys
+ try:
+ sys.setdefaultencoding( "utf8" )
+ except LookupError:
+ pass
+
+import sys
+try:
+ import rlcompleter, readline
+except ImportError:
+ pass
+else:
+ __enableDefaultEncoding()
+ __registerExitHandler()
+ __enableReadlineSupport()
diff --git a/recipes/python/python-native_2.6.1.bb b/recipes/python/python-native_2.6.1.bb
new file mode 100644
index 0000000000..3ae48285b1
--- /dev/null
+++ b/recipes/python/python-native_2.6.1.bb
@@ -0,0 +1,28 @@
+require python.inc
+DEPENDS = "openssl-native bzip2-full-native"
+
+SRC_URI = "\
+ http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \
+ file://00-fix-bindir-libdir-for-cross.patch;patch=1 \
+ file://04-default-is-optimized.patch;patch=1 \
+ file://10-distutils-fix-swig-parameter.patch;patch=1 \
+ file://11-distutils-never-modify-shebang-line.patch;patch=1 \
+ file://12-distutils-prefix-is-inside-staging-area.patch;patch=1 \
+"
+S = "${WORKDIR}/Python-${PV}"
+
+inherit native
+
+prefix = "${STAGING_DIR_NATIVE}/${layout_prefix}"
+exec_prefix = "${STAGING_DIR_NATIVE}/${layout_exec_prefix}"
+
+EXTRA_OEMAKE = '\
+ BUILD_SYS="" \
+ HOST_SYS="" \
+ STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE} \
+ STAGING_INCDIR=${STAGING_INCDIR_NATIVE} \
+'
+
+do_stage_append() {
+ install -m 0755 Parser/pgen ${STAGING_BINDIR_NATIVE}/pgen
+}
diff --git a/recipes/python/python-netfilter_0.5.5.bb b/recipes/python/python-netfilter_0.5.5.bb
new file mode 100644
index 0000000000..17f3aaada0
--- /dev/null
+++ b/recipes/python/python-netfilter_0.5.5.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Python module to manage netfilter rules"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+RDEPENDS = "iptables iptables-utils python-logging python-shell python-subprocess"
+SRCNAME = "python-netfilter"
+PR = "ml0"
+
+SRC_URI = "http://opensource.bolloretelecom.eu/files/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-nevow_0.9.32.bb b/recipes/python/python-nevow_0.9.32.bb
new file mode 100644
index 0000000000..155157c517
--- /dev/null
+++ b/recipes/python/python-nevow_0.9.32.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "Nevow is a web application construction kit written in Python"
+LICENSE = "MIT"
+
+REALPN = "Nevow"
+
+require divmod.inc
+
+FILES_${PN} += "${datadir}"
+DEPENDS += "python-twisted-native"
+
diff --git a/recipes/python/python-numarray_1.1.1.bb b/recipes/python/python-numarray_1.1.1.bb
new file mode 100644
index 0000000000..4e02294ebc
--- /dev/null
+++ b/recipes/python/python-numarray_1.1.1.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Next Generation sophisticated Numeric Processing Package for Python"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "PYRAF"
+SRCNAME = "numarray"
+PR = "ml1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/numpy/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/numarray/examples/*/.debug"
diff --git a/recipes/python/python-numeric/no-lapack.patch b/recipes/python/python-numeric/no-lapack.patch
new file mode 100644
index 0000000000..c1916b8b9f
--- /dev/null
+++ b/recipes/python/python-numeric/no-lapack.patch
@@ -0,0 +1,33 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- Numeric-23.7/setup.py~nolapack
++++ Numeric-23.7/setup.py
+@@ -32,7 +32,7 @@
+ mathlibs = []
+
+ # delete all but the first one in this list if using your own LAPACK/BLAS
+-sourcelist = [os.path.join('Src', 'lapack_litemodule.c'),
++sourcelist = [
+ #os.path.join('Src', 'blas_lite.c'),
+ #os.path.join('Src', 'f2c_lite.c'),
+ #os.path.join('Src', 'zlapack_lite.c'),
+@@ -40,12 +40,12 @@
+ ]
+ # set these to use your own BLAS;
+
+-library_dirs_list = ['/usr/lib/atlas']
+-libraries_list = ['lapack', 'cblas', 'f77blas', 'atlas', 'g2c']
++library_dirs_list = []
++libraries_list = []
+
+ # set to true (1), if you also want BLAS optimized matrixmultiply/dot/innerproduct
+-use_dotblas = 1
+-include_dirs = ['/usr/include/atlas']
++use_dotblas = 0
++include_dirs = []
+ # You may need to set this to find cblas.h
+ # e.g. on UNIX using ATLAS this should be ['/usr/include/atlas']
+ extra_link_args = []
diff --git a/recipes/python/python-numeric_23.7.bb b/recipes/python/python-numeric_23.7.bb
new file mode 100644
index 0000000000..eab7371a1c
--- /dev/null
+++ b/recipes/python/python-numeric_23.7.bb
@@ -0,0 +1,16 @@
+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 \
+ file://no-lapack.patch;patch=1"
+S = "${WORKDIR}/Numeric-${PV}"
+
+inherit distutils
+
+do_stage() {
+ cp -pPR Include/Numeric ${STAGING_INCDIR}
+}
+
diff --git a/recipes/python/python-numpy/arm/config.h b/recipes/python/python-numpy/arm/config.h
new file mode 100644
index 0000000000..17ef186d56
--- /dev/null
+++ b/recipes/python/python-numpy/arm/config.h
@@ -0,0 +1,21 @@
+/* ./src.linux-i686-2.5/numpy/core/include/numpy/config.h */
+/* #define SIZEOF_SHORT 2 */
+/* #define SIZEOF_INT 4 */
+/* #define SIZEOF_LONG 4 */
+/* #define SIZEOF_FLOAT 4 */
+/* #define SIZEOF_DOUBLE 8 */
+#define SIZEOF_LONG_DOUBLE 12
+#define SIZEOF_PY_INTPTR_T 4
+/* #define SIZEOF_LONG_LONG 8 */
+#define SIZEOF_PY_LONG_LONG 8
+/* #define CHAR_BIT 8 */
+#define MATHLIB m
+#define HAVE_FLOAT_FUNCS
+#define HAVE_LOG1P
+#define HAVE_EXPM1
+#define HAVE_INVERSE_HYPERBOLIC
+#define HAVE_INVERSE_HYPERBOLIC_FLOAT
+#define HAVE_ISNAN
+#define HAVE_ISINF
+#define HAVE_RINT
+
diff --git a/recipes/python/python-numpy/arm/numpyconfig.h b/recipes/python/python-numpy/arm/numpyconfig.h
new file mode 100644
index 0000000000..c4bf6547f0
--- /dev/null
+++ b/recipes/python/python-numpy/arm/numpyconfig.h
@@ -0,0 +1,17 @@
+/* cat ./src.linux-i686-2.5/numpy/core/include/numpy/numpyconfig.h */
+/*
+ * * This file is generated by numpy/core/setup.pyc. DO NOT EDIT
+ * */
+#define NPY_SIZEOF_SHORT 2
+#define NPY_SIZEOF_INT 4
+#define NPY_SIZEOF_LONG 4
+#define NPY_SIZEOF_FLOAT 4
+#define NPY_SIZEOF_DOUBLE 8
+#define NPY_SIZEOF_LONGDOUBLE 12
+#define NPY_SIZEOF_PY_INTPTR_T 4
+#define NPY_NO_SMP 0
+
+#define NPY_SIZEOF_LONGLONG 8
+#define NPY_SIZEOF_PY_LONG_LONG 8
+/* #define CHAR_BIT 8 */
+
diff --git a/recipes/python/python-numpy/trycompile.diff b/recipes/python/python-numpy/trycompile.diff
new file mode 100644
index 0000000000..3ab3d72f2c
--- /dev/null
+++ b/recipes/python/python-numpy/trycompile.diff
@@ -0,0 +1,33 @@
+--- /tmp/setup.py 2008-09-01 10:37:44.000000000 +0200
++++ numpy-1.1.1/numpy/core/setup.py 2008-09-01 10:38:20.373198000 +0200
+@@ -80,8 +80,7 @@
+ raise SystemError,\
+ "Non-existing %s. Perhaps you need to install"\
+ " python-dev|python-devel." % (python_h)
+- result = config_cmd.try_run(tc,include_dirs=[python_include],
+- library_dirs = default_lib_dirs)
++ result = config_cmd.try_compile(tc)
+ if not result:
+ raise SystemError,"Failed to test configuration. "\
+ "See previous error messages for more information."
+@@ -95,7 +94,7 @@
+ if mathlib:
+ mathlibs_choices.insert(0,mathlib.split(','))
+ for libs in mathlibs_choices:
+- if config_cmd.try_run(tc,libraries=libs):
++ if config_cmd.try_compile(tc):
+ mathlibs = libs
+ break
+ else:
+@@ -180,10 +179,7 @@
+ " python-dev|python-devel." % (python_h)
+
+ config.numpy_include_dirs
+- result = config_cmd.try_run(testcode,
+- include_dirs = [python_include] + \
+- config.numpy_include_dirs,
+- library_dirs = default_lib_dirs)
++ result = config_cmd.try_compile(testcode)
+
+ if not result:
+ raise SystemError,"Failed to generate numpy configuration. "\
diff --git a/recipes/python/python-numpy/unbreak-assumptions.diff b/recipes/python/python-numpy/unbreak-assumptions.diff
new file mode 100644
index 0000000000..c5b448167f
--- /dev/null
+++ b/recipes/python/python-numpy/unbreak-assumptions.diff
@@ -0,0 +1,16 @@
+--- /tmp/system_info.py 2008-08-22 00:38:16.000000000 +0200
++++ numpy-1.1.1/numpy/distutils/system_info.py 2008-08-22 00:40:33.013198000 +0200
+@@ -137,11 +137,8 @@
+ default_x11_lib_dirs = []
+ default_x11_include_dirs = []
+ else:
+- default_lib_dirs = ['/usr/local/lib', '/opt/lib', '/usr/lib',
+- '/opt/local/lib', '/sw/lib']
+- default_include_dirs = ['/usr/local/include',
+- '/opt/include', '/usr/include',
+- '/opt/local/include', '/sw/include']
++ default_lib_dirs = ['/non-existant-dir']
++ default_include_dirs = ['non-existant-dir']
+ default_src_dirs = ['.','/usr/local/src', '/opt/src','/sw/src']
+
+ try:
diff --git a/recipes/python/python-numpy_1.1.1.bb b/recipes/python/python-numpy_1.1.1.bb
new file mode 100644
index 0000000000..157dadadaf
--- /dev/null
+++ b/recipes/python/python-numpy_1.1.1.bb
@@ -0,0 +1,27 @@
+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://unbreak-assumptions.diff;patch=1 \
+ file://trycompile.diff;patch=1 \
+ 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/
+}
+
+
diff --git a/recipes/python/python-ogg_1.3.bb b/recipes/python/python-ogg_1.3.bb
new file mode 100644
index 0000000000..d2d1d9e2ba
--- /dev/null
+++ b/recipes/python/python-ogg_1.3.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "Python Ogg Vorbis Bindings"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "libogg"
+SRCNAME = "pyogg"
+PR = "r1"
+
+SRC_URI = "http://www.andrewchatham.com/pyogg/download/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+do_configure_prepend() {
+ touch Setup
+ echo "ogg_libs = ogg" >>Setup
+ echo "ogg_lib_dir = ${STAGING_LIBDIR}" >>Setup
+ echo "ogg_include_dir = ${STAGING_INCDIR}" >>Setup
+}
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/pyogg
+ install -m 0644 include/pyogg/pyogg.h ${STAGING_INCDIR}/pyogg/pyogg.h
+}
diff --git a/recipes/python/python-opendir/opendir.pyx b/recipes/python/python-opendir/opendir.pyx
new file mode 100644
index 0000000000..1ee81f7382
--- /dev/null
+++ b/recipes/python/python-opendir/opendir.pyx
@@ -0,0 +1,149 @@
+##############################################################
+#
+# opendir.pyx - A class exposing the functionality of
+# =========== the opendir() family of C libary functions.
+#
+# By Gregory Ewing
+# greg.ewing@canterbury.ac.nz
+#
+# This software and derivative works created from it
+# may be used and redistributed without restriction.
+#
+##############################################################
+
+cdef extern from "sys/errno.h":
+ int errno
+
+cdef extern from "stdio.h":
+ char *strerror(int)
+
+cdef extern from "dirent.h":
+ ctypedef struct DIR
+ struct dirent:
+ int d_namlen
+ char d_name[1]
+ DIR *c_opendir "opendir" (char *)
+ int readdir_r(DIR *, dirent *, dirent **)
+ long telldir(DIR *)
+ void seekdir(DIR *, long)
+ void rewinddir(DIR *)
+ int closedir(DIR *)
+ int dirfd(DIR *)
+
+#------------------------------------------------------------------
+
+cdef class opendir:
+ """opendir(pathname) --> an open directory object
+
+ Opens a directory and provides incremental access to
+ the filenames it contains. May be used as a file-like
+ object or as an iterator.
+
+ When used as a file-like object, each call to read()
+ returns one filename, or an empty string when the end
+ of the directory is reached. The close() method should
+ be called when finished with the directory.
+
+ The close() method should also be called when used as
+ an iterator and iteration is stopped prematurely. If
+ iteration proceeds to completion, the directory is
+ closed automatically."""
+
+ cdef DIR *dir
+
+ def __cinit__(self, char *path):
+ self.dir = c_opendir(path)
+ if not self.dir:
+ raise IOError(errno, "%s: '%s'" % (strerror(errno), path))
+
+ def __dealloc__(self):
+ if self.dir:
+ closedir(self.dir)
+
+ def read(self):
+ """read() --> filename or empty string
+
+ Returns the next filename from the directory, or an empty
+ string if the end of the directory has been reached."""
+
+ cdef dirent entry, *result
+ check_open(self)
+ if readdir_r(self.dir, &entry, &result) < 0:
+ raise IOError(errno)
+ if result:
+ return entry.d_name
+ else:
+ return ""
+
+ def tell(self):
+ """tell() --> position
+
+ Returns a value representing the current position in the
+ directory, suitable for passing to tell(). Only valid for
+ this directory object as long as it remains open."""
+
+ check_open(self)
+ return telldir(self.dir)
+
+ def seek(self, long pos):
+ """seek(position)
+
+ Returns the directory to the specified position, which
+ should be a value previously returned by tell()."""
+
+ check_open(self)
+ seekdir(self.dir, pos)
+
+ def rewind(self):
+ """rewind()
+
+ Resets the position to the beginning of the directory."""
+
+ check_open(self)
+ rewinddir(self.dir)
+
+ def close(self):
+ """close()
+
+ Closes the directory and frees the underlying file descriptor."""
+
+ if self.dir:
+ if closedir(self.dir) < 0:
+ raise IOError(errno)
+ self.dir = NULL
+
+# MaxOSX doesn't seem to have dirfd, despite what the
+# man page says. :-(
+#
+# def fileno(self):
+# """fileno() --> file descriptor
+#
+# Returns the file descriptor associated with the open directory."""
+#
+# check_open(self)
+# return dirfd(self.dir)
+
+ def __iter__(self):
+ return self
+
+ def __next__(self):
+ """next() --> filename
+
+ Returns the next filename from the directory. If the end of the
+ directory has been reached, closes the directory and raises
+ StopIteration."""
+
+ if self.dir:
+ result = self.read()
+ if result:
+ return result
+ self.close()
+ raise StopIteration
+
+#------------------------------------------------------------------
+
+cdef int check_open(opendir d) except -1:
+ if not d.dir:
+ raise ValueError("Directory is closed")
+ return 0
+
diff --git a/recipes/python/python-opendir/setup.py b/recipes/python/python-opendir/setup.py
new file mode 100644
index 0000000000..d76b22c95a
--- /dev/null
+++ b/recipes/python/python-opendir/setup.py
@@ -0,0 +1,25 @@
+from distutils.core import setup
+from distutils.extension import Extension
+from Cython.Distutils import build_ext
+
+setup(
+ name = 'opendir',
+ version = '0.0.1',
+ author = 'Gregory Ewing',
+ author_email = 'greg ewing at canterbury ac nz',
+ maintainer = 'Johannes "josch" Schauer',
+ maintainer_email = 'j schauer at email de',
+ description = 'Implements POSIX opendir',
+ classifiers = [
+ 'Development Status :: 4 - Beta',
+ 'Intended Audience :: Developers',
+ 'Operating System :: POSIX',
+ 'Programming Language :: Pyrex',
+ 'Topic :: Software Development :: Libraries :: Python Modules',
+ 'Topic :: System :: Filesystems'
+ ],
+ ext_modules=[
+ Extension("opendir", ["opendir.pyx"]),
+ ],
+ cmdclass = {'build_ext': build_ext}
+)
diff --git a/recipes/python/python-opendir_1.0.bb b/recipes/python/python-opendir_1.0.bb
new file mode 100644
index 0000000000..324f5aca2a
--- /dev/null
+++ b/recipes/python/python-opendir_1.0.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "POSIX opendir support for Python"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "PD"
+HOMEPAGE = "http://rabenfrost.net/mokopedia/opendir/"
+DEPENDS = "python-pyrex-native python-cython-native"
+PR = "ml1"
+
+SRC_URI = "\
+ file://opendir.pyx \
+ file://setup.py \
+"
+S = "${WORKDIR}"
+
+inherit distutils
diff --git a/recipes/python/python-pexpect_2.3.bb b/recipes/python/python-pexpect_2.3.bb
new file mode 100644
index 0000000000..2195d8d5eb
--- /dev/null
+++ b/recipes/python/python-pexpect_2.3.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "A Pure Python Expect like Module for Python"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "PSF"
+SRCNAME = "pexpect"
+PR = "ml0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+RDEPENDS = "\
+ python-core \
+ python-io \
+ python-terminal \
+ python-resource \
+ python-fcntl \
+"
+
diff --git a/recipes/python/python-psyco_1.6.bb b/recipes/python/python-psyco_1.6.bb
new file mode 100644
index 0000000000..5c47e6971d
--- /dev/null
+++ b/recipes/python/python-psyco_1.6.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Psyco lets you run your existing Python software much faster, with no change in your source."
+HOMEPAGE = "http://psyco.sourceforge.net"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "PSF"
+RDEPENDS = "python-core"
+SRCNAME = "psyco"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}-src.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+COMPATIBLE_HOST = 'i.86.*-linux'
+
+inherit distutils
diff --git a/recipes/python/python-ptrace_0.5.bb b/recipes/python/python-ptrace_0.5.bb
new file mode 100644
index 0000000000..55ec70f9dd
--- /dev/null
+++ b/recipes/python/python-ptrace_0.5.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "python-ptrace is a debugger using ptrace."
+HOMEPAGE = "http://python-ptrace.hachoir.org/trac"
+SECTION = "devel/python"
+LICENSE = "GPLv2"
+PR = "ml0"
+
+SRC_URI = "http://pypi.python.org/packages/source/p/python-ptrace/python-ptrace-${PV}.tar.gz"
+
+inherit distutils
diff --git a/recipes/python/python-pyalsa_1.0.16.bb b/recipes/python/python-pyalsa_1.0.16.bb
new file mode 100644
index 0000000000..24bd27c242
--- /dev/null
+++ b/recipes/python/python-pyalsa_1.0.16.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Support for the Linux 2.6.x ALSA Sound System"
+SECTION = "devel/python"
+DEPENDS = "alsa-lib"
+PRIORITY = "optional"
+LICENSE = "GPL"
+SRCNAME = "pyalsa"
+PR = "ml1"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/${SRCNAME}/${SRCNAME}-${PV}.tar.bz2"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pyalsaaudio_0.4.bb b/recipes/python/python-pyalsaaudio_0.4.bb
new file mode 100644
index 0000000000..42b15ce5be
--- /dev/null
+++ b/recipes/python/python-pyalsaaudio_0.4.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Support for the Linux 2.6.x ALSA Sound System"
+SECTION = "devel/python"
+DEPENDS = "alsa-lib"
+PRIORITY = "optional"
+LICENSE = "GPL"
+SRCNAME = "pyalsaaudio"
+PR = "ml0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pyalsaaudio/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pybluez_0.15.bb b/recipes/python/python-pybluez_0.15.bb
new file mode 100644
index 0000000000..17ffd385fc
--- /dev/null
+++ b/recipes/python/python-pybluez_0.15.bb
@@ -0,0 +1,10 @@
+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-0.15.tar.gz"
+S = "${WORKDIR}/PyBluez-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pycairo/fix-setup-py.patch b/recipes/python/python-pycairo/fix-setup-py.patch
new file mode 100644
index 0000000000..6165184448
--- /dev/null
+++ b/recipes/python/python-pycairo/fix-setup-py.patch
@@ -0,0 +1,24 @@
+diff -urN pycairo-1.4.0.orig/setup.py pycairo-1.4.0/setup.py
+--- pycairo-1.4.0.orig/setup.py 2007-03-14 10:53:30.000000000 +0100
++++ pycairo-1.4.0/setup.py 2008-09-23 18:55:25.000000000 +0200
+@@ -37,20 +37,6 @@
+ runtime_library_dirs = pkg_config_parse('--libs-only-L', 'cairo')
+
+ pkgconfig_file='pycairo.pc'
+-print 'creating %s' % pkgconfig_file
+-fo = open (pkgconfig_file, 'w')
+-fo.write ("""\
+-prefix=%s
+-
+-Name: Pycairo
+-Description: Python bindings for cairo
+-Version: %s
+-Requires: cairo
+-Cflags: -I${prefix}/include/pycairo
+-Libs:
+-""" % (sys.prefix, pycairo_version)
+- )
+-fo.close()
+
+ cairo = dic.Extension(
+ name = 'cairo._cairo',
diff --git a/recipes/python/python-pycairo_1.4.0.bb b/recipes/python/python-pycairo_1.4.0.bb
new file mode 100644
index 0000000000..0cccd76d0f
--- /dev/null
+++ b/recipes/python/python-pycairo_1.4.0.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Python Bindings for the Cairo canvas library"
+SECTION = "devel/python"
+HOMEPAGE = "http://cairographics.org/pycairo"
+LICENSE = "LGPL MPL"
+DEPENDS = "cairo"
+PR = "ml3"
+
+SRC_URI = "http://cairographics.org/releases/pycairo-${PV}.tar.gz \
+ file://fix-setup-py.patch;patch=1"
+S = "${WORKDIR}/pycairo-${PV}"
+
+inherit distutils pkgconfig
+
+do_configure_append() {
+ sed -e 's:@prefix@:${prefix}:' -e 's:@includedir@:\$\{prefix\}/include:' -e 's:@VERSION@:${PV}:' pycairo.pc.in > pycairo.pc
+}
+
+do_stage() {
+ install -d ${STAGING_INCDIR}
+ install -m 0644 cairo/pycairo.h ${STAGING_INCDIR}
+}
diff --git a/recipes/python/python-pycairo_1.8.0.bb b/recipes/python/python-pycairo_1.8.0.bb
new file mode 100644
index 0000000000..4e3e4633ba
--- /dev/null
+++ b/recipes/python/python-pycairo_1.8.0.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "Python Bindings for the Cairo canvas library"
+SECTION = "devel/python"
+HOMEPAGE = "http://cairographics.org/pycairo"
+LICENSE = "LGPL MPL"
+# cairo >= 1.8.0
+DEPENDS = "cairo"
+PR = "ml0"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "http://cairographics.org/releases/pycairo-${PV}.tar.gz \
+ file://fix-setup-py.patch;patch=1"
+S = "${WORKDIR}/pycairo-${PV}"
+
+inherit distutils pkgconfig
+
+do_configure_append() {
+ sed -e 's:@prefix@:${prefix}:' -e 's:@includedir@:\$\{prefix\}/include:' -e 's:@VERSION@:${PV}:' pycairo.pc.in > pycairo.pc
+}
+
+do_stage() {
+ install -d ${STAGING_INCDIR}
+ install -m 0644 cairo/pycairo.h ${STAGING_INCDIR}
+}
diff --git a/recipes/python/python-pycap_0.1.6.bb b/recipes/python/python-pycap_0.1.6.bb
new file mode 100644
index 0000000000..63e19a4399
--- /dev/null
+++ b/recipes/python/python-pycap_0.1.6.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Python Packet Capture Library"
+SECTION = "devel/python"
+PRIORITY = "optional"
+RDEPENDS = "python-core"
+DEPENDS = "libpcap libnet"
+SRCNAME = "pycap"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pychecker_0.8.18.bb b/recipes/python/python-pychecker_0.8.18.bb
new file mode 100644
index 0000000000..1b39b588ce
--- /dev/null
+++ b/recipes/python/python-pychecker_0.8.18.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "SourceCode Test Utility"
+SECTION = "devel/python"
+HOMEPAGE = "http://pychecker.sourceforge.net/"
+PRIORITY = "optional"
+LICENSE = "BSD"
+SRCNAME = "pychecker"
+PR = "ml0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pycodes/no-docs.patch b/recipes/python/python-pycodes/no-docs.patch
new file mode 100644
index 0000000000..5d41e8c03f
--- /dev/null
+++ b/recipes/python/python-pycodes/no-docs.patch
@@ -0,0 +1,18 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- pycodes/setup.py~no-docs 2004-01-25 01:01:33.000000000 +0100
++++ pycodes/setup.py 2004-04-04 03:24:53.000000000 +0200
+@@ -43,9 +43,7 @@
+ 'pycodes.tests.quantization',
+ 'pycodes.tests.quantization.BSC',
+ 'pycodes.tests.quantization.BEC'],
+- data_files=([('doc',
+- map(lambda x: os.path.join('doc',x),
+- ['pycodes.html','pycodes.info']))]),
++ data_files=(),
+ ext_modules = [
+ Extension('pycodes.pyLDPC',
+ map(lambda x: os.path.join(pyLDPCdir,x),pyLDPCsrc) +
diff --git a/recipes/python/python-pycodes_1.2.bb b/recipes/python/python-pycodes_1.2.bb
new file mode 100644
index 0000000000..ce2cb17594
--- /dev/null
+++ b/recipes/python/python-pycodes_1.2.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "The pycodes package provides various extensions to Python for low density parity check (LDPC) codes \
+(an extremely powerful class of error correcting codes)."
+SECTION = "devel/python"
+HOMEPAGE = "http://web.mit.edu/~emin/www/source_code/pycodes/index.html"
+PRIORITY = "optional"
+LICENSE = "PYCODES"
+SRCNAME = "pycodes"
+PR = "ml1"
+
+SRC_URI = "http://web.mit.edu/~emin/www/source_code/pycodes/pycodes-1-2.tar.gz \
+ file://no-docs.patch;patch=1"
+S = "${WORKDIR}/${SRCNAME}"
+
+inherit distutils
diff --git a/recipes/python/python-pycrypto_2.0.1.bb b/recipes/python/python-pycrypto_2.0.1.bb
new file mode 100644
index 0000000000..7300bbd60b
--- /dev/null
+++ b/recipes/python/python-pycrypto_2.0.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "A collection of cryptographic algorithms and protocols"
+SECTION = "devel/python"
+PRIORITY = "optional"
+DEPENDS = "gmp"
+SRCNAME = "pycrypto"
+LICENSE = "pycrypto"
+PR = "ml1"
+
+SRC_URI = "http://www.amk.ca/files/python/crypto/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pycrypto_git.bb b/recipes/python/python-pycrypto_git.bb
new file mode 100644
index 0000000000..9e6eecbebd
--- /dev/null
+++ b/recipes/python/python-pycrypto_git.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "A collection of cryptographic algorithms and protocols"
+SECTION = "devel/python"
+PRIORITY = "optional"
+DEPENDS = "gmp"
+SRCNAME = "pycrypto"
+LICENSE = "pycrypto"
+PR = "ml0"
+
+PV = "2.0.1+gitr${SRCREV}"
+SRC_URI = "git://git.pycrypto.org:9419/crypto/pycrypto-2.x.git;protocol=git;branch=master"
+S = "${WORKDIR}/git"
+
+inherit distutils
diff --git a/recipes/python/python-pycurl/no-static-link.patch b/recipes/python/python-pycurl/no-static-link.patch
new file mode 100644
index 0000000000..b7c5ab9c9c
--- /dev/null
+++ b/recipes/python/python-pycurl/no-static-link.patch
@@ -0,0 +1,14 @@
+Index: pycurl-7.18.2/setup.py
+===================================================================
+--- pycurl-7.18.2.orig/setup.py
++++ pycurl-7.18.2/setup.py
+@@ -97,8 +97,7 @@ else:
+ else:
+ extra_compile_args.append(e)
+ libs = split_quoted(
+- os.popen("'%s' --libs" % CURL_CONFIG).read()+\
+- os.popen("'%s' --static-libs" % CURL_CONFIG).read())
++ os.popen("'%s' --libs" % CURL_CONFIG).read())
+ for e in libs:
+ if e[:2] == "-l":
+ libraries.append(e[2:])
diff --git a/recipes/python/python-pycurl_7.18.2.bb b/recipes/python/python-pycurl_7.18.2.bb
new file mode 100644
index 0000000000..a38a4b5a27
--- /dev/null
+++ b/recipes/python/python-pycurl_7.18.2.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "libcurl Python Bindings"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "curl-${PV}"
+SRCNAME = "pycurl"
+PR = "ml2"
+
+SRC_URI = "\
+ http://${SRCNAME}.sourceforge.net/download/${SRCNAME}-${PV}.tar.gz \
+ file://no-static-link.patch;patch=1 \
+"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+RDEPENDS = "python-core curl (>=${PV})"
diff --git a/recipes/python/python-pydirectfb/fix-directfb-detection.patch b/recipes/python/python-pydirectfb/fix-directfb-detection.patch
new file mode 100644
index 0000000000..c8b7cc805a
--- /dev/null
+++ b/recipes/python/python-pydirectfb/fix-directfb-detection.patch
@@ -0,0 +1,16 @@
+Index: pydirectfb/setup.py
+===================================================================
+--- pydirectfb.orig/setup.py
++++ pydirectfb/setup.py
+@@ -11,9 +11,10 @@
+ Check dependencies add add the flags to include_dirs, library_dirs and
+ libraries. The basic logic is taken from pygame.
+ """
+- command = name + '-config --version --cflags --libs 2>/dev/null'
++ command = 'pkg-config %s --modversion --cflags --libs 2>/dev/null' % name
+ try:
+ config = os.popen(command).readlines()
++ print config
+ if len(config) == 0:
+ raise ValueError, 'command not found'
+ flags = (' '.join(config[1:]) + ' ').split()
diff --git a/recipes/python/python-pyephem_3.7.3.3.bb b/recipes/python/python-pyephem_3.7.3.3.bb
new file mode 100644
index 0000000000..885f285225
--- /dev/null
+++ b/recipes/python/python-pyephem_3.7.3.3.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "PyEphem provides scientific-grade astronomical computations \
+for the Python programming language."
+HOMEPAGE = "http://www.rhodesmill.org/brandon/projects/pyephem.html"
+LICENSE = "PSF"
+AUTHOR = "Brandon Craig Rhodes"
+PR = "ml0"
+
+SRC_URI = "http://pypi.python.org/packages/source/p/pyephem/pyephem-${PV}.tar.gz"
+S = "${WORKDIR}/pyephem-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pyfits_1.3.bb b/recipes/python/python-pyfits_1.3.bb
new file mode 100644
index 0000000000..cc874e1394
--- /dev/null
+++ b/recipes/python/python-pyfits_1.3.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "PyFITS provides an interface to FITS formatted files under the Python scripting language."
+HOMEPAGE = "http://www.stsci.edu/resources/software_hardware/pyfits"
+AUTHOR = "Space Telescope Science Institute"
+RDEPENDS = "python-numpy"
+SECTION = "devel/python"
+LICENSE = "AURA"
+PR = "ml0"
+
+SRC_URI = "http://www.stsci.edu/resources/software_hardware/pyfits/pyfits-${PV}.tar.gz"
+S = "${WORKDIR}/pyfits-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pyflakes_0.3.0.bb b/recipes/python/python-pyflakes_0.3.0.bb
new file mode 100644
index 0000000000..4a6580ea05
--- /dev/null
+++ b/recipes/python/python-pyflakes_0.3.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Python Source-Code Testing Utility"
+SECTION = "devel/python"
+HOMEPAGE = "http://divmod.org/projects/pyflakes"
+PRIORITY = "optional"
+LICENSE = "BSD"
+SRCNAME = "pyflakes"
+PR = "ml0"
+
+SRC_URI = "http://pypi.python.org/packages/source/p/pyflakes/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pyftpdlib_0.5.1.bb b/recipes/python/python-pyftpdlib_0.5.1.bb
new file mode 100644
index 0000000000..201d7ab1a0
--- /dev/null
+++ b/recipes/python/python-pyftpdlib_0.5.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "FTP Server Library"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT"
+PR = "ml0"
+
+inherit distutils
+
+SRC_URI = "http://pyftpdlib.googlecode.com/files/pyftpdlib-${PV}.tar.gz"
+S = "${WORKDIR}/pyftpdlib-${PV}"
+
+RDEPENDS = "python-netserver"
diff --git a/recipes/python/python-pygame-1.8.1/Setup b/recipes/python/python-pygame-1.8.1/Setup
new file mode 100644
index 0000000000..dd6d540da5
--- /dev/null
+++ b/recipes/python/python-pygame-1.8.1/Setup
@@ -0,0 +1,63 @@
+#This Setup file is used by the setup.py script to configure the
+#python extensions. You will likely use the "config.py" which will
+#build a correct Setup file for you based on your system settings.
+#If not, the format is simple enough to edit by hand. First change
+#the needed commandline flags for each dependency, then comment out
+#any unavailable optional modules in the first optional section.
+
+
+SDL = -D_REENTRANT -Xlinker -lSDL -lpthread
+FONT = -lSDL_ttf
+IMAGE = -lSDL_image
+MIXER = -lSDL_mixer
+SMPEG = -lsmpeg
+PNG = -lpng
+JPEG = -ljpeg
+SCRAP = -lX11
+
+#DEBUG = -C-W -C-Wall
+DEBUG =
+
+#the following modules are optional. you will want to compile
+#everything you can, but you can ignore ones you don't have
+#dependencies for, just comment them out
+
+imageext src/imageext.c $(SDL) $(IMAGE) $(PNG) $(JPEG) $(DEBUG)
+font src/font.c $(SDL) $(FONT) $(DEBUG)
+mixer src/mixer.c $(SDL) $(MIXER) $(DEBUG)
+mixer_music src/music.c $(SDL) $(MIXER) $(DEBUG)
+_numericsurfarray src/_numericsurfarray.c $(SDL) $(DEBUG)
+_numericsndarray src/_numericsndarray.c $(SDL) $(MIXER) $(DEBUG)
+scrap src/scrap.c $(SDL) $(SCRAP) $(DEBUG)
+
+#experimental new movie movie. requires libavcodec and libavformat.
+#add any necessary compile flags to this line and uncomment.
+#movieext src/movie.c src/ffmovie.c $(SDL) -lavcodec -lavformat
+
+
+#these modules are required for pygame to run. they only require
+#SDL as a dependency. these should not be altered
+
+base src/base.c $(SDL) $(DEBUG)
+cdrom src/cdrom.c $(SDL) $(DEBUG)
+color src/color.c $(SDL) $(DEBUG)
+constants src/constants.c $(SDL) $(DEBUG)
+display src/display.c $(SDL) $(DEBUG)
+event src/event.c $(SDL) $(DEBUG)
+fastevent src/fastevent.c src/fastevents.c $(SDL) $(DEBUG)
+key src/key.c $(SDL) $(DEBUG)
+mouse src/mouse.c $(SDL) $(DEBUG)
+rect src/rect.c $(SDL) $(DEBUG)
+rwobject src/rwobject.c $(SDL) $(DEBUG)
+surface src/surface.c src/alphablit.c src/surface_fill.c $(SDL) $(DEBUG)
+surflock src/surflock.c $(SDL) $(DEBUG)
+time src/time.c $(SDL) $(DEBUG)
+joystick src/joystick.c $(SDL) $(DEBUG)
+draw src/draw.c $(SDL) $(DEBUG)
+image src/image.c $(SDL) $(DEBUG)
+overlay src/overlay.c $(SDL) $(DEBUG)
+transform src/transform.c src/rotozoom.c src/scale2x.c $(SDL) $(DEBUG)
+mask src/mask.c src/bitmask.c $(SDL) $(DEBUG)
+bufferproxy src/bufferproxy.c $(SDL) $(DEBUG)
+pixelarray src/pixelarray.c $(SDL) $(DEBUG)
+
diff --git a/recipes/python/python-pygame_1.8.1.bb b/recipes/python/python-pygame_1.8.1.bb
new file mode 100644
index 0000000000..95191ce350
--- /dev/null
+++ b/recipes/python/python-pygame_1.8.1.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "Python libSDL Bindings"
+SECTION = "devel/python"
+HOMEPAGE = "http://www.pygame.org"
+LICENSE = "LGPL"
+DEPENDS = "libsdl-x11 libsdl-image libsdl-mixer libsdl-net libsdl-ttf python-numeric"
+DEPENDS += "${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'smpeg', d)}"
+SRCNAME = "pygame"
+PR = "ml4"
+
+SRC_URI = "\
+ ftp://ftp.pygame.org/pub/pygame/${SRCNAME}-${PV}release.tar.gz \
+ file://Setup \
+"
+S = "${WORKDIR}/${SRCNAME}-${PV}release"
+
+inherit distutils
+
+do_configure_prepend() {
+ cat ${WORKDIR}/Setup >Setup
+ SDL="`sdl-config --cflags` `sdl-config --libs`"; echo "SDL=$SDL" >>Setup
+ if [ '${ENTERPRISE_DISTRO}' != '1' ]; then
+ echo "movie src/movie.c \$(SDL) \$(SMPEG) \$(DEBUG)" >>Setup
+ fi
+}
+
+do_stage() {
+ distutils_stage_all
+}
+
+RDEPENDS = "python-numeric"
diff --git a/recipes/python/python-pygobject-native_2.14.2.bb b/recipes/python/python-pygobject-native_2.14.2.bb
new file mode 100644
index 0000000000..70af95259c
--- /dev/null
+++ b/recipes/python/python-pygobject-native_2.14.2.bb
@@ -0,0 +1,16 @@
+require python-pygobject_${PV}.bb
+
+DEPENDS = "python-native glib-2.0-native"
+PR = "r1"
+
+inherit native
+
+SRC_URI = "\
+ ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/${MAJ_VER}/pygobject-${PV}.tar.bz2 \
+ file://python-path.patch;patch=1 \
+"
+
+do_stage_append() {
+ install -d ${STAGING_BINDIR}
+ install -m 0755 gobject/generate-constants ${STAGING_BINDIR}/gobject-generate-constants
+}
diff --git a/recipes/python/python-pygobject-native_2.16.0.bb b/recipes/python/python-pygobject-native_2.16.0.bb
new file mode 100644
index 0000000000..a1c733334c
--- /dev/null
+++ b/recipes/python/python-pygobject-native_2.16.0.bb
@@ -0,0 +1,18 @@
+require python-pygobject_${PV}.bb
+
+DEPENDS = "python-native glib-2.0-native"
+PR = "r1"
+
+PARALLEL_MAKE = ""
+
+inherit native
+
+SRC_URI = "\
+ ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/${MAJ_VER}/pygobject-${PV}.tar.bz2 \
+# file://python-path.patch;patch=1 \
+"
+
+do_stage_append() {
+ install -d ${STAGING_BINDIR}
+ install -m 0755 gobject/generate-constants ${STAGING_BINDIR}/gobject-generate-constants
+}
diff --git a/recipes/python/python-pygobject/generate-constants.patch b/recipes/python/python-pygobject/generate-constants.patch
new file mode 100644
index 0000000000..57a9380620
--- /dev/null
+++ b/recipes/python/python-pygobject/generate-constants.patch
@@ -0,0 +1,18 @@
+Index: pygobject-2.14.2/gobject/Makefile.am
+===================================================================
+--- pygobject-2.14.2.orig/gobject/Makefile.am
++++ pygobject-2.14.2/gobject/Makefile.am
+@@ -21,11 +21,11 @@ if PLATFORM_WIN32
+ common_ldflags += -no-undefined
+ endif
+
+-constants.py: generate-constants$(EXEEXT) constants.py.in
++constants.py: constants.py.in
+ rm -f constants.py
+ cp $(srcdir)/constants.py.in constants.py
+ chmod 644 constants.py
+- $(top_builddir)/gobject/generate-constants$(EXEEXT) >> constants.py
++ gobject-generate-constants$(EXEEXT) >> constants.py
+ chmod 444 constants.py
+
+ generate_constants_CFLAGS = $(GLIB_CFLAGS)
diff --git a/recipes/python/python-pygobject/python-path.patch b/recipes/python/python-pygobject/python-path.patch
new file mode 100644
index 0000000000..d7907703f5
--- /dev/null
+++ b/recipes/python/python-pygobject/python-path.patch
@@ -0,0 +1,46 @@
+Index: pygobject-2.14.2/m4/python.m4
+===================================================================
+--- pygobject-2.14.2.orig/m4/python.m4
++++ pygobject-2.14.2/m4/python.m4
+@@ -43,6 +43,11 @@ AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
+ [AC_REQUIRE([AM_PATH_PYTHON])
+ AC_MSG_CHECKING(for headers required to compile python extensions)
+ dnl deduce PYTHON_INCLUDES
++AC_ARG_WITH(python-includes,
++ [ --with-python-includes=DIR path to Python includes], py_exec_prefix=$withval)
++if test x$py_exec_prefix != x; then
++PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
++else
+ py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+ py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
+ if test -x "$PYTHON-config"; then
+@@ -53,6 +58,7 @@ if test "$py_prefix" != "$py_exec_prefix
+ PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+ fi
+ fi
++fi
+ AC_SUBST(PYTHON_INCLUDES)
+ dnl check if the headers exist:
+ save_CPPFLAGS="$CPPFLAGS"
+Index: pygobject-2.14.2/configure.ac
+===================================================================
+--- pygobject-2.14.2.orig/configure.ac
++++ pygobject-2.14.2/configure.ac
+@@ -71,9 +71,6 @@ AM_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(c
+
+ AC_MSG_CHECKING([for PySignal_SetWakeupFd in Python.h])
+ py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+-PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+-old_CPPFLAGS=$CPPFLAGS
+-CPPFLAGS="-Wall -Werror $PYTHON_INCLUDES"
+ AC_TRY_COMPILE([#include <Python.h>],
+ [PySignal_SetWakeupFd(0);],
+ setwakeupfd_ok=yes,
+@@ -83,7 +80,6 @@ if test "x$setwakeupfd_ok" != xno; then
+ AC_DEFINE(HAVE_PYSIGNAL_SETWAKEUPFD, 1,
+ [Define to 1 if PySignal_SetWakeupFd is available])
+ fi
+-CPPFLAGS=$old_CPPFLAGS
+
+ PLATFORM=`$PYTHON -c "from distutils import util; print util.get_platform()"`
+ AC_SUBST(PLATFORM)
diff --git a/recipes/python/python-pygobject_2.14.2.bb b/recipes/python/python-pygobject_2.14.2.bb
new file mode 100644
index 0000000000..ed64a37645
--- /dev/null
+++ b/recipes/python/python-pygobject_2.14.2.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "Python GObject bindings"
+SECTION = "devel/python"
+LICENSE = "LGPL"
+DEPENDS = "python-pygobject-native"
+PE = "1"
+PR = "r3"
+
+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/pygobject/${MAJ_VER}/pygobject-${PV}.tar.bz2 \
+ file://python-path.patch;patch=1 \
+ file://generate-constants.patch;patch=1 \
+"
+S = "${WORKDIR}/pygobject-${PV}"
+
+FILESPATH = "${FILE_DIRNAME}/python-pygobject:${FILE_DIRNAME}/files"
+
+inherit autotools distutils-base pkgconfig
+
+EXTRA_OECONF += '--with-python-includes="${STAGING_INCDIR}/.."'
+
+do_stage() {
+ autotools_stage_all
+ install -d ${STAGING_LIBDIR}/../share/pygobject/
+ cp -dpfR docs/* ${STAGING_LIBDIR}/../share/pygobject/
+ install -d ${STAGING_LIBDIR}/../share/gtk-doc/html/pygobject/
+ cp docs/style.css ${STAGING_LIBDIR}/../share/gtk-doc/html/pygobject/
+}
+
+FILES_${PN} = "${libdir}/python*"
+FILES_${PN}-dev += "${datadir}/pygobject/xsl"
diff --git a/recipes/python/python-pygobject_2.16.0.bb b/recipes/python/python-pygobject_2.16.0.bb
new file mode 100644
index 0000000000..d7bd1c041f
--- /dev/null
+++ b/recipes/python/python-pygobject_2.16.0.bb
@@ -0,0 +1,38 @@
+DESCRIPTION = "Python GObject bindings"
+SECTION = "devel/python"
+LICENSE = "LGPL"
+DEPENDS = "python-pygobject-native-${PV}"
+PR = "ml2"
+
+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/pygobject/${MAJ_VER}/pygobject-${PV}.tar.bz2 \
+ file://generate-constants.patch;patch=1 \
+"
+S = "${WORKDIR}/pygobject-${PV}"
+
+FILESPATH = "${FILE_DIRNAME}/python-pygobject:${FILE_DIRNAME}/files"
+
+inherit autotools distutils-base pkgconfig
+
+# necessary to let the call for python-config succeed
+export BUILD_SYS
+export HOST_SYS
+
+do_stage() {
+ autotools_stage_all
+ install -d ${STAGING_LIBDIR}/../share/pygobject/
+ cp -dpfR docs/* ${STAGING_LIBDIR}/../share/pygobject/
+ install -d ${STAGING_LIBDIR}/../share/gtk-doc/html/pygobject/
+ cp docs/style.css ${STAGING_LIBDIR}/../share/gtk-doc/html/pygobject/
+}
+
+PACKAGES += "${PN}-lib"
+
+RDEPENDS_${PN} += "python-textutils"
+
+FILES_${PN} = "${libdir}/python*"
+FILES_${PN}-lib = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${bindir} ${datadir}"
+FILES_${PN}-dbg += "${libdir}/.debug"
diff --git a/recipes/python/python-pygoogle_0.6.bb b/recipes/python/python-pygoogle_0.6.bb
new file mode 100644
index 0000000000..e3dee68706
--- /dev/null
+++ b/recipes/python/python-pygoogle_0.6.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "This module is a wrapper for the Google Web APIs. \
+It allows you to do Google searches, retrieve pages from the \
+Google cache, and ask Google for spelling suggestions."
+SECTION = "devel/python"
+HOMEPAGE = "http://pygoogle.sourceforge.net/"
+PRIORITY = "optional"
+LICENSE = "PSF"
+RDEPENDS = "python-soappy"
+SRCNAME = "pygoogle"
+PR = "ml1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
diff --git a/recipes/python/python-pygtk-1.2/acinclude.m4 b/recipes/python/python-pygtk-1.2/acinclude.m4
new file mode 100644
index 0000000000..53518fb2eb
--- /dev/null
+++ b/recipes/python/python-pygtk-1.2/acinclude.m4
@@ -0,0 +1,90 @@
+## this one is commonly used with AM_PATH_PYTHONDIR ...
+dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]])
+dnl Check if a module containing a given symbol is visible to python.
+AC_DEFUN(AM_CHECK_PYMOD,
+[AC_REQUIRE([AM_PATH_PYTHON])
+py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
+AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1)
+AC_CACHE_VAL(py_cv_mod_$py_mod_var, [
+ifelse([$2],[], [prog="
+import sys
+try:
+ import $1
+except ImportError:
+ sys.exit(1)
+except:
+ sys.exit(0)
+sys.exit(0)"], [prog="
+import $1
+$1.$2"])
+if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
+ then
+ eval "py_cv_mod_$py_mod_var=yes"
+ else
+ eval "py_cv_mod_$py_mod_var=no"
+ fi
+])
+py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
+if test "x$py_val" != xno; then
+ AC_MSG_RESULT(yes)
+ ifelse([$3], [],, [$3
+])dnl
+else
+ AC_MSG_RESULT(no)
+ ifelse([$4], [],, [$4
+])dnl
+fi
+])
+
+dnl a macro to check for ability to create python extensions
+dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
+dnl function also defines PYTHON_INCLUDES
+AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
+[AC_REQUIRE([AM_PATH_PYTHON])
+AC_MSG_CHECKING(for headers required to compile python extensions)
+dnl deduce PYTHON_INCLUDES
+AC_ARG_WITH(python-includes,
+ [ --with-python-includes=DIR path to Python includes], py_exec_prefix=$withval)
+if test x$py_exec_prefix != x; then
+PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+else
+py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
+PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+if test "$py_prefix" != "$py_exec_prefix"; then
+ PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+fi
+fi
+AC_SUBST(PYTHON_INCLUDES)
+dnl check if the headers exist:
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
+AC_TRY_CPP([#include <Python.h>],dnl
+[AC_MSG_RESULT(found)
+$1],dnl
+[AC_MSG_RESULT(not found)
+$2])
+CPPFLAGS="$save_CPPFLAGS"
+])
+
+dnl
+dnl JH_ADD_CFLAG(FLAG)
+dnl checks whether the C compiler supports the given flag, and if so, adds
+dnl it to $CFLAGS. If the flag is already present in the list, then the
+dnl check is not performed.
+AC_DEFUN([JH_ADD_CFLAG],
+[
+case " $CFLAGS " in
+*@<:@\ \ @:>@$1@<:@\ \ @:>@*)
+ ;;
+*)
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $1"
+ AC_MSG_CHECKING([whether [$]CC understands $1])
+ AC_TRY_COMPILE([], [], [jh_has_option=yes], [jh_has_option=no])
+ AC_MSG_RESULT($jh_has_option)
+ if test $jh_has_option = no; then
+ CFLAGS="$save_CFLAGS"
+ fi
+ ;;
+esac])
diff --git a/recipes/python/python-pygtk-1.2/remove-imlib-et-al.patch b/recipes/python/python-pygtk-1.2/remove-imlib-et-al.patch
new file mode 100644
index 0000000000..94bb164f67
--- /dev/null
+++ b/recipes/python/python-pygtk-1.2/remove-imlib-et-al.patch
@@ -0,0 +1,31 @@
+remove checking for imlib, pixbuf, gtkgl and libglade
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- pygtk-0.6.12/configure.in~remove-imlib-et-al
++++ pygtk-0.6.12/configure.in
+@@ -45,17 +45,14 @@
+ fi
+
+ AM_PATH_GTK(gtk_required_version,,,$extra_mods)
+-AM_PATH_GDK_IMLIB(imlib_required_version, build_imlib=true, build_imlib=false)
+-AM_CONDITIONAL(BUILD_IMLIB, $build_imlib)
+
+-AM_PATH_GDK_PIXBUF(pixbuf_required_version, build_pixbuf=true, build_pixbuf=false)
+-AM_CONDITIONAL(BUILD_PIXBUF, $build_pixbuf)
++AM_CONDITIONAL(BUILD_IMLIB, false)
+
+-AM_PATH_GTKGL(build_gtkgl=true, build_gtkgl=false)
+-AM_CONDITIONAL(BUILD_GTKGL, $build_gtkgl)
++AM_CONDITIONAL(BUILD_PIXBUF, false)
+
+-AM_PATH_LIBGLADE(build_libglade=true, build_libglade=false)
+-AM_CONDITIONAL(BUILD_LIBGLADE, $build_libglade)
++AM_CONDITIONAL(BUILD_GTKGL, false)
++
++AM_CONDITIONAL(BUILD_LIBGLADE, false)
+
+
+ AC_ARG_ENABLE(numpy,
diff --git a/recipes/python/python-pygtk-1.2_0.6.12.bb b/recipes/python/python-pygtk-1.2_0.6.12.bb
new file mode 100644
index 0000000000..0b153ce1e5
--- /dev/null
+++ b/recipes/python/python-pygtk-1.2_0.6.12.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Python Bindings for GTK+ 1.2"
+HOMEPAGE = "http://www.gtk.org"
+SECTION = "devel/python"
+LICENSE = "LGPL"
+DEPENDS = "gtk+-1.2"
+RDEPENDS = "python-shell python-re"
+SRCNAME = "pygtk"
+PR = "r3"
+
+SRC_URI = "ftp://ftp.gtk.org/pub/gtk/python/v1.2/${SRCNAME}-${PV}.tar.gz \
+ file://remove-imlib-et-al.patch;patch=1 \
+ file://acinclude.m4"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit autotools_stage pkgconfig distutils-base
+
+EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/
+ echo ${LDFLAGS} > /tmp/ldflags
+ rm -f aclocal.m4
+}
+
+FILES_${PN}-dev += "${datadir}/pygtk"
diff --git a/recipes/python/python-pygtk/acinclude.m4 b/recipes/python/python-pygtk/acinclude.m4
new file mode 100644
index 0000000000..53518fb2eb
--- /dev/null
+++ b/recipes/python/python-pygtk/acinclude.m4
@@ -0,0 +1,90 @@
+## this one is commonly used with AM_PATH_PYTHONDIR ...
+dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]])
+dnl Check if a module containing a given symbol is visible to python.
+AC_DEFUN(AM_CHECK_PYMOD,
+[AC_REQUIRE([AM_PATH_PYTHON])
+py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
+AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1)
+AC_CACHE_VAL(py_cv_mod_$py_mod_var, [
+ifelse([$2],[], [prog="
+import sys
+try:
+ import $1
+except ImportError:
+ sys.exit(1)
+except:
+ sys.exit(0)
+sys.exit(0)"], [prog="
+import $1
+$1.$2"])
+if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
+ then
+ eval "py_cv_mod_$py_mod_var=yes"
+ else
+ eval "py_cv_mod_$py_mod_var=no"
+ fi
+])
+py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
+if test "x$py_val" != xno; then
+ AC_MSG_RESULT(yes)
+ ifelse([$3], [],, [$3
+])dnl
+else
+ AC_MSG_RESULT(no)
+ ifelse([$4], [],, [$4
+])dnl
+fi
+])
+
+dnl a macro to check for ability to create python extensions
+dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
+dnl function also defines PYTHON_INCLUDES
+AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
+[AC_REQUIRE([AM_PATH_PYTHON])
+AC_MSG_CHECKING(for headers required to compile python extensions)
+dnl deduce PYTHON_INCLUDES
+AC_ARG_WITH(python-includes,
+ [ --with-python-includes=DIR path to Python includes], py_exec_prefix=$withval)
+if test x$py_exec_prefix != x; then
+PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+else
+py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
+PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+if test "$py_prefix" != "$py_exec_prefix"; then
+ PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+fi
+fi
+AC_SUBST(PYTHON_INCLUDES)
+dnl check if the headers exist:
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
+AC_TRY_CPP([#include <Python.h>],dnl
+[AC_MSG_RESULT(found)
+$1],dnl
+[AC_MSG_RESULT(not found)
+$2])
+CPPFLAGS="$save_CPPFLAGS"
+])
+
+dnl
+dnl JH_ADD_CFLAG(FLAG)
+dnl checks whether the C compiler supports the given flag, and if so, adds
+dnl it to $CFLAGS. If the flag is already present in the list, then the
+dnl check is not performed.
+AC_DEFUN([JH_ADD_CFLAG],
+[
+case " $CFLAGS " in
+*@<:@\ \ @:>@$1@<:@\ \ @:>@*)
+ ;;
+*)
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $1"
+ AC_MSG_CHECKING([whether [$]CC understands $1])
+ AC_TRY_COMPILE([], [], [jh_has_option=yes], [jh_has_option=no])
+ AC_MSG_RESULT($jh_has_option)
+ if test $jh_has_option = no; then
+ CFLAGS="$save_CFLAGS"
+ fi
+ ;;
+esac])
diff --git a/recipes/python/python-pygtk/fix-gtkunixprint.patch b/recipes/python/python-pygtk/fix-gtkunixprint.patch
new file mode 100644
index 0000000000..dca19ce5ed
--- /dev/null
+++ b/recipes/python/python-pygtk/fix-gtkunixprint.patch
@@ -0,0 +1,16 @@
+Index: pygtk-2.10.0/gtk/gtkunixprint.override
+===================================================================
+--- pygtk-2.10.0.orig/gtk/gtkunixprint.override
++++ pygtk-2.10.0/gtk/gtkunixprint.override
+@@ -105,11 +105,7 @@ _wrap_gtk_print_job_get_surface(PyGObjec
+ if (pyg_error_check(&error))
+ return NULL;
+
+-#if PYCAIRO_VERSION_HEX >= 0x1010600
+ return PycairoSurface_FromSurface(surface, NULL);
+-#else
+- return PycairoSurface_FromSurface(surface, NULL, NULL);
+-#endif
+ }
+ %%
+ override gtk_print_job_send kwargs
diff --git a/recipes/python/python-pygtk/nodocs.patch b/recipes/python/python-pygtk/nodocs.patch
new file mode 100644
index 0000000000..9b2387e959
--- /dev/null
+++ b/recipes/python/python-pygtk/nodocs.patch
@@ -0,0 +1,13 @@
+Index: pygtk-2.10.4/Makefile.am
+===================================================================
+--- pygtk-2.10.4.orig/Makefile.am
++++ pygtk-2.10.4/Makefile.am
+@@ -4,7 +4,7 @@ if BUILD_GTK
+ GTK_SUBDIR = gtk
+ endif
+
+-SUBDIRS = codegen . $(GTK_SUBDIR) examples tests docs
++SUBDIRS = codegen . $(GTK_SUBDIR) examples tests
+
+ PLATFORM_VERSION = 2.0
+
diff --git a/recipes/python/python-pygtk/prevent_to_get_display_during_import.patch b/recipes/python/python-pygtk/prevent_to_get_display_during_import.patch
new file mode 100644
index 0000000000..4d267400e7
--- /dev/null
+++ b/recipes/python/python-pygtk/prevent_to_get_display_during_import.patch
@@ -0,0 +1,18 @@
+upstream: http://bugzilla.gnome.org/show_bug.cgi?id=528758
+status: pending, reported on April 18th 2008
+comment: prevents a gtk window popping up, enabling the compilation on headless machines
+
+Index: pygtk-2.10.4/gtk/__init__.py
+===================================================================
+--- pygtk-2.10.4.orig/gtk/__init__.py 2007-11-27 19:27:05.000000000 -0300
++++ pygtk-2.10.4/gtk/__init__.py 2007-11-27 19:28:22.000000000 -0300
+@@ -78,7 +78,8 @@
+
+ keysyms = LazyModule('keysyms', locals())
+
+-_init()
++if not hasattr(sys.modules['__main__'], 'python_launcher_enabled'):
++ _init()
+
+ # CAPI
+ _PyGtk_API = _gtk._PyGtk_API
diff --git a/recipes/python/python-pygtk_2.10.4.bb b/recipes/python/python-pygtk_2.10.4.bb
new file mode 100644
index 0000000000..3f0e593c98
--- /dev/null
+++ b/recipes/python/python-pygtk_2.10.4.bb
@@ -0,0 +1,64 @@
+DESCRIPTION = "Python GTK+ 2.10.x Bindings"
+SECTION = "devel/python"
+# needs gtk+ 2.10.x
+DEPENDS = "gtk+ libglade python-pycairo python-pygobject"
+RDEPENDS = "python-shell python-pycairo python-pygobject"
+PROVIDES = "python-pygtk2"
+SRCNAME = "pygtk"
+LICENSE = "LGPL"
+PR = "ml10"
+
+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/pygtk/${MAJ_VER}/${SRCNAME}-${PV}.tar.bz2 \
+ file://fix-gtkunixprint.patch;patch=1 \
+ file://prevent_to_get_display_during_import.patch;patch=1 \
+ file://nodocs.patch;patch=1 \
+ file://acinclude.m4"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+EXTRA_OECONF = "\
+ --disable-docs \
+ --with-python-includes=${STAGING_INCDIR}/../ \
+"
+
+inherit autotools pkgconfig distutils-base
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/
+}
+
+# dirty fix #1: remove dependency on python-pygobject-dev
+do_install_append() {
+ find ${D} -name "*.la"|xargs rm -f
+ rm -f ${D}/${bindir}/pygtk-codegen-2.0
+ rm -rf ${D}/${libdir}/pkgconfig
+}
+
+# dirty fix #2: fix build system paths leaking in
+require fix-path.inc
+
+PACKAGES =+ "${PN}-demo"
+FILES_${PN}-demo = "\
+ ${bindir}/pygtk-demo \
+ ${libdir}/pygtk \
+"
+RDEPENDS_${PN}-demo = "python-pygtk python-stringold python-lang"
+
+# todo: revamp packaging, package demo seperatly
+FILES_${PN}-dev += "\
+ ${libdir}/pygtk/2.0 \
+ ${bindir}/pygtk-* \
+ ${datadir}/pygtk/2.0"
+
+do_stage() {
+ autotools_stage_includes
+ sed -i s:/usr/share:${STAGING_DATADIR}: codegen/pygtk-codegen-2.0
+ install -m 0755 codegen/pygtk-codegen-2.0 ${STAGING_BINDIR_NATIVE}/
+ # until we have a newer pygobject version, we resue pygtk's codegen
+ ln -sf ./pygtk-codegen-2.0 ${STAGING_BINDIR_NATIVE}/pygobject-codegen-2.0
+ install -d ${STAGING_DATADIR}/pygtk/2.0/codegen
+ install -d ${STAGING_DATADIR}/pygtk/2.0/defs/
+ cp -pPr codegen/*.py* ${STAGING_DATADIR}/pygtk/2.0/codegen/
+ cp -pPr *.defs ${STAGING_DATADIR}/pygtk/2.0/defs/
+ cp -pPr gtk/*.defs ${STAGING_DATADIR}/pygtk/2.0/defs/
+}
diff --git a/recipes/python/python-pygtk_2.6.3.bb b/recipes/python/python-pygtk_2.6.3.bb
new file mode 100644
index 0000000000..01c50f9a52
--- /dev/null
+++ b/recipes/python/python-pygtk_2.6.3.bb
@@ -0,0 +1,34 @@
+DESCRIPTION = "Python GTK+ Bindings"
+SECTION = "devel/python"
+DEPENDS = "gtk+-2.6.10 libglade"
+RDEPENDS = "python-shell"
+SRCNAME = "pygtk"
+LICENSE = "LGPL"
+PR = "ml1"
+
+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/pygtk/${MAJ_VER}/${SRCNAME}-${PV}.tar.bz2 \
+ file://acinclude.m4"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit autotools pkgconfig distutils-base
+
+EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
+
+PACKAGES = "${PN}-dbg ${PN}-dev ${PN}-doc ${PN}"
+FILES_${PN}-dev += "${bindir} ${datadir}/pygtk ${libdir}/pygtk"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/
+}
+
+do_stage() {
+ autotools_stage_includes
+ sed -i s:/usr/share:${STAGING_DATADIR}: codegen/pygtk-codegen-2.0
+ install -m 0755 codegen/pygtk-codegen-2.0 ${STAGING_BINDIR_NATIVE}/
+ install -d ${STAGING_DATADIR}/pygtk/2.0/codegen
+ install -d ${STAGING_DATADIR}/pygtk/2.0/defs/
+ cp -pPr codegen/*.py* ${STAGING_DATADIR}/pygtk/2.0/codegen/
+ cp -pPr *.defs ${STAGING_DATADIR}/pygtk/2.0/defs/
+ cp -pPr gtk/*.defs ${STAGING_DATADIR}/pygtk/2.0/defs/
+}
diff --git a/recipes/python/python-pygtk_2.8.6.bb b/recipes/python/python-pygtk_2.8.6.bb
new file mode 100644
index 0000000000..4e7e22b159
--- /dev/null
+++ b/recipes/python/python-pygtk_2.8.6.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Python GTK+ Bindings"
+SECTION = "devel/python"
+PRIORITY = "optional"
+# needs gtk+ 2.8.x
+DEPENDS = "gtk+-2.8.16 libglade"
+RDEPENDS = "python-shell"
+SRCNAME = "pygtk"
+LICENSE = "LGPL"
+PR = "r2"
+
+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/pygtk/${MAJ_VER}/${SRCNAME}-${PV}.tar.bz2 \
+ file://acinclude.m4"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit autotools pkgconfig distutils-base
+
+EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/
+}
+
+do_stage() {
+ autotools_stage_includes
+ install -m 0755 codegen/pygtk-codegen-2.0 ${STAGING_BINDIR_NATIVE}/
+}
diff --git a/recipes/python/python-pyid3lib_0.5.1.bb b/recipes/python/python-pyid3lib_0.5.1.bb
new file mode 100644
index 0000000000..bf7e3d0a2f
--- /dev/null
+++ b/recipes/python/python-pyid3lib_0.5.1.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "A Python Wrapper for libid3."
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "id3lib"
+SRCNAME = "pyid3lib"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pyid3lib/${SRCNAME}-${PV}.tar.bz2"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+
diff --git a/recipes/python/python-pyiw-0.3.3/Makefile b/recipes/python/python-pyiw-0.3.3/Makefile
new file mode 100644
index 0000000000..2ea7baec08
--- /dev/null
+++ b/recipes/python/python-pyiw-0.3.3/Makefile
@@ -0,0 +1,18 @@
+# Simple Makfile
+
+NAME = pyiw
+LIBS += -liw
+
+#static: pyiw.c
+# @echo "Statically Building/Linking $(NAME)"
+# @$(CC) $(CFLAGS) -Istaticlibiw $(<) -shared -o $(NAME).so staticlibiw/libiw.a
+
+dynamic: pyiw.c
+ @echo "Dynamically Building/Linking $(NAME)"
+ @$(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) $(<) -shared -o $(NAME).so
+
+clean:
+ @rm -rf *.o
+ @rm -rf $(NAME).so
+ @rm -rf $(NAME).so.t*
+
diff --git a/recipes/python/python-pylinda/honor-datadir.patch b/recipes/python/python-pylinda/honor-datadir.patch
new file mode 100644
index 0000000000..decf686e34
--- /dev/null
+++ b/recipes/python/python-pylinda/honor-datadir.patch
@@ -0,0 +1,15 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- linda-0.6/setup.py~honor-datadir.patch
++++ linda-0.6/setup.py
+@@ -68,6 +68,7 @@
+ f.close()
+
+ def getlibpath():
++ return os.getenv("LINDA_DATADIR")
+ l = sys.path
+ l.reverse()
+ for x in l:
diff --git a/recipes/python/python-pylinda_0.6.bb b/recipes/python/python-pylinda_0.6.bb
new file mode 100644
index 0000000000..a43dd7e7f8
--- /dev/null
+++ b/recipes/python/python-pylinda_0.6.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Python Implementation of Linda Tuple Space"
+SECTION = "devel/python"
+HOMEPAGE = "http://www-users.cs.york.ac.uk/~aw/pylinda/"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+SRCNAME = "linda"
+PR = "r1"
+
+SRC_URI = "http://www.handhelds.org/~aquadran/distro/latest/sources/linda-${PV}.tar.gz \
+ file://honor-datadir.patch;patch=1"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+export LINDA_DATADIR = "${D}/${libdir}/${PYTHON_DIR}"
diff --git a/recipes/python/python-pylint_0.15.2.bb b/recipes/python/python-pylint_0.15.2.bb
new file mode 100644
index 0000000000..d0640607f0
--- /dev/null
+++ b/recipes/python/python-pylint_0.15.2.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Pylint is a python tool that checks if a module satisfy a coding standard. Pylint can be seen as another \
+pychecker since nearly all tests you can do with PyChecker can also be done with Pylint. But Pylint offers some more \
+features, like checking line-code's length, checking if variable names are well-formed according to your coding standard,\
+or checking if declared interfaces are truly implemented, and much more."
+SECTION = "devel/python"
+HOMEPAGE = "http://www.logilab.org/857"
+PRIORITY = "optional"
+LICENSE = "GPL"
+RDEPENDS = "python-logilab-common"
+SRCNAME = "pylint"
+PR = "ml0"
+
+SRC_URI = "ftp://ftp.logilab.org/pub/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pylirc_0.0.5.bb b/recipes/python/python-pylirc_0.0.5.bb
new file mode 100644
index 0000000000..5760c7682d
--- /dev/null
+++ b/recipes/python/python-pylirc_0.0.5.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Python lirc module. See http://www.lirc.org for more info on lirc"
+SECTION = "devel/python"
+PRIORITY = "optional"
+DEPENDS = "lirc"
+LICENSE = "LGPL"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pylirc/pylirc-${PV}.tar.gz"
+S = "${WORKDIR}/pylirc-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pymetar_0.14.bb b/recipes/python/python-pymetar_0.14.bb
new file mode 100644
index 0000000000..7520b668bd
--- /dev/null
+++ b/recipes/python/python-pymetar_0.14.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Access NOAA's METAR weather reports"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+SRCNAME = "pymetar"
+PR = "ml1"
+
+SRC_URI = "http://www.schwarzvogel.de/pkgs/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pymp3_0.3.4.bb b/recipes/python/python-pymp3_0.3.4.bb
new file mode 100644
index 0000000000..371c662098
--- /dev/null
+++ b/recipes/python/python-pymp3_0.3.4.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "A Curses-based mp3 player. See http://damien.degois.info/PyMP3/"
+SECTION = "console/multimedia"
+PRIORITY = "optional"
+RDEPENDS = "python-core python-curses python-pyid3lib python-mad python-ao"
+LICENSE = "GPL"
+PR = "r3"
+
+SRC_URI = "http://www.vanille.de/mirror/PyMP3-0.3.4.tar.gz"
+S = "${WORKDIR}/PyMP3-0.3.4"
+
+inherit distutils-base
+
+PY_FILES = "box_info.py layer.py sound_ctrl.py stack.py txt_tools.py"
+
+do_install() {
+ install -d ${D}${libdir}
+ install -d ${D}${libdir}/${PYTHON_DIR}
+ install -d ${D}${libdir}/${PYTHON_DIR}/site-packages
+
+ for f in ${PY_FILES}
+ do
+ install -m 0644 $f ${D}${libdir}/${PYTHON_DIR}/site-packages/
+ done
+
+ install -d ${D}${bindir}
+ install -m 755 pymp3 ${D}${bindir}/
+}
+
+FILES_${PN} += " ${libdir}/${PYTHON_DIR}/site-packages/"
diff --git a/recipes/python/python-pyode/install.patch b/recipes/python/python-pyode/install.patch
new file mode 100644
index 0000000000..6f230972c7
--- /dev/null
+++ b/recipes/python/python-pyode/install.patch
@@ -0,0 +1,16 @@
+Index: PyODE-1.2.0/setup.py
+===================================================================
+--- PyODE-1.2.0.orig/setup.py
++++ PyODE-1.2.0/setup.py
+@@ -39,11 +39,6 @@ if sys.platform=="win32":
+ # Linux (and other) specific settings
+ ######################################################################
+ else:
+-
+- for base in ["/usr", "/usr/local", "/opt/local"]:
+- INC_DIRS += [os.path.join(base, "include")]
+- LIB_DIRS += [os.path.join(base, "lib")]
+-
+ LIBS += ["ode", "stdc++"]
+
+
diff --git a/recipes/python/python-pyode_1.2.0.bb b/recipes/python/python-pyode_1.2.0.bb
new file mode 100644
index 0000000000..be4b38acd5
--- /dev/null
+++ b/recipes/python/python-pyode_1.2.0.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "PyODE is a set of open-source Python bindings for The Open Dynamics Engine, \
+an open-source physics engine. PyODE also includes an XODE parser."
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "ode"
+SRCNAME = "PyODE"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pyode/${SRCNAME}-${PV}.tar.bz2 \
+ file://install.patch;patch=1"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+do_configure_prepend() {
+ ln -s ${STAGING_LIBDIR}/.. ../ode
+}
+
diff --git a/recipes/python/python-pyopenssl_0.8.bb b/recipes/python/python-pyopenssl_0.8.bb
new file mode 100644
index 0000000000..b89d68f00d
--- /dev/null
+++ b/recipes/python/python-pyopenssl_0.8.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Simple Python wrapper around the OpenSSL library"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+SRCNAME = "pyOpenSSL"
+DEPENDS = "openssl"
+PR = "ml0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pyopenssl/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+RDEPENDS = "python-threading"
+
diff --git a/recipes/python/python-pyqt/01_configure.dpatch b/recipes/python/python-pyqt/01_configure.dpatch
new file mode 100644
index 0000000000..d7c45b9a44
--- /dev/null
+++ b/recipes/python/python-pyqt/01_configure.dpatch
@@ -0,0 +1,288 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 01_configure.dpatch by Torsten Marek <shlomme@debian.org>
+##
+## DP: Make PyQt4 objectdir-buildable
+
+@DPATCH@
+diff -urNad python-qt4-4.2+snapshot20070727~/configure.py python-qt4-4.2+snapshot20070727/configure.py
+--- python-qt4-4.2+snapshot20070727~/configure.py 2007-07-29 23:58:48.000000000 +0200
++++ python-qt4-4.2+snapshot20070727/configure.py 2007-07-30 00:00:17.000000000 +0200
+@@ -20,6 +20,8 @@
+ # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
++# Modified for Debian by Torsten Marek <shlomme@gmx.net>
++
+ import sys
+ import os
+ import string
+@@ -29,6 +31,23 @@
+
+ import sipconfig
+
++topsrcdir = os.path.dirname(os.path.abspath(__file__))
++has_objdir = topsrcdir != os.path.abspath(os.path.curdir)
++if not has_objdir:
++ topsrcdir = None
++
++
++def makeDir(dirname):
++ try:
++ os.mkdir(dirname)
++ except OSError, e:
++ if e.errno != 17:
++ raise
++
++def srcPath(filename):
++ if topsrcdir is not None:
++ return os.path.join(topsrcdir, filename)
++ return filename
+
+ # Initialise the globals.
+ pyqt_version = 0x040200
+@@ -134,6 +153,8 @@
+ p.add_option("-g", "--consolidate", action="store_true", default=False,
+ dest="bigqt", help="create a single module which links against "
+ "all the Qt libraries")
++ p.add_option("--disable-designer-plugin", action="store_true", default=False,
++ help="do not build the Qt Designer plugin")
+
+ # These are internal options used to build the mega Windows GPL package.
+ p.add_option("--mwg-openssl", action="callback", default=None,
+@@ -282,6 +303,7 @@
+ check_module("QAxContainer", "qaxobject.h", "new QAxObject()",
+ extra_libs=["QAxContainer"])
+
++ makeDir("dbus")
+ if os.path.isdir("dbus"):
+ check_dbus()
+
+@@ -354,7 +376,7 @@
+ generate_code("QtAssistant")
+
+ if "QtDesigner" in pyqt_modules:
+- qpy_dir = os.path.abspath(os.path.join("qpy", "QtDesigner"))
++ qpy_dir = os.path.abspath(srcPath(os.path.join("qpy", "QtDesigner")))
+
+ if sys.platform == "win32":
+ if opts.debug:
+@@ -380,10 +402,10 @@
+
+ # Generate the composite module.
+ qtmod_sipdir = os.path.join("sip", "Qt")
+- mk_clean_dir(qtmod_sipdir)
++ mk_clean_dir(srcPath(qtmod_sipdir))
+
+ qtmod_sipfile = os.path.join(qtmod_sipdir, "Qtmod.sip")
+- f = open(qtmod_sipfile, "w")
++ f = open(srcPath(qtmod_sipfile), "w")
+
+ f.write("""%CompositeModule PyQt4.Qt
+
+@@ -555,7 +577,7 @@
+ return libs, libdirs
+
+ def module_installs(self):
+- return ["__init__.py", "pyqtconfig.py"]
++ return [srcPath("__init__.py"), "pyqtconfig.py"]
+
+ def qpylibs(self):
+ # See which QPy libraries to build.
+@@ -571,8 +593,8 @@
+ for qpy, pro in qpylibs.iteritems():
+ sipconfig.inform("Creating QPy library for %s Makefile..." % qpy)
+
+- os.chdir(os.path.join("qpy", qpy))
+-
++ os.chdir(srcPath(os.path.join("qpy", qpy)))
++
+ if sipcfg.universal:
+ upro = "u_" + pro
+
+@@ -596,6 +618,8 @@
+
+ sipconfig.inform("Creating QPy libraries Makefile...")
+
++ makeDir("qpy")
++ os.system("ln -s %s qpy/QtDesigner" % (srcPath("qpy/QtDesigner"),))
+ sipconfig.ParentMakefile(
+ configuration=sipcfg,
+ dir="qpy",
+@@ -617,6 +641,7 @@
+ install_dir=pydbusmoddir,
+ qt=["QtCore"],
+ debug=opts.debug,
++ topsrcdir=topsrcdir,
+ universal=sipcfg.universal
+ )
+
+@@ -625,18 +650,19 @@
+ makefile.generate()
+ tool.append("dbus")
+
+- # Only include ElementTree for older versions of Python.
+- if sipcfg.py_version < 0x020500:
+- sipconfig.inform("Creating elementtree Makefile...")
++ # Don't include elementtree on Debian
++## # 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 = sipconfig.PythonModuleMakefile(
++## configuration=sipcfg,
++## dstdir=os.path.join(pyqt_modroot, "elementtree"),
++## dir="elementtree"
++## )
+
+- makefile.generate()
+- tool.append("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
+@@ -644,16 +670,18 @@
+ sipconfig.inform("Creating pyuic4 wrapper...")
+
+ uicdir=os.path.join(pyqt_modroot, "uic")
+- wrapper = sipconfig.create_wrapper(os.path.join(uicdir, "pyuic.py"), os.path.join("pyuic", "pyuic4"), (sys.platform == "darwin"))
++ makeDir("pyuic")
++ # Wrapper script is not needed on Debian
++ #wrapper = sipconfig.create_wrapper(os.path.join(uicdir, "pyuic.py"), os.path.join("pyuic", "pyuic4"), (sys.platform == "darwin"))
+
+ sipconfig.inform("Creating pyuic4 Makefile...")
+
+ makefile = sipconfig.PythonModuleMakefile(
+ configuration=sipcfg,
+ dstdir=uicdir,
+- srcdir="uic",
++ srcdir=srcPath(os.path.join("pyuic", "uic")),
+ dir="pyuic",
+- installs=[[os.path.basename(wrapper), opts.pyqtbindir]]
++ #installs=[[os.path.basename(wrapper), opts.pyqtbindir]]
+ )
+
+ makefile.generate()
+@@ -661,7 +689,7 @@
+
+ if "QtXml" in pyqt_modules:
+ sipconfig.inform("Creating pylupdate4 Makefile...")
+-
++ makeDir("pylupdate")
+ makefile = sipconfig.ProgramMakefile(
+ configuration=sipcfg,
+ build_file="pylupdate.sbf",
+@@ -671,14 +699,15 @@
+ qt=["QtCore", "QtGui", "QtXml"],
+ debug=opts.debug,
+ warnings=1,
++ topsrcdir=topsrcdir,
+ universal=sipcfg.universal
+ )
+-
++ makefile.extra_include_dirs.append(srcPath("pylupdate"))
+ makefile.generate()
+ tool.append("pylupdate")
+
+ sipconfig.inform("Creating pyrcc4 Makefile...")
+-
++ makeDir("pyrcc")
+ makefile = sipconfig.ProgramMakefile(
+ configuration=sipcfg,
+ build_file="pyrcc.sbf",
+@@ -688,6 +717,7 @@
+ qt=["QtCore", "QtXml"],
+ debug=opts.debug,
+ warnings=1,
++ topsrcdir=topsrcdir,
+ universal=sipcfg.universal
+ )
+
+@@ -697,7 +727,7 @@
+ sipconfig.inform("pylupdate4 and pyrcc4 will not be built because the Qt XML module is missing.")
+
+ if "QtDesigner" in pyqt_modules:
+- enabled = True
++ enabled = not opts.disable_designer_plugin
+
+ py_major = sipcfg.py_version >> 16
+ py_minor = (sipcfg.py_version >> 8) & 0x0ff
+@@ -731,7 +761,7 @@
+ # Run qmake to generate the Makefile.
+ qmake_args = fix_qmake_args()
+ cwd = os.getcwd()
+- os.chdir("designer")
++ os.chdir(srcPath("designer"))
+
+ # Create the qmake project file.
+ fin = open("python.pro-in")
+@@ -755,7 +785,7 @@
+ run_command("%s %s" % (opts.qmake, qmake_args))
+ os.chdir(cwd)
+
+- tool.append("designer")
++ tool.append(srcPath("designer"))
+
+ return tool
+
+@@ -899,7 +929,6 @@
+ add_makefile_extras(makefile, extra_include_dirs, extra_lib_dirs, extra_libs)
+
+ exe, build = makefile.build_command(name)
+-
+ # Make sure the executable file doesn't exist.
+ remove_file(exe)
+ run_command(build)
+@@ -1025,7 +1054,7 @@
+ return
+
+ # Check the module's main .sip file exists.
+- if os.access(os.path.join("sip", mname, mname + "mod.sip"), os.F_OK):
++ if os.access(srcPath(os.path.join("sip", mname, mname + "mod.sip")), os.F_OK):
+ sipconfig.inform("Checking to see if the %s module should be built..." % mname)
+
+ if check_api(incfile, test, mname, extra_include_dirs=extra_include_dirs, extra_lib_dirs=extra_lib_dirs, extra_libs=extra_libs):
+@@ -1226,10 +1255,14 @@
+ argv.append(buildfile)
+
+ argv.append("-I")
+- argv.append("sip")
++ argv.append(srcPath("sip"))
+
+ # SIP assumes POSIX style path separators.
+- argv.append(string.join(["sip", mname, mname + "mod.sip"], "/"))
++ if topsrcdir is not None:
++ argv.append(string.join([topsrcdir, "sip", mname, mname + "mod.sip"], "/"))
++ else:
++ argv.append(string.join(["sip", mname, mname + "mod.sip"], "/"))
++
+
+ cmd = string.join(argv)
+
+@@ -1251,7 +1284,11 @@
+ sipfiles = []
+
+ for s in glob.glob("sip/" + mname + "/*.sip"):
+- sipfiles.append(os.path.join("..", "sip", mname, os.path.basename(s)))
++ if has_objdir:
++ topdir = topsrcdir
++ else:
++ topdir = ".."
++ sipfiles.append(os.path.join(topdir, "sip", mname, os.path.basename(s)))
+
+ installs.append([sipfiles, os.path.join(opts.pyqtsipdir, mname)])
+
+@@ -1835,7 +1872,7 @@
+ ).generate()
+
+ # Install the configuration module.
+- create_config("pyqtconfig.py", "pyqtconfig.py.in", macros)
++ create_config("pyqtconfig.py", srcPath("pyqtconfig.py.in"), macros)
+
+
+ ###############################################################################
diff --git a/recipes/python/python-pyqt/02_htmllinks.dpatch b/recipes/python/python-pyqt/02_htmllinks.dpatch
new file mode 100644
index 0000000000..f65509ae2c
--- /dev/null
+++ b/recipes/python/python-pyqt/02_htmllinks.dpatch
@@ -0,0 +1,18 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_htmllinks.dpatch by Torsten Marek <shlomme@debian.org>
+
+## DP: Fix the links in the documentation HTML files.
+
+@DPATCH@
+diff -urNad python-qt4-4.1~/doc/pyqt4ref.html python-qt4-4.1/doc/pyqt4ref.html
+--- python-qt4-4.1~/doc/pyqt4ref.html 2006-11-05 00:51:19.000000000 +0100
++++ python-qt4-4.1/doc/pyqt4ref.html 2006-11-21 23:35:52.000000000 +0100
+@@ -85,7 +85,7 @@
+ <p>This is the reference guide for PyQt 4.1. PyQt v4 is a set of
+ <a class="reference" href="http://www.python.org">Python</a> bindings for v4 of the Qt application
+ framework from <a class="reference" href="http://www.trolltech.com">Trolltech</a>.</p>
+-<p>There is a separate <a class="reference" href="html/classes.html">PyQt API Reference</a>.</p>
++<p>There is a separate <a class="reference" href="classes.html">PyQt API Reference</a>.</p>
+ <p>Qt is a set of C++ libraries and development tools that includes platform
+ independent abstractions for graphical user interfaces, networking, threads,
+ Unicode, regular expressions, SQL databases, SVG, OpenGL, XML, and user and
diff --git a/recipes/python/python-pyqt/03_qreal.dpatch b/recipes/python/python-pyqt/03_qreal.dpatch
new file mode 100644
index 0000000000..8f9568656c
--- /dev/null
+++ b/recipes/python/python-pyqt/03_qreal.dpatch
@@ -0,0 +1,18 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 03_qreal.dpatch by Torsten Marek <shlomme@debian.org>
+##
+## DP: On ARM, ARMEL, Mips and Mipsel, qreal is a float, not a double.
+
+@DPATCH@
+diff -urNad python-qt4-4.3~/sip/QtCore/qglobal.sip python-qt4-4.3/sip/QtCore/qglobal.sip
+--- python-qt4-4.3~/sip/QtCore/qglobal.sip 2007-08-07 21:52:15.000000000 +0200
++++ python-qt4-4.3/sip/QtCore/qglobal.sip 2007-08-07 22:10:14.000000000 +0200
+@@ -46,7 +46,7 @@
+ typedef unsigned long long quint64;
+ typedef qint64 qlonglong;
+ typedef quint64 qulonglong;
+-typedef double qreal;
++typedef float qreal;
+ typedef unsigned char uchar;
+ typedef unsigned short ushort;
+ typedef unsigned int uint;
diff --git a/recipes/python/python-pyqt/04_qreal_api_fixes-for-4.4.3.dpatch b/recipes/python/python-pyqt/04_qreal_api_fixes-for-4.4.3.dpatch
new file mode 100644
index 0000000000..0701238afb
--- /dev/null
+++ b/recipes/python/python-pyqt/04_qreal_api_fixes-for-4.4.3.dpatch
@@ -0,0 +1,260 @@
+diff --git a/sip/QtCore/qlist.sip b/sip/QtCore/qlist.sip
+index d387763..bbb2e08 100644
+--- a/sip/QtCore/qlist.sip
++++ b/sip/QtCore/qlist.sip
+@@ -343,8 +343,8 @@ template<TYPE1, TYPE2>
+ %End
+ };
+ %If (Qt_4_3_0 -)
+-// QList<QPair<double, double> > is implemented as a Python list of 2-element tuples.
+-%MappedType QList<QPair<double, double> >
++// QList<QPair<float, float> > is implemented as a Python list of 2-element tuples.
++%MappedType QList<QPair<float, float> >
+ {
+ %TypeHeaderCode
+ #include <qlist.h>
+@@ -361,7 +361,7 @@ template<TYPE1, TYPE2>
+ // Set the list elements.
+ for (int i = 0; i < sipCpp->size(); ++i)
+ {
+- const QPair<double, double> &p = sipCpp->at(i);
++ const QPair<float, float> &p = sipCpp->at(i);
+ PyObject *pobj;
+
+ if ((pobj = Py_BuildValue((char *)"dd", p.first, p.second)) == NULL)
+@@ -393,16 +393,16 @@ template<TYPE1, TYPE2>
+ return 1;
+ }
+
+- QList<QPair<double, double> > *ql = new QList<QPair<double, double> >;
++ QList<QPair<float, float> > *ql = new QList<QPair<float, float> >;
+
+ 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));
++ float first = PyFloat_AsDouble(PySequence_ITEM(tup, 0));
++ float second = PyFloat_AsDouble(PySequence_ITEM(tup, 1));
+
+- ql->append(QPair<double, double>(first, second));
++ ql->append(QPair<float, float>(first, second));
+ }
+
+ *sipCppPtr = ql;
+@@ -412,9 +412,9 @@ template<TYPE1, TYPE2>
+ };
+ %End
+ %If (Qt_4_3_0 -)
+-// QList<QPair<double, TYPE> > is implemented as a Python list of 2-element tuples.
+-template<double, TYPE>
+-%MappedType QList<QPair<double, TYPE> >
++// QList<QPair<float, TYPE> > is implemented as a Python list of 2-element tuples.
++template<float, TYPE>
++%MappedType QList<QPair<float, TYPE> >
+ {
+ %TypeHeaderCode
+ #include <qlist.h>
+@@ -431,7 +431,7 @@ template<double, TYPE>
+ // Set the list elements.
+ for (int i = 0; i < sipCpp->size(); ++i)
+ {
+- const QPair<double, TYPE> &p = sipCpp->at(i);
++ const QPair<float, TYPE> &p = sipCpp->at(i);
+ TYPE *t = new TYPE(p.second);
+ PyObject *pobj;
+
+@@ -472,12 +472,12 @@ template<double, TYPE>
+ return 1;
+ }
+
+- QList<QPair<double, TYPE> > *ql = new QList<QPair<double, TYPE> >;
++ QList<QPair<float, TYPE> > *ql = new QList<QPair<float, TYPE> >;
+
+ for (SIP_SSIZE_T i = 0; i < len; ++i)
+ {
+ PyObject *tup = PySequence_ITEM(sipPy, i);
+- double d;
++ float d;
+ int state;
+
+ d = PyFloat_AsDouble(PySequence_ITEM(tup, 0));
+@@ -491,7 +491,7 @@ template<double, TYPE>
+ return 0;
+ }
+
+- ql->append(QPair<double, TYPE>(d, *t));
++ ql->append(QPair<float, TYPE>(d, *t));
+
+ sipReleaseInstance(t, sipClass_TYPE, state);
+ }
+@@ -551,8 +551,8 @@ template<double, TYPE>
+ return sipGetState(sipTransferObj);
+ %End
+ };
+-// QList<double> is implemented as a Python list of floats.
+-%MappedType QList<double>
++// QList<float> is implemented as a Python list of floats.
++%MappedType QList<float>
+ {
+ %TypeHeaderCode
+ #include <qlist.h>
+@@ -590,7 +590,7 @@ template<double, TYPE>
+ if (sipIsErr == NULL)
+ return (len >= 0);
+
+- QList<double> *ql = new QList<double>;
++ QList<float> *ql = new QList<float>;
+
+ for (SIP_SSIZE_T i = 0; i < len; ++i)
+ ql->append(PyFloat_AsDouble(PySequence_ITEM(sipPy, i)));
+diff --git a/sip/QtCore/qvector.sip b/sip/QtCore/qvector.sip
+index d652bfe..dea5601 100644
+--- a/sip/QtCore/qvector.sip
++++ b/sip/QtCore/qvector.sip
+@@ -156,8 +156,8 @@ template<TYPE>
+ return sipGetState(sipTransferObj);
+ %End
+ };
+-// QVector<double> is implemented as a Python list of floats.
+-%MappedType QVector<double>
++// QVector<float> is implemented as a Python list of floats.
++%MappedType QVector<float>
+ {
+ %TypeHeaderCode
+ #include <qvector.h>
+@@ -193,7 +193,7 @@ template<TYPE>
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+- QVector<double> *ql = new QVector<double>;
++ QVector<float> *ql = new QVector<float>;
+
+ for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ ql->append(PyFloat_AsDouble(PyList_GET_ITEM(sipPy, i)));
+@@ -203,9 +203,9 @@ template<TYPE>
+ return sipGetState(sipTransferObj);
+ %End
+ };
+-// QVector<QPair<double, TYPE> > is implemented as a Python list of 2-element tuples.
++// QVector<QPair<float, TYPE> > is implemented as a Python list of 2-element tuples.
+ template<TYPE>
+-%MappedType QVector<QPair<double, TYPE> >
++%MappedType QVector<QPair<float, TYPE> >
+ {
+ %TypeHeaderCode
+ #include <qvector.h>
+@@ -222,7 +222,7 @@ template<TYPE>
+ // Set the list elements.
+ for (int i = 0; i < sipCpp->size(); ++i)
+ {
+- const QPair<double, TYPE> &p = sipCpp->at(i);
++ const QPair<float, TYPE> &p = sipCpp->at(i);
+ TYPE *pt = new TYPE(p.second);
+ PyObject *pobj;
+
+@@ -261,14 +261,14 @@ template<TYPE>
+ return 1;
+ }
+
+- QVector<QPair<double, TYPE> > *qv = new QVector<QPair<double, TYPE> >;
++ QVector<QPair<float, TYPE> > *qv = new QVector<QPair<float, TYPE> >;
+
+ for (SIP_SSIZE_T i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ PyObject *tup = PyList_GET_ITEM(sipPy, i);
+ int state;
+ TYPE *s;
+- QPair<double, TYPE> p;
++ QPair<float, TYPE> p;
+
+ p.first = PyFloat_AsDouble(PyTuple_GET_ITEM(tup, 0));
+
+diff --git a/sip/QtGui/qbrush.sip b/sip/QtGui/qbrush.sip
+index 7813bec..3993ef1 100644
+--- a/sip/QtGui/qbrush.sip
++++ b/sip/QtGui/qbrush.sip
+@@ -151,7 +151,7 @@ public:
+
+ QDataStream &operator>>(QDataStream &, QBrush & /Constrained/);
+ QDataStream &operator<<(QDataStream &, const QBrush & /Constrained/);
+-typedef QVector<QPair<double, QColor> > QGradientStops;
++typedef QVector<QPair<float, QColor> > QGradientStops;
+
+ class QGradient
+ {
+diff --git a/sip/QtGui/qgraphicsitemanimation.sip b/sip/QtGui/qgraphicsitemanimation.sip
+index f60107f..dbb7900 100644
+--- a/sip/QtGui/qgraphicsitemanimation.sip
++++ b/sip/QtGui/qgraphicsitemanimation.sip
+@@ -77,19 +77,19 @@ signals:
+
+ public:
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, QPointF> > posList() const;
++ QList<QPair<float, QPointF> > posList() const;
+ %End
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, double> > rotationList() const;
++ QList<QPair<float, float> > rotationList() const;
+ %End
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, QPointF> > translationList() const;
++ QList<QPair<float, QPointF> > translationList() const;
+ %End
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, QPointF> > scaleList() const;
++ QList<QPair<float, QPointF> > scaleList() const;
+ %End
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, QPointF> > shearList() const;
++ QList<QPair<float, QPointF> > shearList() const;
+ %End
+
+ private:
+diff --git a/sip/QtGui/qpainterpath.sip b/sip/QtGui/qpainterpath.sip
+index 924174a..8fcb9e7 100644
+--- a/sip/QtGui/qpainterpath.sip
++++ b/sip/QtGui/qpainterpath.sip
+@@ -219,8 +219,8 @@ public:
+ void setCurveThreshold(qreal threshold);
+ qreal curveThreshold() const;
+ void setDashPattern(Qt::PenStyle);
+- void setDashPattern(const QVector<double> &dashPattern);
+- QVector<double> dashPattern() const;
++ void setDashPattern(const QVector<float> &dashPattern);
++ QVector<float> dashPattern() const;
+ QPainterPath createStroke(const QPainterPath &path) const;
+ %If (Qt_4_3_0 -)
+ void setDashOffset(qreal offset);
+diff --git a/sip/QtGui/qpen.sip b/sip/QtGui/qpen.sip
+index 0d78d8f..0cefacd 100644
+--- a/sip/QtGui/qpen.sip
++++ b/sip/QtGui/qpen.sip
+@@ -104,8 +104,8 @@ public:
+ void setCapStyle(Qt::PenCapStyle pcs);
+ Qt::PenJoinStyle joinStyle() const;
+ void setJoinStyle(Qt::PenJoinStyle pcs);
+- QVector<double> dashPattern() const;
+- void setDashPattern(const QVector<double> &pattern);
++ QVector<float> dashPattern() const;
++ void setDashPattern(const QVector<float> &pattern);
+ qreal miterLimit() const;
+ void setMiterLimit(qreal limit);
+ bool operator==(const QPen &p) const;
+diff --git a/sip/QtGui/qtextoption.sip b/sip/QtGui/qtextoption.sip
+index 2075e99..f748a63 100644
+--- a/sip/QtGui/qtextoption.sip
++++ b/sip/QtGui/qtextoption.sip
+@@ -75,8 +75,8 @@ public:
+ typedef QFlags<QTextOption::Flag> Flags;
+ QFlags<QTextOption::Flag> flags() const;
+ qreal tabStop() const;
+- void setTabArray(QList<double> tabStops);
+- QList<double> tabArray() const;
++ void setTabArray(QList<float> tabStops);
++ QList<float> tabArray() const;
+ void setUseDesignMetrics(bool b);
+ bool useDesignMetrics() const;
+ void setAlignment(Qt::Alignment aalignment);
diff --git a/recipes/python/python-pyqt/04_qreal_api_fixes.dpatch b/recipes/python/python-pyqt/04_qreal_api_fixes.dpatch
new file mode 100644
index 0000000000..abd9e3f4cd
--- /dev/null
+++ b/recipes/python/python-pyqt/04_qreal_api_fixes.dpatch
@@ -0,0 +1,259 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_qreal_api_fixes.dpatch by Torsten Marek <shlomme@debian.org>
+##
+## DP: Exchanges double by qreal in some wrapped methods.
+
+@DPATCH@
+diff -urNad python-qt4-4.3~/sip/QtCore/qlist.sip python-qt4-4.3/sip/QtCore/qlist.sip
+--- python-qt4-4.3~/sip/QtCore/qlist.sip 2007-09-02 00:35:50.000000000 +0200
++++ python-qt4-4.3/sip/QtCore/qlist.sip 2007-09-02 00:35:53.000000000 +0200
+@@ -322,8 +322,8 @@
+ %End
+ };
+ %If (Qt_4_3_0 -)
+-// QList<QPair<double, double> > is implemented as a Python list of 2-element tuples.
+-%MappedType QList<QPair<double, double> >
++// QList<QPair<float, float> > is implemented as a Python list of 2-element tuples.
++%MappedType QList<QPair<float, float> >
+ {
+ %TypeHeaderCode
+ #include <qlist.h>
+@@ -340,7 +340,7 @@
+ // Set the list elements.
+ for (int i = 0; i < sipCpp->size(); ++i)
+ {
+- const QPair<double, double> &p = sipCpp->at(i);
++ const QPair<float, float> &p = sipCpp->at(i);
+ PyObject *pobj;
+
+ if ((pobj = Py_BuildValue((char *)"dd", p.first, p.second)) == NULL)
+@@ -370,16 +370,16 @@
+ return 1;
+ }
+
+- QList<QPair<double, double> > *ql = new QList<QPair<double, double> >;
++ QList<QPair<float, float> > *ql = new QList<QPair<float, float> >;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ PyObject *tup = PyList_GET_ITEM(sipPy, i);
+
+- double first = PyFloat_AsDouble(PyTuple_GET_ITEM(tup, 0));
+- double second = PyFloat_AsDouble(PyTuple_GET_ITEM(tup, 1));
++ float first = PyFloat_AsDouble(PyTuple_GET_ITEM(tup, 0));
++ float second = PyFloat_AsDouble(PyTuple_GET_ITEM(tup, 1));
+
+- ql->append(QPair<double, double>(first, second));
++ ql->append(QPair<float, float>(first, second));
+ }
+
+ *sipCppPtr = ql;
+@@ -389,9 +389,9 @@
+ };
+ %End
+ %If (Qt_4_3_0 -)
+-// QList<QPair<double, TYPE> > is implemented as a Python list of 2-element tuples.
+-template<double, TYPE>
+-%MappedType QList<QPair<double, TYPE> >
++// QList<QPair<float, TYPE> > is implemented as a Python list of 2-element tuples.
++template<float, TYPE>
++%MappedType QList<QPair<float, TYPE> >
+ {
+ %TypeHeaderCode
+ #include <qlist.h>
+@@ -408,7 +408,7 @@
+ // Set the list elements.
+ for (int i = 0; i < sipCpp->size(); ++i)
+ {
+- const QPair<double, TYPE> &p = sipCpp->at(i);
++ const QPair<float, TYPE> &p = sipCpp->at(i);
+ TYPE *t = new TYPE(p.second);
+ PyObject *pobj;
+
+@@ -447,12 +447,12 @@
+ return 1;
+ }
+
+- QList<QPair<double, TYPE> > *ql = new QList<QPair<double, TYPE> >;
++ QList<QPair<float, TYPE> > *ql = new QList<QPair<float, TYPE> >;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ PyObject *tup = PyList_GET_ITEM(sipPy, i);
+- double d;
++ float d;
+ int state;
+
+ d = PyFloat_AsDouble(PyTuple_GET_ITEM(tup, 0));
+@@ -466,7 +466,7 @@
+ return 0;
+ }
+
+- ql->append(QPair<double, TYPE>(d, *t));
++ ql->append(QPair<float, TYPE>(d, *t));
+
+ sipReleaseInstance(t, sipClass_TYPE, state);
+ }
+@@ -524,8 +524,8 @@
+ return sipGetState(sipTransferObj);
+ %End
+ };
+-// QList<double> is implemented as a Python list of floats.
+-%MappedType QList<double>
++// QList<float> is implemented as a Python list of floats.
++%MappedType QList<float>
+ {
+ %TypeHeaderCode
+ #include <qlist.h>
+@@ -561,7 +561,7 @@
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+- QList<double> *ql = new QList<double>;
++ QList<float> *ql = new QList<float>;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ ql->append(PyFloat_AsDouble(PyList_GET_ITEM(sipPy, i)));
+diff -urNad python-qt4-4.3~/sip/QtCore/qvector.sip python-qt4-4.3/sip/QtCore/qvector.sip
+--- python-qt4-4.3~/sip/QtCore/qvector.sip 2007-09-02 00:35:50.000000000 +0200
++++ python-qt4-4.3/sip/QtCore/qvector.sip 2007-09-02 00:35:53.000000000 +0200
+@@ -143,8 +143,8 @@
+ return sipGetState(sipTransferObj);
+ %End
+ };
+-// QVector<double> is implemented as a Python list of floats.
+-%MappedType QVector<double>
++// QVector<float> is implemented as a Python list of floats.
++%MappedType QVector<float>
+ {
+ %TypeHeaderCode
+ #include <qvector.h>
+@@ -180,7 +180,7 @@
+ if (sipIsErr == NULL)
+ return PyList_Check(sipPy);
+
+- QVector<double> *ql = new QVector<double>;
++ QVector<float> *ql = new QVector<float>;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ ql->append(PyFloat_AsDouble(PyList_GET_ITEM(sipPy, i)));
+@@ -190,9 +190,9 @@
+ return sipGetState(sipTransferObj);
+ %End
+ };
+-// QVector<QPair<double, TYPE> > is implemented as a Python list of 2-element tuples.
++// QVector<QPair<float, TYPE> > is implemented as a Python list of 2-element tuples.
+ template<TYPE>
+-%MappedType QVector<QPair<double, TYPE> >
++%MappedType QVector<QPair<float, TYPE> >
+ {
+ %TypeHeaderCode
+ #include <qvector.h>
+@@ -209,7 +209,7 @@
+ // Set the list elements.
+ for (int i = 0; i < sipCpp->size(); ++i)
+ {
+- const QPair<double, TYPE> &p = sipCpp->at(i);
++ const QPair<float, TYPE> &p = sipCpp->at(i);
+ TYPE *pt = new TYPE(p.second);
+ PyObject *pobj;
+
+@@ -248,14 +248,14 @@
+ return 1;
+ }
+
+- QVector<QPair<double, TYPE> > *qv = new QVector<QPair<double, TYPE> >;
++ QVector<QPair<float, TYPE> > *qv = new QVector<QPair<float, TYPE> >;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ PyObject *tup = PyList_GET_ITEM(sipPy, i);
+ int state;
+ TYPE *s;
+- QPair<double, TYPE> p;
++ QPair<float, TYPE> p;
+
+ p.first = PyFloat_AsDouble(PyTuple_GET_ITEM(tup, 0));
+
+diff -urNad python-qt4-4.3~/sip/QtGui/qbrush.sip python-qt4-4.3/sip/QtGui/qbrush.sip
+--- python-qt4-4.3~/sip/QtGui/qbrush.sip 2007-09-02 00:35:50.000000000 +0200
++++ python-qt4-4.3/sip/QtGui/qbrush.sip 2007-09-02 00:35:53.000000000 +0200
+@@ -138,7 +138,7 @@
+
+ QDataStream &operator>>(QDataStream &, QBrush & /Constrained/);
+ QDataStream &operator<<(QDataStream &, const QBrush & /Constrained/);
+-typedef QVector<QPair<double, QColor> > QGradientStops;
++typedef QVector<QPair<float, QColor> > QGradientStops;
+
+ class QGradient
+ {
+diff -urNad python-qt4-4.3~/sip/QtGui/qgraphicsitemanimation.sip python-qt4-4.3/sip/QtGui/qgraphicsitemanimation.sip
+--- python-qt4-4.3~/sip/QtGui/qgraphicsitemanimation.sip 2007-09-02 00:35:50.000000000 +0200
++++ python-qt4-4.3/sip/QtGui/qgraphicsitemanimation.sip 2007-09-02 00:35:53.000000000 +0200
+@@ -64,19 +64,19 @@
+
+ public:
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, QPointF> > posList() const;
++ QList<QPair<float, QPointF> > posList() const;
+ %End
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, double> > rotationList() const;
++ QList<QPair<float, float> > rotationList() const;
+ %End
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, QPointF> > translationList() const;
++ QList<QPair<float, QPointF> > translationList() const;
+ %End
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, QPointF> > scaleList() const;
++ QList<QPair<float, QPointF> > scaleList() const;
+ %End
+ %If (Qt_4_3_0 -)
+- QList<QPair<double, QPointF> > shearList() const;
++ QList<QPair<float, QPointF> > shearList() const;
+ %End
+
+ private:
+diff -urNad python-qt4-4.3~/sip/QtGui/qpainterpath.sip python-qt4-4.3/sip/QtGui/qpainterpath.sip
+--- python-qt4-4.3~/sip/QtGui/qpainterpath.sip 2007-09-02 00:35:50.000000000 +0200
++++ python-qt4-4.3/sip/QtGui/qpainterpath.sip 2007-09-02 00:35:53.000000000 +0200
+@@ -194,8 +194,8 @@
+ void setCurveThreshold(qreal threshold);
+ qreal curveThreshold() const;
+ void setDashPattern(Qt::PenStyle);
+- void setDashPattern(const QVector<double> &dashPattern);
+- QVector<double> dashPattern() const;
++ void setDashPattern(const QVector<float> &dashPattern);
++ QVector<float> dashPattern() const;
+ QPainterPath createStroke(const QPainterPath &path) const;
+ %If (Qt_4_3_0 -)
+ void setDashOffset(qreal offset);
+diff -urNad python-qt4-4.3~/sip/QtGui/qpen.sip python-qt4-4.3/sip/QtGui/qpen.sip
+--- python-qt4-4.3~/sip/QtGui/qpen.sip 2007-09-02 00:35:50.000000000 +0200
++++ python-qt4-4.3/sip/QtGui/qpen.sip 2007-09-02 00:35:53.000000000 +0200
+@@ -91,8 +91,8 @@
+ void setCapStyle(Qt::PenCapStyle pcs);
+ Qt::PenJoinStyle joinStyle() const;
+ void setJoinStyle(Qt::PenJoinStyle pcs);
+- QVector<double> dashPattern() const;
+- void setDashPattern(const QVector<double> &pattern);
++ QVector<float> dashPattern() const;
++ void setDashPattern(const QVector<float> &pattern);
+ qreal miterLimit() const;
+ void setMiterLimit(qreal limit);
+ bool operator==(const QPen &p) const;
+diff -urNad python-qt4-4.3~/sip/QtGui/qtextoption.sip python-qt4-4.3/sip/QtGui/qtextoption.sip
+--- python-qt4-4.3~/sip/QtGui/qtextoption.sip 2007-09-02 00:35:50.000000000 +0200
++++ python-qt4-4.3/sip/QtGui/qtextoption.sip 2007-09-02 00:35:53.000000000 +0200
+@@ -62,8 +62,8 @@
+ typedef QFlags<QTextOption::Flag> Flags;
+ QFlags<QTextOption::Flag> flags() const;
+ qreal tabStop() const;
+- void setTabArray(QList<double> tabStops);
+- QList<double> tabArray() const;
++ void setTabArray(QList<float> tabStops);
++ QList<float> tabArray() const;
+ void setUseDesignMetrics(bool b);
+ bool useDesignMetrics() const;
+ void setAlignment(Qt::Alignment aalignment);
diff --git a/recipes/python/python-pyqt/assistantclient-fix.patch b/recipes/python/python-pyqt/assistantclient-fix.patch
new file mode 100644
index 0000000000..eef0847c7c
--- /dev/null
+++ b/recipes/python/python-pyqt/assistantclient-fix.patch
@@ -0,0 +1,13 @@
+Index: PyQt-x11-gpl-4.3.3/sip/QtAssistant/qassistantclient.sip
+===================================================================
+--- PyQt-x11-gpl-4.3.3.orig/sip/QtAssistant/qassistantclient.sip 2008-01-07 13:31:35.000000000 +0100
++++ PyQt-x11-gpl-4.3.3/sip/QtAssistant/qassistantclient.sip 2008-01-07 13:32:20.000000000 +0100
+@@ -26,7 +26,7 @@
+ {
+
+ %TypeHeaderCode
+-#include <qassistantclient.h>
++#include <QtAssistant/qassistantclient.h>
+ %End
+
+ %ConvertToSubClassCode
diff --git a/recipes/python/python-pyqt/cross-compile.patch b/recipes/python/python-pyqt/cross-compile.patch
new file mode 100644
index 0000000000..fb1524c09d
--- /dev/null
+++ b/recipes/python/python-pyqt/cross-compile.patch
@@ -0,0 +1,33 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- PyQt4-gpl-4.0beta1/configure.py~cross-compile.patch
++++ PyQt4-gpl-4.0beta1/configure.py
+@@ -471,7 +471,7 @@
+ sipconfig.error("Unable to create the %s directory." % mname)
+
+ # Build the SIP command line.
+- argv = ['"' + sipcfg.sip_bin + '"']
++ argv = ['"' + sipcfg.sip_bin + '4"']
+
+ argv.extend(qt_sip_flags)
+
+@@ -846,7 +846,15 @@
+ """Set the qt_dir, qt_incdir, qt_libdir, qt_bindir and qt_datadir globals
+ for the Qt installation.
+ """
+- sipconfig.inform("Determining the layout of your Qt installation...")
++ sipconfig.inform("Determining the layout of your Qt installation... - patched for OpenEmbedded by :M:")
++
++ global qt_dir, qt_incdir, qt_libdir, qt_bindir, qt_datadir
++ qt_dir = os.getenv( "QTDIR" )
++ qt_incdir = "%s/include" % qt_dir
++ qt_libdir = "%s/lib" % qt_dir
++ qt_bindir = "%s/bin" % qt_dir
++ qt_datadir = "%s/share" % qt_dir
++ return
+
+ if not opt_qmake:
+ sipconfig.error("Make sure you have a working Qt v4 qmake on your PATH or use the -q argument to explicitly specify a working Qt v4 qmake.")
diff --git a/recipes/python/python-pyqt_4.4.3.bb b/recipes/python/python-pyqt_4.4.3.bb
new file mode 100644
index 0000000000..08a8fc6683
--- /dev/null
+++ b/recipes/python/python-pyqt_4.4.3.bb
@@ -0,0 +1,73 @@
+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 = "python-core"
+SRCNAME = "pyqt"
+PR = "ml4"
+
+PYQT_OE_VERSION = "Qt_4_4_1"
+
+SRC_URI = "\
+ http://cvs.fedora.redhat.com/repo/pkgs/PyQt4/PyQt-x11-gpl-4.4.3.tar.gz/89e84c36a8520bf8b3a8a2b20e765154/PyQt-x11-gpl-4.4.3.tar.gz \
+ file://cross-compile.patch;patch=1 \
+ file://01_configure.dpatch;patch=1 \
+ file://02_htmllinks.dpatch;patch=1 \
+ file://03_qreal.dpatch;patch=1 \
+ file://04_qreal_api_fixes-for-4.4.3.dpatch;patch=1 \
+ \
+ file://assistantclient-fix.patch;patch=1 \
+"
+S = "${WORKDIR}/PyQt-x11-gpl-${PV}"
+
+inherit qt4x11 sip distutils-base
+
+PARALLEL_MAKE = ""
+
+QMAKE_PROFILES = "pyqt.pro"
+# NOTE: match with qt version we have in OE
+EXTRA_SIPTAGS = "-tWS_X11 -t${PYQT_OE_VERSION} -xVendorID -xPyQt_SessionManager -xPyQt_Accessibility"
+EXTRA_OEMAKE = " MAKEFLAGS= "
+
+SIP_MODULES = "QtCore QtGui QtNetwork QtSql QtSvg QtXml QtAssistant QtWebKit"
+EXTRA_QMAKEVARS_POST += "INCLUDEPATH+=${OE_QMAKE_INCDIR_QT}/Qt \
+ INCLUDEPATH+=${STAGING_INCDIR}/${PYTHON_DIR}"
+
+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=${SIP_MODULES}\n" >pyqt.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-pyrad_1.1.bb b/recipes/python/python-pyrad_1.1.bb
new file mode 100644
index 0000000000..a6b8e15fb3
--- /dev/null
+++ b/recipes/python/python-pyrad_1.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Python Radius Client and Server"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "BSD"
+RDEPENDS = "python-crypt"
+SRCNAME = "pyrad"
+PR = "r1"
+
+SRC_URI = "http://pypi.python.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/recipes/python/python-pyraf_1.7.bb b/recipes/python/python-pyraf_1.7.bb
new file mode 100644
index 0000000000..d5f92e6c3e
--- /dev/null
+++ b/recipes/python/python-pyraf_1.7.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "PyRAF is a Python-based interface to IRAF."
+HOMEPAGE = "http://www.stsci.edu/resources/software_hardware/pyraf"
+AUTHOR = "Space Telescope Science Institute"
+SECTION = "devel/python"
+LICENSE = "AURA"
+PR = "ml0"
+
+SRC_URI = "ftp://ra.stsci.edu/pub/pyraf/release/pyraf-${PV}.tar.gz"
+S = "${WORKDIR}/pyraf-${PV}"
+
+inherit distutils
+
+RDEPENDS = "python-numarray"
+
diff --git a/recipes/python/python-pyreverse/fix-future.patch b/recipes/python/python-pyreverse/fix-future.patch
new file mode 100644
index 0000000000..2bcba0dd39
--- /dev/null
+++ b/recipes/python/python-pyreverse/fix-future.patch
@@ -0,0 +1,16 @@
+Index: pyreverse-0.5.2/setup.py
+===================================================================
+--- pyreverse-0.5.2.orig/setup.py
++++ pyreverse-0.5.2/setup.py
+@@ -17,10 +17,10 @@
+ # this program; if not, write to the Free Software Foundation, Inc.,
+ # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ """ Generic Setup script, takes package info from __pkginfo__.py file """
++from __future__ import nested_scopes
+
+ __revision__ = '$Id: setup.py,v 1.17 2005/01/05 11:40:41 syt Exp $'
+
+-from __future__ import nested_scopes
+ import os
+ import sys
+ import shutil
diff --git a/recipes/python/python-pyrex-native_0.9.8.5.bb b/recipes/python/python-pyrex-native_0.9.8.5.bb
new file mode 100644
index 0000000000..4405212040
--- /dev/null
+++ b/recipes/python/python-pyrex-native_0.9.8.5.bb
@@ -0,0 +1,10 @@
+require python-pyrex_${PV}.bb
+inherit native
+DEPENDS = "python-native"
+RDEPENDS = ""
+
+do_stage() {
+ BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+ STAGING_LIBDIR=${STAGING_LIBDIR} STAGING_INCDIR=${STAGING_INCDIR} \
+ ${STAGING_BINDIR}/python setup.py install --prefix=${STAGING_BINDIR}/.. --install-data=${STAGING_DATADIR}
+}
diff --git a/recipes/python/python-pyrex_0.9.8.5.bb b/recipes/python/python-pyrex_0.9.8.5.bb
new file mode 100644
index 0000000000..94db79341e
--- /dev/null
+++ b/recipes/python/python-pyrex_0.9.8.5.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Pyrex 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 = "GPL"
+SRCNAME = "Pyrex"
+PR = "ml0"
+
+SRC_URI = "\
+ http://nz.cosc.canterbury.ac.nz/~greg/python/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
+ file://pyrex-fix-optimized-mode.patch;patch=1 \
+"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pyro/pyro-unattended-install.patch b/recipes/python/python-pyro/pyro-unattended-install.patch
new file mode 100644
index 0000000000..4a14ef2310
--- /dev/null
+++ b/recipes/python/python-pyro/pyro-unattended-install.patch
@@ -0,0 +1,16 @@
+
+--- setup.cfg~pyro-unattended-install
++++ setup.cfg
+@@ -4,9 +4,9 @@
+ ### Enable the following two items for unattended install.
+ ### The scripts location is mandatory. Change it so something sensible.
+
+-#[install-options]
+-#unattended=1
++[install-options]
++unattended=1
+
+ [install]
+ optimize=1
+-#install-scripts=/foo/bar
++install-scripts= ../image/usr/lib/python2.4
diff --git a/recipes/python/python-pyro_3.8.1.bb b/recipes/python/python-pyro_3.8.1.bb
new file mode 100644
index 0000000000..695d8fb7aa
--- /dev/null
+++ b/recipes/python/python-pyro_3.8.1.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Pyro is an acronym for PYthon Remote Objects. \
+It is an advanced and powerful Distributed Object Technology \
+system written entirely in Python, that is designed to be very \
+easy to use, and is small simple and free. Written by Irmen de Jong."
+HOMEPAGE = "http://pyro.sourceforge.net"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT"
+PR = "ml0"
+
+SRC_URI = "\
+ ${SOURCEFORGE_MIRROR}/pyro/Pyro-${PV}.tar.gz \
+ file://pyro-unattended-install.patch;patch=1;pnum=0 \
+"
+S = "${WORKDIR}/Pyro-${PV}"
+
+inherit distutils
+
+RDEPENDS = "\
+ python-crypt \
+ python-io \
+ python-lang \
+ python-math \
+ python-netserver \
+ python-pickle \
+ python-re \
+ python-shell \
+ python-stringold \
+ python-threading \
+"
+
diff --git a/recipes/python/python-pyrtc_git.bb b/recipes/python/python-pyrtc_git.bb
new file mode 100644
index 0000000000..af3bcfd5e4
--- /dev/null
+++ b/recipes/python/python-pyrtc_git.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "PyRTC is a python extension module that supports talking to the \
+RTC (Real Time Clock) found in most PCs and SOCs"
+SECTION = "devel/python"
+HOMEPAGE = "http://www.freesmartphone.org"
+AUTHOR = "Michael 'Mickey' Lauer <mlauer@vanille-media.de>"
+LICENSE = "GPLv2"
+SRCNAME = "pyrtc"
+DEPENDS = "python-cython-native"
+PV = "1.0.0+gitr${SRCREV}"
+PR = "ml1"
+
+SRC_URI = "git://git.freesmartphone.org/python-helpers.git;protocol=git;branch=master"
+S = "${WORKDIR}/git/${SRCNAME}"
+
+inherit distutils
+
diff --git a/recipes/python/python-pyserial_2.4.bb b/recipes/python/python-pyserial_2.4.bb
new file mode 100644
index 0000000000..637a980e49
--- /dev/null
+++ b/recipes/python/python-pyserial_2.4.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Serial Port Support for Python"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "PSF"
+SRCNAME = "pyserial"
+PR = "ml1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+# FIXME might stop packaging serialwin32 and serialjava files
+
+RDEPENDS = "\
+ python-fcntl \
+ python-io \
+ python-stringold \
+"
diff --git a/recipes/python/python-pysqlite2/fix-setup.patch b/recipes/python/python-pysqlite2/fix-setup.patch
new file mode 100644
index 0000000000..fb732a1c3d
--- /dev/null
+++ b/recipes/python/python-pysqlite2/fix-setup.patch
@@ -0,0 +1,9 @@
+diff -urN pysqlite-2.4.0.orig/setup.cfg pysqlite-2.4.0/setup.cfg
+--- pysqlite-2.4.0.orig/setup.cfg 2007-11-25 17:56:17.000000000 +0100
++++ pysqlite-2.4.0/setup.cfg 2007-12-07 09:59:36.000000000 +0100
+@@ -1,5 +1,3 @@
+ [build_ext]
+ define=
+-include_dirs=/usr/include
+-library_dirs=/usr/lib
+ libraries=sqlite3
diff --git a/recipes/python/python-pysqlite2_2.4.0.bb b/recipes/python/python-pysqlite2_2.4.0.bb
new file mode 100644
index 0000000000..24b2668ec4
--- /dev/null
+++ b/recipes/python/python-pysqlite2_2.4.0.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "Python interface to SQLite 3"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "BSD"
+DEPENDS = "sqlite3"
+SRCNAME = "pysqlite"
+PR = "ml2"
+
+SRC_URI = "http://initd.org/pub/software/pysqlite/releases/2.4/${PV}/${SRCNAME}-${PV}.tar.gz \
+ file://fix-setup.patch;patch=1"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+do_install_append() {
+ install -d ${D}${datadir}/doc/
+ mv ${D}${datadir}/pysqlite2-doc ${D}${datadir}/doc/${PN}
+}
+
+RDEPENDS = "\
+ python-datetime \
+ python-lang \
+ python-crypt \
+ python-io \
+ python-threading \
+ python-unittest \
+ python-zlib \
+"
+
+PACKAGES =+ "${PN}-tests"
+FILES_${PN}-tests = "${libdir}/${PYTHON_DIR}/pysqlite2/test"
+RDEPENDS_${PN}-tests = "${PN}"
diff --git a/recipes/python/python-pytester_0.6.0.bb b/recipes/python/python-pytester_0.6.0.bb
new file mode 100644
index 0000000000..8c9927f530
--- /dev/null
+++ b/recipes/python/python-pytester_0.6.0.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "This is a small package that facilitates the unit testing process \
+by aggregating PyUnit tests and making them easier to call from the command \
+line and from within other unit tests."
+SECTION = "devel/python"
+HOMEPAGE = "http://oss.wxnet.org/pytester/index.html"
+PRIORITY = "optional"
+LICENSE = "GPL"
+SRCNAME = "pytester"
+PR = "ml1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/meta-tools/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pyusb_0.4.1.bb b/recipes/python/python-pyusb_0.4.1.bb
new file mode 100644
index 0000000000..9ed3955c2e
--- /dev/null
+++ b/recipes/python/python-pyusb_0.4.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "libusb Python Bindings"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "BSD"
+DEPENDS = "libusb"
+SRCNAME = "pyusb"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pyvisa_1.3.bb b/recipes/python/python-pyvisa_1.3.bb
new file mode 100644
index 0000000000..90bb00ef73
--- /dev/null
+++ b/recipes/python/python-pyvisa_1.3.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "A Python package with bindings to the 'Virtual Instrument Software Architecture' \
+(VISA) library, in order to control measurement devices and test equipment via GPIB, RS232, or USB."
+SECTION = "devel/python"
+HOMEPAGE = "http://pyvisa.sourceforge.net/"
+PRIORITY = "optional"
+LICENSE = "BSD"
+SRCNAME = "PyVISA"
+PR = "ml0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pyvisa/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+export HOME=/tmp/foo
diff --git a/recipes/python/python-pyweather_0.7.0.bb b/recipes/python/python-pyweather_0.7.0.bb
new file mode 100644
index 0000000000..9b98804ba3
--- /dev/null
+++ b/recipes/python/python-pyweather_0.7.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "PyWeather is a collection of weather related modules \
+that are capable of performing conversion calculations for many common meteorological units."
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+SRCNAME = "weather"
+PR = "ml1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/meta-tools/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pyxdg_0.15.bb b/recipes/python/python-pyxdg_0.15.bb
new file mode 100644
index 0000000000..31c6f21ab4
--- /dev/null
+++ b/recipes/python/python-pyxdg_0.15.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "PyXDG is a python library to access freedesktop.org standards"
+SECTION = "devel/python"
+LICENSE = "GPL"
+PR = "r1"
+
+SRC_URI = "http://www.freedesktop.org/~lanius/pyxdg-${PV}.tar.gz"
+S = "${WORKDIR}/pyxdg-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pyxml_0.8.4.bb b/recipes/python/python-pyxml_0.8.4.bb
new file mode 100644
index 0000000000..68eb7a3bb4
--- /dev/null
+++ b/recipes/python/python-pyxml_0.8.4.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "A sophisticated XML Processing Package for Python"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "PSF"
+SRCNAME = "pyxml"
+PR = "ml1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pyxml/PyXML-${PV}.tar.gz"
+S = "${WORKDIR}/PyXML-${PV}"
+
+inherit distutils
+
+RDEPENDS = "python-xml python-netclient"
+
diff --git a/recipes/python/python-pyxmlrpc_0.8.8.3.bb b/recipes/python/python-pyxmlrpc_0.8.8.3.bb
new file mode 100644
index 0000000000..dea1989994
--- /dev/null
+++ b/recipes/python/python-pyxmlrpc_0.8.8.3.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Fast Python XMLRPC Library"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+SRCNAME = "py-xmlrpc"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-pyyaml/setup.py b/recipes/python/python-pyyaml/setup.py
new file mode 100644
index 0000000000..fb64983419
--- /dev/null
+++ b/recipes/python/python-pyyaml/setup.py
@@ -0,0 +1,64 @@
+NAME = 'PyYAML'
+VERSION = '3.06'
+DESCRIPTION = "YAML parser and emitter for Python"
+LONG_DESCRIPTION = """\
+YAML is a data serialization format designed for human readability and
+interaction with scripting languages. PyYAML is a YAML parser and
+emitter for Python.
+
+PyYAML features a complete YAML 1.1 parser, Unicode support, pickle
+support, capable extension API, and sensible error messages. PyYAML
+supports standard YAML tags and provides Python-specific tags that allow
+to represent an arbitrary Python object.
+
+PyYAML is applicable for a broad range of tasks from complex
+configuration files to object serialization and persistance."""
+AUTHOR = "Kirill Simonov"
+AUTHOR_EMAIL = 'xi@resolvent.net'
+LICENSE = "MIT"
+PLATFORMS = "Any"
+URL = "http://pyyaml.org/wiki/PyYAML"
+DOWNLOAD_URL = "http://pyyaml.org/download/pyyaml/%s-%s.tar.gz" % (NAME, VERSION)
+CLASSIFIERS = [
+ "Development Status :: 5 - Production/Stable",
+ "Intended Audience :: Developers",
+ "License :: OSI Approved :: MIT License",
+ "Operating System :: OS Independent",
+ "Programming Language :: Python",
+ "Topic :: Software Development :: Libraries :: Python Modules",
+ "Topic :: Text Processing :: Markup",
+]
+
+from distutils.core import setup
+from distutils.extension import Extension
+from Cython.Distutils import build_ext
+
+import sys, os.path
+
+
+if __name__ == '__main__':
+
+ setup(
+ name=NAME,
+ version=VERSION,
+ description=DESCRIPTION,
+ long_description=LONG_DESCRIPTION,
+ author=AUTHOR,
+ author_email=AUTHOR_EMAIL,
+ license=LICENSE,
+ platforms=PLATFORMS,
+ url=URL,
+ download_url=DOWNLOAD_URL,
+ classifiers=CLASSIFIERS,
+
+ package_dir={'': 'lib'},
+ packages=['yaml'],
+
+ ext_modules = [
+ Extension( "_yaml", ["ext/_yaml.pyx"], libraries = ["yaml"] )
+ ],
+
+ cmdclass={
+ 'build_ext': build_ext,
+ },
+ )
diff --git a/recipes/python/python-pyyaml_svn.bb b/recipes/python/python-pyyaml_svn.bb
new file mode 100644
index 0000000000..0aed0b0e62
--- /dev/null
+++ b/recipes/python/python-pyyaml_svn.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Python support for YAML"
+HOMEPAGE = "http://www.pyyaml.org"
+SECTION = "devel/python"
+LICENSE = "MIT"
+DEPENDS = "libyaml python-cython-native"
+PV = "3.08+svnr${SRCREV}"
+PR = "ml0"
+
+SRC_URI = "\
+ svn://svn.pyyaml.org/pyyaml;module=trunk;proto=http \
+ file://setup.py \
+"
+S = "${WORKDIR}/trunk"
+
+inherit distutils
+
+do_configure_prepend() {
+ # upstream setup.py overcomplicated, use ours
+ install -m 0644 ${WORKDIR}/setup.py ${S}
+}
diff --git a/recipes/python/python-pyzeroconf_0.12.bb b/recipes/python/python-pyzeroconf_0.12.bb
new file mode 100644
index 0000000000..4a8a9b018e
--- /dev/null
+++ b/recipes/python/python-pyzeroconf_0.12.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "A pure Python implementation of Zeroconf"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pyzeroconf/pyzeroconf-${PV}.tgz"
+S = "${WORKDIR}/pyzeroconf-${PV}"
+
+inherit distutils-base
+
+do_install() {
+ install -d ${D}${libdir}
+ install -d ${D}${libdir}/${PYTHON_DIR}
+ install -d ${D}${libdir}/${PYTHON_DIR}/site-packages
+
+ install -m 0644 Zeroconf.py ${D}${libdir}/${PYTHON_DIR}/site-packages/
+}
diff --git a/recipes/python/python-rpyc_3.02.bb b/recipes/python/python-rpyc_3.02.bb
new file mode 100644
index 0000000000..d79f0d00a5
--- /dev/null
+++ b/recipes/python/python-rpyc_3.02.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "RPyC is a Remote Procedure Call Package for Python"
+SECTION = "devel/python"
+HOMEPAGE = "http://rpyc.wikizone.com"
+LICENSE = "GPL"
+SRCNAME = "rpyc"
+PR = "ml0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/rpyc/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-scapy_2.0.0.9.bb b/recipes/python/python-scapy_2.0.0.9.bb
new file mode 100644
index 0000000000..ebe1223418
--- /dev/null
+++ b/recipes/python/python-scapy_2.0.0.9.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Scapy is a powerful interactive packet manipulation tool, \
+packet generator, network scanner, network discovery, packet sniffer, etc. \
+It can for the moment replace hping, 85% of nmap, arpspoof, arp-sk, arping, \
+tcpdump, tethereal, p0f, ...."
+SECTION = "devel/python"
+HOMEPAGE = "http://www.secdev.org/projects/scapy/"
+LICENSE = "GPL"
+PRIORITY = "optional"
+SRCNAME = "scapy"
+PR = "ml1"
+
+SRC_URI = "http://www.secdev.org/projects/scapy/files/scapy-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+RDEPENDS = "\
+ python-netclient \
+ python-netserver \
+"
diff --git a/recipes/python/python-scons-native_1.2.0.bb b/recipes/python/python-scons-native_1.2.0.bb
new file mode 100644
index 0000000000..31bce5583d
--- /dev/null
+++ b/recipes/python/python-scons-native_1.2.0.bb
@@ -0,0 +1,14 @@
+require python-scons_${PV}.bb
+inherit native
+DEPENDS = "python-native"
+RDEPENDS = ""
+
+do_stage() {
+ BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+ ${STAGING_BINDIR}/python setup.py install --prefix=${STAGING_LIBDIR}/.. --install-data=${STAGING_DATADIR} || \
+ oefatal "python setup.py install execution failed."
+}
+
+do_install() {
+ :
+}
diff --git a/recipes/python/python-scons_1.2.0.bb b/recipes/python/python-scons_1.2.0.bb
new file mode 100644
index 0000000000..dc5b40243e
--- /dev/null
+++ b/recipes/python/python-scons_1.2.0.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "A Software Construction Tool"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+SRCNAME = "scons"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/scons/scons-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-setuptools-native_0.6c9.bb b/recipes/python/python-setuptools-native_0.6c9.bb
new file mode 100644
index 0000000000..0bbf9c32fc
--- /dev/null
+++ b/recipes/python/python-setuptools-native_0.6c9.bb
@@ -0,0 +1,9 @@
+require python-setuptools_${PV}.bb
+inherit native
+
+FILESPATH = "${FILE_DIRNAME}/python-setuptools"
+DEPENDS = "python-native"
+
+do_stage() {
+ distutils_stage_all
+}
diff --git a/recipes/python/python-setuptools/fix-log-usage.patch b/recipes/python/python-setuptools/fix-log-usage.patch
new file mode 100644
index 0000000000..6363c850c2
--- /dev/null
+++ b/recipes/python/python-setuptools/fix-log-usage.patch
@@ -0,0 +1,13 @@
+Index: setuptools-0.6c8/setuptools/command/sdist.py
+===================================================================
+--- setuptools-0.6c8.orig/setuptools/command/sdist.py
++++ setuptools-0.6c8/setuptools/command/sdist.py
+@@ -95,7 +95,7 @@ def entries_finder(dirname, filename):
+ for match in entries_pattern.finditer(data):
+ yield joinpath(dirname,unescape(match.group(1)))
+ else:
+- log.warn("unrecognized .svn/entries format in %s", dirname)
++ print ("unrecognized .svn/entries format in %s", dirname)
+
+
+ finders = [
diff --git a/recipes/python/python-setuptools_0.6c9.bb b/recipes/python/python-setuptools_0.6c9.bb
new file mode 100644
index 0000000000..179129eb60
--- /dev/null
+++ b/recipes/python/python-setuptools_0.6c9.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Download, build, install, upgrade, and uninstall Python packages"
+HOMEPAGE = "http://cheeseshop.python.org/pypi/setuptools"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT"
+RDEPENDS = "python-distutils python-compression"
+SRCNAME = "setuptools"
+PR = "ml0"
+
+SRC_URI = "\
+ http://cheeseshop.python.org/packages/source/s/setuptools/${SRCNAME}-${PV}.tar.gz\
+ file://fix-log-usage.patch;patch=1 \
+"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+do_install_prepend() {
+ install -d ${D}/${libdir}/${PYTHON_DIR}/site-packages
+}
+
+RDEPENDS = "\
+ python-distutils \
+ python-compression \
+"
diff --git a/recipes/python/python-sgmlop_1.1.bb b/recipes/python/python-sgmlop_1.1.bb
new file mode 100644
index 0000000000..dab075cc3b
--- /dev/null
+++ b/recipes/python/python-sgmlop_1.1.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "Pythonware Fast SGML Parser for Python"
+SECTION = "devel/python"
+PRIORITY = "optional"
+SRCNAME = "sgmlop"
+LICENSE = "${PN}"
+
+inherit distutils
+
+SRC_URI = "http://www.vanille.de/mirror/${SRCNAME}-${PV}.tar.bz2"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
diff --git a/recipes/python/python-simplejson_2.0.7.bb b/recipes/python/python-simplejson_2.0.7.bb
new file mode 100644
index 0000000000..7bfa44eb8e
--- /dev/null
+++ b/recipes/python/python-simplejson_2.0.7.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Simple, fast, extensible JSON encoder/decoder for Python"
+HOMEPAGE = "http://cheeseshop.python.org/pypi/simplejson"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT"
+SRCNAME = "simplejson"
+PR = "ml0"
+
+SRC_URI = "http://cheeseshop.python.org/packages/source/s/simplejson/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS = "\
+ python-core \
+ python-re \
+ python-io \
+ python-netserver \
+"
+
diff --git a/recipes/python/python-sip.inc b/recipes/python/python-sip.inc
new file mode 100644
index 0000000000..1267d07f59
--- /dev/null
+++ b/recipes/python/python-sip.inc
@@ -0,0 +1,42 @@
+DESCRIPTION = "Runtime helper for sip-generated python wrapper libraries"
+SECTION = "devel/python"
+HOMEPAGE = "http://www.riverbankcomputing.co.uk/sip"
+AUTHOR = "Phil Thompson"
+LICENSE = "GPL"
+DEPENDS = "python"
+RDEPENDS = "python-core"
+
+SRC_URI = "http://www.riverbankcomputing.com/static/Downloads/sip4/sip-${PV}.tar.gz"
+
+S = "${WORKDIR}/sip-${PV}/siplib"
+
+inherit qt4x11 distutils-base
+
+EXTRA_QMAKEVARS_POST += " TEMPLATE=lib \
+ CONFIG=console \
+ DESTDIR= \
+ VERSION=1.0.0 \
+ TARGET=sip \
+ DEFINES=SIP_QT_SUPPORT \
+ INCLUDEPATH+=. \
+ INCLUDEPATH+=${STAGING_INCDIR}/${PYTHON_DIR} \
+ INCLUDEPATH+=${STAGING_INCDIR}"
+
+
+do_configure_prepend() {
+ cat siplib.sbf | sed s,target,TARGET, | sed s,sources,SOURCES, | sed s,headers,HEADERS, > siplib.pro
+}
+
+do_stage() {
+ install -d ${STAGING_LIBDIR_NATIVE}/${PYTHON_DIR}/site-packages/
+ # sipconfig.py sipdistutils.py
+ install -m 0644 sip.h ${STAGING_INCDIR}/sip.h
+}
+
+do_install() {
+ install -d ${D}${libdir}/${PYTHON_DIR}/site-packages/
+ install -m 0755 libsip.so.1.0.0 ${D}${libdir}/${PYTHON_DIR}/site-packages/sip.so
+}
+
+FILES_${PN} = "${libdir}/${PYTHON_DIR}/site-packages/sip.so"
+
diff --git a/recipes/python/python-sip_4.7.9.bb b/recipes/python/python-sip_4.7.9.bb
new file mode 100644
index 0000000000..db88ba974b
--- /dev/null
+++ b/recipes/python/python-sip_4.7.9.bb
@@ -0,0 +1,2 @@
+require python-sip.inc
+PR = "ml0"
diff --git a/recipes/python/python-soappy/fix-future.patch b/recipes/python/python-soappy/fix-future.patch
new file mode 100644
index 0000000000..6c14e32c16
--- /dev/null
+++ b/recipes/python/python-soappy/fix-future.patch
@@ -0,0 +1,54 @@
+Index: SOAPpy-0.11.6/SOAPpy/Client.py
+===================================================================
+--- SOAPpy-0.11.6.orig/SOAPpy/Client.py
++++ SOAPpy-0.11.6/SOAPpy/Client.py
+@@ -39,12 +39,11 @@
+ #
+ ################################################################################
+ """
++from __future__ import nested_scopes
+
+ ident = '$Id: Client.py,v 1.20 2004/04/10 04:22:52 irjudson Exp $'
+ from version import __version__
+
+-from __future__ import nested_scopes
+-
+ #import xml.sax
+ import urllib
+ from types import *
+Index: SOAPpy-0.11.6/SOAPpy/Types.py
+===================================================================
+--- SOAPpy-0.11.6.orig/SOAPpy/Types.py
++++ SOAPpy-0.11.6/SOAPpy/Types.py
+@@ -32,12 +32,11 @@
+ #
+ ################################################################################
+ """
++from __future__ import nested_scopes
+
+ ident = '$Id: Types.py,v 1.17 2004/09/11 03:03:33 warnes Exp $'
+ from version import __version__
+
+-from __future__ import nested_scopes
+-
+ import UserList
+ import base64
+ import cgi
+Index: SOAPpy-0.11.6/SOAPpy/Server.py
+===================================================================
+--- SOAPpy-0.11.6.orig/SOAPpy/Server.py
++++ SOAPpy-0.11.6/SOAPpy/Server.py
+@@ -39,12 +39,11 @@
+ #
+ ################################################################################
+ """
++from __future__ import nested_scopes
+
+ ident = '$Id: Server.py,v 1.20 2004/04/28 21:47:10 warnes Exp $'
+ from version import __version__
+
+-from __future__ import nested_scopes
+-
+ #import xml.sax
+ import re
+ import socket
diff --git a/recipes/python/python-soappy/fpconst.py b/recipes/python/python-soappy/fpconst.py
new file mode 100644
index 0000000000..a1f8f47e3a
--- /dev/null
+++ b/recipes/python/python-soappy/fpconst.py
@@ -0,0 +1,111 @@
+"""Utilities for handling IEEE 754 floating point special values
+
+This python module implements constants and functions for working with
+IEEE754 double-precision special values. It provides constants for
+Not-a-Number (NaN), Positive Infinity (PosInf), and Negative Infinity
+(NegInf), as well as functions to test for these values.
+
+The code is implemented in pure python by taking advantage of the
+'struct' standard module. Care has been taken to generate proper
+results on both big-endian and little-endian machines. Some efficiency
+could be gained by translating the core routines into C.
+
+See <http://babbage.cs.qc.edu/courses/cs341/IEEE-754references.html>
+for reference material on the IEEE 754 floating point standard.
+
+Further information on this package is available at
+<http://software.biostat.washington.edu/statsoft/snake/fpconst>.
+
+Author: Gregory R. Warnes <gregory_r_warnes@groton.pfizer.com>
+Date:: 2003-04-08
+Copyright: (c) 2003, Pfizer, Inc.
+"""
+
+__version__ = "0.6.0"
+ident = "$Id: fpconst.py,v 1.8 2003/05/12 15:14:00 warnes Exp $"
+
+import struct
+
+# check endianess
+_big_endian = struct.pack('i',1)[0] != '\x01'
+
+# and define appropriate constants
+if(_big_endian):
+ _HW = 0
+ _LW = 1
+
+ NaN = struct.unpack('d', '\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF')[0]
+ PosInf = struct.unpack('d', '\x7F\xF0\x00\x00\x00\x00\x00\x00')[0]
+ NegInf = -PosInf
+
+else:
+ _HW = 1
+ _LW = 0
+
+ NaN = struct.unpack('d', '\x00\x00\x00\x00\x00\x00\xf8\xff')[0]
+ PosInf = struct.unpack('d', '\x00\x00\x00\x00\x00\x00\xf0\x7f')[0]
+ NegInf = -PosInf
+
+def _double_as_longs(dval):
+ "Use struct.unpack to decode a double precision float into two longs"
+ tmp = struct.unpack('ll',struct.pack('d', dval))
+ return (tmp[_HW], tmp[_LW])
+
+
+##
+## Functions to extract components of the IEEE 754 floating point format
+##
+
+def _sign(dval):
+ "Extract the sign bit from a double-precision floating point value"
+ ll = _double_as_longs(dval)
+ return ll[0] >> 31 & 0x01
+
+def _exponent(dval):
+ """Extract the exponentent bits from a double-precision floating
+ point value.
+
+ Note that for normalized values, the exponentdent bits have an offset
+ of 1023. As a consequence, the actual exponentent is obtained
+ by subtracting 1023 for the value returned by this function
+ """
+ ll = _double_as_longs(dval)
+ return (ll[0] >> 20) & 0x7ff
+
+def _mantissa(dval):
+ """Extract the _mantissa bits from a double-precision floating
+ point value."""
+
+ ll = _double_as_longs(dval)
+ mantissa0 = (ll[0] & 0x000fffffL) << 32
+ mantissa1 = ll[1]
+ return mantissa0 + mantissa1
+
+##
+## Functions to test for IEEE 754 special values
+##
+
+def isNaN(value):
+ "Determine if the argument is a IEEE 754 NaN (Not a Number) value."
+ return (_exponent(value)==0x7ff and _mantissa(value)!=0)
+
+def isInf(value):
+ """Determine if the argument is an infinite IEEE 754 value (positive
+ or negative inifinity)"""
+ return (_exponent(value)==0x7ff and _mantissa(value)== 0)
+
+def isFinite(value):
+ """Determine if the argument is an finite IEEE 754 value (i.e., is
+ not NaN, positive or negative inifinity)"""
+ return (_exponent(value)!=0x7ff)
+
+
+def isPosInf(value):
+ "Determine if the argument is a IEEE 754 positive infinity value"
+ return (_sign(value)==0 and _exponent(value)==0x7ff and \
+ _mantissa(value)== 0)
+
+def isNegInf(value):
+ "Determine if the argument is a IEEE 754 negative infinity value"
+ return (_sign(value)==1 and _exponent(value)==0x7ff and \
+ _mantissa(value)== 0)
diff --git a/recipes/python/python-soappy_0.11.6.bb b/recipes/python/python-soappy_0.11.6.bb
new file mode 100644
index 0000000000..fc7c49912c
--- /dev/null
+++ b/recipes/python/python-soappy_0.11.6.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Python SOAP Bindings"
+SECTION = "devel/python"
+HOMEPAGE = "http://pywebsvcs.sourceforge.net/"
+PRIORITY = "optional"
+LICENSE = "BSD"
+RDEPENDS = "python-xml python-fpconst"
+SRCNAME = "SOAPpy"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pywebsvcs/${SRCNAME}-${PV}.tar.gz \
+ file://fix-future.patch;patch=1 \
+ file://fpconst.py"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+do_compile_prepend() {
+ install -m 0644 ${WORKDIR}/fpconst.py ${S}/SOAPpy/fpconst.py
+}
diff --git a/recipes/python/python-sphinx_0.5.1.bb b/recipes/python/python-sphinx_0.5.1.bb
new file mode 100644
index 0000000000..a1bc9dd9f7
--- /dev/null
+++ b/recipes/python/python-sphinx_0.5.1.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "Python documentation generator"
+SECTION = "devel/python"
+LICENSE = "BSD"
+PR = "ml0"
+
+SRC_URI = "http://pypi.python.org/packages/source/S/Sphinx/Sphinx-${PV}.tar.gz"
+S = "${WORKDIR}/Sphinx-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-sphinxsearch_0.1.bb b/recipes/python/python-sphinxsearch_0.1.bb
new file mode 100644
index 0000000000..dff93bc106
--- /dev/null
+++ b/recipes/python/python-sphinxsearch_0.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "A module for querying the sphinx search daemon"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+HOMEPAGE = "http://www.sphinxsearch.com/"
+SRCNAME = "sphinxsearch"
+PR = "ml1"
+
+SRC_URI = "http://pypi.python.org/packages/source/s/sphinxsearch/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-spydi_0.9.7.bb b/recipes/python/python-spydi_0.9.7.bb
new file mode 100644
index 0000000000..434b31d1d1
--- /dev/null
+++ b/recipes/python/python-spydi_0.9.7.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Simplified Python Distributed Indexing is a powerful engine \
+to create distributed full text indexing systems and distributed search engines. \
+It supports harvesting, crawling (pull methods), and push methods (via a Web \
+interface or SPyRO Web services)."
+HOMEPAGE = "http://www.spyron.org/spydi.html"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT"
+PR = "ml1"
+
+SRC_URI = "http://lsc.fie.umich.mx/%7esadit/spyro/download/SPyDI-${PV}.tar.gz"
+S = "${WORKDIR}/SPyDI-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-sqlalchemy_0.5.0.bb b/recipes/python/python-sqlalchemy_0.5.0.bb
new file mode 100644
index 0000000000..5cba5b3a3d
--- /dev/null
+++ b/recipes/python/python-sqlalchemy_0.5.0.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Python SQL toolkit and Object Relational Mapper that gives \
+application developers the full power and flexibility of SQL"
+HOMEPAGE = "http://www.sqlalchemy.org/"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT"
+SRCNAME = "SQLAlchemy"
+PR = "ml0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/sqlalchemy/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/recipes/python/python-sqlobject_0.10.4.bb b/recipes/python/python-sqlobject_0.10.4.bb
new file mode 100644
index 0000000000..464cdd2c84
--- /dev/null
+++ b/recipes/python/python-sqlobject_0.10.4.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "SQLObject is an object-relational mapper. It allows you to translate RDBMS \
+table rows into Python objects, and manipulate those objects to transparently \
+manipulate the database."
+SECTION = "devel/python"
+HOMEPAGE = "http://www.sqlobject.org/"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+SRCNAME = "SQLObject"
+PR = "ml0"
+
+SRC_URI = "http://cheeseshop.python.org/packages/source/S/SQLObject/SQLObject-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS = "python-formencode"
diff --git a/recipes/python/python-tlslite_0.3.8.bb b/recipes/python/python-tlslite_0.3.8.bb
new file mode 100644
index 0000000000..ae2d73c527
--- /dev/null
+++ b/recipes/python/python-tlslite_0.3.8.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "TLS Lite is a free python library that implements SSL 3.0 and TLS 1.0. TLS Lite supports non-traditional \
+authentication methods such as SRP, shared keys, and cryptoIDs, in addition to X.509 certificates. TLS Lite is pure \
+Python, however it can access OpenSSL or cryptlib for faster crypto operations."
+SECTION = "devel/python"
+HOMEPAGE = "http://trevp.net/tlslite/"
+PRIORITY = "optional"
+LICENSE = "PD"
+SRCNAME = "tlslite"
+PR = "ml1"
+
+SRC_URI = "http://trevp.net/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/recipes/python/python-traits_3.0.3.bb b/recipes/python/python-traits_3.0.3.bb
new file mode 100644
index 0000000000..9482a1b242
--- /dev/null
+++ b/recipes/python/python-traits_3.0.3.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Explicitly typed attributes for Python"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "BSD"
+PR = "ml0"
+
+inherit setuptools
+
+SRC_URI = "\
+ http://pypi.python.org/packages/source/T/Traits/Traits-${PV}.tar.gz \
+# file://fix-import-pyface.diff;patch=1 \
+"
+S = "${WORKDIR}/Traits-${PV}"
+
+RDEPENDS = "python-netclient"
+
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/enthought/traits/.debug"
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/enthought/traits/protocols/.debug"
diff --git a/recipes/python/python-twisted-2.5.0/remove-zope-check.patch b/recipes/python/python-twisted-2.5.0/remove-zope-check.patch
new file mode 100644
index 0000000000..2bd1b191da
--- /dev/null
+++ b/recipes/python/python-twisted-2.5.0/remove-zope-check.patch
@@ -0,0 +1,18 @@
+Index: Twisted-2.5.0/TwistedCore-2.5.0/twisted/__init__.py
+===================================================================
+--- Twisted-2.5.0.orig/TwistedCore-2.5.0/twisted/__init__.py 2007-03-05 16:30:08.117422472 +0100
++++ Twisted-2.5.0/TwistedCore-2.5.0/twisted/__init__.py 2007-03-05 16:30:13.810553949 +0100
+@@ -14,13 +14,6 @@
+ raise RuntimeError("Twisted requires Python 2.3 or later.")
+ del sys
+
+-# Ensure zope.interface is installed
+-try:
+- from zope.interface import Interface
+- del Interface
+-except ImportError:
+- raise ImportError("you need zope.interface installed "
+- "(http://zope.org/Products/ZopeInterface/)")
+
+ # Ensure compat gets imported
+ from twisted.python import compat
diff --git a/recipes/python/python-twisted-native_8.2.0.bb b/recipes/python/python-twisted-native_8.2.0.bb
new file mode 100644
index 0000000000..d35b9f2482
--- /dev/null
+++ b/recipes/python/python-twisted-native_8.2.0.bb
@@ -0,0 +1,9 @@
+require python-twisted_${PV}.bb
+
+RDEPENDS_${PN} = ""
+
+inherit native
+
+do_stage() {
+ distutils_stage_all
+}
diff --git a/recipes/python/python-twisted_2.5.0.bb b/recipes/python/python-twisted_2.5.0.bb
new file mode 100644
index 0000000000..331acf991e
--- /dev/null
+++ b/recipes/python/python-twisted_2.5.0.bb
@@ -0,0 +1,197 @@
+DESCRIPTION = "Twisted is an event-driven networking framework written in Python and licensed under the LGPL. \
+Twisted supports TCP, UDP, SSL/TLS, multicast, Unix sockets, a large number of protocols \
+(including HTTP, NNTP, IMAP, SSH, IRC, FTP, and others), and much more."
+HOMEPAGE = "http://www.twistedmatrix.com"
+SECTION = "console/network"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+PR = "r9"
+
+SRC_URI = "http://tmrc.mit.edu/mirror/twisted/Twisted/2.5/Twisted-${PV}.tar.bz2 \
+ file://remove-zope-check.patch;patch=1"
+S = "${WORKDIR}/Twisted-${PV}"
+
+inherit distutils
+
+PACKAGES += "\
+ ${PN}-zsh \
+ ${PN}-test \
+ ${PN}-protocols \
+ ${PN}-bin \
+ ${PN}-conch \
+ ${PN}-lore \
+ ${PN}-mail \
+ ${PN}-names \
+ ${PN}-news \
+ ${PN}-runner \
+ ${PN}-web \
+ ${PN}-words \
+ ${PN}-core \
+"
+
+RDEPENDS = "python-core python-zopeinterface"
+RDEPENDS_${PN} += "\
+ ${PN}-bin \
+ ${PN}-conch \
+ ${PN}-lore \
+ ${PN}-mail \
+ ${PN}-names \
+ ${PN}-news \
+ ${PN}-runner \
+ ${PN}-web \
+ ${PN}-words \
+"
+
+ALLOW_EMPTY = "1"
+FILES_${PN} = ""
+
+FILES_${PN}-test = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/test \
+"
+
+FILES_${PN}-protocols = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/ \
+"
+
+FILES_${PN}-zsh = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zsh \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zshcomp.* \
+"
+
+FILES_${PN}-bin = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/_c_urlarg.so \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/spread/cBanana.so \
+"
+
+FILES_${PN}-conch = " \
+ ${bindir}/ckeygen \
+ ${bindir}/tkconch \
+ ${bindir}/conch \
+ ${bindir}/conchftp \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_conch.py* \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/conch \
+"
+
+FILES_${PN}-core = " \
+${bindir}/manhole \
+${bindir}/mktap \
+${bindir}/twistd \
+${bindir}/tap2deb \
+${bindir}/tap2rpm \
+${bindir}/tapconvert \
+${bindir}/tkmktap \
+${bindir}/trial \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__init__.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/notestplugin.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/testplugin.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_ftp.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_inet.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_manhole.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_portforward.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_socks.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_telnet.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_trial.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/dropin.cache \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/application \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/cred \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/enterprise \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/internet \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/manhole \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/manhole \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/persisted \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols\
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python\
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/timeoutqueue.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/filepath.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/dxprofile.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/plugin.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/htmlizer.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/__init__.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/dispatch.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/hook.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/threadpool.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/otp.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/usage.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/roots.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/versions.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/urlpath.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/util.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/components.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/logfile.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/runtime.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/reflect.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/context.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/threadable.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/rebuild.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/failure.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/lockfile.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/formmethod.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/finalize.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/win32.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/dist.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/shortcut.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zipstream.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/release.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/syslog.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/log.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/compat.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zshcomp.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/procutils.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/text.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/_twisted_zsh_stub \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/scripts/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/spread/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/tap/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/trial/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/__init__.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/_version.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/copyright.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/im.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugin.py* \
+"
+
+FILES_${PN}-lore = " \
+${bindir}/bookify \
+${bindir}/lore \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_lore.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/lore \
+"
+
+FILES_${PN}-mail = " \
+${bindir}/mailmail \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_mail.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/mail \
+"
+
+FILES_${PN}-names = " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_names.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/names \
+"
+
+FILES_${PN}-news = " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_news.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/news \
+"
+
+FILES_${PN}-runner = " \
+${libdir}/site-packages/twisted/runner/portmap.so \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/runner\
+"
+
+FILES_${PN}-web = " \
+${bindir}/websetroot \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_web.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/web\
+"
+
+FILES_${PN}-words = " \
+${bindir}/im \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_words.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/words\
+"
+
+FILES_${PN}-dbg += " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*/.debug \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*/*/.debug \
+"
diff --git a/recipes/python/python-twisted_8.2.0.bb b/recipes/python/python-twisted_8.2.0.bb
new file mode 100644
index 0000000000..78234187fb
--- /dev/null
+++ b/recipes/python/python-twisted_8.2.0.bb
@@ -0,0 +1,212 @@
+DESCRIPTION = "Twisted is an event-driven networking framework written in Python and licensed under the LGPL. \
+Twisted supports TCP, UDP, SSL/TLS, multicast, Unix sockets, a large number of protocols \
+(including HTTP, NNTP, IMAP, SSH, IRC, FTP, and others), and much more."
+HOMEPAGE = "http://www.twistedmatrix.com"
+SECTION = "console/network"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+PR = "r1"
+
+SRC_URI = "http://tmrc.mit.edu/mirror/twisted/Twisted/8.2/Twisted-${PV}.tar.bz2 "
+S = "${WORKDIR}/Twisted-${PV}"
+
+inherit setuptools
+
+PACKAGES += "\
+ ${PN}-zsh \
+ ${PN}-test \
+ ${PN}-protocols \
+ ${PN}-bin \
+ ${PN}-conch \
+ ${PN}-lore \
+ ${PN}-mail \
+ ${PN}-names \
+ ${PN}-news \
+ ${PN}-runner \
+ ${PN}-web \
+ ${PN}-words \
+ ${PN}-flow \
+ ${PN}-pair \
+ ${PN}-core \
+"
+
+RDEPENDS = "python-core python-zopeinterface"
+RDEPENDS_${PN} += "\
+ ${PN}-bin \
+ ${PN}-conch \
+ ${PN}-lore \
+ ${PN}-mail \
+ ${PN}-names \
+ ${PN}-news \
+ ${PN}-runner \
+ ${PN}-web \
+ ${PN}-words \
+"
+
+ALLOW_EMPTY = "1"
+FILES_${PN} = ""
+
+FILES_${PN}-test = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/test \
+"
+
+FILES_${PN}-protocols = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/ \
+"
+
+FILES_${PN}-zsh = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zsh \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zshcomp.* \
+"
+
+FILES_${PN}-bin = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/_c_urlarg.so \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/spread/cBanana.so \
+"
+
+FILES_${PN}-conch = " \
+ ${bindir}/ckeygen \
+ ${bindir}/tkconch \
+ ${bindir}/conch \
+ ${bindir}/conchftp \
+ ${bindir}/cftp \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_conch.py* \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/conch \
+"
+
+FILES_${PN}-core = " \
+${bindir}/manhole \
+${bindir}/mktap \
+${bindir}/twistd \
+${bindir}/tap2deb \
+${bindir}/tap2rpm \
+${bindir}/tapconvert \
+${bindir}/tkmktap \
+${bindir}/trial \
+${bindir}/easy_install* \
+${bindir}/pyhtmlizer \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__init__.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/notestplugin.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/testplugin.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_ftp.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_inet.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_manhole.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_portforward.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_socks.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_telnet.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_trial.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/dropin.cache \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/application \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/cred \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/enterprise \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/internet \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/manhole \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/manhole \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/persisted \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols\
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python\
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/timeoutqueue.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/filepath.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/dxprofile.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/plugin.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/htmlizer.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/__init__.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/dispatch.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/hook.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/threadpool.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/otp.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/usage.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/roots.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/versions.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/urlpath.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/util.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/components.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/logfile.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/runtime.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/reflect.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/context.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/threadable.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/rebuild.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/failure.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/lockfile.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/formmethod.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/finalize.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/win32.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/dist.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/shortcut.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zipstream.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/release.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/syslog.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/log.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/compat.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zshcomp.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/procutils.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/text.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/_twisted_zsh_stub \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/scripts/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/spread/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/tap/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/trial/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/__init__.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/_version.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/copyright.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/im.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/*.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/*.py* \
+"
+
+FILES_${PN}-lore = " \
+${bindir}/bookify \
+${bindir}/lore \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_lore.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/lore \
+"
+
+FILES_${PN}-mail = " \
+${bindir}/mailmail \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_mail.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/mail \
+"
+
+FILES_${PN}-names = " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_names.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/names \
+"
+
+FILES_${PN}-news = " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_news.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/news \
+"
+
+FILES_${PN}-runner = " \
+${libdir}/site-packages/twisted/runner/portmap.so \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/runner\
+"
+
+FILES_${PN}-web = " \
+${bindir}/websetroot \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_web.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/web\
+"
+
+FILES_${PN}-words = " \
+${bindir}/im \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_words.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/words\
+"
+
+FILES_${PN}-flow = " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_flow.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/flow \"
+
+FILES_${PN}-pair = " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_pair.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/pair \
+"
+
+FILES_${PN}-dbg += " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*/.debug \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*/*/.debug \
+"
diff --git a/recipes/python/python-vorbis/disable-oggcheck.patch b/recipes/python/python-vorbis/disable-oggcheck.patch
new file mode 100644
index 0000000000..2555169759
--- /dev/null
+++ b/recipes/python/python-vorbis/disable-oggcheck.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- pyvorbis-1.3/setup.py~disable-oggcheck 2003-08-15 10:42:02.000000000 +0200
++++ pyvorbis-1.3/setup.py 2004-01-21 16:32:56.000000000 +0100
+@@ -16,7 +16,7 @@
+ print '''You must have the Ogg Python bindings
+ installed in order to build and install
+ these bindings. Import of ogg._ogg failed.'''
+- sys.exit(1)
++ #sys.exit(1)
+
+ def get_setup():
+ data = {}
diff --git a/recipes/python/python-vorbis_1.4.bb b/recipes/python/python-vorbis_1.4.bb
new file mode 100644
index 0000000000..69a341f4f8
--- /dev/null
+++ b/recipes/python/python-vorbis_1.4.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "Python Vorbis Bindings"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "libvorbis python-ogg"
+SRCNAME = "pyvorbis"
+PR = "ml0"
+
+SRC_URI = "http://www.andrewchatham.com/pyogg/download/${SRCNAME}-${PV}.tar.gz \
+ file://disable-oggcheck.patch;patch=1"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+do_configure_prepend() {
+ touch Setup
+ echo "ogg_libs = ogg" >>Setup
+ echo "ogg_lib_dir = ${STAGING_LIBDIR}" >>Setup
+ echo "ogg_include_dir = ${STAGING_INCDIR}" >>Setup
+ echo "vorbis_libs = vorbis vorbisfile vorbisenc" >>Setup
+ echo "vorbis_lib_dir = ${STAGING_LIBDIR}" >>Setup
+ echo "vorbis_include_dir = ${STAGING_INCDIR}" >>Setup
+}
diff --git a/recipes/python/python-webpy_0.31.bb b/recipes/python/python-webpy_0.31.bb
new file mode 100644
index 0000000000..616e8b4c9b
--- /dev/null
+++ b/recipes/python/python-webpy_0.31.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "A Lightweight Web Application Framework"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "PSF"
+PR = "ml0"
+
+SRC_URI = "http://webpy.org/static/web.py-${PV}.tar.gz"
+S = "${WORKDIR}/webpy"
+
+inherit distutils
+
+RDEPENDS = "\
+ python-netserver \
+ python-netclient \
+ python-pprint \
+"
+
diff --git a/recipes/python/python-xappy_0.5.bb b/recipes/python/python-xappy_0.5.bb
new file mode 100644
index 0000000000..5c5f1ae6d1
--- /dev/null
+++ b/recipes/python/python-xappy_0.5.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "The xappy python module is an easy-to-use interface to the Xapian search engine"
+SECTION = "devel/python"
+LICENSE = "GPLv2"
+DEPENDS = "xapian-core"
+PR = "ml0"
+
+SRC_URI = "http://xappy.googlecode.com/files/xappy-${PV}.tar.gz"
+S = "${WORKDIR}/xappy-${PV}"
+
+inherit distutils
+
+do_stage() {
+ distutils_stage_all
+}
+
diff --git a/recipes/python/python-xlib_0.14.bb b/recipes/python/python-xlib_0.14.bb
new file mode 100644
index 0000000000..eb29004223
--- /dev/null
+++ b/recipes/python/python-xlib_0.14.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "Python Bindings for X Library"
+HOMEPAGE = "http://sourceforge.net/projects/python-xlib/"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "GPL"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}.tar.gz"
+
+inherit distutils
diff --git a/recipes/python/python.inc b/recipes/python/python.inc
new file mode 100644
index 0000000000..1e53e6964e
--- /dev/null
+++ b/recipes/python/python.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.6.py
+PR = "ml2"
+
+DEFAULT_PREFERENCE = "-26"
+
+PYTHON_MAJMIN = "2.6"
+
+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.1.bb b/recipes/python/python_2.6.1.bb
new file mode 100644
index 0000000000..57c64dfa55
--- /dev/null
+++ b/recipes/python/python_2.6.1.bb
@@ -0,0 +1,117 @@
+require python.inc
+DEPENDS = "python-native db gdbm openssl readline sqlite3 tcl tk zlib"
+DEPENDS_sharprom = "python-native db readline zlib gdbm openssl"
+PR = "ml4"
+
+SRC_URI = "\
+ http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \
+ file://00-fix-bindir-libdir-for-cross.patch;patch=1 \
+ file://01-use-proper-tools-for-cross-build.patch;patch=1 \
+ file://02-remove-test-for-cross.patch;patch=1 \
+ file://03-fix-tkinter-detection.patch;patch=1 \
+ file://04-default-is-optimized.patch;patch=1 \
+ file://05-enable-ctypes-cross-build.patch;patch=1 \
+ file://06-libffi-enable-default-mips.patch;patch=1 \
+ file://99-ignore-optimization-flag.patch;patch=1 \
+ \
+# not yet pushed forward
+# sitecustomize, sitebranding
+ \
+# file://05-install.patch;patch=1 \
+# file://06-fix-urllib-exception.patch;patch=1 \
+# file://16-bug1179-imageop.patch;patch=1 \
+# file://13-set-wakeup-fix.patch;patch=1 \
+ \
+ file://sitecustomize.py \
+"
+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__"
+
+#
+# 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} \
+ OPT="${CFLAGS}"
+}
+
+do_stage() {
+ install -m 0644 Include/*.h ${STAGING_INCDIR}/python${PYTHON_MAJMIN}/
+ oe_libinstall -a -so libpython${PYTHON_MAJMIN} ${STAGING_LIBDIR}
+}
+
+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} 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
+}
+
+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"
+
+# 2to3
+FILES_python-core += "${bindir}/2to3"
+
+# package libpython
+PACKAGES =+ "libpython2"
+FILES_libpython2 = "${libdir}/libpython*.so.*"
+
+# 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"