summaryrefslogtreecommitdiffstats
path: root/external/meta-virtualization/recipes-devtools
diff options
context:
space:
mode:
Diffstat (limited to 'external/meta-virtualization/recipes-devtools')
-rw-r--r--external/meta-virtualization/recipes-devtools/go/compose-file_git.bb41
-rw-r--r--external/meta-virtualization/recipes-devtools/go/go-capability_git.bb29
-rw-r--r--external/meta-virtualization/recipes-devtools/go/go-cli_git.bb29
-rw-r--r--external/meta-virtualization/recipes-devtools/go/go-connections_git.bb39
-rw-r--r--external/meta-virtualization/recipes-devtools/go/go-context_git.bb28
-rw-r--r--external/meta-virtualization/recipes-devtools/go/go-dbus_git.bb29
-rw-r--r--external/meta-virtualization/recipes-devtools/go/go-distribution_git.bb39
-rw-r--r--external/meta-virtualization/recipes-devtools/go/go-fsnotify_git.bb29
-rw-r--r--external/meta-virtualization/recipes-devtools/go/go-libtrust_git.bb29
-rw-r--r--external/meta-virtualization/recipes-devtools/go/go-logrus_git.bb29
-rw-r--r--external/meta-virtualization/recipes-devtools/go/go-mux_git.bb28
-rw-r--r--external/meta-virtualization/recipes-devtools/go/go-patricia_git.bb29
-rw-r--r--external/meta-virtualization/recipes-devtools/go/go-pty_git.bb28
-rw-r--r--external/meta-virtualization/recipes-devtools/go/go-systemd_git.bb31
-rw-r--r--external/meta-virtualization/recipes-devtools/go/grpc-go_git.bb41
-rw-r--r--external/meta-virtualization/recipes-devtools/go/notary_git.bb39
-rw-r--r--external/meta-virtualization/recipes-devtools/python/gunicorn_19.1.1.bb15
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-backports-lzma/fix_paths.patch17
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-backports-lzma_0.0.3.bb32
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-blinker_1.3.bb24
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-boto_2.34.0.bb25
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-bugsnag_2.0.2.bb26
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-docker-registry-core_2.0.3.bb29
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-docopt.inc9
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-flask-cors_1.10.3.bb22
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-flask_0.10.1.bb20
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-gevent/gevent-allow-ssl-v2-or-v3-certificates.patch29
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-gevent/libev-conf.patch19
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-gevent_1.0.1.bb30
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-m2crypto/m2crypto-Fix-build-with-SWIG-3.0.5.patch158
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-m2crypto_0.22.3.bb63
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-newrelic_2.22.0.19.bb26
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-pyyaml_3.11.bb32
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-redis_2.10.3.bb22
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-sphinx_1.7.8.bb12
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-sqlalchemy_1.0.16.bb16
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-sqlalchemy_1.1.5.bb18
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-webob_1.8.2.bb18
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-websocket-client.inc11
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-websocket-client_0.44.0.bb2
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python-werkzeug_0.10.4.bb33
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python3-cached-property_1.3.0.bb9
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python3-colorama_0.3.9.bb9
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python3-docker-pycreds_0.3.0.bb9
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python3-docker_3.4.0.bb17
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python3-dockerpty_0.4.1.bb9
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python3-docopt_0.6.2.bb2
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python3-texttable_0.9.1.bb9
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python3-websocket-client_0.44.0.bb2
-rw-r--r--external/meta-virtualization/recipes-devtools/python/python_2.%.bbappend8
50 files changed, 1299 insertions, 0 deletions
diff --git a/external/meta-virtualization/recipes-devtools/go/compose-file_git.bb b/external/meta-virtualization/recipes-devtools/go/compose-file_git.bb
new file mode 100644
index 00000000..bcf8c3d2
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/compose-file_git.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "Parser for the Compose file format (version 3)"
+HOMEPAGE = "https://github.com/aanand/compose-file"
+SECTION = "devel/go"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=9cd86830b557232ce55e2a6b47387471"
+
+SRCNAME = "compose-file"
+
+PKG_NAME = "github.com/aanand/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
+
+SRCREV = "a3e58764f50597b6217fec07e9bff7225c4a1719"
+PV = "3.0+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+# NO-OP the do compile rule because this recipe is source only.
+do_compile() {
+}
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go"); do
+ if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
+ mkdir -p ${D}${prefix}/local/go/$(dirname $j)
+ fi
+ cp $j ${D}${prefix}/local/go/$j
+ done
+ cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_compose_file_sysroot_preprocess"
+
+go_compose_file_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+
+CLEANBROKEN = "1" \ No newline at end of file
diff --git a/external/meta-virtualization/recipes-devtools/go/go-capability_git.bb b/external/meta-virtualization/recipes-devtools/go/go-capability_git.bb
new file mode 100644
index 00000000..8524af62
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/go-capability_git.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "Utilities for manipulating POSIX capabilities in Go."
+HOMEPAGE = "https://github.com/syndtr/gocapability"
+SECTION = "devel/go"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a7304f5073e7be4ba7bffabbf9f2bbca"
+
+SRCNAME = "gocapability"
+
+PKG_NAME = "github.com/syndtr/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git"
+
+SRCREV = "2c00daeb6c3b45114c80ac44119e7b8801fdd852"
+PV = "0.0+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_capability_sysroot_preprocess"
+
+go_capability_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/external/meta-virtualization/recipes-devtools/go/go-cli_git.bb b/external/meta-virtualization/recipes-devtools/go/go-cli_git.bb
new file mode 100644
index 00000000..21d01ac3
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/go-cli_git.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "A small package for building command line apps in Go"
+HOMEPAGE = "https://github.com/codegangsta/cli"
+SECTION = "devel/go"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ed9b539ed65d73926f30ff1f1587dc44"
+
+SRCNAME = "cli"
+
+PKG_NAME = "github.com/codegangsta/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git"
+
+SRCREV = "27ecc97192df1bf053a22b04463f2b51b8b8373e"
+PV = "1.1.0+git${SRCREV}"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_cli_sysroot_preprocess"
+
+go_cli_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/external/meta-virtualization/recipes-devtools/go/go-connections_git.bb b/external/meta-virtualization/recipes-devtools/go/go-connections_git.bb
new file mode 100644
index 00000000..5d071b0a
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/go-connections_git.bb
@@ -0,0 +1,39 @@
+DESCRIPTION = "Utility package to work with network connections"
+HOMEPAGE = "https://github.com/docker/connections"
+SECTION = "devel/go"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=04424bc6f5a5be60691b9824d65c2ad8"
+
+SRCNAME = "go-connections"
+
+PKG_NAME = "github.com/docker/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
+
+SRCREV = "4ccf312bf1d35e5dbda654e57a9be4c3f3cd0366"
+PV = "0.2.1+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+# NO-OP the do compile rule because this recipe is source only.
+do_compile() {
+}
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go"); do
+ if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
+ mkdir -p ${D}${prefix}/local/go/$(dirname $j)
+ fi
+ cp $j ${D}${prefix}/local/go/$j
+ done
+ cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_connections_sysroot_preprocess"
+
+go_connections_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/external/meta-virtualization/recipes-devtools/go/go-context_git.bb b/external/meta-virtualization/recipes-devtools/go/go-context_git.bb
new file mode 100644
index 00000000..15f6a8dd
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/go-context_git.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "A golang registry for global request variables."
+HOMEPAGE = "https://github.com/gorilla/context"
+SECTION = "devel/go"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c50f6bd9c1e15ed0bad3bea18e3c1b7f"
+
+SRCNAME = "context"
+
+PKG_NAME = "github.com/gorilla/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git"
+
+SRCREV = "14f550f51af52180c2eefed15e5fd18d63c0a64a"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_context_sysroot_preprocess"
+
+go_context_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/external/meta-virtualization/recipes-devtools/go/go-dbus_git.bb b/external/meta-virtualization/recipes-devtools/go/go-dbus_git.bb
new file mode 100644
index 00000000..9b206a1e
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/go-dbus_git.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "Native Go bindings for D-Bus"
+HOMEPAGE = "https://github.com/godbus/dbus"
+SECTION = "devel/go"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=09042bd5c6c96a2b9e45ddf1bc517eed"
+
+SRCNAME = "dbus"
+
+PKG_NAME = "github.com/godbus/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git"
+
+SRCREV = "5f6efc7ef2759c81b7ba876593971bfce311eab3"
+PV = "4.0.0+git${SRCREV}"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_dbus_sysroot_preprocess"
+
+go_dbus_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/external/meta-virtualization/recipes-devtools/go/go-distribution_git.bb b/external/meta-virtualization/recipes-devtools/go/go-distribution_git.bb
new file mode 100644
index 00000000..9e3f2093
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/go-distribution_git.bb
@@ -0,0 +1,39 @@
+DESCRIPTION = "The Docker toolset to pack, ship, store, and deliver content"
+HOMEPAGE = "https://github.com/docker/distribution"
+SECTION = "devel/go"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=d2794c0df5b907fdace235a619d80314"
+
+SRCNAME = "distribution"
+
+PKG_NAME = "github.com/docker/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git;branch=docker/1.13;destsuffix=git/src/${PKG_NAME}"
+
+SRCREV = "28602af35aceda2f8d571bad7ca37a54cf0250bc"
+PV = "2.6.0+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+# NO-OP the do compile rule because this recipe is source only.
+do_compile() {
+}
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go"); do
+ if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
+ mkdir -p ${D}${prefix}/local/go/$(dirname $j)
+ fi
+ cp $j ${D}${prefix}/local/go/$j
+ done
+ cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_distribution_digeset_sysroot_preprocess"
+
+go_distribution_digeset_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/external/meta-virtualization/recipes-devtools/go/go-fsnotify_git.bb b/external/meta-virtualization/recipes-devtools/go/go-fsnotify_git.bb
new file mode 100644
index 00000000..1d9fbdc7
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/go-fsnotify_git.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "A golang registry for global request variables."
+HOMEPAGE = "https://github.com/go-fsnotify/fsnotify"
+SECTION = "devel/go"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c38914c9a7ab03bb2b96d4baaee10769"
+
+SRCNAME = "fsnotify"
+
+PKG_NAME = "github.com/fsnotify/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git"
+
+SRCREV = "836bfd95fecc0f1511dd66bdbf2b5b61ab8b00b6"
+PV = "1.2.11+git${SRCREV}"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_fsnotify_sysroot_preprocess"
+
+go_fsnotify_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/external/meta-virtualization/recipes-devtools/go/go-libtrust_git.bb b/external/meta-virtualization/recipes-devtools/go/go-libtrust_git.bb
new file mode 100644
index 00000000..55659464
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/go-libtrust_git.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "Primitives for identity and authorization"
+HOMEPAGE = "https://github.com/docker/libtrust"
+SECTION = "devel/go"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=435b266b3899aa8a959f17d41c56def8"
+
+SRCNAME = "libtrust"
+
+PKG_NAME = "github.com/docker/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git"
+
+SRCREV = "9cbd2a1374f46905c68a4eb3694a130610adc62a"
+PV = "0.0+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_libtrust_sysroot_preprocess"
+
+go_libtrust_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/external/meta-virtualization/recipes-devtools/go/go-logrus_git.bb b/external/meta-virtualization/recipes-devtools/go/go-logrus_git.bb
new file mode 100644
index 00000000..5c0c3595
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/go-logrus_git.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "A golang registry for global request variables."
+HOMEPAGE = "https://github.com/Sirupsen/logrus"
+SECTION = "devel/go"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8dadfef729c08ec4e631c4f6fc5d43a0"
+
+SRCNAME = "logrus"
+
+PKG_NAME = "github.com/Sirupsen/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git"
+
+SRCREV = "d26492970760ca5d33129d2d799e34be5c4782eb"
+PV = "0.11.0+git${SRCREV}"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_logrus_sysroot_preprocess"
+
+go_logrus_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/external/meta-virtualization/recipes-devtools/go/go-mux_git.bb b/external/meta-virtualization/recipes-devtools/go/go-mux_git.bb
new file mode 100644
index 00000000..7a2025a0
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/go-mux_git.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "A powerful URL router and dispatcher for golang."
+HOMEPAGE = "https://github.com/gorilla/mux"
+SECTION = "devel/go"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c50f6bd9c1e15ed0bad3bea18e3c1b7f"
+
+SRCNAME = "mux"
+
+PKG_NAME = "github.com/gorilla/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git"
+
+SRCREV = "136d54f81f00414c45c3c68dd47e98cc97519c5e"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_mux_sysroot_preprocess"
+
+go_mux_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/external/meta-virtualization/recipes-devtools/go/go-patricia_git.bb b/external/meta-virtualization/recipes-devtools/go/go-patricia_git.bb
new file mode 100644
index 00000000..8c1e10d9
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/go-patricia_git.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "A generic patricia trie (also called radix tree) implemented in Go (Golang)"
+HOMEPAGE = "https://github.com/gorilla/context"
+SECTION = "devel/go"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9949b99212edd6b1e24ce702376c3baf"
+
+SRCNAME = "go-patricia"
+
+PKG_NAME = "github.com/tchap/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git"
+
+SRCREV = "666120de432aea38ab06bd5c818f04f4129882c9"
+PV = "2.2.6+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_patricia_sysroot_preprocess"
+
+go_patricia_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/external/meta-virtualization/recipes-devtools/go/go-pty_git.bb b/external/meta-virtualization/recipes-devtools/go/go-pty_git.bb
new file mode 100644
index 00000000..bc94b317
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/go-pty_git.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "PTY interface for Go"
+HOMEPAGE = "https://github.com/kr/pty"
+SECTION = "devel/go"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://License;md5=93958070863d769117fa33b129020050"
+
+SRCNAME = "pty"
+
+PKG_NAME = "github.com/kr/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git"
+
+SRCREV = "05017fcccf23c823bfdea560dcc958a136e54fb7"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_pty_sysroot_preprocess"
+
+go_pty_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/external/meta-virtualization/recipes-devtools/go/go-systemd_git.bb b/external/meta-virtualization/recipes-devtools/go/go-systemd_git.bb
new file mode 100644
index 00000000..b61c97a6
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/go-systemd_git.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Go bindings to systemd socket activation, journal, D-Bus, and unit files"
+HOMEPAGE = "https://github.com/coreos/go-systemd"
+SECTION = "devel/go"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=19cbd64715b51267a47bf3750cc6a8a5"
+
+SRCNAME = "systemd"
+
+PKG_NAME = "github.com/coreos/go-${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git"
+
+SRCREV = "b4a58d95188dd092ae20072bac14cece0e67c388"
+PV = "4+git${SRCREV}"
+
+RDEPENDS_${PN} += "bash"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_systemd_sysroot_preprocess"
+
+go_systemd_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/external/meta-virtualization/recipes-devtools/go/grpc-go_git.bb b/external/meta-virtualization/recipes-devtools/go/grpc-go_git.bb
new file mode 100644
index 00000000..48c42499
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/grpc-go_git.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "The Go language implementation of gRPC. HTTP/2 based RPC"
+HOMEPAGE = "https://github.com/grpc/grpc-go"
+SECTION = "devel/go"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=a4bad33881612090c6035d8393175996"
+
+SRCNAME = "grpc-go"
+
+PKG_NAME = "google.golang.org/grpc"
+SRC_URI = "git://github.com/grpc/${SRCNAME}.git;destsuffix=git/src/${PKG_NAME}"
+
+SRCREV = "777daa17ff9b5daef1cfdf915088a2ada3332bf0"
+PV = "1.4.0+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+# NO-OP the do compile rule because this recipe is source only.
+do_compile() {
+}
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go"); do
+ if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
+ mkdir -p ${D}${prefix}/local/go/$(dirname $j)
+ fi
+ cp $j ${D}${prefix}/local/go/$j
+ done
+ cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_grpc_sysroot_preprocess"
+
+go_grpc_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += " \
+ ${prefix}/local/go/src/${PKG_NAME}/* \
+"
diff --git a/external/meta-virtualization/recipes-devtools/go/notary_git.bb b/external/meta-virtualization/recipes-devtools/go/notary_git.bb
new file mode 100644
index 00000000..d638dc1c
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/go/notary_git.bb
@@ -0,0 +1,39 @@
+DESCRIPTION = "Notary is a Docker project that allows anyone to have trust over arbitrary collections of data"
+HOMEPAGE = "https://github.com/docker/notary"
+SECTION = "devel/go"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=771ddb425ba03c8fab49e5bd9854a4a2"
+
+SRCNAME = "notary"
+
+PKG_NAME = "github.com/docker/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
+
+SRCREV = "c8aa8cf53cbcda2e92def0c9291e25d770493494"
+PV = "0.4.2+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+# NO-OP the do compile rule because this recipe is source only.
+do_compile() {
+}
+
+do_install() {
+ install -d ${D}${prefix}/local/go/src/${PKG_NAME}
+ for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go"); do
+ if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
+ mkdir -p ${D}${prefix}/local/go/$(dirname $j)
+ fi
+ cp $j ${D}${prefix}/local/go/$j
+ done
+ cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
+}
+
+SYSROOT_PREPROCESS_FUNCS += "go_notary_sysroot_preprocess"
+
+go_notary_sysroot_preprocess () {
+ install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
+ cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
+}
+
+FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/external/meta-virtualization/recipes-devtools/python/gunicorn_19.1.1.bb b/external/meta-virtualization/recipes-devtools/python/gunicorn_19.1.1.bb
new file mode 100644
index 00000000..5c8ea484
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/gunicorn_19.1.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "WSGI HTTP Server for UNIX"
+DESCRIPTION = "\
+ Gunicorn ‘Green Unicorn’ is a Python WSGI HTTP Server for UNIX. It’s \
+ a pre-fork worker model ported from Ruby’s Unicorn project. The \
+ Gunicorn server is broadly compatible with various web frameworks, \
+ simply implemented, light on server resource usage, and fairly speedy. \
+ "
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=19a2e253a273e390cd1b91d19b6ee236"
+
+SRC_URI = "https://pypi.python.org/packages/source/g/gunicorn/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "eaa72bff5341c05169b76ce3dcbb8140"
+SRC_URI[sha256sum] = "82715511fb6246fad4ba66d812eb93416ae8371b464fa88bf3867c9c177daa14"
+
+inherit setuptools
diff --git a/external/meta-virtualization/recipes-devtools/python/python-backports-lzma/fix_paths.patch b/external/meta-virtualization/recipes-devtools/python/python-backports-lzma/fix_paths.patch
new file mode 100644
index 00000000..c2b374f6
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-backports-lzma/fix_paths.patch
@@ -0,0 +1,17 @@
+---
+ setup.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/setup.py
++++ b/setup.py
+@@ -32,8 +32,8 @@
+ extens = [Extension('backports/lzma/_lzma',
+ ['backports/lzma/_lzmamodule.c'],
+ libraries = ['lzma'],
+- include_dirs = [os.path.join(home, 'include'), '/opt/local/include', '/usr/local/include'],
+- library_dirs = [os.path.join(home, 'lib'), '/opt/local/lib', '/usr/local/lib']
++ include_dirs = [],
++ library_dirs = []
+ )]
+
+ descr = "Backport of Python 3.3's 'lzma' module for XZ/LZMA compressed files."
diff --git a/external/meta-virtualization/recipes-devtools/python/python-backports-lzma_0.0.3.bb b/external/meta-virtualization/recipes-devtools/python/python-backports-lzma_0.0.3.bb
new file mode 100644
index 00000000..a3586c04
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-backports-lzma_0.0.3.bb
@@ -0,0 +1,32 @@
+HOMEPAGE = "https://github.com/peterjc/backports.lzma"
+SUMMARY = "\
+ Backport of Python 3.3's 'lzma' module for XZ/LZMA compressed files."
+DESCRIPTION = "\
+ This is a backport of the 'lzma' module included in Python 3.3 or later \
+ by Nadeem Vawda and Per Oyvind Karlsen, which provides a Python wrapper \
+ for XZ Utils (aka LZMA Utils v2) by Igor Pavlov. \
+ . \
+ In order to compile this, you will need to install XZ Utils from \
+ http://tukaani.org/xz/ \
+ "
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=db4345b3b9524aabc8fe8c65f235c6b2"
+
+SRC_URI[md5sum] = "c3d109746aefa86268e500c07d7e8e0f"
+SRC_URI[sha256sum] = "bac58aec8d39ac3d22250840fb24830d0e4a0ef05ad8f3f09172dc0cc80cdbca"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+DEPENDS += "xz"
+
+SRCNAME = "backports.lzma"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI = "\
+ https://pypi.python.org/packages/source/b/backports.lzma/${SRCNAME}-${PV}.tar.gz \
+ file://fix_paths.patch \
+ "
diff --git a/external/meta-virtualization/recipes-devtools/python/python-blinker_1.3.bb b/external/meta-virtualization/recipes-devtools/python/python-blinker_1.3.bb
new file mode 100644
index 00000000..8abb9c07
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-blinker_1.3.bb
@@ -0,0 +1,24 @@
+HOMEPAGE = "https://pypi.python.org/pypi/blinker"
+SUMMARY = "Fast, simple object-to-object and broadcast signaling"
+DESCRIPTION = " \
+ Blinker provides a fast dispatching system that allows any number of \
+ interested parties to subscribe to events, or “signals”. \
+ . \
+ Signal receivers can subscribe to specific senders or receive signals \
+ sent by any sender. \
+ "
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8baf1d53a00de619f60052e4752a89af"
+
+SRCNAME = "blinker"
+SRC_URI = "https://pypi.python.org/packages/source/b/blinker/${SRCNAME}-${PV}.tar.gz"
+SRC_URI[md5sum] = "66e9688f2d287593a0e698cd8a5fbc57"
+SRC_URI[sha256sum] = "6811010809262261e41ab7b92f3f6d23f35cf816fbec2bc05077992eebec6e2f"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit setuptools
+
diff --git a/external/meta-virtualization/recipes-devtools/python/python-boto_2.34.0.bb b/external/meta-virtualization/recipes-devtools/python/python-boto_2.34.0.bb
new file mode 100644
index 00000000..f94f3244
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-boto_2.34.0.bb
@@ -0,0 +1,25 @@
+HOMEPAGE = "https://github.com/boto/boto"
+SUMMARY = "Amazon Web Services API"
+DESCRIPTION = "\
+ Boto is a Python package that provides interfaces to Amazon Web Services. \
+ Currently, all features work with Python 2.6 and 2.7. Work is under way to \
+ support Python 3.3+ in the same codebase. Modules are being ported one at \
+ a time with the help of the open source community, so please check below \
+ for compatibility with Python 3.3+. \
+ "
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://setup.py;md5=182ef81236d3fac2c6ed8e8d3c988ec8"
+
+PR = "r0"
+SRCNAME = "boto"
+
+SRC_URI = "https://pypi.python.org/packages/source/b/boto/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "5556223d2d0cc4d06dd4829e671dcecd"
+SRC_URI[sha256sum] = "33baab022ecb803414ad0d6cf4041d010cfc2755ff8acc3bea7b32e77ba98be0"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
diff --git a/external/meta-virtualization/recipes-devtools/python/python-bugsnag_2.0.2.bb b/external/meta-virtualization/recipes-devtools/python/python-bugsnag_2.0.2.bb
new file mode 100644
index 00000000..edf880fb
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-bugsnag_2.0.2.bb
@@ -0,0 +1,26 @@
+HOMEPAGE = "https://bugsnag.com/"
+SUMMARY = "Automatic error monitoring for django, flask, etc."
+DESCRIPTION = "\
+ The official Python notifier for `Bugsnag <https://bugsnag.com/>`_. \
+ Provides support for automatically capturing and sending exceptions \
+ in your Django and other Python apps to Bugsnag, to help you find \
+ and solve your bugs as fast as possible. \
+ "
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=f6df6ab9f1b615a140ebb2a48f61bddc"
+
+PR = "r0"
+SRCNAME = "bugsnag"
+
+SRC_URI = "https://pypi.python.org/packages/source/b/bugsnag/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "e16360d86979890892cd388635f213e7"
+SRC_URI[sha256sum] = "093934b3cd1d36ba2b89cfe1673b14ba59043417fe500a02dbf6de0df43ea962"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+DEPENDS += "python-webob python-flask python-blinker"
+
diff --git a/external/meta-virtualization/recipes-devtools/python/python-docker-registry-core_2.0.3.bb b/external/meta-virtualization/recipes-devtools/python/python-docker-registry-core_2.0.3.bb
new file mode 100644
index 00000000..7aa6825e
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-docker-registry-core_2.0.3.bb
@@ -0,0 +1,29 @@
+HOMEPAGE = "https://pypi.python.org/pypi/docker-registry-core"
+SUMMARY = "Docker registry core package"
+DESCRIPTION = "core package for docker-registry (drivers) developers"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRCNAME = "docker-registry-core"
+
+SRC_URI = "https://pypi.python.org/packages/source/d/docker-registry-core/${SRCNAME}-${PV}.tar.gz"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+SRC_URI[md5sum] = "610ef9395f2e9a2f91c68d13325fce7b"
+SRC_URI[sha256sum] = "347e804f1f35b28dbe27bf8d7a0b630fca29d684032139bf26e3940572360360"
+
+inherit setuptools
+
+DEPENDS += "\
+ python-distribute \
+ python-boto (= 2.34.0) \
+ python-redis (= 2.10.3) \
+ python-simplejson (= 3.6.2) \
+ "
+
+# boto 2.34.0
+# redis 2.10.3
+# simplejson 3.6.2
+# setuptools 5.8
diff --git a/external/meta-virtualization/recipes-devtools/python/python-docopt.inc b/external/meta-virtualization/recipes-devtools/python/python-docopt.inc
new file mode 100644
index 00000000..4f464c13
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-docopt.inc
@@ -0,0 +1,9 @@
+SUMMARY = "Pythonic argument parser, that will make you smile"
+HOMEPAGE = "http://docopt.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE-MIT;md5=09b77fb74986791a3d4a0e746a37d88f"
+
+inherit pypi
+
+SRC_URI[md5sum] = "4bc74561b37fad5d3e7d037f82a4c3b1"
+SRC_URI[sha256sum] = "49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"
diff --git a/external/meta-virtualization/recipes-devtools/python/python-flask-cors_1.10.3.bb b/external/meta-virtualization/recipes-devtools/python/python-flask-cors_1.10.3.bb
new file mode 100644
index 00000000..c39e9b26
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-flask-cors_1.10.3.bb
@@ -0,0 +1,22 @@
+HOMEPAGE = "https://pypi.python.org/pypi/Flask-Cors/1.10.3"
+SUMMARY = "A Flask extension adding a decorator for CORS support"
+DESCRIPTION = "\
+ A Flask extension for handling Cross Origin Resource Sharing (CORS), making cross-origin AJAX possible \
+ "
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4784781a5ee9fed9c50272e733e07685"
+
+DEPENDS += "python-six python-flask"
+
+PR = "r0"
+SRCNAME = "Flask-Cors"
+
+SRC_URI = "https://pypi.python.org/packages/source/F/Flask-Cors/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "4f3c75ace0f724d1de167bd73745c965"
+SRC_URI[sha256sum] = "9e6927aa0a46f314bca0ec63eb871cee898a162adfdd5b65224db7a008287423"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/external/meta-virtualization/recipes-devtools/python/python-flask_0.10.1.bb b/external/meta-virtualization/recipes-devtools/python/python-flask_0.10.1.bb
new file mode 100644
index 00000000..263e53d0
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-flask_0.10.1.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "A microframework based on Werkzeug, Jinja2 and good intentions"
+HOMEPAGE = "https://pypi.python.org/pypi/Flask/"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=79aa8b7bc4f781210d6b5c06d6424cb0"
+
+PR = "r0"
+SRCNAME = "Flask"
+
+SRC_URI = "https://pypi.python.org/packages/source/F/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "378670fe456957eb3c27ddaef60b2b24"
+SRC_URI[sha256sum] = "4c83829ff83d408b5e1d4995472265411d2c414112298f2eb4b359d9e4563373"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+CLEANBROKEN = "1"
+
diff --git a/external/meta-virtualization/recipes-devtools/python/python-gevent/gevent-allow-ssl-v2-or-v3-certificates.patch b/external/meta-virtualization/recipes-devtools/python/python-gevent/gevent-allow-ssl-v2-or-v3-certificates.patch
new file mode 100644
index 00000000..623d04f0
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-gevent/gevent-allow-ssl-v2-or-v3-certificates.patch
@@ -0,0 +1,29 @@
+From c2dc97478fcc3757e09d5d2997391960a8351d53 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@windriver.com>
+Date: Sun, 29 Mar 2015 22:34:28 -0400
+Subject: [PATCH] gevent: allow ssl v2 or v3 certificates
+
+Work around an issue with python 2.7 not always having SSLv3 available
+by allowing v2 or v3 certificates.
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
+---
+ gevent/ssl.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gevent/ssl.py b/gevent/ssl.py
+index ce6434718d1b..93c0d642da5f 100644
+--- a/gevent/ssl.py
++++ b/gevent/ssl.py
+@@ -383,7 +383,7 @@ def wrap_socket(sock, keyfile=None, certfile=None,
+ ciphers=ciphers)
+
+
+-def get_server_certificate(addr, ssl_version=PROTOCOL_SSLv3, ca_certs=None):
++def get_server_certificate(addr, ssl_version=PROTOCOL_SSLv23, ca_certs=None):
+ """Retrieve the certificate from the server at the specified address,
+ and return it as a PEM-encoded string.
+ If 'ca_certs' is specified, validate the server cert against it.
+--
+1.9.1
+
diff --git a/external/meta-virtualization/recipes-devtools/python/python-gevent/libev-conf.patch b/external/meta-virtualization/recipes-devtools/python/python-gevent/libev-conf.patch
new file mode 100644
index 00000000..283705f8
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-gevent/libev-conf.patch
@@ -0,0 +1,19 @@
+Due to differences in library locations, the cross compile test can fail because it can't run
+the conftest binary (dynamically linked). Building it statically instead.
+
+Signed-off-by: Amy Fong <amy.fong@windriver.com>
+---
+ libev/configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/libev/configure
++++ b/libev/configure
+@@ -2730,7 +2730,7 @@
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_link='$CC -static -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
diff --git a/external/meta-virtualization/recipes-devtools/python/python-gevent_1.0.1.bb b/external/meta-virtualization/recipes-devtools/python/python-gevent_1.0.1.bb
new file mode 100644
index 00000000..8cd1388a
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-gevent_1.0.1.bb
@@ -0,0 +1,30 @@
+HOMEPAGE = "http://www.gevent.org"
+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. \
+ "
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2dbb33d00e1fd31c7041460a81ac0bd2"
+DEPENDS += "python-greenlet libevent"
+RDEPENDS_${PN} += "python-greenlet python-mime python-pprint python-re"
+
+SRC_URI[md5sum] = "7b952591d1a0174d6eb6ac47bd975ab6"
+SRC_URI[sha256sum] = "4627e215d058f71d95e6b26d9e7be4c263788a4756bd2858a93775f6c072df43"
+
+inherit setuptools pypi
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+SRC_URI += "file://libev-conf.patch"
+SRC_URI += "file://gevent-allow-ssl-v2-or-v3-certificates.patch"
+
+# The python-gevent has no autoreconf ability
+# and the logic for detecting a cross compile is flawed
+# so always force a cross compile
+do_configure_append() {
+ sed -i -e 's/^cross_compiling=no/cross_compiling=yes/' ${S}/libev/configure
+}
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/external/meta-virtualization/recipes-devtools/python/python-m2crypto/m2crypto-Fix-build-with-SWIG-3.0.5.patch b/external/meta-virtualization/recipes-devtools/python/python-m2crypto/m2crypto-Fix-build-with-SWIG-3.0.5.patch
new file mode 100644
index 00000000..c4085952
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-m2crypto/m2crypto-Fix-build-with-SWIG-3.0.5.patch
@@ -0,0 +1,158 @@
+From 8430e7202407fb1a0a104b0decdcc9da9e41a52b Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Mon, 4 Apr 2016 23:28:15 -0400
+Subject: [PATCH] Fix build with SWIG 3.0.5
+
+See analysis and previous patches in
+https://github.com/martinpaljak/M2Crypto/issues/60 and
+https://github.com/swig/swig/issues/344, in particular this adds the
+build machinery to patch
+https://github.com/martinpaljak/M2Crypto/issues/60#issuecomment-75735489
+
+Fixes #47
+
+Author: Miloslav Trmac <mitr@redhat.com>
+
+Upstream-Status: Backport
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ M2Crypto/__init__.py | 4 ++--
+ M2Crypto/m2.py | 2 +-
+ SWIG/_lib.i | 4 ++++
+ SWIG/_pkcs7.i | 1 +
+ setup.py | 24 ++++++++++++++++++++++++
+ 5 files changed, 32 insertions(+), 3 deletions(-)
+
+diff --git a/M2Crypto/__init__.py b/M2Crypto/__init__.py
+index 647e057..280af94 100644
+--- a/M2Crypto/__init__.py
++++ b/M2Crypto/__init__.py
+@@ -19,7 +19,7 @@ Copyright 2008-2011 Heikki Toivonen. All rights reserved.
+ version_info = (0, 22)
+ version = '.'.join([str(_v) for _v in version_info])
+
+-import __m2crypto
++import _m2crypto
+ import m2
+ import ASN1
+ import AuthCookie
+@@ -47,4 +47,4 @@ import m2xmlrpclib
+ import threading
+ import util
+
+-__m2crypto.lib_init()
++_m2crypto.lib_init()
+diff --git a/M2Crypto/m2.py b/M2Crypto/m2.py
+index e4bb695..822143f 100644
+--- a/M2Crypto/m2.py
++++ b/M2Crypto/m2.py
+@@ -25,7 +25,7 @@ Portions created by Open Source Applications Foundation (OSAF) are
+ Copyright (C) 2004 OSAF. All Rights Reserved.
+ """
+
+-from __m2crypto import *
++from _m2crypto import *
+ lib_init()
+
+
+diff --git a/SWIG/_lib.i b/SWIG/_lib.i
+index 0d40698..6cc1a44 100644
+--- a/SWIG/_lib.i
++++ b/SWIG/_lib.i
+@@ -66,6 +66,7 @@ int ssl_verify_callback(int ok, X509_STORE_CTX *ctx) {
+ int cret;
+ int new_style_callback = 0, warning_raised_exception=0;
+ PyGILState_STATE gilstate;
++ PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
+
+ ssl = (SSL *)X509_STORE_CTX_get_app_data(ctx);
+
+@@ -151,6 +152,7 @@ int ssl_verify_callback(int ok, X509_STORE_CTX *ctx) {
+ void ssl_info_callback(const SSL *s, int where, int ret) {
+ PyObject *argv, *retval, *_SSL;
+ PyGILState_STATE gilstate;
++ PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
+
+ gilstate = PyGILState_Ensure();
+
+@@ -170,6 +172,7 @@ DH *ssl_set_tmp_dh_callback(SSL *ssl, int is_export, int keylength) {
+ PyObject *argv, *ret, *_ssl;
+ DH *dh;
+ PyGILState_STATE gilstate;
++ PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
+
+ gilstate = PyGILState_Ensure();
+
+@@ -193,6 +196,7 @@ RSA *ssl_set_tmp_rsa_callback(SSL *ssl, int is_export, int keylength) {
+ PyObject *argv, *ret, *_ssl;
+ RSA *rsa;
+ PyGILState_STATE gilstate;
++ PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
+
+ gilstate = PyGILState_Ensure();
+
+diff --git a/SWIG/_pkcs7.i b/SWIG/_pkcs7.i
+index 22d791a..20dfbaf 100644
+--- a/SWIG/_pkcs7.i
++++ b/SWIG/_pkcs7.i
+@@ -157,6 +157,7 @@ PyObject *smime_read_pkcs7(BIO *bio) {
+ BIO *bcont = NULL;
+ PKCS7 *p7;
+ PyObject *tuple, *_p7, *_BIO;
++ PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
+
+ if (BIO_method_type(bio) == BIO_TYPE_MEM) {
+ /* OpenSSL FAQ explains that this is needed for mem BIO to return EOF,
+diff --git a/setup.py b/setup.py
+index bac6f9f..f59dc18 100644
+--- a/setup.py
++++ b/setup.py
+@@ -19,6 +19,7 @@ from setuptools.command import build_ext
+
+ from distutils.core import Extension
+ from distutils.spawn import find_executable
++from distutils.file_util import copy_file
+
+
+ class _M2CryptoBuildExt(build_ext.build_ext):
+@@ -77,6 +78,15 @@ class _M2CryptoBuildExt(build_ext.build_ext):
+ [opensslIncludeDir, os.path.join(opensslIncludeDir, "openssl")]]
+ self.swig_opts.append('-includeall')
+ self.swig_opts.append('-modern')
++ self.swig_opts.append('-builtin')
++
++ # These two lines are a workaround for
++ # http://bugs.python.org/issue2624 , hard-coding that we are only
++ # building a single extension with a known path; a proper patch to
++ # distutils would be in the run phase, when extension name and path are
++ # known.
++ self.swig_opts.append('-outdir')
++ self.swig_opts.append(os.path.join(self.build_lib, 'M2Crypto'))
+
+ # Fedora does hat tricks.
+ if platform.linux_distribution()[0] in ['Fedora', 'CentOS']:
+@@ -98,6 +108,20 @@ class _M2CryptoBuildExt(build_ext.build_ext):
+
+ self.library_dirs += [os.path.join(self.openssl, opensslLibraryDir)]
+
++ def run(self):
++ '''Overloaded build_ext implementation to allow inplace=1 to work,
++ which is needed for (python setup.py test).'''
++ # This is another workaround for http://bugs.python.org/issue2624 + the
++ # corresponding lack of support in setuptools' test command. Note that
++ # just using self.inplace in finalize_options() above does not work
++ # because swig is not rerun if the __m2crypto.so extension exists.
++ # Again, hard-coding our extension name and location.
++ build_ext.build_ext.run(self)
++ if self.inplace:
++ copy_file(os.path.join(self.build_lib, 'M2Crypto', '_m2crypto.py'),
++ os.path.join('M2Crypto', '_m2crypto.py'),
++ verbose=self.verbose, dry_run=self.dry_run)
++
+ if sys.platform == 'darwin':
+ my_extra_compile_args = ["-Wno-deprecated-declarations"]
+ else:
+--
+1.9.1
+
diff --git a/external/meta-virtualization/recipes-devtools/python/python-m2crypto_0.22.3.bb b/external/meta-virtualization/recipes-devtools/python/python-m2crypto_0.22.3.bb
new file mode 100644
index 00000000..e151dcc4
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-m2crypto_0.22.3.bb
@@ -0,0 +1,63 @@
+HOMEPAGE = "http://chandlerproject.org/bin/view/Projects/MeTooCrypto"
+SUMMARY = "A Python crypto and SSL toolkit"
+DESCRIPTION = "\
+ M2Crypto is the most complete Python wrapper for OpenSSL featuring RSA, \
+ DSA, DH, EC, HMACs, message digests, symmetric ciphers (including \
+ AES); SSL functionality to implement clients and servers; HTTPS \
+ extensions to Python's httplib, urllib, and xmlrpclib; unforgeable \
+ HMAC'ing AuthCookies for web session management; FTP/TLS client and \
+ server; S/MIME; ZServerSSL: A HTTPS server for Zope and ZSmime: An \
+ S/MIME messenger for Zope. M2Crypto can also be used to provide SSL \
+ for Twisted. \
+ "
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=0ccca7097c1d29fa42e75e9c15c6ff2e"
+
+PYPI_PACKAGE = "M2Crypto"
+
+SRC_URI += " \
+ file://m2crypto-Fix-build-with-SWIG-3.0.5.patch \
+"
+
+SRC_URI[md5sum] = "573f21aaac7d5c9549798e72ffcefedd"
+SRC_URI[sha256sum] = "6071bfc817d94723e9b458a010d565365104f84aa73f7fe11919871f7562ff72"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit setuptools pypi
+
+DEPENDS += "openssl swig-native"
+
+DISTUTILS_BUILD_ARGS += "build_ext -I${STAGING_INCDIR}"
+
+inherit setuptools pypi
+
+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() {
+ sed -i -e 's/self.add_multiarch_paths.*$/# &/;' ${S}/setup.py
+ sed -i -e 's/opensslIncludeDir = .*$/opensslIncludeDir = os.getenv("STAGING_INCDIR")/;' ${S}/setup.py
+ sed -i -e 's/opensslLibraryDir = .*$/opensslLibraryDir = os.getenv("STAGING_LIBDIR")/;' ${S}/setup.py
+
+ 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
+}
+
diff --git a/external/meta-virtualization/recipes-devtools/python/python-newrelic_2.22.0.19.bb b/external/meta-virtualization/recipes-devtools/python/python-newrelic_2.22.0.19.bb
new file mode 100644
index 00000000..38918249
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-newrelic_2.22.0.19.bb
@@ -0,0 +1,26 @@
+HOMEPAGE = "http://www.newrelic.com"
+SUMMARY = "New Relic Python Agent"
+DESCRIPTION = "\
+ Python agent for the New Relic web application performance monitoring \
+ service. Check the release notes for what has changed in this version. \
+ "
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause & MIT & Python-2.0 & BSD-2-Clause & NewRelic"
+LIC_FILES_CHKSUM = "file://newrelic/LICENSE;md5=0f6cc160a8ed6759faa408a30b6ac978"
+
+PR = "r0"
+SRCNAME = "newrelic"
+
+SRC_URI = "https://pypi.python.org/packages/source/n/newrelic/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "f8c9bf996d040a11847d14682b290eff"
+SRC_URI[sha256sum] = "aa8869413c21aff441a77582df1e0fdc0f67342760eb7560d33ed3bbed7edf7b"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+FILES_${PN}-dbg += "\
+ ${PYTHON_SITEPACKAGES_DIR}/newrelic-${PV}/newrelic/*/.debug \
+ ${PYTHON_SITEPACKAGES_DIR}/newrelic-${PV}/newrelic/packages/*/.debug/ \
+ "
diff --git a/external/meta-virtualization/recipes-devtools/python/python-pyyaml_3.11.bb b/external/meta-virtualization/recipes-devtools/python/python-pyyaml_3.11.bb
new file mode 100644
index 00000000..ecb1719a
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-pyyaml_3.11.bb
@@ -0,0 +1,32 @@
+HOMEPAGE = "http://www.pyyaml.org"
+SUMMARY = "Python support for YAML"
+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. \
+ "
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6015f088759b10e0bc2bf64898d4ae17"
+
+SRCNAME = "PyYAML"
+SRC_URI = "http://pyyaml.org/download/pyyaml/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "f50e08ef0fe55178479d3a618efe21db"
+SRC_URI[sha256sum] = "c36c938a872e5ff494938b33b14aaa156cb439ec67548fcab3535bb78b0846e8"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit setuptools
+
+DEPENDS += "libyaml python-cython-native"
diff --git a/external/meta-virtualization/recipes-devtools/python/python-redis_2.10.3.bb b/external/meta-virtualization/recipes-devtools/python/python-redis_2.10.3.bb
new file mode 100644
index 00000000..2ef2b6b7
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-redis_2.10.3.bb
@@ -0,0 +1,22 @@
+HOMEPAGE = "https://pypi.python.org/pypi/redis/"
+SUMMARY = "Python client for Redis key-value store"
+DESCRIPTION = "The Python interface to the Redis key-value store."
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=51d9ad56299ab60ba7be65a621004f27"
+
+PR = "r0"
+SRCNAME = "redis"
+
+SRC_URI = "https://pypi.python.org/packages/source/r/redis/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "7619221ad0cbd124a5687458ea3f5289"
+SRC_URI[sha256sum] = "a4fb37b02860f6b1617f6469487471fd086dd2d38bbce640c2055862b9c4019c"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit setuptools
+
+RDEPENDS_${PN} = "redis"
diff --git a/external/meta-virtualization/recipes-devtools/python/python-sphinx_1.7.8.bb b/external/meta-virtualization/recipes-devtools/python/python-sphinx_1.7.8.bb
new file mode 100644
index 00000000..23fa3fe4
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-sphinx_1.7.8.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Python documentation generator"
+HOMEPAGE = "http://sphinx-doc.org/"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=89cbefcd0a80481e8b26a9a7d25be749"
+
+PYPI_PACKAGE = "Sphinx"
+
+SRC_URI[md5sum] = "7dfb075d8bd6a53b652bce1e4394c6a1"
+SRC_URI[sha256sum] = "a07050845cc9a2f4026a6035cc8ed795a5ce7be6528bbc82032385c10807dfe7"
+
+inherit setuptools pypi
diff --git a/external/meta-virtualization/recipes-devtools/python/python-sqlalchemy_1.0.16.bb b/external/meta-virtualization/recipes-devtools/python/python-sqlalchemy_1.0.16.bb
new file mode 100644
index 00000000..5eb60b5b
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-sqlalchemy_1.0.16.bb
@@ -0,0 +1,16 @@
+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=d7dba1721bc8ce05d421f7279cb87971"
+RDEPENDS_${PN} += "python-numbers"
+
+SRCNAME = "SQLAlchemy"
+SRC_URI = "https://pypi.io/packages/source/S/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "42c81726e7e145c206dac46964b4a167"
+SRC_URI[sha256sum] = "e2dfdaa0983931ac1b0522dd637f08a52cf3081746513ac79c50843277ebe463"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/external/meta-virtualization/recipes-devtools/python/python-sqlalchemy_1.1.5.bb b/external/meta-virtualization/recipes-devtools/python/python-sqlalchemy_1.1.5.bb
new file mode 100644
index 00000000..f22d2728
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-sqlalchemy_1.1.5.bb
@@ -0,0 +1,18 @@
+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=452f4b8adb0feba42e5be5f1fbfbf538"
+RDEPENDS_${PN} += "python-numbers"
+
+SRCNAME = "SQLAlchemy"
+SRC_URI = "https://pypi.python.org/packages/da/04/8048a5075d6e29235bbd6f1ea092a38dbe2630c670e73d4aa923a4e5521c/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "50685d97dca4b91945ae6309d03ab8c9"
+SRC_URI[sha256sum] = "68fb40049690e567ebda7b270176f5abf0d53d9fbd515fec4e43326f601119b6"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit setuptools
diff --git a/external/meta-virtualization/recipes-devtools/python/python-webob_1.8.2.bb b/external/meta-virtualization/recipes-devtools/python/python-webob_1.8.2.bb
new file mode 100644
index 00000000..6fdfbd5d
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-webob_1.8.2.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "WSGI request and response object"
+HOMEPAGE = "http://webob.org/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://docs/license.txt;md5=8ed3584bcc78c16da363747ccabc5af5"
+
+PYPI_PACKAGE = "WebOb"
+
+SRC_URI[md5sum] = "d04756e6683fedddba52eafbe9adf404"
+SRC_URI[sha256sum] = "1fe722f2ab857685fc96edec567dc40b1875b21219b3b348e58cd8c4d5ea7df3"
+
+inherit setuptools pypi
+
+RDEPENDS_${PN} += " \
+ python-sphinx \
+ python-nose \
+ "
+
diff --git a/external/meta-virtualization/recipes-devtools/python/python-websocket-client.inc b/external/meta-virtualization/recipes-devtools/python/python-websocket-client.inc
new file mode 100644
index 00000000..31778c68
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-websocket-client.inc
@@ -0,0 +1,11 @@
+SUMMARY = "WebSocket client for python. hybi13 is supported."
+HOMEPAGE = "https://github.com/websocket-client/websocket-client.git"
+LICENSE = "LGPL-3.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=18b09a20dd186af4fd60f1a08311628c"
+
+inherit pypi
+
+PYPI_PACKAGE = "websocket_client"
+
+SRC_URI[md5sum] = "73d87aa16a2212da448b30aca9c5bf3b"
+SRC_URI[sha256sum] = "15f585566e2ea7459136a632b9785aa081093064391878a448c382415e948d72"
diff --git a/external/meta-virtualization/recipes-devtools/python/python-websocket-client_0.44.0.bb b/external/meta-virtualization/recipes-devtools/python/python-websocket-client_0.44.0.bb
new file mode 100644
index 00000000..11eeb04a
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-websocket-client_0.44.0.bb
@@ -0,0 +1,2 @@
+require python-websocket-client.inc
+inherit setuptools \ No newline at end of file
diff --git a/external/meta-virtualization/recipes-devtools/python/python-werkzeug_0.10.4.bb b/external/meta-virtualization/recipes-devtools/python/python-werkzeug_0.10.4.bb
new file mode 100644
index 00000000..5f3e01fd
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python-werkzeug_0.10.4.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "The Swiss Army knife of Python web development"
+HOMEPAGE = "https://pypi.python.org/pypi/Werkzeug/"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a68f5361a2b2ca9fdf26b38aaecb6faa"
+
+PR = "r0"
+SRCNAME = "Werkzeug"
+
+SRC_URI = "https://pypi.python.org/packages/source/W/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "66a488e0ac50a9ec326fe020b3083450"
+SRC_URI[sha256sum] = "9d2771e4c89be127bc4bac056ab7ceaf0e0064c723d6b6e195739c3af4fd5c1d"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit setuptools
+
+RDEPENDS_${PN} += "python-io \
+ python-datetime \
+ python-email \
+ python-zlib \
+ python-pkgutil \
+ python-html \
+ python-shell \
+ python-pprint \
+ python-subprocess \
+ python-netserver"
+
+CLEANBROKEN = "1"
+
diff --git a/external/meta-virtualization/recipes-devtools/python/python3-cached-property_1.3.0.bb b/external/meta-virtualization/recipes-devtools/python/python3-cached-property_1.3.0.bb
new file mode 100644
index 00000000..f01aabd0
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python3-cached-property_1.3.0.bb
@@ -0,0 +1,9 @@
+SUMMARY = "A decorator for caching properties in classes."
+HOMEPAGE = "https://github.com/pydanny/cached-property"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=db7ff60c4e14f58534201242803d8abc"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "4a6039f7418007275505e355359396a8"
+SRC_URI[sha256sum] = "458e78b1c7286ece887d92c9bee829da85717994c5e3ddd253a40467f488bc81"
diff --git a/external/meta-virtualization/recipes-devtools/python/python3-colorama_0.3.9.bb b/external/meta-virtualization/recipes-devtools/python/python3-colorama_0.3.9.bb
new file mode 100644
index 00000000..458b0dbd
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python3-colorama_0.3.9.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Cross-platform colored terminal text."
+HOMEPAGE = "https://github.com/tartley/colorama"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=14d0b64047ed8f510b51ce0495995358"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "3a0e415259690f4dd7455c2683ee5850"
+SRC_URI[sha256sum] = "48eb22f4f8461b1df5734a074b57042430fb06e1d61bd1e11b078c0fe6d7a1f1"
diff --git a/external/meta-virtualization/recipes-devtools/python/python3-docker-pycreds_0.3.0.bb b/external/meta-virtualization/recipes-devtools/python/python3-docker-pycreds_0.3.0.bb
new file mode 100644
index 00000000..4d39f529
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python3-docker-pycreds_0.3.0.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Python bindings for the docker credentials store API"
+HOMEPAGE = "https://github.com/shin-/dockerpy-creds"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "2370ea3b62198b788a26231ab58844af"
+SRC_URI[sha256sum] = "8b0e956c8d206f832b06aa93a710ba2c3bcbacb5a314449c040b0b814355bbff"
diff --git a/external/meta-virtualization/recipes-devtools/python/python3-docker_3.4.0.bb b/external/meta-virtualization/recipes-devtools/python/python3-docker_3.4.0.bb
new file mode 100644
index 00000000..6e813025
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python3-docker_3.4.0.bb
@@ -0,0 +1,17 @@
+SUMMARY = "A Python library for the Docker Engine API."
+HOMEPAGE = "https://github.com/docker/docker-py"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=34f3846f940453127309b920eeb89660"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "02491d168c048cdb99cc20d0b352ea0f"
+SRC_URI[sha256sum] = "e9cc39e24905e67ba9e2df14c94488f5cf030fb72ae1c60de505ce5ea90503f7"
+
+DEPENDS += "${PYTHON_PN}-pip-native"
+
+RDEPENDS_${PN} += " \
+ python3-docker-pycreds \
+ python3-requests \
+ python3-websocket-client \
+"
diff --git a/external/meta-virtualization/recipes-devtools/python/python3-dockerpty_0.4.1.bb b/external/meta-virtualization/recipes-devtools/python/python3-dockerpty_0.4.1.bb
new file mode 100644
index 00000000..31a864a5
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python3-dockerpty_0.4.1.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Python library to use the pseudo-tty of a docker container"
+HOMEPAGE = "https://github.com/d11wtq/dockerpty"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "028bacb34536f3ee6a2ccd668c27e8e4"
+SRC_URI[sha256sum] = "69a9d69d573a0daa31bcd1c0774eeed5c15c295fe719c61aca550ed1393156ce"
diff --git a/external/meta-virtualization/recipes-devtools/python/python3-docopt_0.6.2.bb b/external/meta-virtualization/recipes-devtools/python/python3-docopt_0.6.2.bb
new file mode 100644
index 00000000..4637448a
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python3-docopt_0.6.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-docopt.inc
diff --git a/external/meta-virtualization/recipes-devtools/python/python3-texttable_0.9.1.bb b/external/meta-virtualization/recipes-devtools/python/python3-texttable_0.9.1.bb
new file mode 100644
index 00000000..25e402f1
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python3-texttable_0.9.1.bb
@@ -0,0 +1,9 @@
+SUMMARY = "module for creating simple ASCII tables"
+HOMEPAGE = "https://github.com/foutaise/texttable/"
+LICENSE = "LGPL-3.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "a712b5a5464d51c5fc43c64d9d2cd0de"
+SRC_URI[sha256sum] = "119041773ff03596b56392532f9315cb3a3116e404fd6f36e76a7dc088d95c79"
diff --git a/external/meta-virtualization/recipes-devtools/python/python3-websocket-client_0.44.0.bb b/external/meta-virtualization/recipes-devtools/python/python3-websocket-client_0.44.0.bb
new file mode 100644
index 00000000..473e31ff
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python3-websocket-client_0.44.0.bb
@@ -0,0 +1,2 @@
+require python-websocket-client.inc
+inherit setuptools3 \ No newline at end of file
diff --git a/external/meta-virtualization/recipes-devtools/python/python_2.%.bbappend b/external/meta-virtualization/recipes-devtools/python/python_2.%.bbappend
new file mode 100644
index 00000000..55301c7e
--- /dev/null
+++ b/external/meta-virtualization/recipes-devtools/python/python_2.%.bbappend
@@ -0,0 +1,8 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+DEPENDS += " ncurses"
+
+do_compile_prepend() {
+ export LIBRARY_PATH=${STAGING_DIR_TARGET}/lib
+}
+