aboutsummaryrefslogtreecommitdiffstats
path: root/meta-python
diff options
context:
space:
mode:
Diffstat (limited to 'meta-python')
-rw-r--r--meta-python/COPYING.MIT17
-rw-r--r--meta-python/README53
-rw-r--r--meta-python/conf/layer.conf15
-rw-r--r--meta-python/recipes-devtools/python/pyrtm_0.2.bb12
-rw-r--r--meta-python/recipes-devtools/python/python-autobahn_0.8.6.bb19
-rw-r--r--meta-python/recipes-devtools/python/python-backports-ssl_3.4.0.2.bb23
-rw-r--r--meta-python/recipes-devtools/python/python-certifi_14.05.14.bb20
-rw-r--r--meta-python/recipes-devtools/python/python-cheetah_2.4.4.bb21
-rw-r--r--meta-python/recipes-devtools/python/python-cloudeebus_0.6.0.bb35
-rw-r--r--meta-python/recipes-devtools/python/python-cmd2_0.6.7.bb20
-rw-r--r--meta-python/recipes-devtools/python/python-cython_0.20.2.bb24
-rw-r--r--meta-python/recipes-devtools/python/python-dateutil_1.5.bb22
-rw-r--r--meta-python/recipes-devtools/python/python-dbusmock/0001-Add-functionality-to-add-own-objects-to-internal-obj.patch53
-rw-r--r--meta-python/recipes-devtools/python/python-dbusmock/0001-Don-t-use-gobject-introspection-for-bindings.patch29
-rw-r--r--meta-python/recipes-devtools/python/python-dbusmock/0002-Add-possibility-to-import-templates-from-packages.patch29
-rw-r--r--meta-python/recipes-devtools/python/python-dbusmock_0.10.1.bb22
-rw-r--r--meta-python/recipes-devtools/python/python-decorator_3.4.0.bb22
-rw-r--r--meta-python/recipes-devtools/python/python-epydoc_3.0.1.bb18
-rw-r--r--meta-python/recipes-devtools/python/python-feedparser_5.1.3.bb14
-rw-r--r--meta-python/recipes-devtools/python/python-flufl-enum_4.0.1.bb33
-rw-r--r--meta-python/recipes-devtools/python/python-gdata_1.2.4.bb18
-rw-r--r--meta-python/recipes-devtools/python/python-gevent_0.13.8.bb19
-rw-r--r--meta-python/recipes-devtools/python/python-greenlet_0.4.1.bb14
-rw-r--r--meta-python/recipes-devtools/python/python-ldap/setup.cfg.patch14
-rw-r--r--meta-python/recipes-devtools/python/python-ldap_2.3.9.bb13
-rw-r--r--meta-python/recipes-devtools/python/python-ldap_2.4.10.bb27
-rw-r--r--meta-python/recipes-devtools/python/python-lxml/python-lxml-3.2.5-fix-CVE-2014-3146.patch91
-rw-r--r--meta-python/recipes-devtools/python/python-lxml_3.2.5.bb35
-rw-r--r--meta-python/recipes-devtools/python/python-m2crypto/0001-setup.py-link-in-sysroot-not-in-host-directories.patch39
-rw-r--r--meta-python/recipes-devtools/python/python-m2crypto_0.21.1.bb44
-rw-r--r--meta-python/recipes-devtools/python/python-matplotlib/fix_setup.patch29
-rw-r--r--meta-python/recipes-devtools/python/python-matplotlib/fix_setupext.patch40
-rw-r--r--meta-python/recipes-devtools/python/python-matplotlib_1.1.0.bb36
-rw-r--r--meta-python/recipes-devtools/python/python-mccabe_0.2.1.bb23
-rw-r--r--meta-python/recipes-devtools/python/python-mock_1.0.1.bb26
-rw-r--r--meta-python/recipes-devtools/python/python-numeric/no-lapack.patch33
-rw-r--r--meta-python/recipes-devtools/python/python-numeric_24.2.bb14
-rw-r--r--meta-python/recipes-devtools/python/python-pep8_1.4.6.bb23
-rw-r--r--meta-python/recipes-devtools/python/python-pexpect_2.3.bb23
-rw-r--r--meta-python/recipes-devtools/python/python-pip_1.3.1.bb14
-rw-r--r--meta-python/recipes-devtools/python/python-prettytable_0.7.2.bb25
-rw-r--r--meta-python/recipes-devtools/python/python-psutil_0.6.1.bb14
-rw-r--r--meta-python/recipes-devtools/python/python-pyalsaaudio_0.4.bb15
-rw-r--r--meta-python/recipes-devtools/python/python-pyflakes_0.7.3.bb23
-rw-r--r--meta-python/recipes-devtools/python/python-pyparsing_2.0.1.bb18
-rw-r--r--meta-python/recipes-devtools/python/python-pyserial_2.4.bb22
-rw-r--r--meta-python/recipes-devtools/python/python-pytz_2014.7.bb19
-rw-r--r--meta-python/recipes-devtools/python/python-pyudev_0.16.1.bb25
-rw-r--r--meta-python/recipes-devtools/python/python-pyusb_1.0.0a2.bb18
-rw-r--r--meta-python/recipes-devtools/python/python-pyyaml/setup.py64
-rw-r--r--meta-python/recipes-devtools/python/python-pyyaml_3.10.bb22
-rw-r--r--meta-python/recipes-devtools/python/python-slip-dbus_0.6.0.bb27
-rw-r--r--meta-python/recipes-devtools/python/python-smbus_3.1.1.bb20
-rw-r--r--meta-python/recipes-devtools/python/python-snakefood_1.4.bb56
-rw-r--r--meta-python/recipes-devtools/python/python-sqlalchemy_0.7.9.bb14
-rw-r--r--meta-python/recipes-devtools/python/python-tornado_4.0.2.bb34
-rw-r--r--meta-python/recipes-devtools/python/python-twisted_13.2.0.bb247
-rw-r--r--meta-python/recipes-devtools/python/python-ujson_1.33.bb21
-rw-r--r--meta-python/recipes-devtools/python/python-vobject_0.8.1c.bb16
-rw-r--r--meta-python/recipes-devtools/python/python-webdav_0.1.2.bb19
-rw-r--r--meta-python/recipes-devtools/python/python-zopeinterface_4.1.1.bb22
-rw-r--r--meta-python/recipes-extended/python-pyparted/python-pyparted_3.9.bb23
62 files changed, 1840 insertions, 0 deletions
diff --git a/meta-python/COPYING.MIT b/meta-python/COPYING.MIT
new file mode 100644
index 0000000000..fb950dc69f
--- /dev/null
+++ b/meta-python/COPYING.MIT
@@ -0,0 +1,17 @@
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/meta-python/README b/meta-python/README
new file mode 100644
index 0000000000..f62ab8fe8e
--- /dev/null
+++ b/meta-python/README
@@ -0,0 +1,53 @@
+meta-python
+================================
+
+Introduction
+-------------------------
+
+This layer is intended to be the home of python modules for OpenEmbedded.
+Modules in this layer need to be independent of openembedded-core and
+meta-openembedded/meta-oe. Because of this, modules required by 'gateone'
+and 'anki' are not included and remain in:
+ meta-openembedded/meta-oe/recipes-devtools/python.
+
+Dependencies
+-------------------------
+
+The meta-python layer depends on:
+
+ URI: git://git.openembedded.org/openembedded-core
+ layers: meta
+ branch: master
+ revision: HEAD
+
+ URI: git://git.openembedded.org/meta-openembedded
+ layers: meta-oe
+ branch: master
+ revision: HEAD
+
+Please follow the recommended setup procedures of your OE distribution.
+For Angstrom that is:
+ http://www.angstrom-distribution.org/building-angstrom,
+other distros should have similar online resources.
+
+Contributing
+-------------------------
+
+The meta-openembedded mailinglist
+(openembedded-devel@lists.openembedded.org) is used for questions,
+comments and patch review. It is subscriber only, so please register
+before posting.
+
+Send pull requests to openembedded-devel@lists.openembedded.org with
+'[meta-python]' in the subject.
+
+When sending single patches, please use something like:
+'git send-email -M -1 --to=openembedded-devel@lists.openembedded.org --subject-prefix=meta-python][PATCH'
+
+Maintenance
+-------------------------
+
+Maintainers:
+ Tim "moto-timo" Orling <TicoTimo@gmail.com>
+ Paul "bluelightning" Eggleton <paul.eggleton@linux.intel.com>
+
diff --git a/meta-python/conf/layer.conf b/meta-python/conf/layer.conf
new file mode 100644
index 0000000000..55169e4fbb
--- /dev/null
+++ b/meta-python/conf/layer.conf
@@ -0,0 +1,15 @@
+# We might have a conf and classes directory, append to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have recipes directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes*/*/*.bb ${LAYERDIR}/recipes*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "meta-python"
+BBFILE_PATTERN_meta-python := "^${LAYERDIR}/"
+BBFILE_PRIORITY_meta-python = "7"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_meta-python = "1"
+
+LAYERDEPENDS_meta-python = "core openembedded-layer"
diff --git a/meta-python/recipes-devtools/python/pyrtm_0.2.bb b/meta-python/recipes-devtools/python/pyrtm_0.2.bb
new file mode 100644
index 0000000000..706515bc4a
--- /dev/null
+++ b/meta-python/recipes-devtools/python/pyrtm_0.2.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Python interface for Remember The Milk API"
+AUTHOR = "Sridhar Ratnakumar / srid"
+HOMEPAGE = "http://pypi.python.org/pypi/pyrtm"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=a53cbc7cb75660694e138ba973c148df"
+DEPENDS = "python-native"
+
+inherit distutils
+
+SRC_URI = "http://pypi.python.org/packages/source/p/${BPN}/${BP}.tar.gz"
+SRC_URI[md5sum] = "34423f39caf7df8a9db8e243be9cf1a0"
+SRC_URI[sha256sum] = "d9d46d096a38cb692b55f4ee9f364d54348298e9497b11c1ef057539b5de1567"
diff --git a/meta-python/recipes-devtools/python/python-autobahn_0.8.6.bb b/meta-python/recipes-devtools/python/python-autobahn_0.8.6.bb
new file mode 100644
index 0000000000..ac775c4c33
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-autobahn_0.8.6.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "AutobahnPython provides a WebSocket (RFC6455, Hybi-10 to -17, Hixie-76) framework for creating WebSocket-based clients and servers. \
+AutobahnPython also includes an implementation of WAMP (The WebSockets Application Messaging Protocol), a light-weight, \
+asynchronous RPC/PubSub over JSON/WebSocket protocol."
+HOMEPAGE = "http://autobahn.ws/python"
+SECTION = "console/network"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = " file://autobahn/__init__.py;beginline=1;endline=17;md5=1fdeccf6e5b70cda64cc1345597c18e3"
+
+SRC_URI = "https://pypi.python.org/packages/source/a/autobahn/autobahn-${PV}.zip"
+SRC_URI[md5sum] = "160429e7fb043940e79aa7f4ebbab57a"
+SRC_URI[sha256sum] = "94ae5c6f37f9fe7c9d3f12c170fcc273afed4104a1c5508b26d6014bb9e6373e"
+
+S = "${WORKDIR}/autobahn-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} = "python python-pprint python-twisted-protocols python-netserver python-twisted-web"
+
diff --git a/meta-python/recipes-devtools/python/python-backports-ssl_3.4.0.2.bb b/meta-python/recipes-devtools/python/python-backports-ssl_3.4.0.2.bb
new file mode 100644
index 0000000000..9caae41bf8
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-backports-ssl_3.4.0.2.bb
@@ -0,0 +1,23 @@
+SUMMARY = "The ssl.match_hostname() function from Python 3.4"
+DESCRIPTION = "The Secure Sockets layer is only actually secure if you check the hostname in the \
+certificate returned by the server to which you are connecting, and verify that it matches to hostname \
+that you are trying to reach. But the matching logic, defined in RFC2818, can be a bit tricky to implement \
+on your own. So the ssl package in the Standard Library of Python 3.2 and greater now includes a \
+match_hostname() function for performing this check instead of requiring every application to \
+implement the check separately. This backport brings match_hostname() to users of earlier versions of Python"
+HOMEPAGE = "https://pypi.python.org/pypi/backports.ssl_match_hostname"
+SECTION = "devel/python"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=77b684960b86b7a4bb4a450ffde08605"
+
+SRCNAME = "backports.ssl_match_hostname"
+
+SRC_URI = "https://pypi.python.org/packages/source/b/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "788214f20214c64631f0859dc79f23c6"
+SRC_URI[sha256sum] = "07410e7fb09aab7bdaf5e618de66c3dac84e2e3d628352814dc4c37de321d6ae"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/meta-python/recipes-devtools/python/python-certifi_14.05.14.bb b/meta-python/recipes-devtools/python/python-certifi_14.05.14.bb
new file mode 100644
index 0000000000..5e0404e960
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-certifi_14.05.14.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Python package for providing Mozilla's CA Bundle."
+DESCRIPTION = "This installable Python package contains a CA Bundle that you can reference in your \
+Python code. This is useful for verifying HTTP requests, for example. This is the same CA Bundle \
+which ships with the Requests codebase, and is derived from Mozilla Firefox's canonical set."
+HOMEPAGE = "https://pypi.python.org/pypi/certifi"
+SECTION = "devel/python"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f77f61d14ee6feac4228d3ebd26cc1f1"
+
+SRCNAME = "certifi"
+
+SRC_URI = "https://pypi.python.org/packages/source/c/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "315ea4e50673a16ab047099f816fd32a"
+SRC_URI[sha256sum] = "1e1bcbacd6357c151ae37cf0290dcc809721d32ce21fd6b7339568f3ddef1b69"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/meta-python/recipes-devtools/python/python-cheetah_2.4.4.bb b/meta-python/recipes-devtools/python/python-cheetah_2.4.4.bb
new file mode 100644
index 0000000000..e015d0b023
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-cheetah_2.4.4.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Python template engine and code generation tool"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=aff1107514aa6aae948f9fe71fdc393b"
+
+SRCNAME = "Cheetah"
+
+PR = "r3"
+
+SRC_URI = "http://pypi.python.org/packages/source/C/Cheetah/Cheetah-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} = "python-pickle python-pprint"
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI[md5sum] = "853917116e731afbc8c8a43c37e6ddba"
+SRC_URI[sha256sum] = "be308229f0c1e5e5af4f27d7ee06d90bb19e6af3059794e5fd536a6f29a9b550"
diff --git a/meta-python/recipes-devtools/python/python-cloudeebus_0.6.0.bb b/meta-python/recipes-devtools/python/python-cloudeebus_0.6.0.bb
new file mode 100644
index 0000000000..120a8a7927
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-cloudeebus_0.6.0.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "A component which enables calling DBus methods and registering on DBus signals from Javascript"
+HOMEPAGE = "https://github.com/01org/cloudeebus"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+SRC_URI = "git://github.com/01org/cloudeebus.git;protocol=http;branch=master "
+SRCREV = "b5cc957eeabfe98cb996baf8e5a0ac848993c3d4"
+
+S = "${WORKDIR}/git"
+
+inherit distutils
+
+DEPENDS_${PN} = "python python-distribute"
+RDEPENDS_${PN} = "python python-dbus python-json python-argparse python-pygobject python-autobahn python-twisted python-subprocess"
+
+do_install_prepend() {
+ install -d ${D}${PYTHON_SITEPACKAGES_DIR}/${PN}
+}
+
+DISTUTILS_INSTALL_ARGS = "--root=${D} \
+ --single-version-externally-managed \
+ --prefix=${prefix} \
+ --install-lib=${PYTHON_SITEPACKAGES_DIR} \
+ --install-data=${datadir}"
+
+do_install_append() {
+ distutils_do_install
+ install -d ${D}${datadir}/doc/${BPN}/
+ install -m 0644 ${S}/README.md ${D}${datadir}/doc/${BPN}/
+}
+
+FILES_${PN} += "${datadir}/cloudeebus"
+FILES_${PN} += "${sysconfdir}/dbus-1/system.d/org.cloudeebus.conf"
+
diff --git a/meta-python/recipes-devtools/python/python-cmd2_0.6.7.bb b/meta-python/recipes-devtools/python/python-cmd2_0.6.7.bb
new file mode 100644
index 0000000000..fc7f024a47
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-cmd2_0.6.7.bb
@@ -0,0 +1,20 @@
+# Imported from git://git.yoctoproject.org/meta-cloud-services
+
+SUMMARY = "Extra features for standard library's cmd module"
+HOMEPAGE = "http://packages.python.org/cmd2/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://setup.py;beginline=21;endline=21;md5=a00047b7e92e0781452d0beba4e7b44e"
+
+SRCNAME = "cmd2"
+
+SRC_URI = "http://pypi.python.org/packages/source/c/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "842df29ff2f72d64d7f0d917039c0e51"
+SRC_URI[sha256sum] = "8e98c7a1cfd106183559240b269e7cd9fe97e8342b5c05295f591aab6fd2f4f0"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} += "python-pyparsing"
diff --git a/meta-python/recipes-devtools/python/python-cython_0.20.2.bb b/meta-python/recipes-devtools/python/python-cython_0.20.2.bb
new file mode 100644
index 0000000000..3966e0b96e
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-cython_0.20.2.bb
@@ -0,0 +1,24 @@
+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"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa"
+SRCNAME = "Cython"
+BBCLASSEXTEND = "native"
+
+SRC_URI = "http://www.cython.org/release/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+SRC_URI[md5sum] = "7fc13e1c665bdf7cea19ad08906af91f"
+SRC_URI[sha256sum] = "ed13b606a2aeb5bd6c235f8ed6c9988c99d01a033d0d21d56137c13d5c7be63f"
+
+inherit setuptools
+
+RDEPENDS_${PN} += "\
+ python-distribute \
+ python-netserver \
+ python-subprocess \
+ python-shell \
+"
+RDEPENDS_${PN}_class-native = ""
diff --git a/meta-python/recipes-devtools/python/python-dateutil_1.5.bb b/meta-python/recipes-devtools/python/python-dateutil_1.5.bb
new file mode 100644
index 0000000000..37f19a839a
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-dateutil_1.5.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Extensions to the standard Python date/time support"
+HOMEPAGE = "http://labix.org/python-dateutil"
+SECTION = "devel/python"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d82268718c68bda0b091006ec6e583c6"
+SRCNAME = "${BPN}"
+
+SRC_URI = "http://labix.org/download/python-dateutil/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+PACKAGES =+ "${PN}-zoneinfo"
+FILES_${PN}-zoneinfo = "${libdir}/${PYTHON_DIR}/site-packages/dateutil/zoneinfo"
+
+RDEPENDS_${PN} = "\
+ python-core \
+ python-datetime \
+"
+
+SRC_URI[md5sum] = "35f3732db3f2cc4afdc68a8533b60a52"
+SRC_URI[sha256sum] = "c08aca7d85f8f8eed61e83b3423b829262c596a9a78f7ca3de0bcee2217d0e3b"
diff --git a/meta-python/recipes-devtools/python/python-dbusmock/0001-Add-functionality-to-add-own-objects-to-internal-obj.patch b/meta-python/recipes-devtools/python/python-dbusmock/0001-Add-functionality-to-add-own-objects-to-internal-obj.patch
new file mode 100644
index 0000000000..fdd00b6a4d
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-dbusmock/0001-Add-functionality-to-add-own-objects-to-internal-obj.patch
@@ -0,0 +1,53 @@
+From eebe0f66435c4d821b0f5f93f69efe17b4a384c2 Mon Sep 17 00:00:00 2001
+From: Simon Busch <simon.busch@lge.com>
+Date: Wed, 9 Apr 2014 13:18:33 +0200
+Subject: [PATCH 1/2] Add functionality to add own objects to internal object
+ list
+
+In some case the tests might want to create dynamically dbus objects which extended
+functionality from own class definitions within templates. In such cases we need to
+register those objects with the internal object manager of dbusmock.
+
+Signed-off-by: Simon Busch <simon.busch@lge.com>
+---
+ dbusmock/__init__.py | 4 ++--
+ dbusmock/mockobject.py | 8 ++++++++
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/dbusmock/__init__.py b/dbusmock/__init__.py
+index f799cc7..6718c06 100644
+--- a/dbusmock/__init__.py
++++ b/dbusmock/__init__.py
+@@ -14,8 +14,8 @@ __license__ = 'LGPL 3+'
+ __version__ = '0.10.1'
+
+ from dbusmock.mockobject import (DBusMockObject, MOCK_IFACE,
+- OBJECT_MANAGER_IFACE, get_object, get_objects)
++ OBJECT_MANAGER_IFACE, get_object, get_objects, add_object)
+ from dbusmock.testcase import DBusTestCase
+
+ __all__ = ['DBusMockObject', 'MOCK_IFACE', 'OBJECT_MANAGER_IFACE',
+- 'DBusTestCase', 'get_object', 'get_objects']
++ 'DBusTestCase', 'get_object', 'get_objects', 'add_object']
+diff --git a/dbusmock/mockobject.py b/dbusmock/mockobject.py
+index 97b79ce..a98e03d 100644
+--- a/dbusmock/mockobject.py
++++ b/dbusmock/mockobject.py
+@@ -682,6 +682,14 @@ dbus.service._method_lookup = _dbusmock_method_lookup
+ # Helper API for templates
+ #
+
++def add_object(path, obj):
++ if path in objects:
++ raise dbus.exceptions.DBusException(
++ 'org.freedesktop.DBus.Mock.NameError',
++ 'object %s already exists' % path)
++
++ objects[path] = obj
++
+
+ def get_objects():
+ '''Return all existing object paths'''
+--
+1.7.9.5
+
diff --git a/meta-python/recipes-devtools/python/python-dbusmock/0001-Don-t-use-gobject-introspection-for-bindings.patch b/meta-python/recipes-devtools/python/python-dbusmock/0001-Don-t-use-gobject-introspection-for-bindings.patch
new file mode 100644
index 0000000000..f3ab53c546
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-dbusmock/0001-Don-t-use-gobject-introspection-for-bindings.patch
@@ -0,0 +1,29 @@
+From 29960f2fce7ab42ed0a1bf8ce96499fdb6eedf3c Mon Sep 17 00:00:00 2001
+From: Simon Busch <simon.busch@lge.com>
+Date: Tue, 25 Mar 2014 15:28:54 +0100
+Subject: [PATCH] Don't use gobject introspection for bindings
+
+In our environment we're not providing the glib python bindings through
+introspection but just pygobject so we need to use the right import.
+
+Signed-off-by: Simon Busch <simon.busch@lge.com>
+---
+ dbusmock/__main__.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dbusmock/__main__.py b/dbusmock/__main__.py
+index 44b63fb..bfd089c 100644
+--- a/dbusmock/__main__.py
++++ b/dbusmock/__main__.py
+@@ -51,7 +51,7 @@ def parse_args():
+
+ if __name__ == '__main__':
+ import dbus.mainloop.glib
+- from gi.repository import GLib
++ import glib as GLib
+
+ args = parse_args()
+ dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+--
+1.7.9.5
+
diff --git a/meta-python/recipes-devtools/python/python-dbusmock/0002-Add-possibility-to-import-templates-from-packages.patch b/meta-python/recipes-devtools/python/python-dbusmock/0002-Add-possibility-to-import-templates-from-packages.patch
new file mode 100644
index 0000000000..981694f0e8
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-dbusmock/0002-Add-possibility-to-import-templates-from-packages.patch
@@ -0,0 +1,29 @@
+From ff1dffd5673bcd2cbd9554ad62476d108dbc18af Mon Sep 17 00:00:00 2001
+From: Simon Busch <simon.busch@lge.com>
+Date: Wed, 9 Apr 2014 13:20:33 +0200
+Subject: [PATCH 2/2] Add possibility to import templates from packages
+
+Does not have any unit tests yet.
+
+Signed-off-by: Simon Busch <simon.busch@lge.com>
+---
+ dbusmock/mockobject.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/dbusmock/mockobject.py b/dbusmock/mockobject.py
+index a98e03d..9530c2a 100644
+--- a/dbusmock/mockobject.py
++++ b/dbusmock/mockobject.py
+@@ -49,6 +49,9 @@ def load_module(name):
+
+ return module
+
++ if '.' in name:
++ return importlib.import_module(name)
++
+ return importlib.import_module('dbusmock.templates.' + name)
+
+
+--
+1.7.9.5
+
diff --git a/meta-python/recipes-devtools/python/python-dbusmock_0.10.1.bb b/meta-python/recipes-devtools/python/python-dbusmock_0.10.1.bb
new file mode 100644
index 0000000000..b24794395a
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-dbusmock_0.10.1.bb
@@ -0,0 +1,22 @@
+# Copyright (c) 2014 LG Electronics, Inc.
+
+SUMMARY = "With this program/Python library you can easily create mock objects on D-Bus"
+AUTHOR = "Martin Pitt <martin.pitt@ubuntu.com>"
+SECTION = "devel/python"
+
+LICENSE = "GPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+DEPENDS += "python-pygobject python-dbus"
+
+SRC_URI = "https://launchpad.net/${BPN}/trunk/${PV}/+download/${BP}.tar.gz"
+SRC_URI[md5sum] = "7370d325c4a75494dd71885ca65b79e8"
+SRC_URI[sha256sum] = "03aadc93bdc26ea18d4d78fcff7b6cb34f4e18623bc5cc41cf9539d663cee11e"
+
+SRC_URI += " \
+ file://0001-Don-t-use-gobject-introspection-for-bindings.patch \
+ file://0001-Add-functionality-to-add-own-objects-to-internal-obj.patch \
+ file://0002-Add-possibility-to-import-templates-from-packages.patch \
+"
+
+inherit setuptools
diff --git a/meta-python/recipes-devtools/python/python-decorator_3.4.0.bb b/meta-python/recipes-devtools/python/python-decorator_3.4.0.bb
new file mode 100644
index 0000000000..43166304a2
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-decorator_3.4.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Python decorator utilities"
+HOMEPAGE = "http://pypi.python.org/pypi/decorator/"
+DESCRIPTION = "\
+The aim of the decorator module it to simplify the usage of decorators \
+for the average programmer, and to popularize decorators by showing \
+various non-trivial examples. Of course, as all techniques, decorators \
+can be abused and you should not try to solve every problem with a \
+decorator, just because you can."
+
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://documentation3.py;beginline=848;endline=877;md5=0b56661417fb7b841afc8892e14ba241"
+
+SRCNAME = "decorator"
+
+SRC_URI = "https://pypi.python.org/packages/source/d/decorator/decorator-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+SRC_URI[md5sum] = "1e8756f719d746e2fc0dd28b41251356"
+SRC_URI[sha256sum] = "c20b404cbb7ee5cebd506688e0114e3cd76f5ce233805a51f36e1a7988d9d783"
diff --git a/meta-python/recipes-devtools/python/python-epydoc_3.0.1.bb b/meta-python/recipes-devtools/python/python-epydoc_3.0.1.bb
new file mode 100644
index 0000000000..4ec0668575
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-epydoc_3.0.1.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Epydoc is a tool for generating API documentation for Python modules, based on their docstrings"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=011c0d78eb6054d731c879132d7313f0"
+HOMEPAGE = "http://epydoc.sourceforge.net/"
+SRCNAME = "epydoc"
+DEPENDS += "python"
+DEPENDS_virtclass-native += "python-native"
+
+SRC_URI = "http://downloads.sourceforge.net/project/${SRCNAME}/${SRCNAME}/${PV}/${SRCNAME}-${PV}.tar.gz"
+SRC_URI[md5sum] = "cdd6f6c76dd8bab5e653a343a0544294"
+SRC_URI[sha256sum] = "d4e5c8d90937d01b05170f592c1fa9b29e9ed0498dfe7f0eb2a3af61725b6ad1"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+BBCLASSEXTEND = "native"
diff --git a/meta-python/recipes-devtools/python/python-feedparser_5.1.3.bb b/meta-python/recipes-devtools/python/python-feedparser_5.1.3.bb
new file mode 100644
index 0000000000..92d55682f5
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-feedparser_5.1.3.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Python Atom and RSS feed parser"
+HOMEPAGE = "http://code.google.com/p/feedparser"
+SECTION = "devel/python"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f5fbe7f8b71b4019eca5ac5f900fd8ad"
+
+SRC_URI = "http://feedparser.googlecode.com/files/feedparser-${PV}.tar.bz2"
+SRC_URI[md5sum] = "6fb6372a1dc2f56d4d79d740b8f49f25"
+SRC_URI[sha256sum] = "7f6507d400d07edfd1ea8205da36808009b0c539f5b8a6e0ab54337b955e6dc3"
+
+S = "${WORKDIR}/feedparser-${PV}"
+
+inherit setuptools
+
diff --git a/meta-python/recipes-devtools/python/python-flufl-enum_4.0.1.bb b/meta-python/recipes-devtools/python/python-flufl-enum_4.0.1.bb
new file mode 100644
index 0000000000..a7376db5d1
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-flufl-enum_4.0.1.bb
@@ -0,0 +1,33 @@
+SUMMARY = "A Python enumeration package."
+DESCRIPTION = "The flufl.enum library is a Python enumeration package. Its goal is to provide simple, \
+specific, concise semantics in an easy to read and write syntax. flufl.enum has just enough of the \
+features needed to make enumerations useful, but without a lot of extra baggage to weigh them down. "
+HOMEPAGE = "https://pypi.python.org/pypi/flufl.enum"
+SECTION = "devel/python"
+
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=1fa25baed15d3be23c902636379438e8"
+
+SRCNAME = "flufl.enum"
+
+SRC_URI = " \
+ http://pypi.python.org/packages/source/f/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
+"
+
+SRC_URI[md5sum] = "b3ad23761a78232bc78499ced7cb85d9"
+SRC_URI[sha256sum] = "4af7e7cf2dcc7517251570c7ef9ad194e30ee4b6f860eba500c03954ae95f9d8"
+
+inherit setuptools
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+PACKAGES =+ "\
+ ${PN}-test \
+"
+
+FILES_${PN}-doc += "\
+ ${libdir}/${PYTHON_DIR}/site-packages/flufl/enum/*.rst \
+ ${libdir}/${PYTHON_DIR}/site-packages/flufl/enum/docs \
+"
+
+FILES_${PN}-test += "${libdir}/${PYTHON_DIR}/site-packages/flufl/enum/tests"
diff --git a/meta-python/recipes-devtools/python/python-gdata_1.2.4.bb b/meta-python/recipes-devtools/python/python-gdata_1.2.4.bb
new file mode 100644
index 0000000000..ea602779be
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-gdata_1.2.4.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Google Data APIs Python Client Library"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.txt;md5=473bd4dff0ddca1f958244b2dc7a162c"
+HOMEPAGE = "http://code.google.com/p/gdata-python-client/"
+
+inherit distutils
+
+SRC_URI = "http://gdata-python-client.googlecode.com/files/gdata.py-${PV}.tar.gz"
+SRC_URI[md5sum] = "521f33a377d64f8a6505ba119415b787"
+SRC_URI[sha256sum] = "fc5ddb8f76b17abd728721a0e0177ea35f55a70106f44dc9010b22eceb06abde"
+
+S = "${WORKDIR}/gdata.py-${PV}"
+
+FILES_${PN} += "${datadir}"
+
+RDEPENDS_${PN} = "python-elementtree"
+
diff --git a/meta-python/recipes-devtools/python/python-gevent_0.13.8.bb b/meta-python/recipes-devtools/python/python-gevent_0.13.8.bb
new file mode 100644
index 0000000000..3fd3e7c536
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-gevent_0.13.8.bb
@@ -0,0 +1,19 @@
+SUMMARY = "A coroutine-based Python networking library"
+DESCRIPTION = "gevent is a coroutine-based Python networking library that uses greenlet to provide \
+a high-level synchronous API on top of the libevent event loop."
+HOMEPAGE = "http://www.gevent.org"
+SECTION = "devel/python"
+LICENSE = "MIT & BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2dbb33d00e1fd31c7041460a81ac0bd2 \
+ file://LICENSE.pyevent;md5=718070c63de243053e2c616268b00fdd"
+DEPENDS += "python-greenlet libevent"
+RDEPENDS_${PN} += "python-greenlet python-mime python-pprint python-re"
+
+SRC_URI = "http://pypi.python.org/packages/source/g/gevent/gevent-${PV}.tar.gz"
+SRC_URI[md5sum] = "ca9dcaa7880762d8ebbc266b11252960"
+SRC_URI[sha256sum] = "54b8d26300ce408c0916a3e63ef6cd3e6aca76230833558deb7de15196ed955e"
+
+S = "${WORKDIR}/gevent-${PV}"
+
+inherit setuptools
+
diff --git a/meta-python/recipes-devtools/python/python-greenlet_0.4.1.bb b/meta-python/recipes-devtools/python/python-greenlet_0.4.1.bb
new file mode 100644
index 0000000000..a6db8ab7b3
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-greenlet_0.4.1.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Python lightweight in-process concurrent programming"
+HOMEPAGE = "http://pypi.python.org/pypi/greenlet"
+SECTION = "devel/python"
+LICENSE = "MIT & PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=03143d7a1a9f5d8a0fee825f24ca9c36 \
+ file://LICENSE.PSF;md5=c106931d9429eda0492617f037b8f69a"
+SRC_URI = "http://pypi.python.org/packages/source/g/greenlet/greenlet-${PV}.zip"
+SRC_URI[md5sum] = "c2deda75bdda59c38cae12a77cc53adc"
+SRC_URI[sha256sum] = "ea671592f8460541286b133ed46a6cf5311a6b75051cc31b53e2bc38992b775a"
+
+S = "${WORKDIR}/greenlet-${PV}"
+
+inherit distutils
+
diff --git a/meta-python/recipes-devtools/python/python-ldap/setup.cfg.patch b/meta-python/recipes-devtools/python/python-ldap/setup.cfg.patch
new file mode 100644
index 0000000000..a703d342e9
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-ldap/setup.cfg.patch
@@ -0,0 +1,14 @@
+--- python-ldap-2.3.9/setup.cfg.orig 2009-08-13 11:07:23.000000000 +0200
++++ python-ldap-2.3.9/setup.cfg 2009-08-13 11:07:37.000000000 +0200
+@@ -1,9 +1,9 @@
+ [_ldap]
+ extra_objects =
+ extra_compile_args =
+-libs = ldap_r lber sasl2 ssl crypto
++libs = ldap_r lber ssl crypto
+ library_dirs = /opt/openldap-RE24/lib
+-include_dirs = /opt/openldap-RE24/include /usr/include/sasl
++include_dirs = /opt/openldap-RE24/include
+
+ [egg_info]
+ tag_build =
diff --git a/meta-python/recipes-devtools/python/python-ldap_2.3.9.bb b/meta-python/recipes-devtools/python/python-ldap_2.3.9.bb
new file mode 100644
index 0000000000..bc4993bdb9
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-ldap_2.3.9.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "LDAP client API for Python, C wrapper module around OpenLDAP 2.x with an object-oriented API"
+SECTION = "devel/python"
+LICENSE = "Python-style"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=a41c82edffa04912007cae1d20cac555"
+HOMEPAGE = "http://www.python-ldap.org/"
+DEPENDS = "python openldap"
+
+SRC_URI = "http://pypi.python.org/packages/source/p/${BPN}/${BP}.tar.gz \
+ file://setup.cfg.patch"
+SRC_URI[md5sum] = "a9f9f16338288d118a1ae6266c993247"
+SRC_URI[sha256sum] = "62f75b21c5ee744408c9d8b59878328b3bdf47899d30e8abf0c09b3ffb893ed4"
+
+inherit setuptools
diff --git a/meta-python/recipes-devtools/python/python-ldap_2.4.10.bb b/meta-python/recipes-devtools/python/python-ldap_2.4.10.bb
new file mode 100644
index 0000000000..78a878a15b
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-ldap_2.4.10.bb
@@ -0,0 +1,27 @@
+#
+# Copyright (C) 2012 Wind River Systems, Inc.
+#
+SUMMARY = "Provides a wrapper in Python to LDAP"
+DESCRIPTION = "This module provides access to the LDAP \
+(Lightweight Directory Access Protocol) through Python operations \
+instead of C API. The module mainly acts as a wrapper for the \
+OpenLDAP 2.x libraries. Errors will appear as exceptions."
+
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "PSF"
+HOMEPAGE = "http://www.python-ldap.org/"
+DEPENDS = "python openldap cyrus-sasl"
+
+SRC_URI = "http://pypi.python.org/packages/source/p/${PN}/${BPN}-${PV}.tar.gz"
+
+inherit setuptools
+
+LIC_FILES_CHKSUM = "file://LICENCE;md5=a41c82edffa04912007cae1d20cac555"
+SRC_URI[md5sum] = "a15827ca13c90e9101e5e9405c1d83be"
+SRC_URI[sha256sum] = "67cc7801bf24c29386ab99966ceb68d6a60fa9e0566cc95a4fbb2c4695a8ce54"
+
+do_configure_prepend() {
+ sed -i -e 's:^library_dirs =.*::' setup.cfg
+ sed -i -e 's:^include_dirs =.*:include_dirs = =/usr/include/sasl/:' setup.cfg
+}
diff --git a/meta-python/recipes-devtools/python/python-lxml/python-lxml-3.2.5-fix-CVE-2014-3146.patch b/meta-python/recipes-devtools/python/python-lxml/python-lxml-3.2.5-fix-CVE-2014-3146.patch
new file mode 100644
index 0000000000..0a8e211bd3
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-lxml/python-lxml-3.2.5-fix-CVE-2014-3146.patch
@@ -0,0 +1,91 @@
+Upstream-status:Backport
+
+--- a/src/lxml/html/clean.py
++++ b/src/lxml/html/clean.py
+@@ -70,9 +70,10 @@ _css_import_re = re.compile(
+
+ # All kinds of schemes besides just javascript: that can cause
+ # execution:
+-_javascript_scheme_re = re.compile(
+- r'\s*(?:javascript|jscript|livescript|vbscript|data|about|mocha):', re.I)
+-_substitute_whitespace = re.compile(r'\s+').sub
++_is_javascript_scheme = re.compile(
++ r'(?:javascript|jscript|livescript|vbscript|data|about|mocha):',
++ re.I).search
++_substitute_whitespace = re.compile(r'[\s\x00-\x08\x0B\x0C\x0E-\x19]+').sub
+ # FIXME: should data: be blocked?
+
+ # FIXME: check against: http://msdn2.microsoft.com/en-us/library/ms537512.aspx
+@@ -467,7 +468,7 @@ class Cleaner(object):
+ def _remove_javascript_link(self, link):
+ # links like "j a v a s c r i p t:" might be interpreted in IE
+ new = _substitute_whitespace('', link)
+- if _javascript_scheme_re.search(new):
++ if _is_javascript_scheme(new):
+ # FIXME: should this be None to delete?
+ return ''
+ return link
+--- a/src/lxml/html/tests/test_clean.txt
++++ b/src/lxml/html/tests/test_clean.txt
+@@ -1,3 +1,4 @@
++>>> import re
+ >>> from lxml.html import fromstring, tostring
+ >>> from lxml.html.clean import clean, clean_html, Cleaner
+ >>> from lxml.html import usedoctest
+@@ -17,6 +18,7 @@
+ ... <body onload="evil_function()">
+ ... <!-- I am interpreted for EVIL! -->
+ ... <a href="javascript:evil_function()">a link</a>
++... <a href="j\x01a\x02v\x03a\x04s\x05c\x06r\x07i\x0Ep t:evil_function()">a control char link</a>
+ ... <a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgidGVzdCIpOzwvc2NyaXB0Pg==">data</a>
+ ... <a href="#" onclick="evil_function()">another link</a>
+ ... <p onclick="evil_function()">a paragraph</p>
+@@ -33,7 +35,7 @@
+ ... </body>
+ ... </html>'''
+
+->>> print(doc)
++>>> print(re.sub('[\x00-\x07\x0E]', '', doc))
+ <html>
+ <head>
+ <script type="text/javascript" src="evil-site"></script>
+@@ -49,6 +51,7 @@
+ <body onload="evil_function()">
+ <!-- I am interpreted for EVIL! -->
+ <a href="javascript:evil_function()">a link</a>
++ <a href="javascrip t:evil_function()">a control char link</a>
+ <a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgidGVzdCIpOzwvc2NyaXB0Pg==">data</a>
+ <a href="#" onclick="evil_function()">another link</a>
+ <p onclick="evil_function()">a paragraph</p>
+@@ -81,6 +84,7 @@
+ <body onload="evil_function()">
+ <!-- I am interpreted for EVIL! -->
+ <a href="javascript:evil_function()">a link</a>
++ <a href="javascrip%20t:evil_function()">a control char link</a>
+ <a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgidGVzdCIpOzwvc2NyaXB0Pg==">data</a>
+ <a href="#" onclick="evil_function()">another link</a>
+ <p onclick="evil_function()">a paragraph</p>
+@@ -104,6 +108,7 @@
+ </head>
+ <body>
+ <a href="">a link</a>
++ <a href="">a control char link</a>
+ <a href="">data</a>
+ <a href="#">another link</a>
+ <p>a paragraph</p>
+@@ -123,6 +128,7 @@
+ </head>
+ <body>
+ <a href="">a link</a>
++ <a href="">a control char link</a>
+ <a href="">data</a>
+ <a href="#">another link</a>
+ <p>a paragraph</p>
+@@ -146,6 +152,7 @@
+ </head>
+ <body>
+ <a href="">a link</a>
++ <a href="">a control char link</a>
+ <a href="">data</a>
+ <a href="#">another link</a>
+ <p>a paragraph</p>
diff --git a/meta-python/recipes-devtools/python/python-lxml_3.2.5.bb b/meta-python/recipes-devtools/python/python-lxml_3.2.5.bb
new file mode 100644
index 0000000000..1fa2889958
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-lxml_3.2.5.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Python XML bindings for libxml2 and libxslt"
+DESCRIPTION = "Powerful and Pythonic XML processing library combining \
+libxml2/libxslt with the ElementTree API."
+HOMEPAGE = "http://codespeak.net/lxml"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSES.txt;md5=f9f1dc24f720c143c2240df41fe5073b"
+SRCNAME = "lxml"
+
+DEPENDS = "libxml2 libxslt"
+
+SRC_URI = "http://pypi.python.org/packages/source/l/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
+ file://python-lxml-3.2.5-fix-CVE-2014-3146.patch "
+
+SRC_URI[md5sum] = "6c4fb9b1840631cff09b8229a12a9ef7"
+SRC_URI[sha256sum] = "2bf072808a6546d0e56bf1ad3b98a43cca828724360d7419fad135141bd31f7e"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+DISTUTILS_BUILD_ARGS += " \
+ --with-xslt-config='${STAGING_BINDIR_NATIVE}/pkg-config libxslt' \
+ --with-xml2-config='${STAGING_BINDIR_CROSS}/xml2-config' \
+"
+
+DISTUTILS_INSTALL_ARGS += " \
+ --with-xslt-config='${STAGING_BINDIR_NATIVE}/pkg-config libxslt' \
+ --with-xml2-config='${STAGING_BINDIR_CROSS}/xml2-config' \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS_${PN} += "libxml2 libxslt python-compression"
+RDEPENDS_${PN}_virtclass-native = "libxml2-native libxslt-native"
+
diff --git a/meta-python/recipes-devtools/python/python-m2crypto/0001-setup.py-link-in-sysroot-not-in-host-directories.patch b/meta-python/recipes-devtools/python/python-m2crypto/0001-setup.py-link-in-sysroot-not-in-host-directories.patch
new file mode 100644
index 0000000000..bcbdf24bb5
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-m2crypto/0001-setup.py-link-in-sysroot-not-in-host-directories.patch
@@ -0,0 +1,39 @@
+From f11b9c71080513f9b867ba8f40613ba2ebc6e960 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Fri, 29 Mar 2013 15:17:17 +0100
+Subject: [PATCH] setup.py: link in sysroot, not in host directories
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+
+Upstream-status: Unknown
+---
+ setup.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index e7c49eb..8deaa34 100644
+--- a/setup.py
++++ b/setup.py
+@@ -40,7 +40,7 @@ class _M2CryptoBuildExt(build_ext.build_ext):
+ self.openssl = 'c:\\pkg'
+ else:
+ self.libraries = ['ssl', 'crypto']
+- self.openssl = '/usr'
++ self.openssl = os.environ.get( "STAGING_DIR" )
+
+
+ def finalize_options(self):
+@@ -49,8 +49,8 @@ class _M2CryptoBuildExt(build_ext.build_ext):
+
+ 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]]
+--
+1.8.1.4
+
diff --git a/meta-python/recipes-devtools/python/python-m2crypto_0.21.1.bb b/meta-python/recipes-devtools/python/python-m2crypto_0.21.1.bb
new file mode 100644
index 0000000000..67ec9214ad
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-m2crypto_0.21.1.bb
@@ -0,0 +1,44 @@
+SUMMARY = "A Python crypto and SSL toolkit"
+HOMEPAGE = "http://chandlerproject.org/bin/view/Projects/MeTooCrypto"
+
+DEPENDS = "openssl swig-native python"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=b0e1f0b7d0ce8a62c18b1287b991800e"
+
+SRC_URI = "http://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-${PV}.tar.gz \
+ file://0001-setup.py-link-in-sysroot-not-in-host-directories.patch"
+
+SRC_URI[md5sum] = "f93d8462ff7646397a9f77a2fe602d17"
+SRC_URI[sha256sum] = "25b94498505c2d800ee465db0cc1aff097b1615adc3ac042a1c85ceca264fc0a"
+
+S = "${WORKDIR}/M2Crypto-${PV}"
+
+inherit setuptools
+
+SWIG_FEATURES_x86-64 = "-D__x86_64__"
+SWIG_FEATURES ?= ""
+export SWIG_FEATURES
+
+# Get around a problem with swig, but only if the
+# multilib header file exists.
+#
+do_compile_prepend() {
+ if [ "${SITEINFO_BITS}" = "64" ];then
+ bit="64"
+ else
+ bit="32"
+ fi
+
+ if [ -e ${STAGING_INCDIR}/openssl/opensslconf-${bit}.h ] ;then
+ for i in SWIG/_ec.i SWIG/_evp.i; do
+ sed -i -e "s/opensslconf.*\./opensslconf-${bit}\./" "$i"
+ done
+ elif [ -e ${STAGING_INCDIR}/openssl/opensslconf-n${bit}.h ] ;then
+ for i in SWIG/_ec.i SWIG/_evp.i; do
+ sed -i -e "s/opensslconf.*\./opensslconf-n${bit}\./" "$i"
+ done
+ fi
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta-python/recipes-devtools/python/python-matplotlib/fix_setup.patch b/meta-python/recipes-devtools/python/python-matplotlib/fix_setup.patch
new file mode 100644
index 0000000000..9381583537
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-matplotlib/fix_setup.patch
@@ -0,0 +1,29 @@
+This fixes the dependency checks inside of setup.py since things like
+'import numpy' won't work with bitbake.
+
+diff --git a/setup.py b/setup.py
+index 2f13821..e6d6ed0 100644
+--- a/setup.py
++++ b/setup.py
+@@ -113,12 +113,6 @@ if 1:
+ baseline_images = [chop_package(f) for f in baseline_images]
+ package_data['matplotlib'].extend(baseline_images)
+
+-if not check_for_numpy():
+- sys.exit(1)
+-
+-if not check_for_freetype():
+- sys.exit(1)
+-
+ build_ft2font(ext_modules, packages)
+ build_ttconv(ext_modules, packages)
+ build_contour(ext_modules, packages)
+@@ -129,7 +123,7 @@ build_tri(ext_modules, packages)
+
+ print_raw("")
+ print_raw("OPTIONAL BACKEND DEPENDENCIES")
+-has_libpng = check_for_libpng()
++has_libpng = True
+
+ if has_libpng and options['build_agg']:
+ build_agg(ext_modules, packages)
diff --git a/meta-python/recipes-devtools/python/python-matplotlib/fix_setupext.patch b/meta-python/recipes-devtools/python/python-matplotlib/fix_setupext.patch
new file mode 100644
index 0000000000..9a13a1850f
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-matplotlib/fix_setupext.patch
@@ -0,0 +1,40 @@
+This fixes the numpy import problem in setupext.py using a hard-coded path.
+
+Index: matplotlib-1.1.0/setupext.py
+===================================================================
+--- matplotlib-1.1.0.orig/setupext.py
++++ matplotlib-1.1.0/setupext.py
+@@ -122,8 +122,8 @@ numpy_inc_dirs = []
+ # matplotlib build options, which can be altered using setup.cfg
+ options = {'display_status': True,
+ 'verbose': False,
+- 'provide_pytz': 'auto',
+- 'provide_dateutil': 'auto',
++ 'provide_pytz': False,
++ 'provide_dateutil': False,
+ 'build_agg': True,
+ 'build_gtk': 'auto',
+ 'build_gtkagg': 'auto',
+@@ -176,10 +176,7 @@ if os.path.exists(setup_cfg):
+ except: pass
+
+ # For get_base_flags:
+-if options['basedirlist']:
+- basedirlist = options['basedirlist'].split()
+-else:
+- basedirlist = basedir[sys.platform]
++basedirlist = [os.environ['STAGING_LIBDIR']]
+ print("basedirlist is: %s" % basedirlist)
+
+ if options['display_status']:
+@@ -555,8 +552,8 @@ def check_for_numpy():
+
+ def add_numpy_flags(module):
+ "Add the modules flags to build extensions which use numpy"
+- import numpy
+- module.include_dirs.append(numpy.get_include())
++ # Hard-coded path for OE since I know this is where numpy's include dir will be
++ module.include_dirs.append(os.path.join(os.environ['STAGING_LIBDIR'], 'python2.7/site-packages/numpy/core/include/'))
+
+ def add_png_flags(module):
+ try_pkgconfig(module, 'libpng', 'png')
diff --git a/meta-python/recipes-devtools/python/python-matplotlib_1.1.0.bb b/meta-python/recipes-devtools/python/python-matplotlib_1.1.0.bb
new file mode 100644
index 0000000000..69f71c7116
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-matplotlib_1.1.0.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "matplotlib is a python 2D plotting library which produces publication quality figures in a variety of hardcopy formats"
+SECTION = "devel/python"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://README.txt;md5=83c5bf8b16a5f99507f2f47a21ae3b81"
+PR = "r1"
+
+DEPENDS += "python-numpy freetype libpng python-dateutil python-pytz"
+RDEPENDS_${PN} = "python-core python-distutils python-numpy freetype libpng python-dateutil python-pytz"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/matplotlib/matplotlib-${PV}.tar.gz \
+ file://fix_setup.patch \
+ file://fix_setupext.patch \
+"
+
+S = "${WORKDIR}/matplotlib-${PV}"
+
+EXTRA_OECONF = "--disable-docs --with-python-includes=${STAGING_INCDIR}/../"
+
+inherit distutils
+
+do_compile_prepend() {
+ BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+ ${STAGING_BINDIR_NATIVE}/python setup.py build ${DISTUTILS_BUILD_ARGS} || \
+ true
+}
+
+# need to export these variables for python-config to work
+export PYTHONPATH
+export BUILD_SYS
+export HOST_SYS
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+
+SRC_URI[md5sum] = "57a627f30b3b27821f808659889514c2"
+SRC_URI[sha256sum] = "be37e1d86c65ecacae6683f8805e051e9904e5f2e02bf2b7a34262c46a6d06a7"
diff --git a/meta-python/recipes-devtools/python/python-mccabe_0.2.1.bb b/meta-python/recipes-devtools/python/python-mccabe_0.2.1.bb
new file mode 100644
index 0000000000..a056c092cb
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-mccabe_0.2.1.bb
@@ -0,0 +1,23 @@
+# Imported from git://git.yoctoproject.org/meta-cloud-services
+
+SUMMARY = "McCabe checker, plugin for flake8"
+HOMEPAGE = "https://github.com/dreamhost/cliff"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.rst;md5=aa0383f6aee4f5c20084a97cd13164c4"
+
+SRCNAME = "mccabe"
+
+SRC_URI = "https://pypi.python.org/packages/source/m/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "5a3f3fa6a4bad126c88aaaa7dab682f5"
+SRC_URI[sha256sum] = "5a2a170e47de5593a6abfae1e9542bd2c3924ac62bbe4e6ed96c953c0352243a"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} += " \
+ python-prettytable \
+ python-cmd2 \
+ python-pyparsing"
diff --git a/meta-python/recipes-devtools/python/python-mock_1.0.1.bb b/meta-python/recipes-devtools/python/python-mock_1.0.1.bb
new file mode 100644
index 0000000000..a23b5523f4
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-mock_1.0.1.bb
@@ -0,0 +1,26 @@
+# Imported from git://git.yoctoproject.org/meta-cloud-services
+
+SUMMARY = "A Python Mocking and Patching Library for Testing"
+HOMEPAGE = "https://pypi.python.org/pypi/mock"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=80e5ba73891255687dff3bee2b4cbb16"
+
+SRCNAME = "mock"
+
+SRC_URI = "https://pypi.python.org/packages/source/m/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "c3971991738caa55ec7c356bbc154ee2"
+SRC_URI[sha256sum] = "b839dd2d9c117c701430c149956918a423a9863b48b09c90e30a6013e7d2f44f"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} += " \
+ python-prettytable \
+ python-cmd2 \
+ python-pyparsing \
+ python-mccabe \
+ python-pep8 \
+ python-pyflakes"
diff --git a/meta-python/recipes-devtools/python/python-numeric/no-lapack.patch b/meta-python/recipes-devtools/python/python-numeric/no-lapack.patch
new file mode 100644
index 0000000000..c1916b8b9f
--- /dev/null
+++ b/meta-python/recipes-devtools/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/meta-python/recipes-devtools/python/python-numeric_24.2.bb b/meta-python/recipes-devtools/python/python-numeric_24.2.bb
new file mode 100644
index 0000000000..c0b04e1441
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-numeric_24.2.bb
@@ -0,0 +1,14 @@
+SUMMARY = "A sophisticated Numeric Processing Package for Python"
+SECTION = "devel/python"
+LICENSE = "PSF & LLNL"
+LIC_FILES_CHKSUM = "file://Legal.htm;md5=e3ce75dedd4043918d15979ae43e312e"
+
+PR = "ml3"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/numpy/Numeric-${PV}.tar.gz"
+S = "${WORKDIR}/Numeric-${PV}"
+
+inherit distutils
+
+SRC_URI[md5sum] = "2ae672656e06716a149acb048cca3093"
+SRC_URI[sha256sum] = "5f72e729eb6ff57442f2a38bfc9931738b59e5077928e2e70d22b4610ff15258"
diff --git a/meta-python/recipes-devtools/python/python-pep8_1.4.6.bb b/meta-python/recipes-devtools/python/python-pep8_1.4.6.bb
new file mode 100644
index 0000000000..b3c743ebd7
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-pep8_1.4.6.bb
@@ -0,0 +1,23 @@
+# Imported from git://git.yoctoproject.org/meta-cloud-services
+
+SUMMARY = "Python style guide checker"
+HOMEPAGE = "https://github.com/dreamhost/cliff"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.rst;md5=b0d37793ab91ca25ad5c200e9ea22331"
+
+SRCNAME = "pep8"
+
+SRC_URI = "https://pypi.python.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "a03bb494859e87b42601b61b1b043a0c"
+SRC_URI[sha256sum] = "603a46e5c358ce20ac4807a0eeafac7505d1125a4c1bd8378757ada06f61bed8"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} += " \
+ python-prettytable \
+ python-cmd2 \
+ python-pyparsing"
diff --git a/meta-python/recipes-devtools/python/python-pexpect_2.3.bb b/meta-python/recipes-devtools/python/python-pexpect_2.3.bb
new file mode 100644
index 0000000000..d4c2ba477d
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-pexpect_2.3.bb
@@ -0,0 +1,23 @@
+SUMMARY = "A Pure Python Expect like Module for Python"
+SECTION = "devel/python"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=04a2bf11b85ce49d4a8c0c413fd34404"
+SRCNAME = "pexpect"
+PR = "ml3"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+RDEPENDS_${PN} = "\
+ python-core \
+ python-io \
+ python-terminal \
+ python-resource \
+ python-fcntl \
+"
+
+
+SRC_URI[md5sum] = "bf107cf54e67bc6dec5bea1f3e6a65c3"
+SRC_URI[sha256sum] = "d315e7f3a8544fd85034d7e17fd7c5854e8f0828f5791f83cf313f8fa5740b75"
diff --git a/meta-python/recipes-devtools/python/python-pip_1.3.1.bb b/meta-python/recipes-devtools/python/python-pip_1.3.1.bb
new file mode 100644
index 0000000000..d1a7c8b3ae
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-pip_1.3.1.bb
@@ -0,0 +1,14 @@
+SUMMARY = "PIP is a tool for installing and managing Python packages"
+LICENSE = "MIT & GPL"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=cd00425a3465a0e4c81929b94241d3de"
+
+SRC_URI = "https://pypi.python.org/packages/source/p/pip/pip-${PV}.tar.gz"
+SRC_URI[md5sum] = "cbb27a191cebc58997c4da8513863153"
+SRC_URI[sha256sum] = "145eaa5d1ea1b062663da1f3a97780d7edea4c63c68a37c463b1deedf7bb4957"
+
+S = "${WORKDIR}/pip-${PV}"
+
+inherit setuptools
+
+# Since PIP is like CPAN for PERL we need to drag in all python modules to ensure everything works
+RDEPENDS_${PN} = "python-modules"
diff --git a/meta-python/recipes-devtools/python/python-prettytable_0.7.2.bb b/meta-python/recipes-devtools/python/python-prettytable_0.7.2.bb
new file mode 100644
index 0000000000..fdc13eb119
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-prettytable_0.7.2.bb
@@ -0,0 +1,25 @@
+# Imported from git://git.yoctoproject.org/meta-cloud-services
+
+SUMMARY = "Python library for displaying tabular data in a ASCII table format"
+HOMEPAGE = "http://code.google.com/p/prettytable"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3e73500ffa52de5071cff65990055282"
+
+SRCNAME = "prettytable"
+
+SRC_URI = "http://pypi.python.org/packages/source/P/PrettyTable/${SRCNAME}-${PV}.zip"
+
+SRC_URI[md5sum] = "0c1361104caff8b09f220748f9d69899"
+SRC_URI[sha256sum] = "a53da3b43d7a5c229b5e3ca2892ef982c46b7923b51e98f0db49956531211c4f"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+do_install_append() {
+ perm_files=`find "${D}${PYTHON_SITEPACKAGES_DIR}/" -name "top_level.txt"`
+ for f in $perm_files; do
+ chmod 644 "${f}"
+ done
+}
diff --git a/meta-python/recipes-devtools/python/python-psutil_0.6.1.bb b/meta-python/recipes-devtools/python/python-psutil_0.6.1.bb
new file mode 100644
index 0000000000..ff113d0f24
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-psutil_0.6.1.bb
@@ -0,0 +1,14 @@
+SUMMARY = "A cross-platform process and system utilities module for Python"
+SECTION = "devel/python"
+HOMEPAGE = "http://code.google.com/p/psutil"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0f02e99f7f3c9a7fe8ecfc5d44c2be62"
+
+SRC_URI = "http://psutil.googlecode.com/files/psutil-${PV}.tar.gz"
+SRC_URI[md5sum] = "3cfcbfb8525f6e4c70110e44a85e907e"
+SRC_URI[sha256sum] = "d665a4cc58c9a5d207fb0dc9869fc0ee10f4f66ad885e84886ef6339ccce0a6f"
+
+S = "${WORKDIR}/psutil-${PV}"
+
+inherit setuptools
+
diff --git a/meta-python/recipes-devtools/python/python-pyalsaaudio_0.4.bb b/meta-python/recipes-devtools/python/python-pyalsaaudio_0.4.bb
new file mode 100644
index 0000000000..0e660adff6
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-pyalsaaudio_0.4.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Support for the Linux 2.6.x ALSA Sound System"
+SECTION = "devel/python"
+DEPENDS = "alsa-lib"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1a3b161aa0fcec32a0c8907a2219ad9d"
+SRCNAME = "pyalsaaudio"
+PR = "ml2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pyalsaaudio/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+SRC_URI[md5sum] = "b312c28efba7db0494836a79f0a49898"
+SRC_URI[sha256sum] = "07148ce16024724b17cc24c51d0f4fb78af214b09b7dc8dcb7b06e5647f4c582"
diff --git a/meta-python/recipes-devtools/python/python-pyflakes_0.7.3.bb b/meta-python/recipes-devtools/python/python-pyflakes_0.7.3.bb
new file mode 100644
index 0000000000..ce48cd7323
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-pyflakes_0.7.3.bb
@@ -0,0 +1,23 @@
+# Imported from git://git.yoctoproject.org/meta-cloud-services
+
+SUMMARY = "passive checker of Python programs"
+HOMEPAGE = "https://github.com/dreamhost/cliff"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.rst;md5=1815018ebbbfc8659a9df33681a0936e"
+
+SRCNAME = "pyflakes"
+
+SRC_URI = "https://pypi.python.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "ec94ac11cb110e6e72cca23c104b66b1"
+SRC_URI[sha256sum] = "dbd2c940a1030a4f811afc1a04017a44011c0cb54f8f384b66aa624097d9b5e3"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} += " \
+ python-prettytable \
+ python-cmd2 \
+ python-pyparsing"
diff --git a/meta-python/recipes-devtools/python/python-pyparsing_2.0.1.bb b/meta-python/recipes-devtools/python/python-pyparsing_2.0.1.bb
new file mode 100644
index 0000000000..06d6d40143
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-pyparsing_2.0.1.bb
@@ -0,0 +1,18 @@
+# Imported from git://git.yoctoproject.org/meta-cloud-services
+
+SUMMARY = "Python parsing module"
+HOMEPAGE = "http://pyparsing.wikispaces.com/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=fb46329938e6bc829b256e37d5c1e31a"
+
+SRCNAME = "pyparsing"
+
+SRC_URI = "http://pypi.python.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.zip"
+
+SRC_URI[md5sum] = "dc7036a6f1ab01c3baed3d97af8d77c0"
+SRC_URI[sha256sum] = "7e1766ee747cca79fe172b670fd53ef58fc55d2b1804fd6c66d857abb62d143a"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/meta-python/recipes-devtools/python/python-pyserial_2.4.bb b/meta-python/recipes-devtools/python/python-pyserial_2.4.bb
new file mode 100644
index 0000000000..2263b2ccc0
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-pyserial_2.4.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Serial Port Support for Python"
+SECTION = "devel/python"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7424386ffe323e815ee62ee9ad591dd8"
+SRCNAME = "pyserial"
+PR = "ml4"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+# FIXME might stop packaging serialwin32 and serialjava files
+
+RDEPENDS_${PN} = "\
+ python-fcntl \
+ python-io \
+ python-stringold \
+"
+
+SRC_URI[md5sum] = "eec19df59fd75ba5a136992897f8e468"
+SRC_URI[sha256sum] = "6b6a9e3d2fd5978c92c843e0109918a4bcac481eecae316254481c0e0f7e73c8"
diff --git a/meta-python/recipes-devtools/python/python-pytz_2014.7.bb b/meta-python/recipes-devtools/python/python-pytz_2014.7.bb
new file mode 100644
index 0000000000..92d07961c5
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-pytz_2014.7.bb
@@ -0,0 +1,19 @@
+SUMMARY = "World timezone definitions, modern and historical"
+HOMEPAGE = " http://pythonhosted.org/pytz"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=22b38951eb857cf285a4560a914b7cd6"
+SRCNAME = "pytz"
+
+SRC_URI = "https://pypi.python.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} = "\
+ python-core \
+ python-datetime \
+"
+
+SRC_URI[md5sum] = "8940ddae309e44b593c75a9e05dd2a0b"
+SRC_URI[sha256sum] = "bfc2bd00147e5ecf75399f4a94cb84cc00ce9b511a15f9958bb6c85a455f76eb"
diff --git a/meta-python/recipes-devtools/python/python-pyudev_0.16.1.bb b/meta-python/recipes-devtools/python/python-pyudev_0.16.1.bb
new file mode 100644
index 0000000000..964b5f92b5
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-pyudev_0.16.1.bb
@@ -0,0 +1,25 @@
+SUMMARY = "A libudev binding"
+HOMEPAGE = "http://pypi.python.org/pypi/pyudev"
+SECTION = "devel/python"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
+
+SRCNAME = "pyudev"
+SRC_URI = "http://pypi.python.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+SRC_URI[md5sum] = "4034de584b6d9efcbfc590a047c63285"
+SRC_URI[sha256sum] = "765d1c14bd9bd031f64e2612225621984cb2bbb8cbc0c03538bcc4c735ff1c95"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+do_configure_prepend() {
+ sed -i "/import pyudev/d" ${S}/setup.py
+ sed -i "s/str(pyudev.__version__)/'${PV}'/g" ${S}/setup.py
+}
+
+RDEPENDS_${PN} = "\
+ python-ctypes \
+ python-subprocess \
+ python-misc \
+"
diff --git a/meta-python/recipes-devtools/python/python-pyusb_1.0.0a2.bb b/meta-python/recipes-devtools/python/python-pyusb_1.0.0a2.bb
new file mode 100644
index 0000000000..360f213221
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-pyusb_1.0.0a2.bb
@@ -0,0 +1,18 @@
+SUMMARY = "PyUSB provides USB access on the Python language"
+HOMEPAGE = "http://pyusb.sourceforge.net/"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a53a9c39efcfb812e2464af14afab013"
+DEPENDS = "libusb1"
+PR = "r1"
+
+SRC_URI = "\
+ ${SOURCEFORGE_MIRROR}/pyusb/${SRCNAME}-${PV}.tar.gz \
+"
+SRC_URI[md5sum] = "9136b3dc019272c62a5b6d4eb624f89f"
+SRC_URI[sha256sum] = "dacbf7d568c0bb09a974d56da66d165351f1ba3c4d5169ab5b734266623e1736"
+
+SRCNAME = "pyusb"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/meta-python/recipes-devtools/python/python-pyyaml/setup.py b/meta-python/recipes-devtools/python/python-pyyaml/setup.py
new file mode 100644
index 0000000000..fb64983419
--- /dev/null
+++ b/meta-python/recipes-devtools/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/meta-python/recipes-devtools/python/python-pyyaml_3.10.bb b/meta-python/recipes-devtools/python/python-pyyaml_3.10.bb
new file mode 100644
index 0000000000..100e1c81ac
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-pyyaml_3.10.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Python support for YAML"
+HOMEPAGE = "http://www.pyyaml.org"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6015f088759b10e0bc2bf64898d4ae17"
+DEPENDS = "libyaml python-cython-native"
+
+SRC_URI = "http://pyyaml.org/download/pyyaml/PyYAML-${PV}.tar.gz \
+ file://setup.py \
+"
+
+SRC_URI[md5sum] = "74c94a383886519e9e7b3dd1ee540247"
+SRC_URI[sha256sum] = "e713da45c96ca53a3a8b48140d4120374db622df16ab71759c9ceb5b8d46fe7c"
+
+S = "${WORKDIR}/PyYAML-${PV}"
+
+inherit distutils
+
+do_configure_prepend() {
+ # upstream setup.py overcomplicated, use ours
+ install -m 0644 ${WORKDIR}/setup.py ${S}
+}
diff --git a/meta-python/recipes-devtools/python/python-slip-dbus_0.6.0.bb b/meta-python/recipes-devtools/python/python-slip-dbus_0.6.0.bb
new file mode 100644
index 0000000000..2714f43221
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-slip-dbus_0.6.0.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Convenience functions for dbus services in Python 2.x"
+HOMEPAGE = "http://nphilipp.fedorapeople.org/python-slip/"
+DESCRIPTION = "\
+The Simple Library for Python 2.x packages contain miscellaneous code for \
+convenience, extension and workaround purposes. \
+\
+This package provides slip.dbus.service.Object, which is a dbus.service.Object \
+derivative that ends itself after a certain time without being used and/or if \
+there are no clients anymore on the message bus, as well as convenience \
+functions and decorators for integrating a dbus service with PolicyKit."
+
+SECTION = "devel/python"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5574c6965ae5f583e55880e397fbb018"
+SRCNAME = "python-slip"
+
+SRC_URI = "https://fedorahosted.org/released/${SRCNAME}/${SRCNAME}-${PV}.tar.bz2"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+SRC_URI[md5sum] = "fb3299d75af1a67ca6679d96ce839da6"
+SRC_URI[sha256sum] = "f47361ec52b608309b83c71905e692b6b363eaf3b8a7afdeff866cd94463ad5c"
+
+do_compile_prepend() {
+ sed -e 's/@VERSION@/${PV}/g' setup.py.in > setup.py
+}
diff --git a/meta-python/recipes-devtools/python/python-smbus_3.1.1.bb b/meta-python/recipes-devtools/python/python-smbus_3.1.1.bb
new file mode 100644
index 0000000000..df47df6248
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-smbus_3.1.1.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Set of i2c tools for linux - Python module"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://smbusmodule.c;startline=1;endline=17;md5=fa24df321a520ff8e10f203425ab9fa8"
+
+SRC_URI = "http://dl.lm-sensors.org/i2c-tools/releases/i2c-tools-${PV}.tar.bz2 \
+"
+SRC_URI[md5sum] = "0fdbff53ebd0b8d9249256d6c56480b1"
+SRC_URI[sha256sum] = "14d4d7d60d1c12e43f2befe239c682a5c44c27682f153d4b58c1e392d2db1700"
+
+DEPENDS = "i2c-tools"
+
+inherit distutils
+
+S = "${WORKDIR}/i2c-tools-${PV}/py-smbus/"
+
+do_configure_prepend() {
+ # Adjust for OE header rename
+ sed -i s:linux/i2c-dev.h:linux/i2c-dev-user.h: Module.mk
+ sed -i s:linux/i2c-dev.h:linux/i2c-dev-user.h: smbusmodule.c
+}
diff --git a/meta-python/recipes-devtools/python/python-snakefood_1.4.bb b/meta-python/recipes-devtools/python/python-snakefood_1.4.bb
new file mode 100644
index 0000000000..1af33d44d4
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-snakefood_1.4.bb
@@ -0,0 +1,56 @@
+SUMMARY = "Dependency graphing for Python"
+DESCRIPTION = " Generate dependency graphs from Python code. This \
+dependency tracker package has a few distinguishing characteristics \
+\
+ * It uses the AST to parse the Python files. This is very reliable, \
+ it always runs.\
+ * No module is loaded. Loading modules to figure out dependencies is \
+ almost always problem, because a lot of codebases run initialization \
+ code in the global namespace, which often requires additional setup. \
+ Snakefood is guaranteed not to have this problem (it just runs, no \
+ matter what).\
+ * It works on a set of files, i.e. you do not have to specify a single \
+ script, you can select a directory (package or else) or a set of files.\
+ It finds all the Python files recursively automatically.\
+ * Automatic/no configuration: your PYTHONPATH is automatically adjusted \
+ to include the required package roots. It figures out the paths that \
+ are required from the files/directories given as input. You should not \
+ have to setup ANYTHING.\
+ * It does not have to automatically 'follow' dependencies between modules,\
+ i.e. by default it only considers the files and directories you specify \
+ on the command-line and their immediate dependencies. It also has an \
+ option to automatically include only the dependencies within the \
+ packages of the files you specify.\
+ * It follows the UNIX philosophy of small programs that do one thing well:\
+ it consists of a few simple programs whose outputs you combine via \
+ pipes. Graphing dependencies always requires the user to filter and \
+ cluster the filenames, so this is appropriate. You can combine it with \
+ your favourite tools, grep, sed, etc.\
+\
+A problem with dependency trackers that run code is that they are unreliable, \
+due to the dynamic nature of Python (the presence of imports within function \
+calls and __import__ hooks makes it almost impossible to always do the right \
+thing). This script aims at being right 99% of the time, and we think that \
+given the trade-offs, 99% is good enough for 99% of the uses.\
+"
+AUTHOR = "Martin Blais <blais@furius.ca>"
+HOMEPAGE = "http://furius.ca/snakefood"
+SECTION = "devel/python"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+SRCNAME = "snakefood"
+
+SRC_URI = "https://pypi.python.org/packages/source/s/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+SRC_URI[md5sum] = "56c88667a33d8909b0aabf2ab6903bdf"
+SRC_URI[sha256sum] = "295784668032254e7391ca99ba7060edd3ae4eca1a330ac11627b18ab5923b77"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} = " python-logging python-compiler python-shell"
+# the above modules do not have a -native counterpart
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native"
+
diff --git a/meta-python/recipes-devtools/python/python-sqlalchemy_0.7.9.bb b/meta-python/recipes-devtools/python/python-sqlalchemy_0.7.9.bb
new file mode 100644
index 0000000000..43b4b7efa2
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-sqlalchemy_0.7.9.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Python SQL toolkit and Object Relational Mapper that gives \
+application developers the full power and flexibility of SQL"
+HOMEPAGE = "http://www.sqlalchemy.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=baffc5e5f4804c92fc9be155fed70d41"
+RDEPENDS_${PN} += "python-numbers"
+
+SRCNAME = "SQLAlchemy"
+SRC_URI = "${SOURCEFORGE_MIRROR}/sqlalchemy/${SRCNAME}-${PV}.tar.gz"
+SRC_URI[md5sum] = "c4852d586d95a59fbc9358f4467875d5"
+SRC_URI[sha256sum] = "f7a305ad122144f364ce09a2d9ed5159d5f46ec43650653593e7dfa05d3294a1"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/meta-python/recipes-devtools/python/python-tornado_4.0.2.bb b/meta-python/recipes-devtools/python/python-tornado_4.0.2.bb
new file mode 100644
index 0000000000..f1b8141a24
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-tornado_4.0.2.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Tornado is an open source version of the scalable, non-blocking web server and tools that power FriendFeed."
+DESCRIPTION = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. \
+By using non-blocking network I/O, Tornado can scale to tens of thousands of open connections, making it ideal for long \
+polling, WebSockets, and other applications that require a long-lived connection to each user."
+HOMEPAGE = "http://www.tornadoweb.org/en/stable/"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=5208df23820f490f691712a654be256d"
+
+SRCNAME = "tornado"
+
+SRC_URI = " \
+ https://pypi.python.org/packages/source/t/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
+"
+SRC_URI[md5sum] = "985c0e704b765c33a6193d49d1935588"
+SRC_URI[sha256sum] = "900c5124ebdb6598ca8e8a0c5888f41a5f14117952d5515258e3d20222b21bfa"
+
+inherit setuptools
+
+RDEPENDS_${PN} += "python-compression python-numbers python-email python-subprocess \
+ python-pkgutil python-html python-json python-backports-ssl python-certifi"
+
+RDEPENDS_${PN}-test += "${PN} python-unittest"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+PACKAGES =+ "\
+ ${PN}-test \
+"
+
+FILES_${PN}-test = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/${SRCNAME}/test \
+ ${libdir}/${PYTHON_DIR}/site-packages/${SRCNAME}/testing.py* \
+"
diff --git a/meta-python/recipes-devtools/python/python-twisted_13.2.0.bb b/meta-python/recipes-devtools/python/python-twisted_13.2.0.bb
new file mode 100644
index 0000000000..2b433f718e
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-twisted_13.2.0.bb
@@ -0,0 +1,247 @@
+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"
+
+#twisted/topfiles/NEWS:655: - Relicensed: Now under the MIT license, rather than LGPL.
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5602d7228daf59a16f0f1b2640c46bca"
+
+SRC_URI = "https://pypi.python.org/packages/source/T/Twisted/Twisted-${PV}.tar.bz2"
+SRC_URI[md5sum] = "83fe6c0c911cc1602dbffb036be0ba79"
+SRC_URI[sha256sum] = "095175638c019ac7c0604f4c291724a16ff1acd062e181b01293bf4dcbc62cf3"
+
+S = "${WORKDIR}/Twisted-${PV}"
+
+inherit setuptools
+
+do_install_append() {
+ # remove some useless files before packaging
+ find ${D} \( -name "*.bat" -o -name "*.c" -o -name "*.h" \) -exec rm -f {} \;
+}
+
+PACKAGES += "\
+ ${PN}-zsh \
+ ${PN}-test \
+ ${PN}-protocols \
+ ${PN}-conch \
+ ${PN}-lore \
+ ${PN}-mail \
+ ${PN}-names \
+ ${PN}-news \
+ ${PN}-runner \
+ ${PN}-web \
+ ${PN}-words \
+ ${PN}-flow \
+ ${PN}-pair \
+ ${PN}-core \
+"
+
+PACKAGES =+ "\
+ ${PN}-src \
+ ${PN}-bin \
+"
+
+RDEPENDS_${PN} = "\
+ ${PN}-bin \
+ ${PN}-conch \
+ ${PN}-lore \
+ ${PN}-mail \
+ ${PN}-names \
+ ${PN}-news \
+ ${PN}-runner \
+ ${PN}-web \
+ ${PN}-words \
+"
+
+RDEPENDS_${PN}-core = "python-core python-zopeinterface python-contextlib"
+RDEPENDS_${PN}-test = "${PN}"
+RDEPENDS_${PN}-conch = "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-lore = "${PN}-core"
+RDEPENDS_${PN}-mail = "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-names = "${PN}-core"
+RDEPENDS_${PN}-news = "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-runner = "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-web += "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-words += "${PN}-core"
+RDEPENDS_${PN}-flow += "${PN}-core"
+RDEPENDS_${PN}-pair += "${PN}-core"
+RDEPENDS_${PN}-dbg = "${PN}"
+
+ALLOW_EMPTY_${PN} = "1"
+FILES_${PN} = ""
+
+FILES_${PN}-test = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/test \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/*/test \
+"
+
+FILES_${PN}-protocols = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/*.py* \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/gps/ \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/mice/ \
+"
+
+FILES_${PN}-zsh = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zsh \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zshcomp.* \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/twisted-completion.zsh \
+"
+
+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/python/*.so \
+${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* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/topfiles \
+${libdir}/${PYTHON_DIR}/site-packages/Twisted*egg-info \
+"
+
+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 \
+"
+
+RDEPENDS_{PN}-src = "${PN}"
+FILES_${PN}-src = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/*.py \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/*/*.py \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/*/*/*.py \
+ "
diff --git a/meta-python/recipes-devtools/python/python-ujson_1.33.bb b/meta-python/recipes-devtools/python/python-ujson_1.33.bb
new file mode 100644
index 0000000000..8fdd2b8351
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-ujson_1.33.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Ultra fast JSON encoder and decoder for Python"
+DESCRIPTION = "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with bindings for Python 2.5+ and 3."
+HOMEPAGE = "https://pypi.python.org/pypi/ujson"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=5b206f6ba5e41c60df8cdcddf79a3d82"
+
+SRCNAME = "ujson"
+
+SRC_URI = " \
+ http://pypi.python.org/packages/source/u/ujson/${SRCNAME}-${PV}.zip \
+"
+
+SRC_URI[md5sum] = "8148a2493fff78940feab1e11dc0a893"
+SRC_URI[sha256sum] = "68cf825f227c82e1ac61e423cfcad923ff734c27b5bdd7174495d162c42c602b"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} += "python-numbers"
diff --git a/meta-python/recipes-devtools/python/python-vobject_0.8.1c.bb b/meta-python/recipes-devtools/python/python-vobject_0.8.1c.bb
new file mode 100644
index 0000000000..a28c02f7e7
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-vobject_0.8.1c.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Python package for parsing and generating vCard and vCalendar files"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE-2.0.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+HOMEPAGE = "http://vobject.skyhouseconsulting.com/"
+SRCNAME = "vobject"
+RDEPENDS_${PN} = "python python-dateutil"
+PR = "r4"
+
+SRC_URI = "http://vobject.skyhouseconsulting.com/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+SRC_URI[md5sum] = "c9686dd74d39fdae140890d9c694c076"
+SRC_URI[sha256sum] = "594113117f2017ed837c8f3ce727616f9053baa5a5463a7420c8249b8fc556f5"
diff --git a/meta-python/recipes-devtools/python/python-webdav_0.1.2.bb b/meta-python/recipes-devtools/python/python-webdav_0.1.2.bb
new file mode 100644
index 0000000000..7a6437dc53
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-webdav_0.1.2.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "This project aims to provide an object-oriented Python WebDAV client-side library\
+ based on Python`s standard httplib and Greg Stein`s davlib.\
+ The client shall fully support RFCs 4918 (basic specification),\
+ 3744 (access control), and 3253 (versioning)."
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://src/webdav/WebdavClient.py;endline=15;md5=a1520fad859feb7b0d7f05277bc6ce48"
+HOMEPAGE = "http://sourceforge.net/projects/pythonwebdavlib/"
+SRCNAME = "Python_WebDAV_Library"
+DEPENDS = "python"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pythonwebdavlib/Python%20WebDAV%20Library%20-%20${PV}/${SRCNAME}-${PV}.zip"
+SRC_URI[md5sum] = "8e49e0ecc5b4327c4f752a544ee10e1a"
+SRC_URI[sha256sum] = "72c029ad1e25de950f59c2f1812d009d2c1691b70e4b5b09f1af9006e8fd5f23"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
diff --git a/meta-python/recipes-devtools/python/python-zopeinterface_4.1.1.bb b/meta-python/recipes-devtools/python/python-zopeinterface_4.1.1.bb
new file mode 100644
index 0000000000..4151f585b8
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-zopeinterface_4.1.1.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Interface definitions for Zope products"
+SECTION = "console/network"
+
+LICENSE = "ZPL-2.1"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e54fd776274c1b7423ec128974bd9d46"
+
+SRC_URI = "http://pypi.python.org/packages/source/z/zope.interface/zope.interface-${PV}.tar.gz"
+SRC_URI[md5sum] = "edcd5f719c5eb2e18894c4d06e29b6c6"
+SRC_URI[sha256sum] = "91cba7b7cd7cb82f6f4e023fe77f94dc3df4ae5287fd55def2148dc232d0c7da"
+
+S = "${WORKDIR}/zope.interface-${PV}"
+
+inherit setuptools
+
+RPROVIDES_${PN} += "zope-interfaces"
+FILES_${PN}-dbg += "${PYTHON_SITEPACKAGES_DIR}/*.egg/*/*/.debug"
+FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/zope/interface/*.c"
+FILES_${PN}-doc += "${PYTHON_SITEPACKAGES_DIR}/zope/interface/*.txt"
+FILES_${PN}-tests = " \
+ ${PYTHON_SITEPACKAGES_DIR}/zope/interface/tests \
+ ${PYTHON_SITEPACKAGES_DIR}/zope/interface/common/tests \
+"
diff --git a/meta-python/recipes-extended/python-pyparted/python-pyparted_3.9.bb b/meta-python/recipes-extended/python-pyparted/python-pyparted_3.9.bb
new file mode 100644
index 0000000000..bfb4f6f87b
--- /dev/null
+++ b/meta-python/recipes-extended/python-pyparted/python-pyparted_3.9.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "pyparted is a set of Python modules that provide Python programmers \
+an interface to libparted, the GNU parted library for disk partitioning and \
+filesystem manipulation."
+SUMMARY = "Python bindings for libparted"
+HOMEPAGE = "https://fedorahosted.org/pyparted/"
+LICENSE = "GPL-2.0+"
+LIC_FILES_CHKSUM = "\
+ file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
+ file://src/_pedmodule.c;startline=10;endline=22;md5=70c62bd73782a03f56a0571a9f08ea46 \
+"
+DEPENDS += "parted"
+
+SRC_URI = "https://fedorahosted.org/releases/p/y/pyparted/pyparted-${PV}.tar.gz"
+SRC_URI[md5sum] = "f16c7ef7f5fa4a43fcb2a4654b487e39"
+SRC_URI[sha256sum] = "a56712e3d058ce3d859c158236dbbf45224018919efd3d880ea80f9e0d0bebbb"
+S = "${WORKDIR}/pyparted-${PV}"
+
+inherit distutils
+
+RDEPENDS_${PN} += "python-stringold python-codecs python-math"
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND += "native"