summaryrefslogtreecommitdiffstats
path: root/meta-openembedded/meta-python
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openembedded/meta-python')
-rw-r--r--meta-openembedded/meta-python/COPYING.MIT17
-rw-r--r--meta-openembedded/meta-python/README53
-rw-r--r--meta-openembedded/meta-python/conf/layer.conf19
-rw-r--r--meta-openembedded/meta-python/licenses/LLNL16
-rw-r--r--meta-openembedded/meta-python/licenses/Unicode37
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/80oe.conf.in24
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone-avahi.service10
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone-init.in47
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone.service.in10
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/gateone/gateone_git.bb87
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python-gsocketpool.inc12
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python-gsocketpool_0.1.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python3-gsocketpool_0.1.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python-mprpc.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python-mprpc_0.1.16.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python3-mprpc_0.1.16.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python-pyconnman_0.1.0.bb12
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/python-pyro4/python-pyro4_4.63.bb18
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/python-pytun/python-pytun.inc10
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/python-pytun/python-pytun_2.2.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/python-pytun/python3-pytun_2.2.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/python-thrift/python-thrift_0.11.0.bb15
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/python-txws/python-txws_0.9.1.bb15
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python-0.15.19/parallel_make.patch43
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python-0.15.19/remove_duplicate_install.patch26
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python-0.15.19/telepathy-python_fix_for_automake_1.12.patch26
-rw-r--r--meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python_0.15.19.bb32
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/pyrtm_0.4.2.bb36
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-alembic.inc15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-alembic_0.9.8.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-anyjson.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-anyjson_0.3.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-appdirs.inc8
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-appdirs_1.4.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto.inc23
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto_0.24.0.bb7
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-astroid.inc31
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-astroid_1.6.3.bb10
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-attr.inc9
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-attr_0.3.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-attrs.inc14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-attrs_17.4.0.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-automat.inc24
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-automat/0001-setup.py-remove-the-dependency-on-m2r.patch49
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-automat_0.6.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-aws-iot-device-sdk-python.inc41
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-aws-iot-device-sdk-python_1.3.1.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-babel.inc25
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-babel_2.5.3.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-backports-abc_0.4.bb18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-backports-functools-lru-cache_1.4.bb19
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-backports-ssl_3.5.0.1.bb18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-bcrypt.inc17
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-bcrypt_3.1.4.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4.inc17
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4_4.6.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-behave_1.2.6.bb10
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-bitarray.inc11
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-bitarray_0.8.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-blinker.inc7
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-blinker_1.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-can.inc17
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-can_2.1.0.bb8
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-cassandra-driver.inc33
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-certifi.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-certifi_2018.1.18.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-cffi.inc16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-cffi_1.11.5.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-chardet.inc23
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-chardet_3.0.4.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-cheetah_2.4.4.bb16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-click.inc21
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-click_6.7.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.8.1.bb21
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-configparser.inc11
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-configparser_3.5.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-constantly.inc11
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-constantly_15.1.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors.inc18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors_2.1.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-cryptography.inc57
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/run-ptest2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-cryptography_2.1.4.bb22
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-cython.inc40
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-cython_0.28.2.bb10
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-daemon/0001-Workaround-for-issue-2-1.patch31
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-daemon_2.1.2.bb27
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-daemonize_2.4.7.bb16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-dateutil.inc21
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-dateutil_2.7.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-dbus_1.2.6.bb32
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock/0001-Add-functionality-to-add-own-objects-to-internal-obj.patch52
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock/0002-Add-possibility-to-import-templates-from-packages.patch27
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock_0.16.7.bb25
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-decorator.inc19
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-decorator_4.3.0.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-django-south.inc17
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-django-south_1.0.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-django.inc32
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-django_1.11.10.bb8
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-dnspython.inc20
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-dnspython_1.15.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-docutils_0.14rc2.bb18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-dominate.inc11
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-dominate_2.3.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-editor.inc9
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-editor_1.0.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-enum34_1.1.6.bb11
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-epydoc_3.0.1.bb19
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-evdev.inc21
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-evdev_0.7.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter.inc16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter_0.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-feedparser_5.2.1.bb17
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-babel.inc16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-babel_0.11.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-bcrypt_0.7.1.bb12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-bootstrap.inc14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-bootstrap_3.3.7.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-login.inc14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-login_0.4.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-mail.inc12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-mail_0.9.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-migrate.inc14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-migrate_2.1.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-nav.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-nav_0.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-navigation_0.2.0.bb15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo_0.5.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-restful.inc16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-restful_0.3.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-script.inc12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-script_2.0.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy.inc10
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy_2.3.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-uploads.inc12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-uploads_0.2.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-user.inc17
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-user_0.6.19.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf.inc15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf_0.14.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic.inc16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic/remove-pip-requires.patch7
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic_0.0.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask.inc16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-flask_0.12.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-funcsigs_1.0.2.bb18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-functools32_3.2.3-2.bb10
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-future_0.16.0.bb13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-gdata_2.0.18.bb21
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-gevent.inc33
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-gevent/libev-conf.patch26
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-gevent_1.2.2.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-greenlet.inc9
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-greenlet_0.4.13.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-grpcio-tools_1.8.4.bb17
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch33
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-grpcio_1.8.4.bb25
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-html5lib.inc15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-html5lib_1.0.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-humanize.inc14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-humanize_0.5.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-hyperlink.inc17
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-hyperlink_17.3.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-idna.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-idna_2.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch55
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch65
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-imaging/fix-freetype-includes.patch30
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-imaging/python-imaging-CVE-2016-2533.patch38
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-imaging/remove-host-libdir.patch25
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-imaging_1.1.7.bb48
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-incremental.inc20
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-incremental_17.5.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-ipaddress_1.0.19.bb13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-iso8601.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-iso8601_0.1.12.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-isort.inc15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-isort_4.3.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous.inc14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous_0.24.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-javaobj-py3.inc15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-javaobj-py3_0.2.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-jinja2.inc15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-jinja2_2.10.bb8
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-jsonpatch.inc12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-jsonpatch_1.23.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer_2.0.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc24
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema_2.6.0.bb12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-lazy-object-proxy.inc10
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-lazy-object-proxy_1.3.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-lockfile_0.12.2.bb19
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-lxml.inc43
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-lxml_4.2.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/0001-setup.py-link-in-sysroot-not-in-host-directories.patch39
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/cross-compile-platform.patch30
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/m2crypto-0.26.4-gcc_macros.patch24
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto_0.26.4.bb50
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-mako.inc21
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-mako_1.0.7.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe.inc12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe_1.0.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib/fix_setupext.patch110
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib_2.0.2.bb18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-mccabe/0001-python-mccabe-remove-unnecessary-setup_requires-pyte.patch33
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-mccabe_0.4.0.bb18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-mock_2.0.0.bb22
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-monotonic_1.4.bb10
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-msgpack.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-msgpack_0.5.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-ndg-httpsclient.inc25
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-ndg-httpsclient_0.4.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-netaddr.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-netaddr_0.7.19.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-networkx_2.1.bb12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-numeric/0001-it-tries-to-define-this-function-differently-than-it.patch30
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-numeric_24.2.bb16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-oauthlib.inc25
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-oauthlib_2.0.6.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-paho-mqtt.inc21
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-paho-mqtt_1.3.1.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pam_1.8.2.bb15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pandas.inc23
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pandas_0.22.0.bb7
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-parse-type_0.4.2.bb11
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-parse_1.8.2.bb13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-passlib.inc19
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-passlib_1.7.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-paste_2.0.3.bb14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pbr_3.1.1.bb16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pep8_1.7.1.bb14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pexpect.inc21
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pexpect_4.5.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pip_9.0.3.bb14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc9
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pluggy_0.6.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-ply.inc18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-ply_3.11.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pretend.inc9
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pretend_1.0.9.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-prettytable_0.7.2.bb25
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-progress.inc14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-progress_1.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-prompt-toolkit.inc18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-prompt-toolkit_1.0.15.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-protobuf.inc25
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-protobuf_3.5.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-psutil.inc20
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-psutil_5.4.3.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-ptyprocess.inc20
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-ptyprocess_0.5.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-py.inc9
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-py_1.5.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyalsaaudio.inc11
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyalsaaudio_0.8.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1-modules.inc16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1-modules_0.2.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1.inc16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1_0.4.2.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pybind11.inc7
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pybind11_2.2.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pybluez.inc21
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pybluez_0.22.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pycparser.inc16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pycparser_2.18.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto.inc21
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto/CVE-2013-7459.patch98
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto/cross-compiling.patch23
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto_2.6.1.bb9
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome.inc29
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome_3.4.11.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pydbus.inc11
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pydbus_0.6.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyexpect.inc11
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyexpect_1.0.17.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyfirmata.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyfirmata_1.0.3.bb3
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyflakes_1.6.0.bb14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0001-reflect-2.1-reporting-for-key-imports.patch90
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0002-passphrase_cb-is-deprecated.patch52
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0003-handle-generic-error-when-no-passphrase-callback-pre.patch30
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/run-ptest3
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme_0.3.bb26
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyhamcrest_1.9.0.bb10
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyiface.inc11
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyiface_0.0.5.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyinotify.inc15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyinotify_0.9.6.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyjks.inc22
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyjks_17.1.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyjwt.inc17
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyjwt_1.6.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pylint.inc38
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pylint_1.8.3.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pymisp.inc15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pymisp_2.4.89.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pymongo.inc29
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pymongo_3.6.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pynetlinux.inc11
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pynetlinux_1.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl.inc23
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl_17.5.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing.inc21
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing_2.2.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyperclip.inc12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyperclip_1.6.0.bb7
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyrex-native_0.9.9.bb5
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyrex_0.9.9.bb22
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyroute2.inc25
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyroute2_0.4.21.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyserial.inc42
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyserial_3.4.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pysmi_0.2.2.bb16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pysnmp_4.3.5.bb25
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pysocks.inc18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pysocks_1.6.8.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pysqlite.inc18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pysqlite_2.8.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pystache.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pystache_0.5.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pytest-runner.inc16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pytest-runner_3.0.bb5
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pytest.inc25
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pytest/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch32
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pytest/pytest_version_fix.patch51
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pytest_3.4.2.bb8
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pytz.inc20
-rwxr-xr-xmeta-openembedded/meta-python/recipes-devtools/python/python-pytz_2018.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyudev.inc18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyudev_0.21.0.bb9
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyusb.inc10
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyusb_1.0.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml.inc18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_3.12.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq/club-rpath-out.patch26
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq_14.7.0.bb24
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-redis.inc12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-redis_2.10.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-requests.inc24
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-requests_2.18.4.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-rfc3987.inc8
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-rfc3987_1.3.7.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-robotframework.inc26
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-robotframework_3.0.2.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-scrypt.inc16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-scrypt/0001-py-scrypt-remove-the-hard-coded-include-paths.patch26
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-scrypt_0.8.6.bb3
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-sdnotify.inc16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-sdnotify_0.3.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-selectors34_1.2.bb12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-serpent.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-serpent_1.24.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-setuptools-scm.inc14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-setuptools-scm_1.15.7.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-simplejson.inc23
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-simplejson_3.13.2.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-singledispatch_3.4.0.3.bb12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-six.inc19
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-six_1.11.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-slip-dbus_0.6.1.bb27
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-smbus.inc12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-smbus_4.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-snakefood_1.4.bb51
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-snimpy_0.8.12.bb20
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-sparts_0.7.3.bb22
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-speaklater.inc9
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-speaklater_1.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-spidev.inc17
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy.inc20
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy_1.1.17.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-strict-rfc3339.inc8
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-strict-rfc3339_0.7.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-subprocess32_3.2.7.bb15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-systemd.inc18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-systemd/0001-Provide-implementation-of-strndupa-for-musl.patch42
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-systemd_234.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-tornado-redis_2.4.18.bb18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-tornado.inc25
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-tornado_4.5.3.bb8
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc247
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-twisted_17.9.0.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-twofish.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-twofish_0.3.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-typing.inc9
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-typing_3.6.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-ujson.inc15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-ujson_1.35.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-unidiff.inc14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-unidiff_0.5.5.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-urllib3.inc19
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-urllib3_1.22.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-vcversioner_2.16.0.0.bb25
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-visitor.inc6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-visitor_0.1.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-vobject_0.9.5.bb15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-wcwidth.inc8
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-wcwidth_0.1.7.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-webcolors.inc12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-webcolors_1.8.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-webdav_0.1.2.bb19
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-webencodings.inc13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-webencodings_0.5.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-werkzeug.inc47
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-werkzeug_0.14.1.bb7
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-whoosh.inc24
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-whoosh_2.7.4.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-wrapt.inc15
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-wrapt_1.10.11.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-wtforms.inc16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-wtforms_2.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-xlrd.inc12
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-xlrd_1.1.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-xstatic-font-awesome.inc17
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-xstatic-font-awesome_4.7.0.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-xstatic.inc14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-xstatic_1.0.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-yappi.inc16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-yappi_0.98.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-zopeinterface.inc22
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python-zopeinterface_4.4.3.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_0.9.8.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson_0.3.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-appdirs_1.4.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-asn1crypto_0.24.0.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_1.6.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-attr_0.3.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-attrs_17.4.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-automat_0.6.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python_1.3.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-babel_2.5.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-bcrypt_3.1.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-beautifulsoup4_4.6.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_0.8.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-blinker_1.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-can_2.1.0.bb7
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.13.0.bb8
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2018.1.18.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.11.5.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-chardet_3.0.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-click_6.7.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-configparser_3.5.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-constantly_15.1.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_4.4.2.bb10
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_2.1.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/run-ptest2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_2.1.4.bb8
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-cython_0.28.2.bb18
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.7.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-decorator_4.3.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-django-south_1.0.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-django_1.11.10.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_1.15.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.3.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-editor_1.0.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-evdev_0.7.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-feedformatter_0.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask-babel_0.11.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask-bootstrap_3.3.7.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask-login_0.4.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask-mail_0.9.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_2.1.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask-nav_0.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask-pymongo_0.5.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restful_0.3.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask-script_2.0.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.3.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask-uploads_0.2.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask-user_0.6.19.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_0.14.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask-xstatic_0.0.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-flask_0.12.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-gevent_1.2.2.bb3
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_0.4.13.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-html5lib_1.0.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_0.5.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-hyperlink_17.3.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-idna_2.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-incremental_17.5.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-iso8601_0.1.12.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-isort_4.3.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_0.24.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-javaobj-py3_0.2.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-jinja2_2.10.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpatch_1.23.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpointer_2.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_2.6.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.38.bb29
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-lazy-object-proxy_1.3.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.2.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-markupsafe_1.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-msgpack_0.5.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_3.3.2.bb9
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-ndg-httpsclient_0.4.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-netaddr_0.7.19.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.3.3.bb14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-oauthlib_2.0.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-ordered-set_2.0.2.bb10
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_1.3.1.bb3
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_0.22.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-passlib_1.7.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pexpect_4.5.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pid/0001-remove-requirement-of-nose.patch29
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pid_2.2.0.bb14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.6.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-ply_3.11.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-prctl/0001-support-cross-complication.patch61
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.6.1.bb22
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pretend_1.0.9.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-progress_1.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_1.0.15.bb7
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.5.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-psutil_5.4.3.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-ptyprocess_0.5.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-py_1.5.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyalsaaudio_0.8.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules_0.2.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1_0.4.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11_2.2.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.22.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pycparser_2.18.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pycrypto_2.6.1.bb9
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pycryptodome_3.4.11.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus_0.6.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyexpect_1.0.17.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyfirmata_1.0.3.bb3
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyiface_0.0.5.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyjks_17.1.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyjwt_1.6.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_1.8.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.89.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_3.6.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pynetlinux_1.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_17.5.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyparsing_2.2.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyperclip_1.6.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.4.21.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial_3.4.bb7
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pysocks_1.6.8.bb6
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-runner_3.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_3.4.2.bb2
-rwxr-xr-xmeta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2018.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyudev_0.21.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.0.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_3.12.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-redis_2.10.6.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-requests-file_1.4.2.bb14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-requests-ftp_0.3.1.bb14
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.18.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-rfc3987_1.3.7.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_3.0.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-scapy_0.23.bb13
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.6.bb3
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-sdnotify_0.3.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-serpent_1.24.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-setuptools-scm_1.15.7.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-simplejson_3.13.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-smbus_4.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-speaklater_1.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-spidev_3.2.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.1.17.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-strict-rfc3339_0.7.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_4.5.3.bb7
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_17.9.0.bb67
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-twofish_0.3.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_1.35.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-unidiff_0.5.5.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.22.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb20
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-visitor_0.1.3.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-wcwidth_0.1.7.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-webcolors_1.8.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-webencodings_0.5.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_4.0.1.bb16
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_0.14.1.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-whoosh_2.7.4.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.10.11.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_2.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_1.1.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic-font-awesome_4.7.0.0.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic_1.0.1.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_0.98.bb2
-rw-r--r--meta-openembedded/meta-python/recipes-devtools/python/python3-zopeinterface_4.4.3.bb4
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0001-comment-out-selinux.patch70
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0002-run_program-support-timeout.patch102
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0003-support-infinit-timeout.patch66
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0004-Mount-var-volatile-during-install.patch59
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0005-update-fstab-by-appending.patch32
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0006-fix-new.roots-object-is-not-iterable.patch28
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0007-fix-incorrect-timeout-while-system-time-changed.patch48
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0008-tweak-btrfs-packages.patch45
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0009-invoking-mount-with-infinite-timeout.patch31
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0010-use-oe-variable-to-replace-hardcoded-dir.patch34
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0011-invoking-fsck-with-infinite-timeout.patch31
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0012-invoking-mkfs-with-infinite-timeout.patch31
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0013-Revert-Adapt-to-logging-module-name-change.patch30
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0014-invoking-dd-with-infinite-timeout.patch31
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_2.2.0.bb47
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.1.5.bb27
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-cson/python-cson_git.bb21
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh_0.46.bb17
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-pyephem/python-pyephem_3.7.6.0.bb17
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0001-support-authentication-for-kickstart.patch151
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0002-pykickstart-parser.py-add-lock-for-readKickstart-and.patch76
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0003-comment-out-sections-shutdown-and-environment-in-gen.patch48
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0004-load.py-retry-to-invoke-request-with-timeout.patch82
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0005-tweak-shebang-to-python3.patch25
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_2.35.bb24
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-pyparted/python-pyparted.inc22
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-pyparted/python-pyparted_3.11.1.bb10
-rw-r--r--meta-openembedded/meta-python/recipes-extended/python-pyparted/python3-pyparted_3.11.1.bb10
-rw-r--r--meta-openembedded/meta-python/recipes-extended/pywbem/pywbem_0.8.0.bb36
617 files changed, 8342 insertions, 0 deletions
diff --git a/meta-openembedded/meta-python/COPYING.MIT b/meta-openembedded/meta-python/COPYING.MIT
new file mode 100644
index 000000000..fb950dc69
--- /dev/null
+++ b/meta-openembedded/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-openembedded/meta-python/README b/meta-openembedded/meta-python/README
new file mode 100644
index 000000000..0566e4992
--- /dev/null
+++ b/meta-openembedded/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
+-------------------------
+
+Layer Maintainers:
+ Tim "moto-timo" Orling <TicoTimo@gmail.com>
+ Derek Straka <derek@asterius.io>
+
diff --git a/meta-openembedded/meta-python/conf/layer.conf b/meta-openembedded/meta-python/conf/layer.conf
new file mode 100644
index 000000000..7089071fa
--- /dev/null
+++ b/meta-openembedded/meta-python/conf/layer.conf
@@ -0,0 +1,19 @@
+# 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"
+
+LAYERSERIES_COMPAT_meta-python = "sumo"
+
+LICENSE_PATH += "${LAYERDIR}/licenses"
diff --git a/meta-openembedded/meta-python/licenses/LLNL b/meta-openembedded/meta-python/licenses/LLNL
new file mode 100644
index 000000000..1127d56ce
--- /dev/null
+++ b/meta-openembedded/meta-python/licenses/LLNL
@@ -0,0 +1,16 @@
+Legal Notice
+
+*** Legal Notice for all LLNL-contributed files ***
+
+Copyright (c) 1996. The Regents of the University of California. All rights reserved.
+
+Permission to use, copy, modify, and distribute this software for any purpose without
+fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software.
+
+This work was produced at the University of California, Lawrence Livermore National
+Laboratory under contract no. W-7405-ENG-48 between the U.S. Department of Energy and The Regents of the University of California for the operation of UC LLNL.
+
+DISCLAIMER
+
+This software was prepared as an account of work sponsored by an agency of the United States Government. Neither the United States Government nor the University of California nor any of their employees, makes any warranty, express or implied, or assumes any liability or responsibility for the accuracy, completeness, or usefulness of any
+information, apparatus, product, or process disclosed, or represents that its use would not infringe privately-owned rights. Reference herein to any specific commercial products, process, or service by trade name, trademark, manufacturer, or otherwise, does not necessarily constitute or imply its endorsement, recommendation, or favoring by the United States Government or the University of California. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or the University of California, and shall not be used for advertising or product endorsement purposes.
diff --git a/meta-openembedded/meta-python/licenses/Unicode b/meta-openembedded/meta-python/licenses/Unicode
new file mode 100644
index 000000000..5d2cc4a62
--- /dev/null
+++ b/meta-openembedded/meta-python/licenses/Unicode
@@ -0,0 +1,37 @@
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright 1991-2015 Unicode, Inc. All rights reserved.
+Distributed under the Terms of Use in
+http://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Unicode data files and any associated documentation
+(the "Data Files") or Unicode software and any associated documentation
+(the "Software") to deal in the Data Files or Software
+without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files
+or Software are furnished to do so, provided that
+(a) this copyright and permission notice appear with all copies
+of the Data Files or Software,
+(b) this copyright and permission notice appear in associated
+documentation, and
+(c) there is clear notice in each modified Data File or in the Software
+as well as in the documentation associated with the Data File(s) or
+Software that the data or software has been modified.
+
+THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in these Data Files or Software without prior
+written authorization of the copyright holder.
diff --git a/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/80oe.conf.in b/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/80oe.conf.in
new file mode 100644
index 000000000..4503da422
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/80oe.conf.in
@@ -0,0 +1,24 @@
+// Some custom Gate One settings for OpenEmbedded
+{
+ "*": {
+ "gateone": { // These settings apply to all of Gate One
+ "log_file_prefix": "@localstate@/log/gateone.log", // default would be /var/log/gateone/gateone.log
+ "log_file_max_size": 5242880, // 5 megabyte logs for OE by default (default would normally be 100Mb)
+ "log_file_num_backups": 2, // Default is normally 10
+ "origins": ["*"], // Every device has a unique origin
+ "logging": "info",
+ "pid_file": "/run/gateone.pid",
+ "session_dir": "/tmp/gateone",
+ "user_dir": "@localstate@/lib/gateone/users"
+ },
+ "terminal": {
+ // Disabling session logging for embedded devices is a good idea (limited/slow storage)
+ "session_logging": false,
+ "syslog_session_logging": false
+// "commands": {
+// // For some reason this doesn't work (never asks for the password)
+// "login": "setsid /bin/login" // Normally this would emulate logging into the host console
+// }
+ }
+ }
+}
diff --git a/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone-avahi.service b/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone-avahi.service
new file mode 100644
index 000000000..0f613d18e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone-avahi.service
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
+<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
+
+<service-group>
+ <name replace-wildcards="yes">GateOne on %h</name>
+ <service>
+ <type>_https._tcp</type>
+ <port>443</port>
+ </service>
+</service-group>
diff --git a/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone-init.in b/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone-init.in
new file mode 100644
index 000000000..86d655c94
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone-init.in
@@ -0,0 +1,47 @@
+#!/bin/sh -e
+### BEGIN INIT INFO
+# Provides: gateone
+# Required-Start: networking
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Gateone HTML5 ssh client
+# Description: Gateone HTML5 terminal emulator and SSH client.
+### END INIT INFO
+
+. /etc/init.d/functions
+
+NAME=gateone
+DAEMON=@bindir@/gateone
+PIDFILE=/run/gateone.pid
+WORKDIR=@localstate@/lib/gateone
+
+do_start() {
+ cd $WORKDIR
+ @bindir@/python $DAEMON > /dev/null 2>&1 &
+ cd $OLDPWD
+}
+
+do_stop() {
+ kill -TERM `cat $PIDFILE`
+}
+
+case "$1" in
+ start)
+ echo "Starting gateone"
+ do_start
+ ;;
+ stop)
+ echo "Stopping gateone"
+ do_stop
+ ;;
+ restart|force-reload)
+ echo "Restart gateone"
+ do_stop
+ sleep 1
+ do_start
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
diff --git a/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone.service.in b/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone.service.in
new file mode 100644
index 000000000..44667275a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone.service.in
@@ -0,0 +1,10 @@
+[Unit]
+Description=GateOne daemon
+ConditionPathExists=|@localstate@/lib/gateone
+
+[Service]
+WorkingDirectory=@localstate@/lib/gateone
+ExecStart=@bindir@/python @bindir@/gateone
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone_git.bb b/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone_git.bb
new file mode 100644
index 000000000..4577873de
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone_git.bb
@@ -0,0 +1,87 @@
+SUMMARY = "HTML5 (plugin-free) web-based terminal emulator and SSH client"
+LICENSE = "AGPL-3.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=834cbc6995db88433db17cdf8953a428"
+HOMEPAGE = "http://liftoffsoftware.com/Products/GateOne"
+
+PV = "1.2+git${SRCPV}"
+SRCREV = "f7a9be46cb90f57459ebd363d24702de0e651034"
+SRC_URI = "git://github.com/liftoff/GateOne.git;branch=master \
+ file://gateone-avahi.service \
+ file://80oe.conf.in \
+ file://gateone.service.in \
+ file://gateone-init.in \
+"
+
+S = "${WORKDIR}/git"
+
+inherit setuptools python-dir systemd update-rc.d
+
+DISTUTILS_INSTALL_ARGS = "--root=${D} \
+ --prefix=${prefix} \
+ --install-lib=${PYTHON_SITEPACKAGES_DIR} \
+ --install-data=${PYTHON_SITEPACKAGES_DIR} \
+ --install-scripts=${bindir} \
+ --skip_init_scripts"
+
+do_install_append() {
+
+ # fix up hardcoded paths
+ for file in gateone.service gateone-init 80oe.conf; do
+ sed -e s:@bindir@:${bindir}:g \
+ -e s:@localstate@:${localstatedir}:g \
+ < ${WORKDIR}/$file.in \
+ > ${WORKDIR}/$file
+ done
+
+ install -d ${D}${systemd_unitdir}/system
+ install -m 0644 ${WORKDIR}/gateone.service ${D}${systemd_unitdir}/system
+
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/gateone-init ${D}${sysconfdir}/init.d/gateone
+
+ install -m 0755 -d ${D}${sysconfdir}/avahi/services/
+ install -m 0644 ${WORKDIR}/gateone-avahi.service ${D}${sysconfdir}/avahi/services/
+
+ install -m 0755 -d ${D}${sysconfdir}/gateone/conf.d/
+ install -m 0644 ${WORKDIR}/80oe.conf ${D}${sysconfdir}/gateone/conf.d/80oe.conf
+
+ install -d ${D}${localstatedir}/lib/gateone
+}
+
+FILES_${PN} = "${localstatedir}/lib ${bindir} ${base_libdir} ${sysconfdir} ${PYTHON_SITEPACKAGES_DIR}"
+RDEPENDS_${PN} = "mime-support \
+ openssh-ssh \
+ python-compression \
+ python-contextlib \
+ python-crypt \
+ python-datetime \
+ python-email \
+ python-fcntl \
+ python-futures \
+ python-html \
+ python-imaging \
+ python-io \
+ python-json \
+ python-logging \
+ python-misc \
+ python-multiprocessing \
+ python-netclient \
+ python-pkgutil \
+ python-pyopenssl \
+ python-re \
+ python-setuptools \
+ python-shell \
+ python-simplejson \
+ python-subprocess \
+ python-syslog \
+ python-terminal \
+ python-textutils \
+ python-tornado \
+ python-unixadmin \
+ python-xml \
+ python-html5lib \
+ bash \
+"
+
+SYSTEMD_SERVICE_${PN} = "gateone.service"
+INITSCRIPT_NAME = "gateone"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python-gsocketpool.inc b/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python-gsocketpool.inc
new file mode 100644
index 000000000..11971dc4a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python-gsocketpool.inc
@@ -0,0 +1,12 @@
+SUMMARY = "A simple connection pool for gevent"
+DESCRIPTION = "creates a pool of connections that can be used with gevent"
+HOMEPAGE = "https://github.com/studio-ousia/gsocketpool"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4ba825394aec026b5f94edca44426859"
+DEPENDS += "${PYTHON_PN}-gevent"
+RDEPENDS_${PN} += "${PYTHON_PN}-gevent"
+
+SRC_URI[md5sum] = "49f5f292ef1b60944ae92ca426a5e550"
+SRC_URI[sha256sum] = "f2e2749aceadce6b27ca52e2b0a64af99797746a8681e1a2963f72007c14cb14"
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python-gsocketpool_0.1.6.bb b/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python-gsocketpool_0.1.6.bb
new file mode 100644
index 000000000..e96ad1ca1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python-gsocketpool_0.1.6.bb
@@ -0,0 +1,2 @@
+require python-gsocketpool.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python3-gsocketpool_0.1.6.bb b/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python3-gsocketpool_0.1.6.bb
new file mode 100644
index 000000000..883621e21
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python3-gsocketpool_0.1.6.bb
@@ -0,0 +1,2 @@
+require python-gsocketpool.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python-mprpc.inc b/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python-mprpc.inc
new file mode 100644
index 000000000..05fbae48b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python-mprpc.inc
@@ -0,0 +1,13 @@
+SUMMARY = "A gevent based messagpack rpc library"
+DESCRIPTION = "mprpc is a fast implementation of the messagepack rpc protocol for python. \
+It is based on gevent for handling connections and enabling concurrent connections."
+HOMEPAGE = "https://github.com/studio-ousia/mprpc"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4ba825394aec026b5f94edca44426859"
+DEPENDS += "${PYTHON_PN}-gevent"
+RDEPENDS_${PN} += "${PYTHON_PN}-gevent ${PYTHON_PN}-msgpack ${PYTHON_PN}-gsocketpool"
+
+SRC_URI[md5sum] = "acde1f346411997d76ab89790a356823"
+SRC_URI[sha256sum] = "e8ddd47e7a2fb2d3b203fcc522443ee5be56c8f7e2c6d915c047445951cef1fb"
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python-mprpc_0.1.16.bb b/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python-mprpc_0.1.16.bb
new file mode 100644
index 000000000..6b2ea2193
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python-mprpc_0.1.16.bb
@@ -0,0 +1,2 @@
+require python-mprpc.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python3-mprpc_0.1.16.bb b/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python3-mprpc_0.1.16.bb
new file mode 100644
index 000000000..837d604ed
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python3-mprpc_0.1.16.bb
@@ -0,0 +1,2 @@
+require python-mprpc.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python-pyconnman_0.1.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python-pyconnman_0.1.0.bb
new file mode 100644
index 000000000..77b5e4dcf
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python-pyconnman_0.1.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Python-based Network Connectivity Management"
+HOMEPAGE = "https://pypi.python.org/pypi/pyconnman/"
+LICENSE = "Apache-2.0"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI[md5sum] = "b7fa82034b1c0e1fb1b518ffe3bb4fc0"
+SRC_URI[sha256sum] = "46c64c0692063fd0c9fb0216d49f7884bec9fa9760d8473db4b1e2f8162fab4a"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "connman python-dbus python-pprint"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-pyro4/python-pyro4_4.63.bb b/meta-openembedded/meta-python/recipes-connectivity/python-pyro4/python-pyro4_4.63.bb
new file mode 100644
index 000000000..6f683e3e7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-pyro4/python-pyro4_4.63.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Python Remote Objects"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=378acef375e17a3bff03bd0f78c53220"
+
+SRC_URI[md5sum] = "e1d772b67bf7c6f75fa3174bc95c8839"
+SRC_URI[sha256sum] = "67d2b34156619ba37e92100af95aade8129dd2b7327eb05821d43887451f7d7b"
+
+PYPI_PACKAGE = "Pyro4"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-selectors34 \
+ ${PYTHON_PN}-serpent \
+ ${PYTHON_PN}-threading \
+ ${PYTHON_PN}-zlib \
+ "
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-pytun/python-pytun.inc b/meta-openembedded/meta-python/recipes-connectivity/python-pytun/python-pytun.inc
new file mode 100644
index 000000000..79a8bfb21
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-pytun/python-pytun.inc
@@ -0,0 +1,10 @@
+SUMMARY = "Python TUN/TAP tunnel module"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=13f7629e8e4989b66b4a913ab05a91de"
+
+SRC_URI[md5sum] = "5b35b1cf80a02cca7ec72eb95d6b0192"
+SRC_URI[sha256sum] = "07595dadf85f5176eb08c8d4d9ba5b862a180e96633f670f91437c47a1bead0d"
+
+PYPI_PACKAGE = "python-pytun"
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-pytun/python-pytun_2.2.1.bb b/meta-openembedded/meta-python/recipes-connectivity/python-pytun/python-pytun_2.2.1.bb
new file mode 100644
index 000000000..3fc587f3a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-pytun/python-pytun_2.2.1.bb
@@ -0,0 +1,2 @@
+require python-pytun.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-pytun/python3-pytun_2.2.1.bb b/meta-openembedded/meta-python/recipes-connectivity/python-pytun/python3-pytun_2.2.1.bb
new file mode 100644
index 000000000..938d9d739
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-pytun/python3-pytun_2.2.1.bb
@@ -0,0 +1,2 @@
+require python-pytun.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python-thrift_0.11.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python-thrift_0.11.0.bb
new file mode 100644
index 000000000..8047ec77b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python-thrift_0.11.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Python bindings for the Apache Thrift RPC system"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=e3641ae1a26cf5c12a3a71bd3030ab0e"
+
+SRC_URI[md5sum] = "36165d5c80e6b101dbe9fcf7ef524d51"
+SRC_URI[sha256sum] = "7d59ac4fdcb2c58037ebd4a9da5f9a49e3e034bf75b3f26d9fe48ba3d8806e6b"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-six \
+ ${PYTHON_PN}-stringold \
+ ${PYTHON_PN}-threading \
+"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-txws/python-txws_0.9.1.bb b/meta-openembedded/meta-python/recipes-connectivity/python-txws/python-txws_0.9.1.bb
new file mode 100644
index 000000000..0b2ac118a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-txws/python-txws_0.9.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Twisted Web Sockets"
+HOMEPAGE = "https://github.com/MostAwesomeDude/txWS"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=76699830db7fa9e897f6a1ad05f98ec8"
+
+DEPENDS = "python-twisted python-six python-vcversioner"
+
+SRC_URI = "git://github.com/MostAwesomeDude/txWS.git"
+SRCREV= "88cf6d9b9b685ffa1720644bd53c742afb10a414"
+
+S = "${WORKDIR}/git"
+
+inherit setuptools
+
diff --git a/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python-0.15.19/parallel_make.patch b/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python-0.15.19/parallel_make.patch
new file mode 100644
index 000000000..248824606
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python-0.15.19/parallel_make.patch
@@ -0,0 +1,43 @@
+Add dependency of __init__.py
+
+Tasks must be done after exec of __init__, which creates the
+src/_generated directory that tasks are based on.
+
+Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
+
+Upstream-Status: Submitted
+(However it seems that this project is out of maintanence.)
+
+diff -ruN telepathy-python-0.15.19-orig/src/Makefile.am telepathy-python-0.15.19/src/Makefile.am
+--- telepathy-python-0.15.19-orig/src/Makefile.am 2011-03-10 08:51:49.000000000 +0800
++++ telepathy-python-0.15.19/src/Makefile.am 2011-03-10 08:54:45.000000000 +0800
+@@ -39,17 +39,17 @@
+ XSLTPROC_OPTS = --nonet --novalid --xinclude
+ tools_dir = $(top_srcdir)/tools
+
+-_generated/interfaces.py: $(tools_dir)/python-interfaces-generator.xsl $(wildcard $(spec_dir)/*.xml)
++_generated/interfaces.py: _generated/__init__.py $(tools_dir)/python-interfaces-generator.xsl $(wildcard $(spec_dir)/*.xml)
+ $(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_OPTS) -o $@ \
+ $(tools_dir)/python-interfaces-generator.xsl \
+ $(spec_dir)/all.xml
+
+-_generated/constants.py: $(tools_dir)/python-constants-generator.xsl $(wildcard $(spec_dir)/*.xml)
++_generated/constants.py: _generated/__init__.py $(tools_dir)/python-constants-generator.xsl $(wildcard $(spec_dir)/*.xml)
+ $(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_OPTS) -o $@ \
+ $(tools_dir)/python-constants-generator.xsl \
+ $(spec_dir)/all.xml
+
+-_generated/errors.py: $(tools_dir)/python-errors-generator.xsl $(wildcard $(spec_dir)/*.xml)
++_generated/errors.py: _generated/__init__.py $(tools_dir)/python-errors-generator.xsl $(wildcard $(spec_dir)/*.xml)
+ $(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_OPTS) -o $@ \
+ $(tools_dir)/python-errors-generator.xsl \
+ $(spec_dir)/all.xml
+@@ -58,7 +58,7 @@
+ $(AM_V_GEN)$(mkdir_p) $(dir $@)
+ @echo "# Placeholder for package" > $@
+
+-_generated/%.py: $(tools_dir)/spec-to-python.xsl $(spec_dir)/%.xml
++_generated/%.py: _generated/__init__.py $(tools_dir)/spec-to-python.xsl $(spec_dir)/%.xml
+ $(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_OPTS) -o $@ \
+ $(tools_dir)/spec-to-python.xsl \
+ $(spec_dir)/$*.xml
diff --git a/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python-0.15.19/remove_duplicate_install.patch b/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python-0.15.19/remove_duplicate_install.patch
new file mode 100644
index 000000000..df95a4c13
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python-0.15.19/remove_duplicate_install.patch
@@ -0,0 +1,26 @@
+commit f6c67662145de889055a86a6b3b12c70a45fc8d5
+Author: Dongxiao Xu <dongxiao.xu@intel.com>
+Date: Wed Sep 7 16:02:20 2011 +0800
+
+ Avoid duplicated installation of errors.py
+
+ newer version of autotools don't seem to like listing files to install
+ twice. Remove one errors.py from the installation list.
+
+ Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
+
+ Upstream-Status: Inappropirate [upstream inactive]
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 5c27dfe..7536e43 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -11,7 +11,7 @@ telepathy_PYTHON = \
+
+ # telepathy._generated.* auto-generated modules
+ spec_dir = $(top_srcdir)/spec
+-spec_files := $(patsubst $(spec_dir)%.xml,_generated%.py,$(wildcard $(spec_dir)/*.xml))
++spec_files := $(filter-out _generated/errors.py, $(patsubst $(spec_dir)%.xml,_generated%.py,$(wildcard $(spec_dir)/*.xml)))
+
+ BUILT_SOURCES = \
+ _generated/interfaces.py \
diff --git a/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python-0.15.19/telepathy-python_fix_for_automake_1.12.patch b/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python-0.15.19/telepathy-python_fix_for_automake_1.12.patch
new file mode 100644
index 000000000..f613fdce4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python-0.15.19/telepathy-python_fix_for_automake_1.12.patch
@@ -0,0 +1,26 @@
+Upstream-Status: Pending
+
+automake 1.12 has deprecated use of mkdir_p, and it recommends
+use of MKDIR_P instead. Changed the code to avoid these kind
+of warning-errors.
+
+| make[1]: _generated/: Command not found
+| make[1]: *** [_generated/__init__.py] Error 127
+| make[1]: Leaving directory `/srv/home/nitin/builds2/build0/tmp/work/i586-poky-linux/telepathy-python-0.15.19-r4/telepathy-python-0.15.19/src'
+| make: *** [all-recursive] Error 1
+
+Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+2012/07/10
+Index: telepathy-python-0.15.19/src/Makefile.am
+===================================================================
+--- telepathy-python-0.15.19.orig/src/Makefile.am
++++ telepathy-python-0.15.19/src/Makefile.am
+@@ -55,7 +55,7 @@ _generated/errors.py: _generated/__init_
+ $(spec_dir)/all.xml
+
+ _generated/__init__.py:
+- $(AM_V_GEN)$(mkdir_p) $(dir $@)
++ $(AM_V_GEN)$(MKDIR_P) $(dir $@)
+ @echo "# Placeholder for package" > $@
+
+ _generated/%.py: _generated/__init__.py $(tools_dir)/spec-to-python.xsl $(spec_dir)/%.xml
diff --git a/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python_0.15.19.bb b/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python_0.15.19.bb
new file mode 100644
index 000000000..b7aea24a7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python_0.15.19.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Telepathy IM framework - Python package"
+HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://src/utils.py;beginline=1;endline=17;md5=9a07d1a9791a7429a14e7b25c6c86822"
+
+DEPENDS = "libxslt-native"
+RDEPENDS_${PN} += "python-dbus"
+
+SRC_URI = "http://telepathy.freedesktop.org/releases/${BPN}/${BPN}-${PV}.tar.gz \
+ file://parallel_make.patch \
+ file://remove_duplicate_install.patch \
+ file://telepathy-python_fix_for_automake_1.12.patch"
+
+PR = "r6"
+
+inherit autotools pythonnative
+
+SRC_URI[md5sum] = "f7ca25ab3c88874015b7e9728f7f3017"
+SRC_URI[sha256sum] = "244c0e1bf4bbd78ae298ea659fe10bf3a73738db550156767cc2477aedf72376"
+
+FILES_${PN} += "\
+ ${libdir}/python*/site-packages/telepathy/*.py \
+ ${libdir}/python*/site-packages/telepathy/*/*.py \
+"
+
+do_install_append () {
+ rm -f ${D}${libdir}/python*/site-packages/telepathy/*.pyc
+ rm -f ${D}${libdir}/python*/site-packages/telepathy/*.pyo
+ rm -f ${D}${libdir}/python*/site-packages/telepathy/*/*.pyc
+ rm -f ${D}${libdir}/python*/site-packages/telepathy/*/*.pyo
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/pyrtm_0.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/pyrtm_0.4.2.bb
new file mode 100644
index 000000000..9d851abe3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/pyrtm_0.4.2.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Python interface for Remember The Milk API"
+AUTHOR = "Sridhar Ratnakumar / srid"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=a53cbc7cb75660694e138ba973c148df"
+
+PYPI_PACKAGE_EXT = "tar.bz2"
+
+SRC_URI[md5sum] = "7c87da94656b620dfe532ca63d642eb8"
+SRC_URI[sha256sum] = "b2d701b25ad3f9a1542057f3eb492c5c1d7dbe2b8d1e8f763043dcc14ee1d933"
+
+inherit pypi setuptools
+
+PACKAGES =+ "${PN}-tests ${PN}-samples"
+
+FILES_${PN}-samples += " \
+ ${PYTHON_SITEPACKAGES_DIR}/rtm/samples \
+"
+
+FILES_${PN}-tests += " \
+ ${PYTHON_SITEPACKAGES_DIR}/rtm/tests \
+"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-netclient \
+"
+
+RDEPENDS_${PN}-samples += " \
+ ${PN} \
+"
+
+RDEPENDS_${PN}-tests += " \
+ ${PN} \
+ ${PYTHON_PN}-unittest \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-alembic.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-alembic.inc
new file mode 100644
index 000000000..f1a641299
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-alembic.inc
@@ -0,0 +1,15 @@
+DESCRIPTION = "A database migration tool for SQLAlchemy"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c5f1361296835ff94bda73db7dd312a6"
+
+SRC_URI[md5sum] = "5cfef58641c9a94d4a5d547e951a7dda"
+SRC_URI[sha256sum] = "13b8611788acf0d7b617775db5c2ae26554a6d4263c590ef628d448fd05aef56"
+
+PYPI_PACKAGE = "alembic"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-dateutil \
+ ${PYTHON_PN}-editor \
+ ${PYTHON_PN}-mako \
+ ${PYTHON_PN}-sqlalchemy \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-alembic_0.9.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-alembic_0.9.8.bb
new file mode 100644
index 000000000..efcb2b1de
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-alembic_0.9.8.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-alembic.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-anyjson.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-anyjson.inc
new file mode 100644
index 000000000..a0d20ff4d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-anyjson.inc
@@ -0,0 +1,13 @@
+SUMMARY = "Wraps the best available JSON implementation available in a common interface"
+DESCRIPTION = "Anyjson loads whichever is the fastest JSON module installed and \
+provides a uniform API regardless of which JSON implementation is used."
+HOMEPAGE = "https://bitbucket.org/runeh/anyjson"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=989aa97e73c912a83a3c873fa11deb08"
+
+inherit pypi
+
+SRC_URI[md5sum] = "2ea28d6ec311aeeebaf993cb3008b27c"
+SRC_URI[sha256sum] = "37812d863c9ad3e35c0734c42e0bf0320ce8c3bed82cd20ad54cb34d158157ba"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-simplejson"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-anyjson_0.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-anyjson_0.3.3.bb
new file mode 100644
index 000000000..31b8749fe
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-anyjson_0.3.3.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-anyjson.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-appdirs.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-appdirs.inc
new file mode 100644
index 000000000..c4826723e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-appdirs.inc
@@ -0,0 +1,8 @@
+SUMMARY = "A small Python module for determining appropriate + platform-specific dirs, e.g. a user data dir."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=31625363c45eb0c67c630a2f73e438e4"
+
+SRC_URI[md5sum] = "44c679904082a2133f5566c8a0d3ab42"
+SRC_URI[sha256sum] = "9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92"
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-appdirs_1.4.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-appdirs_1.4.3.bb
new file mode 100644
index 000000000..e9ff9b3fc
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-appdirs_1.4.3.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-appdirs.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto.inc
new file mode 100644
index 000000000..5c379956f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto.inc
@@ -0,0 +1,23 @@
+DESCRIPTION = "Python binding to the Networking and Cryptography (NaCl) library"
+HOMEPAGE = "https://github.com/pyca/pynacl"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=52010cd3c7d7bd965b55721ef4d93ec2"
+
+PYPI_PACKAGE = "asn1crypto"
+
+SRC_URI[md5sum] = "de3520426e81a6581352d4366f310eb1"
+SRC_URI[sha256sum] = "9d5c20441baf0cb60a4ac34cc447c6c189024b6b4c6cd7877034f4965c464e49"
+
+inherit pypi
+
+RDEPENDS_${PN}_class-target += " \
+ ${PYTHON_PN}-codecs \
+ ${PYTHON_PN}-crypt \
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-netclient \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto_0.24.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto_0.24.0.bb
new file mode 100644
index 000000000..46aace286
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto_0.24.0.bb
@@ -0,0 +1,7 @@
+inherit setuptools
+require python-asn1crypto.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-subprocess \
+ ${PYTHON_PN}-textutils \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-astroid.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-astroid.inc
new file mode 100644
index 000000000..ead2b6e73
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-astroid.inc
@@ -0,0 +1,31 @@
+SUMMARY = "An abstract syntax tree for Python with inference support."
+HOMEPAGE = "https://pypi.python.org/pypi/astroid"
+SECTION = "devel/python"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI[md5sum] = "7d7dc000b25f0cbfcca20cb9a8dc0310"
+SRC_URI[sha256sum] = "35cfae47aac19c7b407b7095410e895e836f2285ccf1220336afba744cc4c5f2"
+
+inherit pypi
+
+PACKAGES =+ "${PN}-tests"
+
+FILES_${PN}-tests += " \
+ ${PYTHON_SITEPACKAGES_DIR}/astroid/test* \
+ ${PYTHON_SITEPACKAGES_DIR}/astroid/__pycache__/test* \
+"
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-distutils \
+ ${PYTHON_PN}-lazy-object-proxy \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-six \
+ ${PYTHON_PN}-wrapt \
+ ${PYTHON_PN}-setuptools \
+"
+
+RDEPENDS_${PN}-tests_class-target += "\
+ ${PYTHON_PN}-unittest \
+ ${PYTHON_PN}-xml \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-astroid_1.6.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-astroid_1.6.3.bb
new file mode 100644
index 000000000..687394da6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-astroid_1.6.3.bb
@@ -0,0 +1,10 @@
+inherit setuptools
+require python-astroid.inc
+
+RDEPENDS_${PN}_class-target += " \
+ ${PYTHON_PN}-enum34 \
+ ${PYTHON_PN}-backports-functools-lru-cache \
+ ${PYTHON_PN}-re \
+ ${PYTHON_PN}-singledispatch \
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-attr.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-attr.inc
new file mode 100644
index 000000000..1d93dd715
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-attr.inc
@@ -0,0 +1,9 @@
+DESCRIPTION = "Simple decorator to set attributes of target function or class in a DRY way"
+HOMEPAGE = "https://github.com/denis-ryzhkov/attr"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=59805a0285f4d2b6abdedae73db4f5c1"
+
+SRC_URI[md5sum] = "68b9a503991241fb2df28488686b0e1e"
+SRC_URI[sha256sum] = "9091548058d17f132596e61fa7518e504f76b9a4c61ca7d86e1f96dbf7d4775d"
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-attr_0.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-attr_0.3.1.bb
new file mode 100644
index 000000000..979d6cb68
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-attr_0.3.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-attr.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-attrs.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-attrs.inc
new file mode 100644
index 000000000..c29f058fa
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-attrs.inc
@@ -0,0 +1,14 @@
+DESCRIPTION = "Classes Without Boilerplate"
+HOMEPAGE = "http://www.attrs.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d4ab25949a73fe7d4fdee93bcbdbf8ff"
+
+SRC_URI[md5sum] = "d7a89063b2e0fd36bd82389c4d82821d"
+SRC_URI[sha256sum] = "1c7960ccfd6a005cd9f7ba884e6316b5e430a3f1a6c37c5f87d8b43f83b54ec9"
+
+inherit pypi
+
+RDEPENDS_${PN}_class-target += " \
+ ${PYTHON_PN}-cryptography \
+ ${PYTHON_PN}-ctypes \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-attrs_17.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-attrs_17.4.0.bb
new file mode 100644
index 000000000..e3bec0fdf
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-attrs_17.4.0.bb
@@ -0,0 +1,6 @@
+inherit setuptools
+require python-attrs.inc
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-automat.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-automat.inc
new file mode 100644
index 000000000..43b9ce9e3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-automat.inc
@@ -0,0 +1,24 @@
+DESCRIPTION = "Self-service finite-state machines for the programmer on the go"
+HOMEPAGE = "https://github.com/glyph/Automat"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4ad213bcca81688e94593e5f60c87477"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-automat:"
+
+SRC_URI[md5sum] = "ad7bba58d262d8956d732330cb5ef53d"
+SRC_URI[sha256sum] = "3c1fd04ecf08ac87b4dd3feae409542e9bf7827257097b2b6ed5692f69d6f6a8"
+
+PYPI_PACKAGE = "Automat"
+
+inherit pypi
+
+SRC_URI_append = " \
+ file://0001-setup.py-remove-the-dependency-on-m2r.patch \
+"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-attrs \
+ ${PYTHON_PN}-six \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-automat/0001-setup.py-remove-the-dependency-on-m2r.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-automat/0001-setup.py-remove-the-dependency-on-m2r.patch
new file mode 100644
index 000000000..d6def98c9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-automat/0001-setup.py-remove-the-dependency-on-m2r.patch
@@ -0,0 +1,49 @@
+From d5ebe479fc8fe11c5c75e7f35484849320349222 Mon Sep 17 00:00:00 2001
+From: Derek Straka <derek@asterius.io>
+Date: Fri, 22 Dec 2017 09:07:00 -0500
+Subject: [PATCH] setup.py: remove the dependency on m2r
+
+The dependency on m2r is removed here as it only provides the
+long_description value that is optional. This item is just the
+text that would be present on PyPi, so it doesn't provide much
+value in this case
+
+Upstream-Status: Inappropriate (OE specific)
+
+Signed-off-by: Derek Straka <derek@asterius.io>
+---
+ setup.py | 10 ----------
+ 1 file changed, 10 deletions(-)
+
+Index: Automat-0.6.0/setup.py
+===================================================================
+--- Automat-0.6.0.orig/setup.py
++++ Automat-0.6.0/setup.py
+@@ -4,14 +4,6 @@ Setup file for automat
+
+ from setuptools import setup, find_packages
+
+-try:
+- from m2r import parse_from_file
+- long_description = parse_from_file('README.md')
+-except(IOError, ImportError):
+- print("\n\n!!! m2r not found, long_description is bad, don't upload this to PyPI !!!\n\n")
+- import io
+- long_description = io.open('README.md', encoding="utf-8").read()
+-
+ setup(
+ name='Automat',
+ use_scm_version=True,
+@@ -19,12 +11,10 @@ setup(
+ description="""
+ Self-service finite-state machines for the programmer on the go.
+ """.strip(),
+- long_description=long_description,
+ packages=find_packages(exclude=[]),
+ package_dir={'automat': 'automat'},
+ setup_requires=[
+ 'setuptools-scm',
+- 'm2r',
+ ],
+ install_requires=[
+ "attrs",
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-automat_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-automat_0.6.0.bb
new file mode 100644
index 000000000..8ac8c9c0f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-automat_0.6.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-automat.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-aws-iot-device-sdk-python.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-aws-iot-device-sdk-python.inc
new file mode 100644
index 000000000..a3299e4ac
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-aws-iot-device-sdk-python.inc
@@ -0,0 +1,41 @@
+DESCRIPTION = "SDK for connecting to AWS IoT using Python."
+HOMEPAGE = "https://github.com/aws/aws-iot-device-sdk-python"
+LICENSE = "Apache-2.0 & (EPL-1.0 | EDL-1.0)"
+LICENSE_${PN}-examples = "Apache-2.0"
+LIC_FILES_CHKSUM = "\
+ file://LICENSE.txt;md5=9ac49901b833e769c7d6f21e8dbd7b30 \
+ file://AWSIoTPythonSDK/core/protocol/paho/client.py;endline=14;md5=5a3c8a1a4bb71bd934f450ecff972ad9 \
+"
+
+SRC_URI[md5sum] = "97e8cf0d40ef3765d979c19b534a716d"
+SRC_URI[sha256sum] = "d68cbff396143e837b4c23b6621d3b7ae374281afc75eed8e51a28625d9125ba"
+
+inherit pypi
+
+PYPI_PACKAGE = "AWSIoTPythonSDK"
+
+do_install_append() {
+ install -d -m0755 ${D}${datadir}/${BPN}/examples
+ cp --preserve=mode,timestamps -R ${S}/samples/* ${D}${datadir}/${BPN}/examples
+ # this requires the full blown AWS Python SDK
+ rm -r ${D}${datadir}/${BPN}/examples/basicPubSub
+}
+
+PACKAGES =+ "${PN}-examples"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-crypt \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-math \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-threading \
+"
+RDEPENDS_${PN}-examples += "${PN}"
+
+FILES_${PN}-examples = "${datadir}/${BPN}/examples"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-aws-iot-device-sdk-python_1.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-aws-iot-device-sdk-python_1.3.1.bb
new file mode 100644
index 000000000..490e97391
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-aws-iot-device-sdk-python_1.3.1.bb
@@ -0,0 +1,4 @@
+inherit setuptools
+require python-aws-iot-device-sdk-python.inc
+
+RDEPENDS_${PN}-examples += "${PYTHON_PN}-argparse"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-babel.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-babel.inc
new file mode 100644
index 000000000..4dcb255c8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-babel.inc
@@ -0,0 +1,25 @@
+DESCRIPTION = "A collection of tools for internationalizing Python applications"
+HOMEPAGE = "http://babel.edgewall.org/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e6eeaabc92cfc2d03f53e789324d7292"
+
+SRC_URI[md5sum] = "152a6b17fe4110b95675aceb9af9fab2"
+SRC_URI[sha256sum] = "8ce4cb6fdd4393edd323227cba3a077bceb2a6ce5201c902c65e730046f41f14"
+
+PYPI_PACKAGE = "Babel"
+
+inherit pypi
+
+CLEANBROKEN = "1"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-codecs \
+ ${PYTHON_PN}-difflib \
+ ${PYTHON_PN}-distutils \
+ ${PYTHON_PN}-netserver \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-pickle \
+ ${PYTHON_PN}-pytz \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-threading \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-babel_2.5.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-babel_2.5.3.bb
new file mode 100644
index 000000000..f7c166eba
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-babel_2.5.3.bb
@@ -0,0 +1,6 @@
+inherit setuptools
+require python-babel.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-backports-abc_0.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-backports-abc_0.4.bb
new file mode 100644
index 000000000..6a4d267bc
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-backports-abc_0.4.bb
@@ -0,0 +1,18 @@
+SUMMARY = "collections.abc from Python 3.4"
+DESCRIPTION = "A backport of recent additions to the 'collections.abc' module"
+
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=dd98d01d471fac8d8dbdd975229dba03"
+
+# pypi package doesn't have valid entry for license
+SRC_URI += "https://raw.githubusercontent.com/cython/backports_abc/master/LICENSE;name=license"
+
+SRC_URI[md5sum] = "0b65a216ce9dc9c1a7e20a729dd7c05b"
+SRC_URI[sha256sum] = "8b3e4092ba3d541c7a2f9b7d0d9c0275b21c6a01c53a61c731eba6686939d0a5"
+SRC_URI[license.md5sum] = "dd98d01d471fac8d8dbdd975229dba03"
+SRC_URI[license.sha256sum] = "0a4f3b38055f50f047a42521568fa6ddb9a5976c2884f6ae138796d0f71150ca"
+
+
+
+PYPI_PACKAGE = "backports_abc"
+inherit pypi setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-backports-functools-lru-cache_1.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-backports-functools-lru-cache_1.4.bb
new file mode 100644
index 000000000..961436f53
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-backports-functools-lru-cache_1.4.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Backport of functools.lru_cache from Python 3.3"
+HOMEPAGE = "https://github.com/jaraco/backports.functools_lru_cache"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://setup.py;beginline=47;endline=47;md5=98fc3658e5970d26f6b2109808c766be"
+
+PYPI_PACKAGE = "backports.functools_lru_cache"
+
+SRC_URI[md5sum] = "b954e7d5e2ca0f0f66ad2ed12ba800e5"
+SRC_URI[sha256sum] = "31f235852f88edc1558d428d890663c49eb4514ffec9f3650e7f3c9e4a12e36f"
+
+DEPENDS += "python-setuptools-scm-native"
+
+inherit setuptools pypi
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-pickle \
+ ${PYTHON_PN}-threading \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-backports-ssl_3.5.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-backports-ssl_3.5.0.1.bb
new file mode 100644
index 000000000..45492daa6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-backports-ssl_3.5.0.1.bb
@@ -0,0 +1,18 @@
+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"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=95a5ee8fd779fbeca8b4cbca64433c87"
+
+SRC_URI[md5sum] = "c03fc5e2c7b3da46b81acf5cbacfe1e6"
+SRC_URI[sha256sum] = "502ad98707319f4a51fa2ca1c677bd659008d27ded9f6380c79e8932e38dcdf2"
+
+PYPI_PACKAGE = "backports.ssl_match_hostname"
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "${PYTHON_PN}-pkgutil"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-bcrypt.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-bcrypt.inc
new file mode 100644
index 000000000..449096978
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-bcrypt.inc
@@ -0,0 +1,17 @@
+DESCRIPTION = "Modern password hashing for your software and your servers."
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8f7bb094c7232b058c7e9f2e431f389c"
+
+DEPENDS += "${PYTHON_PN}-cffi-native"
+
+SRC_URI[md5sum] = "8408abc974446e64862a9742104e97b6"
+SRC_URI[sha256sum] = "67ed1a374c9155ec0840214ce804616de49c3df9c5bc66740687c1c9b1cd9e8d"
+
+inherit pypi
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-cffi \
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-six \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-bcrypt_3.1.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-bcrypt_3.1.4.bb
new file mode 100644
index 000000000..b136aa489
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-bcrypt_3.1.4.bb
@@ -0,0 +1,6 @@
+inherit setuptools
+require python-bcrypt.inc
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4.inc
new file mode 100644
index 000000000..d60d987ca
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4.inc
@@ -0,0 +1,17 @@
+SUMMARY = "Screen-scraping library"
+HOMEPAGE = " https://www.crummy.com/software/BeautifulSoup/bs4"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=f2d38d8a40bf73fd4b3d16ca2e5882d1"
+
+SRC_URI[md5sum] = "c17714d0f91a23b708a592cb3c697728"
+SRC_URI[sha256sum] = "808b6ac932dccb0a4126558f7dfdcf41710dd44a4ef497a0bb59a77f9f078e89"
+
+inherit pypi
+
+RDEPENDS_${PN}_class-target = "\
+ ${PYTHON_PN}-core \
+ ${PYTHON_PN}-html5lib \
+ ${PYTHON_PN}-lxml \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4_4.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4_4.6.0.bb
new file mode 100644
index 000000000..907285ac1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4_4.6.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-beautifulsoup4.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-behave_1.2.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-behave_1.2.6.bb
new file mode 100644
index 000000000..679730262
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-behave_1.2.6.bb
@@ -0,0 +1,10 @@
+SUMMARY = "A behavior-driven development framework, Python style"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d950439e8ea6ed233e4288f5e1a49c06"
+
+SRC_URI[md5sum] = "3f05c859a1c45f5ed33e925817ad887d"
+SRC_URI[sha256sum] = "b9662327aa53294c1351b0a9c369093ccec1d21026f050c3bd9b3e5cccf81a86"
+
+RDEPENDS_${PN} += "python-difflib python-setuptools python-pkgutil python-misc python-argparse python-xml python-enum34 python-parse python-parse-type python-six"
+
+inherit pypi setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray.inc
new file mode 100644
index 000000000..38a22f668
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray.inc
@@ -0,0 +1,11 @@
+SUMMARY = "A high-level Python efficient arrays of booleans -- C extension"
+HOMEPAGE = "https://github.com/ilanschnell/bitarray"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3ba469353f9f2a244b2075902351e37d"
+
+SRC_URI[md5sum] = "3825184f54f4d93508a28031b4c65d3b"
+SRC_URI[sha256sum] = "7da501356e48a83c61f479393681c1bc4b94e5a34ace7e08cb29e7dd9290ab18"
+
+inherit pypi
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray_0.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray_0.8.1.bb
new file mode 100644
index 000000000..f78c7abd2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray_0.8.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-bitarray.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-blinker.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-blinker.inc
new file mode 100644
index 000000000..eaf390837
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-blinker.inc
@@ -0,0 +1,7 @@
+DESCRIPTION = "Fast, simple object-to-object and broadcast signaling."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=946d7e89af6f7733aeaebed5635d2682"
+
+SRC_URI[md5sum] = "8b3722381f83c2813c52de3016b68d33"
+SRC_URI[sha256sum] = "471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-blinker_1.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-blinker_1.4.bb
new file mode 100644
index 000000000..bc4164e97
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-blinker_1.4.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-blinker.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-can.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-can.inc
new file mode 100644
index 000000000..a71c47be4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-can.inc
@@ -0,0 +1,17 @@
+SUMMARY = "Controller Area Network (CAN) interface module for Python"
+SECTION = "devel/python"
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=38138baa100d7259934590850bc0406e"
+
+SRC_URI[md5sum] = "3310f0aa2a8492d0ff614ecf636ec8a8"
+SRC_URI[sha256sum] = "4a5c01dd67feeda35f88e6c12ea14ac8cabd426b9be0cc5f9fd083fe90a9dbfc"
+
+PYPI_PACKAGE="python-can"
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-misc \
+ ${PYTHON_PN}-netserver \
+ ${PYTHON_PN}-sqlite3 \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-can_2.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-can_2.1.0.bb
new file mode 100644
index 000000000..f0edb6408
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-can_2.1.0.bb
@@ -0,0 +1,8 @@
+require python-can.inc
+inherit pypi setuptools
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-argparse \
+ ${PYTHON_PN}-subprocess \
+ ${PYTHON_PN}-zlib \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cassandra-driver.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-cassandra-driver.inc
new file mode 100644
index 000000000..1648d3e94
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cassandra-driver.inc
@@ -0,0 +1,33 @@
+SUMMARY = "DataStax Python Driver for Apache Cassandra"
+DESCRIPTION = "A modern, feature-rich and highly-tunable Python client \
+library for Apache Cassandra (1.2+) and DataStax Enterprise (3.1+) using \
+exclusively Cassandra's binary protocol and Cassandra Query Language v3."
+HOMEPAGE = "https://github.com/datastax/python-driver"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+SRCNAME = "cassandra-driver"
+
+SRC_URI[md5sum] = "5c8b4a3adfc48180e8ec38b8c4e996fd"
+SRC_URI[sha256sum] = "61b670fb2ba95d51d91fa7b589aae3666df494713f5d1ed78bb5c510778d77f0"
+
+DISTUTILS_BUILD_ARGS += " \
+ --no-libev \
+"
+DISTUTILS_INSTALL_ARGS += " \
+ --no-libev \
+"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-cython \
+ ${PYTHON_PN}-multiprocessing \
+ ${PYTHON_PN}-six \
+ ${PYTHON_PN}-json \
+ libevent \
+"
+
+DEPENDS_${PN} += "\
+ ${PYTHON_PN}-cython \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-certifi.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-certifi.inc
new file mode 100644
index 000000000..26df5c115
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-certifi.inc
@@ -0,0 +1,13 @@
+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 = " http://certifi.io/"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f77f61d14ee6feac4228d3ebd26cc1f1"
+
+SRC_URI[md5sum] = "068fd5c3c690ae47504b3e0bf4e56c4c"
+SRC_URI[sha256sum] = "edbc3f203427eef571f79a7692bb160a2b0f7ccaa31953e99bd17e307cf63f7d"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-certifi_2018.1.18.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-certifi_2018.1.18.bb
new file mode 100644
index 000000000..adfe6238e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-certifi_2018.1.18.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-certifi.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cffi.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-cffi.inc
new file mode 100644
index 000000000..e6071eeca
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cffi.inc
@@ -0,0 +1,16 @@
+SUMMARY = "Foreign Function Interface for Python calling C code"
+HOMEPAGE = "http://cffi.readthedocs.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5677e2fdbf7cdda61d6dd2b57df547bf"
+DEPENDS += "libffi ${PYTHON_PN}-pycparser"
+
+SRC_URI[md5sum] = "ac8492f4ad952360737413e82d661908"
+SRC_URI[sha256sum] = "e90f17980e6ab0f3c2f3730e56d1fe9bcba1891eeea58966e89d352492cc74f4"
+
+RDEPENDS_${PN}_class-target = " \
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cffi_1.11.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-cffi_1.11.5.bb
new file mode 100644
index 000000000..bc667b805
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cffi_1.11.5.bb
@@ -0,0 +1,6 @@
+require python-cffi.inc
+inherit pypi setuptools
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-chardet.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-chardet.inc
new file mode 100644
index 000000000..630529978
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-chardet.inc
@@ -0,0 +1,23 @@
+SUMMARY = "Universal encoding detector for Python 2 and 3"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a6f89e2100d9b6cdffcea4f398e37343"
+
+inherit pypi
+
+# setup.py of chardet needs this.
+DEPENDS += "${PYTHON_PN}-pytest-runner-native"
+
+SRC_URI[md5sum] = "7dd1ba7f9c77e32351b0a0cfacf4055c"
+SRC_URI[sha256sum] = "84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"
+
+BBCLASSEXTEND = "native nativesdk"
+
+PACKAGES =+ "${PN}-cli"
+RDEPENDS_${PN}-cli = "${PN} "
+FILES_${PN}-cli += " \
+ ${PYTHON_SITEPACKAGES_DIR}/chardet/cli \
+"
+
+RDEPENDS_${PN}_class-target += " \
+ ${PYTHON_PN}-logging \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-chardet_3.0.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-chardet_3.0.4.bb
new file mode 100644
index 000000000..3b6feeef1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-chardet_3.0.4.bb
@@ -0,0 +1,4 @@
+inherit setuptools
+require python-chardet.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-argparse"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cheetah_2.4.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-cheetah_2.4.4.bb
new file mode 100644
index 000000000..20fc2fdc3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cheetah_2.4.4.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Python template engine and code generation tool"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=aff1107514aa6aae948f9fe71fdc393b"
+
+PR = "r3"
+
+PYPI_PACKAGE = "Cheetah"
+inherit pypi 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-openembedded/meta-python/recipes-devtools/python/python-click.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-click.inc
new file mode 100644
index 000000000..718bbabcf
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-click.inc
@@ -0,0 +1,21 @@
+SUMMARY = "A simple wrapper around optparse for powerful command line utilities."
+DESCRIPTION = "\
+Click is a Python package for creating beautiful command line interfaces \
+in a composable way with as little code as necessary. It's the "Command \
+Line Interface Creation Kit". It's highly configurable but comes with \
+sensible defaults out of the box."
+HOMEPAGE = "http://click.pocoo.org/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=09e8b7869f94ba9e9a7b260d53c65dab"
+
+SRC_URI[md5sum] = "fc4cc00c4863833230d3af92af48abd4"
+SRC_URI[sha256sum] = "f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b"
+
+CLEANBROKEN = "1"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-threading \
+ "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-click_6.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-click_6.7.bb
new file mode 100644
index 000000000..f63e27c84
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-click_6.7.bb
@@ -0,0 +1,4 @@
+inherit pypi setuptools
+require python-click.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-contextlib"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.8.1.bb
new file mode 100644
index 000000000..145ab9890
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.8.1.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Extra features for standard library's cmd module"
+HOMEPAGE = "http://packages.python.org/cmd2/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://setup.py;beginline=51;endline=51;md5=0f13c9cfc75288223cf7edd2f3b985a2"
+
+SRC_URI[md5sum] = "701b916ffac99137bea413205106f993"
+SRC_URI[sha256sum] = "d09976f9ad2327883c2d07b5acb42e66ad52b17e352873c22041ed124bfe8aba"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-doctest \
+ ${PYTHON_PN}-pyparsing \
+ ${PYTHON_PN}-pyperclip \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-six \
+ ${PYTHON_PN}-stringold \
+ ${PYTHON_PN}-subprocess \
+ ${PYTHON_PN}-threading \
+ ${PYTHON_PN}-textutils \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-configparser.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-configparser.inc
new file mode 100644
index 000000000..c1fb8582c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-configparser.inc
@@ -0,0 +1,11 @@
+SUMMARY = "This module provides the ConfigParser class which implements a basic configuration language which provides a structure similar to what’s found in Microsoft Windows INI files."
+SECTION = "devel/python"
+HOMEPAGE = "https://docs.python.org/3/library/configparser.html"
+LICENSE = "MIT"
+
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+SRC_URI[md5sum] = "cfdd915a5b7a6c09917a64a573140538"
+SRC_URI[sha256sum] = "5308b47021bc2340965c371f0f058cc6971a04502638d4244225c49d80db273a"
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-configparser_3.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-configparser_3.5.0.bb
new file mode 100644
index 000000000..69f045dba
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-configparser_3.5.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-configparser.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-constantly.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-constantly.inc
new file mode 100644
index 000000000..815350492
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-constantly.inc
@@ -0,0 +1,11 @@
+DESCRIPTION = "Symbolic constants in Python"
+HOMEPAGE = "https://github.com/twisted/constantly"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e393e4ddd223e3a74982efa784f89fd7"
+
+SRC_URI[md5sum] = "f0762f083d83039758e53f8cf0086eef"
+SRC_URI[sha256sum] = "586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"
+
+inherit pypi
+
+RDEPENDS_${PN} += "${PYTHON_PN}-json"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-constantly_15.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-constantly_15.1.0.bb
new file mode 100644
index 000000000..29b15eb60
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-constantly_15.1.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-constantly.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors.inc
new file mode 100644
index 000000000..00bb87b0c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors.inc
@@ -0,0 +1,18 @@
+SUMMARY = "Test vectors for the cryptography package."
+HOMEPAGE = "https://cryptography.io/"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0 | BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4"
+
+DEPENDS += " \
+ ${PYTHON_PN}-cryptography \
+"
+
+SRC_URI[md5sum] = "ef115b870cc8d8b9f0f4189b512bc170"
+SRC_URI[sha256sum] = "78c4b4f3f84853ea5d038e2f53d355229dd8119fe9cf949c3e497c85c760a5ca"
+
+PYPI_PACKAGE = "cryptography_vectors"
+
+BBCLASSEXTEND = "native nativesdk"
+
+UPSTREAM_CHECK_REGEX = ""
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors_2.1.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors_2.1.4.bb
new file mode 100644
index 000000000..4975278a9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors_2.1.4.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-cryptography-vectors.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography.inc
new file mode 100644
index 000000000..4be79077e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography.inc
@@ -0,0 +1,57 @@
+SUMMARY = "Provides cryptographic recipes and primitives to python developers"
+HOMEPAGE = "https://cryptography.io/"
+LICENSE = "Apache-2.0 | BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d5ede125ed08d4fd14ec44d334bdb388"
+
+DEPENDS += " \
+ ${PYTHON_PN}-cffi \
+ ${PYTHON_PN}-cffi-native \
+ ${PYTHON_PN}-asn1crypto \
+ ${PYTHON_PN}-six \
+"
+
+SRC_URI[md5sum] = "9f39d4d8f2b05f295fa0ff52475ec4f2"
+SRC_URI[sha256sum] = "e4d967371c5b6b2e67855066471d844c5d52d210c36c28d49a8507b96e2c5291"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-cffi \
+ ${PYTHON_PN}-idna \
+ ${PYTHON_PN}-asn1crypto \
+ ${PYTHON_PN}-pycparser \
+ ${PYTHON_PN}-setuptools \
+ ${PYTHON_PN}-six \
+"
+
+RDEPENDS_${PN}_class-target += " \
+ ${PYTHON_PN}-cffi \
+ ${PYTHON_PN}-idna \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-asn1crypto \
+ ${PYTHON_PN}-pycparser \
+ ${PYTHON_PN}-setuptools \
+ ${PYTHON_PN}-six \
+ ${PYTHON_PN}-threading \
+"
+
+RDEPENDS_${PN}-ptest += " \
+ ${PN} \
+ ${PYTHON_PN}-cryptography-vectors \
+ ${PYTHON_PN}-iso8601 \
+ ${PYTHON_PN}-pretend \
+ ${PYTHON_PN}-pytest \
+"
+
+inherit ptest
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/tests
+ cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+ install -d ${D}${PTEST_PATH}/tests/hazmat
+ cp -rf ${S}/tests/hazmat/* ${D}${PTEST_PATH}/tests/hazmat/
+}
+
+FILES_${PN}-dbg += " \
+ ${libdir}/${PYTHON_PN}2.7/site-packages/${SRCNAME}/hazmat/bindings/.debug \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/run-ptest
new file mode 100644
index 000000000..0ba239c2a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/run-ptest
@@ -0,0 +1,2 @@
+#!/bin/sh
+py.test
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography_2.1.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography_2.1.4.bb
new file mode 100644
index 000000000..9c2f88418
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography_2.1.4.bb
@@ -0,0 +1,22 @@
+inherit pypi setuptools
+require python-cryptography.inc
+
+SRC_URI += " \
+ file://run-ptest \
+"
+
+DEPENDS += " \
+ ${PYTHON_PN}-enum34 \
+"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-enum34 \
+ ${PYTHON_PN}-ipaddress \
+"
+
+RDEPENDS_${PN}_class-target += " \
+ ${PYTHON_PN}-enum34 \
+ ${PYTHON_PN}-ipaddress \
+ ${PYTHON_PN}-contextlib \
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cython.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-cython.inc
new file mode 100644
index 000000000..5d3b9d5ba
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cython.inc
@@ -0,0 +1,40 @@
+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"
+PYPI_PACKAGE = "Cython"
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI[md5sum] = "0e0568d6bed4b09ad01afe0a38805305"
+SRC_URI[sha256sum] = "634e2f10fc8d026c633cffacb45cd8f4582149fa68e1428124e762dbc566e68a"
+
+inherit pypi
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-misc \
+ ${PYTHON_PN}-netserver \
+ ${PYTHON_PN}-pkgutil \
+ ${PYTHON_PN}-pyparsing \
+ ${PYTHON_PN}-setuptools \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-xml \
+"
+
+RDEPENDS_${PN}_class-nativesdk += "\
+ nativesdk-${PYTHON_PN}-misc \
+ nativesdk-${PYTHON_PN}-netserver \
+ nativesdk-${PYTHON_PN}-pkgutil \
+ nativesdk-${PYTHON_PN}-pyparsing \
+ nativesdk-${PYTHON_PN}-setuptools \
+ nativesdk-${PYTHON_PN}-shell \
+ nativesdk-${PYTHON_PN}-xml \
+"
+
+do_install_append() {
+ # Make sure we use /usr/bin/env python
+ for PYTHSCRIPT in `grep -rIl '^#!.*python' ${D}`; do
+ sed -i -e '1s|^#!.*|#!/usr/bin/env ${PYTHON_PN}|' $PYTHSCRIPT
+ done
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cython_0.28.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-cython_0.28.2.bb
new file mode 100644
index 000000000..d803a6ed4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cython_0.28.2.bb
@@ -0,0 +1,10 @@
+inherit setuptools
+require python-cython.inc
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/Cython/"
+UPSTREAM_CHECK_REGEX = "/Cython/(?P<pver>(\d+[\.\-_]*)+)"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-distribute \
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-daemon/0001-Workaround-for-issue-2-1.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-daemon/0001-Workaround-for-issue-2-1.patch
new file mode 100644
index 000000000..dbb840718
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-daemon/0001-Workaround-for-issue-2-1.patch
@@ -0,0 +1,31 @@
+From 0981eee9f0198c2045dc0eaa78a005d06fc7bfe4 Mon Sep 17 00:00:00 2001
+From: Carlos Eduardo Moreira dos Santos <cems@cemshost.com.br>
+Date: Tue, 28 Mar 2017 18:23:44 -0300
+Subject: [PATCH] Workaround for issue 2 [1]
+
+[1] https://pagure.io/python-daemon/issue/2
+---
+ version.py | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/version.py b/version.py
+index d58422a377ee..293e2d64c2b7 100644
+--- a/version.py
++++ b/version.py
+@@ -648,9 +648,10 @@ class ChangelogAwareDistribution(distutils.dist.Distribution, object):
+
+ @lru_cache(maxsize=128)
+ def get_version_info(self):
+- changelog_path = get_changelog_path(self)
+- version_info = generate_version_info_from_changelog(changelog_path)
+- return version_info
++ return {
++ 'version': '2.1.2',
++ 'maintainer': 'Ben Finney'
++ }
+
+ def get_version(self):
+ version_info = self.get_version_info()
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-daemon_2.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-daemon_2.1.2.bb
new file mode 100644
index 000000000..4c18e2bad
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-daemon_2.1.2.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Library to implement a well-behaved Unix daemon process"
+HOMEPAGE = "https://pagure.io/python-daemon/"
+SECTION = "devel/python"
+
+DEPENDS = "python-docutils"
+RDEPENDS_${PN} = "python-docutils \
+ python-lockfile (>= 0.10) \
+ python-resource \
+"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit pypi setuptools
+
+SRC_URI[md5sum] = "9c57343d81f2a96c51cffeab982b04d2"
+SRC_URI[sha256sum] = "261c859be5c12ae7d4286dc6951e87e9e1a70a882a8b41fd926efc1ec4214f73"
+
+# Fix for build error in Yocto:
+# i = p.rfind('/') + 1
+# AttributeError: 'NoneType' object has no attribute 'rfind'
+#S = "${WORKDIR}/python-daemon"
+SRC_URI_append = " \
+ file://0001-Workaround-for-issue-2-1.patch \
+"
+
+PYPI_PACKAGE = "python-daemon"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-daemonize_2.4.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-daemonize_2.4.7.bb
new file mode 100644
index 000000000..98f23aba1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-daemonize_2.4.7.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Library to enable your code run as a daemon process on Unix-like systems"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=13e982bf1b7b164b9d6d1665dac83873"
+SRCNAME = "daemonize"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "\
+ python-fcntl \
+ python-unixadmin \
+ python-logging \
+ python-resource \
+"
+
+SRC_URI[md5sum] = "6759005b12dfeea0d4305f8536b4b0c2"
+SRC_URI[sha256sum] = "c0194e861826be456c7c69985825ac7b79632d8ac7ad4cde8e12fee7971468c8"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil.inc
new file mode 100644
index 000000000..333b5e224
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil.inc
@@ -0,0 +1,21 @@
+SUMMARY = "Extensions to the standard Python datetime module"
+DESCRIPTION = "The dateutil module provides powerful extensions to the datetime module available in the Python standard library."
+HOMEPAGE = "https://dateutil.readthedocs.org"
+LICENSE = "BSD-3-Clause & Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e3155c7bdc71f66e02678411d2abf996"
+
+SRC_URI[md5sum] = "03a08c8bcf0a2b29f1cd21b9de4d12fb"
+SRC_URI[sha256sum] = "9d8074be4c993fbe4947878ce593052f71dac82932a677d49194d8ce9778002e"
+
+PYPI_PACKAGE = "python-dateutil"
+inherit pypi
+
+PACKAGES =+ "${PN}-zoneinfo"
+FILES_${PN}-zoneinfo = "${libdir}/${PYTHON_DIR}/site-packages/dateutil/zoneinfo"
+
+RDEPENDS_${PN}_class-target = "\
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-six \
+ ${PYTHON_PN}-stringold \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil_2.7.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil_2.7.2.bb
new file mode 100644
index 000000000..12ae4c311
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil_2.7.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-dateutil.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-dbus_1.2.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-dbus_1.2.6.bb
new file mode 100644
index 000000000..0f18ccc88
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-dbus_1.2.6.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Python bindings for the DBus inter-process communication system"
+SECTION = "devel/python"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+LICENSE = "MIT & AFL-2.1 | GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b03240518994df6d8c974675675e5ca4 \
+ file://dbus-gmain/COPYING;md5=05c3eacd50f69bb1d58afec460baad57 "
+DEPENDS = "expat dbus dbus-glib virtual/libintl python-pyrex-native"
+
+SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz \
+"
+
+SRC_URI[md5sum] = "1ce1ddf2582060f8f971652ea54cc17e"
+SRC_URI[sha256sum] = "32f29c17172cdb9cb61c68b1f1a71dfe7351506fc830869029c47449bd04faeb"
+S = "${WORKDIR}/dbus-python-${PV}"
+
+inherit distutils-base autotools pkgconfig
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[docs] = "--enable-html-docs,--disable-html-docs,python3-docutils-native"
+PACKAGECONFIG[api-docs] = "--enable-api-docs,--disable-api-docs,python3-docutils-native python3-epydoc-native"
+
+export STAGING_LIBDIR
+export STAGING_INCDIR
+
+RDEPENDS_${PN} = "python-io python-logging python-stringold python-threading python-xml"
+
+FILES_${PN}-dev += "${libdir}/pkgconfig"
+
+do_install_append() {
+ # Remove files that clash with python3-dbus; their content is same
+ rm ${D}${includedir}/dbus-1.0/dbus/dbus-python.h ${D}${libdir}/pkgconfig/dbus-python.pc
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock/0001-Add-functionality-to-add-own-objects-to-internal-obj.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock/0001-Add-functionality-to-add-own-objects-to-internal-obj.patch
new file mode 100644
index 000000000..c4d817849
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock/0001-Add-functionality-to-add-own-objects-to-internal-obj.patch
@@ -0,0 +1,52 @@
+From c4436fd42f2936e5fb0f95434d06e45aa9959ca0 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] 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 8a482ab..3d5d71a 100644
+--- a/dbusmock/__init__.py
++++ b/dbusmock/__init__.py
+@@ -14,8 +14,8 @@ __license__ = 'LGPL 3+'
+ __version__ = '0.16.7'
+
+ 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 586dbad..e4f130f 100644
+--- a/dbusmock/mockobject.py
++++ b/dbusmock/mockobject.py
+@@ -688,6 +688,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'''
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock/0002-Add-possibility-to-import-templates-from-packages.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock/0002-Add-possibility-to-import-templates-from-packages.patch
new file mode 100644
index 000000000..06ab1f05e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock/0002-Add-possibility-to-import-templates-from-packages.patch
@@ -0,0 +1,27 @@
+From 03bd5cb77c54033857810bb17562859eefa41221 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] 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 e4f130f..389df70 100644
+--- a/dbusmock/mockobject.py
++++ b/dbusmock/mockobject.py
+@@ -46,6 +46,9 @@ def load_module(name):
+ exec(f.read(), mod.__dict__, mod.__dict__)
+ return mod
+
++ if '.' in name:
++ return importlib.import_module(name)
++
+ return importlib.import_module('dbusmock.templates.' + name)
+
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock_0.16.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock_0.16.7.bb
new file mode 100644
index 000000000..ec8c54aac
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock_0.16.7.bb
@@ -0,0 +1,25 @@
+# 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>"
+
+LICENSE = "GPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+SRC_URI[md5sum] = "80f8caa838fad96483a8751e11d384f9"
+SRC_URI[sha256sum] = "2d2ea892fa4633c3ec6ac1e912120ec493047a5c6522849b7d1c95ad755bce75"
+
+SRC_URI += " \
+ file://0001-Add-functionality-to-add-own-objects-to-internal-obj.patch \
+ file://0002-Add-possibility-to-import-templates-from-packages.patch \
+"
+
+PYPI_PACKAGE = "python-dbusmock"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-dbus \
+ ${PYTHON_PN}-pygobject \
+ ${PYTHON_PN}-xml \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-decorator.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-decorator.inc
new file mode 100644
index 000000000..44edb8ad7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-decorator.inc
@@ -0,0 +1,19 @@
+SUMMARY = "Python decorator utilities"
+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."
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=893f896413826096ce5270c700a498fd"
+
+SRC_URI[md5sum] = "249e7299b9b4bced0c382343f84eb1c0"
+SRC_URI[sha256sum] = "c39efa13fbdeb4506c476c9b3babf6a718da943dab7811c206005a4a956c080c"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-stringold \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-decorator_4.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-decorator_4.3.0.bb
new file mode 100644
index 000000000..2a2b455f5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-decorator_4.3.0.bb
@@ -0,0 +1,4 @@
+inherit setuptools
+require python-decorator.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-contextlib"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-django-south.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-django-south.inc
new file mode 100644
index 000000000..e4f03b937
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-django-south.inc
@@ -0,0 +1,17 @@
+SUMMARY = "Migrations for Django"
+DESCRIPTION = "South is an intelligent database migrations library for the Django web framework. It is database-independent and DVCS-friendly, as well as a whole host of other features."
+HOMEPAGE = "http://south.aeracode.org/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=17;endline=18;md5=2155d8ae21e7c23101d5febac696b27e"
+
+SRC_URI[md5sum] = "c76a9758b2011bc3b6c39f881bba2f66"
+SRC_URI[sha256sum] = "d360bd31898f9df59f6faa786551065bba45b35e7ee3c39b381b4fbfef7392f4"
+
+PYPI_PACKAGE = "South"
+inherit pypi
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-django \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-django-south_1.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-django-south_1.0.2.bb
new file mode 100644
index 000000000..357b766a3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-django-south_1.0.2.bb
@@ -0,0 +1,2 @@
+require python-django-south.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-django.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-django.inc
new file mode 100644
index 000000000..4ef2d7f9d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-django.inc
@@ -0,0 +1,32 @@
+SUMMARY = "A high-level Python Web framework"
+HOMEPAGE = "http://www.djangoproject.com/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f09eb47206614a4954c51db8a94840fa"
+
+SRC_URI[md5sum] = "f306015e16a8d5024dbac923ac34fffb"
+SRC_URI[sha256sum] = "22383567385a9c406d8a5ce080a2694c82c6b733e157922197e8b393bb3aacd9"
+
+PYPI_PACKAGE = "Django"
+inherit pypi
+
+FILES_${PN} += "${datadir}/django"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-compression \
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-email \
+ ${PYTHON_PN}-html \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-multiprocessing \
+ ${PYTHON_PN}-netserver \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-pkgutil \
+ ${PYTHON_PN}-pytz \
+ ${PYTHON_PN}-threading \
+ ${PYTHON_PN}-unixadmin \
+ ${PYTHON_PN}-xml \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-django_1.11.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-django_1.11.10.bb
new file mode 100644
index 000000000..d2347cc96
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-django_1.11.10.bb
@@ -0,0 +1,8 @@
+require python-django.inc
+inherit setuptools
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-argparse \
+ ${PYTHON_PN}-subprocess \
+ ${PYTHON_PN}-zlib \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-dnspython.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-dnspython.inc
new file mode 100644
index 000000000..6a04429b7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-dnspython.inc
@@ -0,0 +1,20 @@
+DESCRIPTION = "DNS toolkit for Python"
+HOMEPAGE = "http://www.dnspython.org/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b9d855ee0d7bea17c8b0994d37985e1e"
+
+SRC_URI[md5sum] = "05d33ffb5d8f35ae0474bb952778a344"
+SRC_URI[sha256sum] = "40f563e1f7a7b80dc5a4e76ad75c23da53d62f1e15e6e517293b04e1f84ead7c"
+
+PYPI_PACKAGE_EXT = "zip"
+
+inherit pypi
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-crypt \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-math \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-threading \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-dnspython_1.15.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-dnspython_1.15.0.bb
new file mode 100644
index 000000000..9dbcd0ffb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-dnspython_1.15.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-dnspython.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-docutils_0.14rc2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-docutils_0.14rc2.bb
new file mode 100644
index 000000000..68436a1a5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-docutils_0.14rc2.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Text processing system for documentation"
+HOMEPAGE = "http://docutils.sourceforge.net"
+SECTION = "devel/python"
+LICENSE = "PSF & BSD-2-Clause & GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=35a23d42b615470583563132872c97d6"
+
+DEPENDS = "python"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/docutils/docutils-${PV}.tar.gz"
+SRC_URI[md5sum] = "2f4bee6451958252f7bec71f18b05be3"
+SRC_URI[sha256sum] = "3caee0bcb2a49fdf24fcfa70849a60abb7a181aa68b030f7cb7494096181830c"
+
+S = "${WORKDIR}/docutils-${PV}"
+
+inherit distutils
+
+BBCLASSEXTEND = "native"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-dominate.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-dominate.inc
new file mode 100644
index 000000000..ecf74a0bc
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-dominate.inc
@@ -0,0 +1,11 @@
+SUMMARY = "Dominate is a Python library for creating and manipulating HTML documents using an elegant DOM API."
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b52f2d57d10c4f7ee67a7eb9615d5d24"
+
+SRC_URI[md5sum] = "45bd97e6f7888aac24ae86013c57638e"
+SRC_URI[sha256sum] = "4b8ce6f33633c9dd9175b228d21c00c801b6bd0327747cd5e17fc2da934c3a69"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-threading \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-dominate_2.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-dominate_2.3.1.bb
new file mode 100644
index 000000000..c19445e72
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-dominate_2.3.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-dominate.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-editor.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-editor.inc
new file mode 100644
index 000000000..30650bda4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-editor.inc
@@ -0,0 +1,9 @@
+DESCRIPTION = "Programmatically open and editor, capture the result"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d2794c0df5b907fdace235a619d80314"
+
+SRC_URI[md5sum] = "0aca5f2ef176ce68e98a5b7e31372835"
+SRC_URI[sha256sum] = "a3c066acee22a1c94f63938341d4fb374e3fdd69366ed6603d7b24bed1efc565"
+
+PYPI_PACKAGE = "python-editor"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-editor_1.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-editor_1.0.3.bb
new file mode 100644
index 000000000..f7a9a8c0d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-editor_1.0.3.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-editor.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-enum34_1.1.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-enum34_1.1.6.bb
new file mode 100644
index 000000000..d50b5c7c5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-enum34_1.1.6.bb
@@ -0,0 +1,11 @@
+SUMMARY = "backport of Python 3.4's enum package"
+HOMEPAGE = "https://bitbucket.org/stoneleaf/enum34"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://enum/LICENSE;md5=0a97a53a514564c20efd7b2e8976c87e"
+
+SRC_URI[md5sum] = "5f13a0841a61f7fc295c514490d120d0"
+SRC_URI[sha256sum] = "8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1"
+
+inherit pypi setuptools
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-epydoc_3.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-epydoc_3.0.1.bb
new file mode 100644
index 000000000..dd9799faf
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-epydoc_3.0.1.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Epydoc is a tool for generating API documentation for Python modules, based on their docstrings"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=011c0d78eb6054d731c879132d7313f0"
+HOMEPAGE = "http://epydoc.sourceforge.net/"
+
+SRC_URI[md5sum] = "cdd6f6c76dd8bab5e653a343a0544294"
+SRC_URI[sha256sum] = "d4e5c8d90937d01b05170f592c1fa9b29e9ed0498dfe7f0eb2a3af61725b6ad1"
+
+inherit pypi distutils
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-codecs \
+ ${PYTHON_PN}-pickle \
+ ${PYTHON_PN}-stringold \
+ ${PYTHON_PN}-re \
+ ${PYTHON_PN}-xml \
+ "
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-evdev.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-evdev.inc
new file mode 100644
index 000000000..5a3884a6f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-evdev.inc
@@ -0,0 +1,21 @@
+SUMMARY = "Python evdev lib"
+HOMEPAGE = "https://github.com/gvalkov/python-evdev"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=18debddbb3f52c661a129724a883a8e2"
+
+SRC_URI[md5sum] = "c7e855ae9f97f869a59e75b29f05ce74"
+SRC_URI[sha256sum] = "57edafc469a414f58b51af1bfb9ee2babb9f626dd2df530d71c1176871850aa1"
+
+do_compile_prepend() {
+ rm -rf ${S}/evdev/ecodes.c
+}
+
+DISTUTILS_BUILD_ARGS = "build_ecodes --evdev-headers ${STAGING_DIR_TARGET}/usr/include/linux/input.h:${STAGING_DIR_TARGET}/usr/include/linux/input-event-codes.h"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-fcntl \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-stringold \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-evdev_0.7.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-evdev_0.7.0.bb
new file mode 100644
index 000000000..63541363e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-evdev_0.7.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-evdev.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter.inc
new file mode 100644
index 000000000..a333ef4ee
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "A Python library for generating news feeds in RSS and Atom formats"
+HOMEPAGE = "http://code.google.com/p/feedformatter/"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=258e3f39e2383fbd011035d04311008d"
+SRCREV = "7391193c83e10420b5a2d8ef846d23fc368c6d85"
+
+SRC_URI = "git://github.com/marianoguerra/feedformatter.git"
+
+S = "${WORKDIR}/git"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-xml \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter_0.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter_0.4.bb
new file mode 100644
index 000000000..175f94478
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter_0.4.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-feedformatter.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-feedparser_5.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-feedparser_5.2.1.bb
new file mode 100644
index 000000000..b8ee700f0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-feedparser_5.2.1.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Python Atom and RSS feed parser"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c21a7713ef6dc1b99644061c397e7c2a"
+
+SRC_URI[md5sum] = "d552f7a2a55e8e33b2a3fe1082505b42"
+SRC_URI[sha256sum] = "bd030652c2d08532c034c27fcd7c85868e7fa3cb2b17f230a44a6bbc92519bf9"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-codecs \
+ ${PYTHON_PN}-email \
+ ${PYTHON_PN}-html \
+ ${PYTHON_PN}-netserver \
+ ${PYTHON_PN}-stringold \
+ "
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-babel.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-babel.inc
new file mode 100644
index 000000000..b60ee17d1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-babel.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "i18n and l10n support for Flask based on babel and pytz"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=51917f3e8e858f5ae295a7d0e2eb3cc9"
+
+SRC_URI[md5sum] = "07803453743f139309021572a799c6b3"
+SRC_URI[sha256sum] = "c0d75710bd4b0fe866f9f2347de6e19208712f9cec006436b4c1c15d4cb0c939"
+
+PYPI_PACKAGE = "Flask-Babel"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-speaklater \
+ ${PYTHON_PN}-babel \
+ ${PYTHON_PN}-flask \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-babel_0.11.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-babel_0.11.2.bb
new file mode 100644
index 000000000..38e78c73f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-babel_0.11.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-babel.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bcrypt_0.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bcrypt_0.7.1.bb
new file mode 100644
index 000000000..f035862de
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bcrypt_0.7.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Bcrypt hashing for Flask."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0ee2ee5bee7fe96597770e92db5719a8"
+
+SRC_URI[md5sum] = "d345c36ac6637d3ca9fa942e238d00ca"
+SRC_URI[sha256sum] = "d71c8585b2ee1c62024392ebdbc447438564e2c8c02b4e57b56a4cafd8d13c5f"
+
+PYPI_PACKAGE = "Flask-Bcrypt"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "${PYTHON_PN}-bcrypt ${PYTHON_PN}-flask"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bootstrap.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bootstrap.inc
new file mode 100644
index 000000000..0723b9738
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bootstrap.inc
@@ -0,0 +1,14 @@
+DESCRIPTION = "An extension that includes Bootstrap in your project, without any boilerplate code."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=a03749709f06118a17349deb5a210619"
+
+SRC_URI[md5sum] = "e40d50f5c5b6438c1c6200a6f2871f81"
+SRC_URI[sha256sum] = "cb08ed940183f6343a64e465e83b3a3f13c53e1baabb8d72b5da4545ef123ac8"
+
+PYPI_PACKAGE = "Flask-Bootstrap"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-dominate \
+ ${PYTHON_PN}-flask \
+ ${PYTHON_PN}-visitor \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bootstrap_3.3.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bootstrap_3.3.7.1.bb
new file mode 100644
index 000000000..eeaade9a8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bootstrap_3.3.7.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-bootstrap.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login.inc
new file mode 100644
index 000000000..59eb64f77
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login.inc
@@ -0,0 +1,14 @@
+SUMMARY = "User session management for Flask"
+DESCRIPTION = "Flask-Login provides user session management for Flask. \
+It handles the common tasks of logging in, logging out, and remembering \
+your users’ sessions over extended periods of time."
+HOMEPAGE = " https://github.com/maxcountryman/flask-login"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8aa87a1cd9fa41d969ad32cfdac2c596"
+
+SRC_URI[md5sum] = "25b34c74bd509792f291c16e184225df"
+SRC_URI[sha256sum] = "c815c1ac7b3e35e2081685e389a665f2c74d7e077cb93cecabaea352da4752ec"
+
+PYPI_PACKAGE = "Flask-Login"
+
+RDEPENDS_${PN}_class-target = "${PYTHON_PN}-flask"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login_0.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login_0.4.1.bb
new file mode 100644
index 000000000..510cedf22
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login_0.4.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-login.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-mail.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-mail.inc
new file mode 100644
index 000000000..bb0870348
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-mail.inc
@@ -0,0 +1,12 @@
+SUMMARY = "Flask extension for sending email"
+DESCRIPTION = "A Flask extension for sending email"
+HOMEPAGE = " https://github.com/rduplain/flask-email"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5b16dfa6d3f275ace5985bb92949f770"
+
+SRC_URI[md5sum] = "04b35a42a44ec7aa724ec8ce55e2e08e"
+SRC_URI[sha256sum] = "22e5eb9a940bf407bcf30410ecc3708f3c56cc44b29c34e1726fe85006935f41"
+
+PYPI_PACKAGE = "Flask-Mail"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-flask"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-mail_0.9.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-mail_0.9.1.bb
new file mode 100644
index 000000000..8324da867
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-mail_0.9.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-mail.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-migrate.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-migrate.inc
new file mode 100644
index 000000000..7af4fe1b5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-migrate.inc
@@ -0,0 +1,14 @@
+DESCRIPTION = "SQLAlchemy database migrations for Flask applications using Alembic"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b69377f79f3f48c661701236d5a6a85"
+
+SRC_URI[md5sum] = "def4106c80897b7fad2afb3bc05360e4"
+SRC_URI[sha256sum] = "b709ca8642559c3c5a81a33ab10839fa052177accd5ba821047a99db635255ed"
+
+PYPI_PACKAGE = "Flask-Migrate"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-flask-sqlalchemy \
+ ${PYTHON_PN}-alembic \
+ ${PYTHON_PN}-flask \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-migrate_2.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-migrate_2.1.1.bb
new file mode 100644
index 000000000..ece516f50
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-migrate_2.1.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-migrate.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-nav.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-nav.inc
new file mode 100644
index 000000000..932ccdf4a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-nav.inc
@@ -0,0 +1,13 @@
+DESCRIPTION = "Easily create navigation for Flask applications."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=2729ee82259d601d90d28b0574d12416"
+
+SRC_URI[md5sum] = "4d51cfd06d58f8d0fe85775a6696c0e5"
+SRC_URI[sha256sum] = "44e40b755380a1e68ab521a2f9174de259a2c94ddcdaabf36b3aca2e110a33f4"
+
+PYPI_PACKAGE = "flask-nav"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-blinker \
+ ${PYTHON_PN}-flask \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-nav_0.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-nav_0.6.bb
new file mode 100644
index 000000000..30b5b3b3b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-nav_0.6.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-nav.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-navigation_0.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-navigation_0.2.0.bb
new file mode 100644
index 000000000..b2dc96e3c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-navigation_0.2.0.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "The navigation of Flask application."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=af2ec695dc1f3eb7bd74f79a68a0d789"
+
+SRC_URI[md5sum] = "d1075ee02a3f69da37e5cadad3395f31"
+SRC_URI[sha256sum] = "c42d30efa989ca877444a410e8a1cd2563546f9effe3d9fe388eedf7a6c69285"
+
+PYPI_PACKAGE = "Flask-Navigation"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-blinker \
+ ${PYTHON_PN}-flask \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo.inc
new file mode 100644
index 000000000..fb2d6ed8b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo.inc
@@ -0,0 +1,13 @@
+SUMMARY = "PyMongo support for Flask applications"
+DESCRIPTION = "PyMongo support for Flask applications."
+HOMEPAGE = "https://github.com/mitsuhiko/flask/"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://flask_pymongo/wrappers.py;beginline=1;endline=24;md5=424c4e1047d28e01b4e4634a069c019d"
+
+SRC_URI[md5sum] = "d7a1b717f27154e1f3a355f8ec2467d6"
+SRC_URI[sha256sum] = "2baaa2ba5107d72b3a8bd4b5c0c8881316e35340ad1ae979cc13f1f3c8843b3d"
+
+PYPI_PACKAGE = "Flask-PyMongo"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-pymongo ${PYTHON_PN}-flask"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo_0.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo_0.5.1.bb
new file mode 100644
index 000000000..d41d02348
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo_0.5.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-pymongo.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-restful.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-restful.inc
new file mode 100644
index 000000000..0485f85aa
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-restful.inc
@@ -0,0 +1,16 @@
+SUMMARY = "Simple framework for creating REST APIs"
+DESCRIPTION = "\
+Flask-RESTful is an extension for Flask that adds support for quickly building \
+REST APIs"
+HOMEPAGE = "https://github.com/flask-restful/flask-restful"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=685bb55ed99a366bb431995f5eef2783"
+
+SRC_URI[md5sum] = "8243ca101185b130d8fa529cbdbdbddd"
+SRC_URI[sha256sum] = "5795519501347e108c436b693ff9a4d7b373a3ac9069627d64e4001c05dd3407"
+
+inherit pypi
+
+PYPI_PACKAGE = "Flask-RESTful"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-flask"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-restful_0.3.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-restful_0.3.6.bb
new file mode 100644
index 000000000..1968d1d9d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-restful_0.3.6.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-flask-restful.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-script.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-script.inc
new file mode 100644
index 000000000..fca777bc5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-script.inc
@@ -0,0 +1,12 @@
+DESCRIPTION = "Scripting support for flask"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e686048adb69341fc8a08caeda528b41"
+
+SRC_URI[md5sum] = "3fbd91fe13cebedfb2431331f6eabb68"
+SRC_URI[sha256sum] = "6425963d91054cfcc185807141c7314a9c5ad46325911bd24dcb489bd0161c65"
+
+PYPI_PACKAGE = "Flask-Script"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-flask \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-script_2.0.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-script_2.0.6.bb
new file mode 100644
index 000000000..b7d55af15
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-script_2.0.6.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-script.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy.inc
new file mode 100644
index 000000000..e0efbc63a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy.inc
@@ -0,0 +1,10 @@
+DESCRIPTION = "Adds SQLAlchemy support to your Flask application."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5ed1b8cc741515a835a7f6bf2f62ef4a"
+
+SRC_URI[md5sum] = "373ce61dfd03b593ad2eaba68c9fee35"
+SRC_URI[sha256sum] = "5971b9852b5888655f11db634e87725a9031e170f37c0ce7851cf83497f56e53"
+
+PYPI_PACKAGE = "Flask-SQLAlchemy"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-sqlalchemy ${PYTHON_PN}-flask"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy_2.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy_2.3.2.bb
new file mode 100644
index 000000000..3dc355c5d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy_2.3.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-sqlalchemy.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-uploads.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-uploads.inc
new file mode 100644
index 000000000..cd7ac1aeb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-uploads.inc
@@ -0,0 +1,12 @@
+DESCRIPTION = "Flexible and efficient upload handling for Flask"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=b712ac634b39469660c9bdfb8d03421c"
+
+SRC_URI[md5sum] = "e5eee34aa92b64a4d22847672b3858a1"
+SRC_URI[sha256sum] = "53ecbd6033667d50ae02b63adebbaa33c7fc56c09e5293025810cf9d841ecb02"
+
+PYPI_PACKAGE = "Flask-Uploads"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-flask \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-uploads_0.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-uploads_0.2.1.bb
new file mode 100644
index 000000000..d39b07f69
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-uploads_0.2.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-uploads.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-user.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-user.inc
new file mode 100644
index 000000000..c2b71829c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-user.inc
@@ -0,0 +1,17 @@
+SUMMARY = "Customizable user account management for Flask"
+DESCRIPTION = "Customizable User Account Management for Flask; Register \
+Confirm email, Login, Change username, Change password, Forgot Password \
+and more."
+HOMEPAGE = " https://github.com/lingthio/Flask-User"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=97de97cd9d6e23c88129d884588ce71a"
+
+SRC_URI[md5sum] = "f7965e66ca139c8436896da07e66c21f"
+SRC_URI[sha256sum] = "601abcc0343dfbae0c56273d98362d5cdc266ac84d20b3f65a212e4a2c83b302"
+
+PYPI_PACKAGE = "Flask-User"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-flask \
+ ${PYTHON_PN}-flask-login \
+ ${PYTHON_PN}-flask-mail \
+ ${PYTHON_PN}-babel"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-user_0.6.19.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-user_0.6.19.bb
new file mode 100644
index 000000000..654d37752
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-user_0.6.19.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-user.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf.inc
new file mode 100644
index 000000000..3c90656ad
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf.inc
@@ -0,0 +1,15 @@
+DESCRIPTION = "Simple integration of Flask and WTForms."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3ca6bb31670492f791e6a9f2fb9f8a80"
+
+SRC_URI[md5sum] = "586f50f233926cade42e3d744aca3e8f"
+SRC_URI[sha256sum] = "5d14d55cfd35f613d99ee7cba0fc3fbbe63ba02f544d349158c14ca15561cc36"
+
+PYPI_PACKAGE = "Flask-WTF"
+
+RDEPENDS_${PN} = "\
+ ${PYTHON_PN}-flask \
+ ${PYTHON_PN}-itsdangerous \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-wtforms \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf_0.14.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf_0.14.2.bb
new file mode 100644
index 000000000..dbf091bc0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf_0.14.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-wtf.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic.inc
new file mode 100644
index 000000000..a1fe14ed4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "XStatic support for flask"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=659968f6ebd4b70b6c3190d20b4a924c"
+
+SRC_URI[md5sum] = "2f56023e1444c8bd1fec41afe93de743"
+SRC_URI[sha256sum] = "226ea8e97065a9488b59bfe5c94af4c6e2ea70a25052e301fb231a1381490133"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-flask-xstatic:"
+SRC_URI += "file://remove-pip-requires.patch"
+
+PYPI_PACKAGE = "Flask-XStatic"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-flask \
+ ${PYTHON_PN}-xstatic \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic/remove-pip-requires.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic/remove-pip-requires.patch
new file mode 100644
index 000000000..a2d620ad0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic/remove-pip-requires.patch
@@ -0,0 +1,7 @@
+--- Flask-XStatic-0.0.1/setup.py.orig 2015-01-30 08:01:56.000000000 -0800
++++ Flask-XStatic-0.0.1/setup.py 2017-04-17 21:40:32.570181626 -0700
+@@ -1,4 +1,3 @@
+-from pip.req import parse_requirements
+ import setuptools
+
+ with open('README.rst') as f:
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic_0.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic_0.0.1.bb
new file mode 100644
index 000000000..dff14a8c0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-xstatic_0.0.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-xstatic.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask.inc
new file mode 100644
index 000000000..ecf5619ec
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask.inc
@@ -0,0 +1,16 @@
+SUMMARY = "A microframework based on Werkzeug, Jinja2 and good intentions"
+DESCRIPTION = "\
+Flask is a microframework for Python based on Werkzeug, Jinja 2 and good \
+intentions. And before you ask: It’s BSD licensed!"
+HOMEPAGE = "https://github.com/mitsuhiko/flask/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=19866b76b054ab30c270c0eb9d7e43d7"
+
+SRC_URI[md5sum] = "97278dfdafda98ba7902e890b0289177"
+SRC_URI[sha256sum] = "49f44461237b69ecd901cc7ce66feea0319b9158743dd27a2899962ab214dac1"
+
+CLEANBROKEN = "1"
+
+PYPI_PACKAGE = "Flask"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-werkzeug ${PYTHON_PN}-werkzeug-tests ${PYTHON_PN}-jinja2 ${PYTHON_PN}-itsdangerous ${PYTHON_PN}-click"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask_0.12.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-flask_0.12.2.bb
new file mode 100644
index 000000000..a0a28ab8b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-flask_0.12.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-funcsigs_1.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-funcsigs_1.0.2.bb
new file mode 100644
index 000000000..dad15ee0f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-funcsigs_1.0.2.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2+"
+DESCRPTION = " \
+funcsigs is a backport of the `PEP 362`_ function signature features from \
+Python 3.3's `inspect`_ module. The backport is compatible with Python 2.6, \
+2.7 as well as 3.3 and up. 3.2 was supported by version 0.4, but with \
+setuptools and pip no longer supporting 3.2, we cannot make any statement \
+about 3.2 compatibility. \
+"
+
+HOMEPAGE = "http://funcsigs.readthedocs.org"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d6bc91dc8e5793892189fe7481a2d354"
+
+SRC_URI[md5sum] = "7e583285b1fb8a76305d6d68f4ccc14e"
+SRC_URI[sha256sum] = "a7bb0f2cf3a3fd1ab2732cb49eba4252c2af4240442415b4abce3b87022a8f50"
+
+inherit pypi setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-functools32_3.2.3-2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-functools32_3.2.3-2.bb
new file mode 100644
index 000000000..cb4bba496
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-functools32_3.2.3-2.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Backport of the functools module from Python 3.2.3 for use on 2.7 and PyPy."
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=27cf2345969ed18e6730e90fb0063a10"
+
+SRC_URI[md5sum] = "09f24ffd9af9f6cd0f63cb9f4e23d4b2"
+SRC_URI[sha256sum] = "f6253dfbe0538ad2e387bd8fdfd9293c925d63553f5813c4e587745416501e6d"
+
+inherit pypi setuptools
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-future_0.16.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-future_0.16.0.bb
new file mode 100644
index 000000000..46f7fe50f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-future_0.16.0.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Clean single-source support for Python 3 and 2"
+HOMEPAGE = "https://python-future.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3f457538b297bd0ef86564b8ac216ad7"
+
+SRC_URI[md5sum] = "3e8e88a2bda48d54b1da7634d04760d7"
+SRC_URI[sha256sum] = "e39ced1ab767b5936646cedba8bcce582398233d6a627067d4c6a454c90cfedb"
+
+PYPI_PACKAGE_HASH = "99abde815842bc6e97d5a7806ad51236630da14ca2f3b1fce94c0bb94d3d"
+
+inherit pypi setuptools
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-gdata_2.0.18.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-gdata_2.0.18.bb
new file mode 100644
index 000000000..897581f19
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-gdata_2.0.18.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Google Data APIs Python Client Library"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.txt;md5=4c8f0e6846e52a7fe4943acf462d808d"
+HOMEPAGE = "http://code.google.com/p/gdata-python-client/"
+
+SRC_URI[md5sum] = "13b6e6dd8f9e3e9a8e005e05a8329408"
+SRC_URI[sha256sum] = "56e7d22de819c22b13ceb0fe1869729b4287f89ebbd4bb55380d7bcf61a1fdb6"
+
+S = "${WORKDIR}/gdata.py-${PV}"
+
+inherit pypi distutils
+
+FILES_${PN} += "${datadir}"
+
+RDEPENDS_${PN} = " \
+ ${PYTHON_PN}-distutils \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-netserver \
+ ${PYTHON_PN}-stringold \
+ ${PYTHON_PN}-xml \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-gevent.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-gevent.inc
new file mode 100644
index 000000000..13513f219
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-gevent.inc
@@ -0,0 +1,33 @@
+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"
+LICENSE = "MIT & Python-2.0 & BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4de99aac27b470c29c6c309e0c279b65 \
+ file://NOTICE;md5=5966cd2c6582656d28ab3c33da3860f8 \
+ file://deps/libev/LICENSE;md5=d6ad416afd040c90698edcdf1cbee347"
+DEPENDS += "libevent"
+DEPENDS += "${PYTHON_PN}-greenlet"
+RDEPENDS_${PN} = "${PYTHON_PN}-greenlet \
+ ${PYTHON_PN}-mime \
+ ${PYTHON_PN}-pprint \
+ "
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-gevent:"
+
+SRC_URI_append = " \
+ file://libev-conf.patch;patch=1;pnum=1 \
+"
+
+SRC_URI[md5sum] = "7f0baf355384fe5ff2ecf66853422554"
+SRC_URI[sha256sum] = "4791c8ae9c57d6f153354736e1ccab1e2baf6c8d9ae5a77a9ac90f41e2966b2d"
+
+# 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}/deps/libev/configure
+ sed -i -e 's/^cross_compiling=no/cross_compiling=yes/' ${S}/deps/c-ares/configure
+}
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-gevent/libev-conf.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-gevent/libev-conf.patch
new file mode 100644
index 000000000..79c1867ba
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-gevent/libev-conf.patch
@@ -0,0 +1,26 @@
+From 2294734ef9d5e2efb05820e9759a1635799bdea9 Mon Sep 17 00:00:00 2001
+From: Andrej Rode <andrej.rode@ettus.com>
+Date: Mon, 10 Apr 2017 19:25:18 -0700
+Subject: [PATCH] libev: make configure crosscompile compatible
+
+Signed-off-by: Andrej Rode <andrej.rode@ettus.com>
+---
+ deps/libev/configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/deps/libev/configure b/deps/libev/configure
+index 743817e..96c2366 100755
+--- a/deps/libev/configure
++++ b/deps/libev/configure
+@@ -2208,7 +2208,7 @@ fi
+ 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
+
+
+--
+2.10.2
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-gevent_1.2.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-gevent_1.2.2.bb
new file mode 100644
index 000000000..f13bfd7b7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-gevent_1.2.2.bb
@@ -0,0 +1,4 @@
+require python-gevent.inc
+inherit setuptools
+
+RDEPENDS_${PN} += "${PYTHON_PN}-re"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-greenlet.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-greenlet.inc
new file mode 100644
index 000000000..7a42240fe
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-greenlet.inc
@@ -0,0 +1,9 @@
+SUMMARY = "Python lightweight in-process concurrent programming"
+LICENSE = "MIT & PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=03143d7a1a9f5d8a0fee825f24ca9c36 \
+ file://LICENSE.PSF;md5=c106931d9429eda0492617f037b8f69a"
+
+SRC_URI[md5sum] = "6e0b9dd5385f81d478451ec8ed1d62b3"
+SRC_URI[sha256sum] = "0fef83d43bf87a5196c91e73cb9772f945a4caaff91242766c5916d1dd1381e4"
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-greenlet_0.4.13.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-greenlet_0.4.13.bb
new file mode 100644
index 000000000..c14976ed3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-greenlet_0.4.13.bb
@@ -0,0 +1,2 @@
+inherit distutils
+require python-greenlet.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio-tools_1.8.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio-tools_1.8.4.bb
new file mode 100644
index 000000000..45e0cc1b1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio-tools_1.8.4.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Google gRPC tools"
+HOMEPAGE = "http://www.grpc.io/"
+SECTION = "devel/python"
+
+DEPENDS = "python-grpcio"
+RDEPENDS_${PN} = "python-grpcio"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
+
+inherit pypi setuptools
+
+SRC_URI[md5sum] = "e04e65afe60410cf178ff2698f052a7c"
+SRC_URI[sha256sum] = "edc84c09039d3a01012ccd97450abd06ee6b980710f6d9f191b50deb6774a75c"
+
+# For usage in other recipies when compiling protobuf files (e.g. by grpcio-tools)
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
new file mode 100644
index 000000000..0c1d964a6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
@@ -0,0 +1,33 @@
+From b02be74a2eff8abc612ef84f30e0fbce6a7f65f5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 4 Aug 2017 09:04:07 -0700
+Subject: [PATCH] setup.py: Do not mix C and C++ compiler options
+
+EXTRA_ENV_COMPILE_ARGS is used both with CC and CXX
+so using -std=c++11 or -std=gnu99 together will cause
+build time errors espcially with clang
+
+error: invalid argument '-std=gnu99' not allowed with 'C++'
+
+gcc7 ( defaults are -std=gnu11 and -std=gnu++14 )
+ as well clang default to these standards mode or newer
+anyway
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: grpcio-1.8.4/setup.py
+===================================================================
+--- grpcio-1.8.4.orig/setup.py
++++ grpcio-1.8.4/setup.py
+@@ -115,7 +115,7 @@ if EXTRA_ENV_COMPILE_ARGS is None:
+ else:
+ EXTRA_ENV_COMPILE_ARGS += ' -D_ftime=_ftime64 -D_timeb=__timeb64'
+ elif "linux" in sys.platform:
+- EXTRA_ENV_COMPILE_ARGS += ' -std=c++11 -std=gnu99 -fvisibility=hidden -fno-wrapv -fno-exceptions'
++ EXTRA_ENV_COMPILE_ARGS += ' -fvisibility=hidden -fno-wrapv -fno-exceptions'
+ elif "darwin" in sys.platform:
+ EXTRA_ENV_COMPILE_ARGS += ' -fvisibility=hidden -fno-wrapv -fno-exceptions'
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio_1.8.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio_1.8.4.bb
new file mode 100644
index 000000000..bec9d846b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio_1.8.4.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Google gRPC"
+HOMEPAGE = "http://www.grpc.io/"
+SECTION = "devel/python"
+
+DEPENDS = "python-protobuf"
+
+SRC_URI_append_class-target = " file://0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch "
+
+RDEPENDS_${PN} = "python-enum34 \
+ python-futures \
+ python-protobuf \
+ python-setuptools \
+ python-six \
+"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
+
+inherit pypi setuptools
+
+SRC_URI[md5sum] = "7860f7c61de3890323670b7b1ff63e56"
+SRC_URI[sha256sum] = "88d87aab9c7889b3ab29dd74aac1a5493ed78b9bf5afba1c069c9dd5531f951d"
+
+# For usage in other recipes when compiling protobuf files (e.g. by grpcio-tools)
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-html5lib.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-html5lib.inc
new file mode 100644
index 000000000..0eb8bf321
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-html5lib.inc
@@ -0,0 +1,15 @@
+SUMMARY = "HTML parser based on the WHATWG HTML specifcation"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1ba5ada9e6fead1fdc32f43c9f10ba7c"
+
+SRC_URI[md5sum] = "942a0688d6bdf20d087c9805c40182ad"
+SRC_URI[sha256sum] = "66cb0dcfdbbc4f9c3ba1a63fdb511ffdbd4f513b2b6d81b80cd26ce6b3fb3736"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-lxml \
+ ${PYTHON_PN}-six \
+ ${PYTHON_PN}-webencodings \
+ ${PYTHON_PN}-xml \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-html5lib_1.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-html5lib_1.0.1.bb
new file mode 100644
index 000000000..f5941a2a1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-html5lib_1.0.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-html5lib.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-humanize.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-humanize.inc
new file mode 100644
index 000000000..17a3449e7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-humanize.inc
@@ -0,0 +1,14 @@
+SUMMARY = "Python humanize utilities"
+HOMEPAGE = "http://github.com/jmoiron/humanize"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=d2eff82fc25dd07c919a02465884f02e"
+
+SRC_URI[md5sum] = "e8473d9dc1b220911cac2edd53b1d973"
+SRC_URI[sha256sum] = "a43f57115831ac7c70de098e6ac46ac13be00d69abbf60bdcac251344785bb19"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-datetime \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-humanize_0.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-humanize_0.5.1.bb
new file mode 100644
index 000000000..57693093d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-humanize_0.5.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-humanize.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-hyperlink.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-hyperlink.inc
new file mode 100644
index 000000000..2b5b0a0ff
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-hyperlink.inc
@@ -0,0 +1,17 @@
+DESCRIPTION = "A featureful, correct URL for Python"
+HOMEPAGE = "https://github.com/python-hyper/hyperlink"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3893d4ed05dcc823f8ed685a9ea19bcb"
+
+SRC_URI[md5sum] = "eaccb9845b559817e838846669cbc68a"
+SRC_URI[sha256sum] = "bc4ffdbde9bdad204d507bd8f554f16bba82dd356f6130cb16f41422909c33bc"
+
+inherit pypi
+
+RDEPENDS_${PN} += "${PYTHON_PN}-stringold ${PYTHON_PN}-netclient"
+
+PACKAGES =. "${PN}-test "
+
+FILES_${PN}-test += " \
+ ${PYTHON_SITEPACKAGES_DIR}/hyperlinkt/test \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-hyperlink_17.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-hyperlink_17.3.1.bb
new file mode 100644
index 000000000..59a9a5c8d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-hyperlink_17.3.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-hyperlink.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-idna.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-idna.inc
new file mode 100644
index 000000000..b1d0d1895
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-idna.inc
@@ -0,0 +1,13 @@
+SUMMARY = "Internationalised Domain Names in Applications"
+HOMEPAGE = "https://github.com/kjd/idna"
+LICENSE = "BSD-3-Clause & Python-2.0 & Unicode"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=c9ba5acd829579492fd5eb306c7a0565"
+
+SRC_URI[md5sum] = "c706e2790b016bd0ed4edd2d4ba4d147"
+SRC_URI[sha256sum] = "2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f"
+
+RDEPENDS_${PN}_class-target = "\
+ ${PYTHON_PN}-codecs \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-idna_2.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-idna_2.6.bb
new file mode 100644
index 000000000..2dcf72a29
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-idna_2.6.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-idna.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch
new file mode 100644
index 000000000..2575306be
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch
@@ -0,0 +1,55 @@
+From 07d4f095a9e22ae676a8d68073101131e65012dc Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Tue, 15 Nov 2011 13:16:54 +0100
+Subject: [PATCH] python imaging setup.py: force paths for zlib, freetype and jpeg and don't add host paths
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+
+Upstream-Status: Inappropriate [embedded specific]
+---
+ setup.py | 14 +++-----------
+ 1 files changed, 3 insertions(+), 11 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 5d4d53a..b1a22ec 100644
+--- a/setup.py
++++ b/setup.py
+@@ -34,10 +34,10 @@ def libinclude(root):
+ # TIFF_ROOT = libinclude("/opt/tiff")
+
+ TCL_ROOT = None
+-JPEG_ROOT = None
+-ZLIB_ROOT = None
++JPEG_ROOT = os.environ['STAGING_LIBDIR']
++ZLIB_ROOT = os.environ['STAGING_LIBDIR']
+ TIFF_ROOT = None
+-FREETYPE_ROOT = None
++FREETYPE_ROOT = os.environ['STAGING_LIBDIR'], os.environ['STAGING_INCDIR']
+ LCMS_ROOT = None
+
+ # FIXME: add mechanism to explicitly *disable* the use of a library
+@@ -147,7 +147,6 @@ class pil_build_ext(build_ext):
+ add_directory(library_dirs, "/opt/local/lib")
+ add_directory(include_dirs, "/opt/local/include")
+
+- add_directory(library_dirs, "/usr/local/lib")
+ # FIXME: check /opt/stuff directories here?
+
+ prefix = sysconfig.get_config_var("prefix")
+@@ -207,13 +206,6 @@ class pil_build_ext(build_ext):
+ if os.path.isfile(os.path.join(tcl_dir, "tk.h")):
+ add_directory(include_dirs, tcl_dir)
+
+- # standard locations
+- add_directory(library_dirs, "/usr/local/lib")
+- add_directory(include_dirs, "/usr/local/include")
+-
+- add_directory(library_dirs, "/usr/lib")
+- add_directory(include_dirs, "/usr/include")
+-
+ #
+ # insert new dirs *before* default libs, to avoid conflicts
+ # between Python PYD stub libs and real libraries
+--
+1.7.2.5
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch
new file mode 100644
index 000000000..4960ed466
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch
@@ -0,0 +1,65 @@
+At least lcms wasn't deterministicly detected from sysroot.
+
+This will allow to export LCMS_ENABLED=False when lcms isn't in PACKAGECONFIG.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+diff -uNr Imaging-1.1.7.orig/setup.py Imaging-1.1.7/setup.py
+--- Imaging-1.1.7.orig/setup.py 2013-07-22 10:17:02.081457075 +0200
++++ Imaging-1.1.7/setup.py 2013-07-22 13:10:09.029707492 +0200
+@@ -39,6 +39,12 @@
+ TIFF_ROOT = None
+ FREETYPE_ROOT = os.environ['STAGING_LIBDIR'], os.environ['STAGING_INCDIR']
+ LCMS_ROOT = None
++TCL_ENABLED = os.getenv('TCL_ENABLED', "True")
++JPEG_ENABLED = os.getenv('JPEG_ENABLED', "True")
++ZLIB_ENABLED = os.getenv('ZLIB_ENABLED', "True")
++TIFF_ENABLED = os.getenv('TIFF_ENABLED', "True")
++FREETYPE_ENABLED = os.getenv('FREETYPE_ENABLED', "True")
++LCMS_ENABLED = os.getenv('LCMS_ENABLED', "True")
+
+ # FIXME: add mechanism to explicitly *disable* the use of a library
+
+@@ -220,22 +226,22 @@
+ zlib = jpeg = tiff = freetype = tcl = tk = lcms = None
+ feature = feature()
+
+- if find_include_file(self, "zlib.h"):
++ if ZLIB_ENABLED == 'True' and find_include_file(self, "zlib.h"):
+ if find_library_file(self, "z"):
+ feature.zlib = "z"
+ elif sys.platform == "win32" and find_library_file(self, "zlib"):
+ feature.zlib = "zlib" # alternative name
+
+- if find_include_file(self, "jpeglib.h"):
++ if JPEG_ENABLED == 'True' and find_include_file(self, "jpeglib.h"):
+ if find_library_file(self, "jpeg"):
+ feature.jpeg = "jpeg"
+ elif sys.platform == "win32" and find_library_file(self, "libjpeg"):
+ feature.jpeg = "libjpeg" # alternative name
+
+- if find_library_file(self, "tiff"):
++ if TIFF_ENABLED == 'True' and find_library_file(self, "tiff"):
+ feature.tiff = "tiff"
+
+- if find_library_file(self, "freetype"):
++ if FREETYPE_ENABLED == 'True' and find_library_file(self, "freetype"):
+ # look for freetype2 include files
+ freetype_version = 0
+ for dir in self.compiler.include_dirs:
+@@ -256,11 +262,11 @@
+ if dir:
+ add_directory(self.compiler.include_dirs, dir, 0)
+
+- if find_include_file(self, "lcms.h"):
++ if LCMS_ENABLED == 'True' and find_include_file(self, "lcms.h"):
+ if find_library_file(self, "lcms"):
+ feature.lcms = "lcms"
+
+- if _tkinter and find_include_file(self, "tk.h"):
++ if TCL_ENABLED == 'True' and _tkinter and find_include_file(self, "tk.h"):
+ # the library names may vary somewhat (e.g. tcl84 or tcl8.4)
+ version = TCL_VERSION[0] + TCL_VERSION[2]
+ if find_library_file(self, "tcl" + version):
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/fix-freetype-includes.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/fix-freetype-includes.patch
new file mode 100644
index 000000000..9ecc63a0d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/fix-freetype-includes.patch
@@ -0,0 +1,30 @@
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From c6040f618d8f2706a7b46d1cdf37d1a587f9701f Mon Sep 17 00:00:00 2001
+From: Andrew Stromnov <stromnov@gmail.com>
+Date: Thu, 28 Nov 2013 16:58:43 +0400
+Subject: [PATCH] fix compiling with FreeType 2.5.1
+
+---
+ _imagingft.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/_imagingft.c b/_imagingft.c
+index 47d50bd..f19555b 100644
+--- a/_imagingft.c
++++ b/_imagingft.c
+@@ -59,7 +59,11 @@ struct {
+ const char* message;
+ } ft_errors[] =
+
++#if defined(USE_FREETYPE_2_1)
++#include FT_ERRORS_H
++#else
+ #include <freetype/fterrors.h>
++#endif
+
+ /* -------------------------------------------------------------------- */
+ /* font objects */
+--
+1.8.5.1
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/python-imaging-CVE-2016-2533.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/python-imaging-CVE-2016-2533.patch
new file mode 100644
index 000000000..b01136f9a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/python-imaging-CVE-2016-2533.patch
@@ -0,0 +1,38 @@
+python-imaging: CVE-2016-2533
+
+the patch comes from:
+https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-2533
+https://github.com/python-pillow/Pillow/commit/ae453aa18b66af54e7ff716f4ccb33adca60afd4#diff-8ff6909c159597e22288ad818938fd6b
+
+PCD decoder overruns the shuffle buffer, Fixes #568
+
+Signed-off-by: Li Wang <li.wang@windriver.com>
+---
+ libImaging/PcdDecode.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libImaging/PcdDecode.c b/libImaging/PcdDecode.c
+index b6898e3..c02d005 100644
+--- a/libImaging/PcdDecode.c
++++ b/libImaging/PcdDecode.c
+@@ -47,7 +47,7 @@ ImagingPcdDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes)
+ out[0] = ptr[x];
+ out[1] = ptr[(x+4*state->xsize)/2];
+ out[2] = ptr[(x+5*state->xsize)/2];
+- out += 4;
++ out += 3;
+ }
+
+ state->shuffle((UINT8*) im->image[state->y],
+@@ -62,7 +62,7 @@ ImagingPcdDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes)
+ out[0] = ptr[x+state->xsize];
+ out[1] = ptr[(x+4*state->xsize)/2];
+ out[2] = ptr[(x+5*state->xsize)/2];
+- out += 4;
++ out += 3;
+ }
+
+ state->shuffle((UINT8*) im->image[state->y],
+--
+1.7.9.5
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/remove-host-libdir.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/remove-host-libdir.patch
new file mode 100644
index 000000000..028a51ad5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-imaging/remove-host-libdir.patch
@@ -0,0 +1,25 @@
+Avoid getting host sysroot paths in the library paths to fix issue like:
+
+| /home/andrei/work/yocto/build-rpi-master/tmp/sysroots/x86_64-linux/usr/lib/libz.so: file not recognized: File format not recognized
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+
+
+Index: Imaging-1.1.7/setup.py
+===================================================================
+--- Imaging-1.1.7.orig/setup.py
++++ Imaging-1.1.7/setup.py
+@@ -155,11 +155,6 @@ class pil_build_ext(build_ext):
+
+ # FIXME: check /opt/stuff directories here?
+
+- prefix = sysconfig.get_config_var("prefix")
+- if prefix:
+- add_directory(library_dirs, os.path.join(prefix, "lib"))
+- add_directory(include_dirs, os.path.join(prefix, "include"))
+-
+ #
+ # locate tkinter libraries
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-imaging_1.1.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-imaging_1.1.7.bb
new file mode 100644
index 000000000..60dd7d0a3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-imaging_1.1.7.bb
@@ -0,0 +1,48 @@
+SUMMARY = "Python Imaging Library (PIL)"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README;beginline=92;endline=120;md5=c4371af4579f1e489cf881c1443dd4ec"
+DEPENDS = "freetype jpeg tiff"
+SRCNAME = "Imaging"
+PR = "r5"
+
+SRC_URI = "http://effbot.org/downloads/Imaging-${PV}.tar.gz \
+ file://0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch \
+ file://allow.to.disable.some.features.patch \
+ file://fix-freetype-includes.patch \
+ file://remove-host-libdir.patch \
+ file://python-imaging-CVE-2016-2533.patch \
+"
+
+SRC_URI[md5sum] = "fc14a54e1ce02a0225be8854bfba478e"
+SRC_URI[sha256sum] = "895bc7c2498c8e1f9b99938f1a40dc86b3f149741f105cf7c7bd2e0725405211"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+# There isn't enable/disable option, and lcms is in meta-oe, at least make it explicit when enabled
+# setup.py already has FIXME: add mechanism to explicitly *disable* the use of a library
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[lcms] = ",,lcms"
+
+inherit distutils
+
+do_compile() {
+ export STAGING_LIBDIR=${STAGING_LIBDIR}
+ export STAGING_INCDIR=${STAGING_INCDIR}
+ export LCMS_ENABLED=${@bb.utils.contains('PACKAGECONFIG', 'lcms', 'True', 'False', d)}
+ distutils_do_compile
+}
+
+do_install() {
+ export STAGING_LIBDIR=${STAGING_LIBDIR}
+ export STAGING_INCDIR=${STAGING_INCDIR}
+ export LCMS_ENABLED=${@bb.utils.contains('PACKAGECONFIG', 'lcms', 'True', 'False', d)}
+ distutils_do_install
+ install -d ${D}${datadir}/doc/${BPN}/html/
+ install -m 0644 ${S}/README ${D}${datadir}/doc/${BPN}/
+ install -m 0644 ${S}/Docs/* ${D}${datadir}/doc/${BPN}/html/
+
+ # get rid of #!/usr/local/bin/python
+ sed -i -e 's:/usr/local/bin/:${bindir}/env :g' ${D}${bindir}/*
+}
+
+RDEPENDS_${PN} += "python-lang python-stringold"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-incremental.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-incremental.inc
new file mode 100644
index 000000000..b63fac979
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-incremental.inc
@@ -0,0 +1,20 @@
+DESCRIPTION = "Incremental is a small library that versions your Python projects"
+HOMEPAGE = "https://github.com/twisted/incremental"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6ca9b07f08e2c72d48c74d363d1e0e15"
+
+SRC_URI[md5sum] = "602746e0d438e075a5a9e0678140bba2"
+SRC_URI[sha256sum] = "7b751696aaf36eebfab537e458929e194460051ccad279c72b755a167eebd4b3"
+
+inherit pypi
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-twisted \
+ ${PYTHON_PN}-click \
+"
+
+# -native is needed to build python[3]-twisted, however, we need to take steps to
+# prevent a circular dependency. The build apparently does not use the part of
+# python-incremental which uses python-twisted, so this hack is OK.
+RDEPENDS_${PYTHON_PN}-incremental-native_remove = "${PYTHON_PN}-twisted-native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-incremental_17.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-incremental_17.5.0.bb
new file mode 100644
index 000000000..139ac0c52
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-incremental_17.5.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-incremental.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-ipaddress_1.0.19.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-ipaddress_1.0.19.bb
new file mode 100644
index 000000000..9c50b4670
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-ipaddress_1.0.19.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Python 3.3+'s ipaddress for Python 2.6, 2.7, 3.2."
+HOMEPAGE = "https://github.com/phihag/ipaddress"
+LICENSE = "Python-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7f538584cc3407bf76042def7168548a"
+
+DEPENDS += "python-pip"
+
+SRC_URI[md5sum] = "d0687efaf93a32476d81e90ba0609c57"
+SRC_URI[sha256sum] = "200d8686011d470b5e4de207d803445deee427455cd0cb7c982b68cf82524f81"
+
+inherit pypi setuptools
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-iso8601.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-iso8601.inc
new file mode 100644
index 000000000..61e9abbac
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-iso8601.inc
@@ -0,0 +1,13 @@
+SUMMARY = "Simple module to parse ISO 8601 dates"
+HOMEPAGE = "http://pyiso8601.readthedocs.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b05625f2336fa024e8d57e65c6595844"
+
+SRC_URI[md5sum] = "4de940f691c5ea759fb254384c8ddcf6"
+SRC_URI[sha256sum] = "49c4b20e1f38aa5cf109ddcd39647ac419f928512c869dc01d5c7098eddede82"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-datetime \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-iso8601_0.1.12.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-iso8601_0.1.12.bb
new file mode 100644
index 000000000..c543cf9f9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-iso8601_0.1.12.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-iso8601.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-isort.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-isort.inc
new file mode 100644
index 000000000..6d13e5f7c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-isort.inc
@@ -0,0 +1,15 @@
+SUMMARY = "A Python utility / library to sort Python imports."
+HOMEPAGE = "https://pypi.python.org/pypi/isort"
+LICENSE = "MIT"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+SRC_URI[md5sum] = "fb554e9c8f9aa76e333a03d470a5cf52"
+SRC_URI[sha256sum] = "b9c40e9750f3d77e6e4d441d8b0266cf555e7cdabdcff33c4fd06366ca761ef8"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-shell \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-isort_4.3.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-isort_4.3.4.bb
new file mode 100644
index 000000000..fa46d89b5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-isort_4.3.4.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-isort.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous.inc
new file mode 100644
index 000000000..84f9e7742
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous.inc
@@ -0,0 +1,14 @@
+SUMMARY = "Various helpers to pass trusted data to untrusted environments and back."
+HOMEPAGE = "http://github.com/mitsuhiko/itsdangerous"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b61841e2bf5f07884148e2a6f1bcab0c"
+
+SRC_URI[md5sum] = "a3d55aa79369aef5345c036a8a26307f"
+SRC_URI[sha256sum] = "cbb3fcf8d3e33df861709ecaf89d9e6629cff0a217bc2848f1b41cd30d360519"
+
+CLEANBROKEN = "1"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-simplejson \
+ ${PYTHON_PN}-netclient \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous_0.24.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous_0.24.bb
new file mode 100644
index 000000000..8c99cb4ca
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous_0.24.bb
@@ -0,0 +1,6 @@
+inherit pypi setuptools
+require python-itsdangerous.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-zlib \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-javaobj-py3.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-javaobj-py3.inc
new file mode 100644
index 000000000..a0e802ca7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-javaobj-py3.inc
@@ -0,0 +1,15 @@
+SUMMARY = "Module for serializing and de-serializing Java objects."
+DESCRIPTION = "python-javaobj is a python library that provides functions\
+ for reading and writing (writing is WIP currently) Java objects serialized\
+ or will be deserialized by ObjectOutputStream. This form of object\
+ representation is a standard data interchange format in Java world."
+HOMEPAGE = "https://github.com/tcalmant/python-javaobj"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://javaobj.py;beginline=21;endline=33;md5=8b504419ce78f8133b21b4d4a89ef7e9"
+
+SRC_URI[md5sum] = "f669bb8099380e3dd84db3d542aa5b68"
+SRC_URI[sha256sum] = "b8b0d310fd97e1c7914d7911ee9d3f4b3d84d2a674aa95a4b0da3d8f155fc1bb"
+
+inherit pypi
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-javaobj-py3_0.2.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-javaobj-py3_0.2.4.bb
new file mode 100644
index 000000000..ed34740e8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-javaobj-py3_0.2.4.bb
@@ -0,0 +1,2 @@
+require python-javaobj-py3.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-jinja2.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-jinja2.inc
new file mode 100644
index 000000000..0c0bf0def
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-jinja2.inc
@@ -0,0 +1,15 @@
+DESCRIPTION = "Python Jinja2: A small but fast and easy to use stand-alone template engine written in pure python."
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=20c831f91dd3bd486020f672ba2be386"
+
+PYPI_PACKAGE = "Jinja2"
+
+SRC_URI[md5sum] = "61ef1117f945486472850819b8d1eb3d"
+SRC_URI[sha256sum] = "f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-io ${PYTHON_PN}-pickle ${PYTHON_PN}-crypt \
+ ${PYTHON_PN}-math ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-pprint ${PYTHON_PN}-shell ${PYTHON_PN}-markupsafe \
+ ${PYTHON_PN}-json ${PYTHON_PN}-threading ${PYTHON_PN}-numbers"
+
+CLEANBROKEN = "1"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-jinja2_2.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-jinja2_2.10.bb
new file mode 100644
index 000000000..5233cf40c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-jinja2_2.10.bb
@@ -0,0 +1,8 @@
+inherit pypi setuptools
+require python-jinja2.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-lang \
+ ${PYTHON_PN}-re \
+ ${PYTHON_PN}-textutils \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpatch.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpatch.inc
new file mode 100644
index 000000000..409c09ad7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpatch.inc
@@ -0,0 +1,12 @@
+SUMMARY = "Appling JSON patches in Python 2.6+ and 3.x"
+HOMEPAGE = "https://github.com/stefankoegl/python-json-patch"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=32b15c843b7a329130f4e266a281ebb3"
+
+inherit pypi
+
+SRC_URI[md5sum] = "83c4c9faccb4a2ff8c1db80cbddc590d"
+SRC_URI[sha256sum] = "49f29cab70e9068db3b1dc6b656cbe2ee4edf7dfe9bf5a0055f17a4b6804a4b9"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-json ${PYTHON_PN}-jsonpointer ${PYTHON_PN}-netclient ${PYTHON_PN}-stringold"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpatch_1.23.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpatch_1.23.bb
new file mode 100644
index 000000000..90cd31802
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpatch_1.23.bb
@@ -0,0 +1,4 @@
+inherit setuptools
+require python-jsonpatch.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-re"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer.inc
new file mode 100644
index 000000000..4ed01ed6c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer.inc
@@ -0,0 +1,13 @@
+SUMMARY = "Resolve JSON Pointers in Python"
+HOMEPAGE = "https://github.com/stefankoegl/python-json-pointer"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=32b15c843b7a329130f4e266a281ebb3"
+
+inherit pypi
+
+SRC_URI[md5sum] = "741b98d0e693b08b5e44e0a9da5a7bb7"
+SRC_URI[sha256sum] = "c192ba86648e05fdae4f08a17ec25180a9aef5008d973407b581798a83975362"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-json \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer_2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer_2.0.bb
new file mode 100644
index 000000000..e13a776ad
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer_2.0.bb
@@ -0,0 +1,4 @@
+inherit setuptools
+require python-jsonpointer.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-re"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc
new file mode 100644
index 000000000..6fdc02498
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc
@@ -0,0 +1,24 @@
+SUMMARY = "An implementation of JSON Schema validation for Python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7a60a81c146ec25599a3e1dabb8610a8"
+
+SRC_URI[md5sum] = "50c6b69a373a8b55ff1e0ec6e78f13f4"
+SRC_URI[sha256sum] = "6ff5f3180870836cae40f06fa10419f557208175f13ad7bc26caa77beb1f6e02"
+
+DEPENDS += "${PYTHON_PN}-vcversioner-native"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-core \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-pkgutil \
+ ${PYTHON_PN}-pprint \
+ ${PYTHON_PN}-rfc3987 \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-strict-rfc3339 \
+ ${PYTHON_PN}-unittest \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema_2.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema_2.6.0.bb
new file mode 100644
index 000000000..b677c646e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema_2.6.0.bb
@@ -0,0 +1,12 @@
+inherit pypi setuptools
+require python-jsonschema.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-argparse \
+ ${PYTHON_PN}-contextlib \
+ ${PYTHON_PN}-functools32 \
+ ${PYTHON_PN}-lang \
+ ${PYTHON_PN}-re \
+ ${PYTHON_PN}-subprocess \
+ ${PYTHON_PN}-textutils \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-lazy-object-proxy.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-lazy-object-proxy.inc
new file mode 100644
index 000000000..83d2ea3cd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-lazy-object-proxy.inc
@@ -0,0 +1,10 @@
+SUMMARY = "A fast and thorough lazy object proxy"
+HOMEPAGE = "https://python-lazy-object-proxy.readthedocs.io/"
+LICENSE = "BSD"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ec680df42d8ad56427a83308817658cc"
+
+SRC_URI[md5sum] = "e128152b76eb5b9ba759504936139fd0"
+SRC_URI[sha256sum] = "eb91be369f945f10d3a49f5f9be8b3d0b93a4c2be8f8a5b83b0571b8123e0a7a"
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-lazy-object-proxy_1.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-lazy-object-proxy_1.3.1.bb
new file mode 100644
index 000000000..df4d60bff
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-lazy-object-proxy_1.3.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-lazy-object-proxy.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-lockfile_0.12.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-lockfile_0.12.2.bb
new file mode 100644
index 000000000..9ad865d40
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-lockfile_0.12.2.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Platform-independent file locking module"
+HOMEPAGE = "http://launchpad.net/pylockfile"
+SECTION = "devel/python"
+
+RDEPENDS_${PN} = "python-threading"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit pypi setuptools
+
+SRC_URI[md5sum] = "a6a1a82957a23afdf44cfdd039b65ff9"
+SRC_URI[sha256sum] = "6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799"
+
+# Satisfy setup.py 'setup_requires'
+DEPENDS += " \
+ python-pbr-native \
+ "
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-lxml.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-lxml.inc
new file mode 100644
index 000000000..3f3a1e27c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-lxml.inc
@@ -0,0 +1,43 @@
+SUMMARY = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
+DESCRIPTION = "lxml is a Pythonic, mature binding for the libxml2 and \
+libxslt libraries. It provides safe and convenient access to these \
+libraries using the ElementTree API. It extends the ElementTree API \
+significantly to offer support for XPath, RelaxNG, XML Schema, XSLT, \
+C14N and much more."
+HOMEPAGE = "http://codespeak.net/lxml"
+SECTION = "devel/python"
+LICENSE = "BSD & GPLv2 & MIT & PSF"
+LIC_FILES_CHKSUM = "file://LICENSES.txt;md5=e4c045ebad958ead4b48008f70838403 \
+ file://doc/licenses/elementtree.txt;md5=eb34d036a6e3d56314ee49a6852ac891 \
+ file://doc/licenses/BSD.txt;md5=700a1fc17f4797d4f2d34970c8ee694b \
+ file://doc/licenses/GPL.txt;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://src/lxml/isoschematron/resources/rng/iso-schematron.rng;beginline=2;endline=7;md5=939e7430ce85e1242ff50c4ee9430752 \
+ file://src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl;beginline=2;endline=24;md5=cc86b7b2bbc678e13f58ea403eb9929b \
+ file://src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl;beginline=2;endline=7;md5=5b03236d293dc3784205542b409d2f53 \
+ "
+
+DEPENDS += "libxml2 libxslt"
+
+SRC_URI[md5sum] = "c266d9062e23b08f66426979a2b36f51"
+SRC_URI[sha256sum] = "e2629cdbcad82b83922a3488937632a4983ecc0fed3e5cfbf430d069382eeb9b"
+
+DISTUTILS_BUILD_ARGS += " \
+ --with-xslt-config='pkg-config libxslt' \
+ --with-xml2-config='pkg-config libxml-2.0' \
+"
+
+DISTUTILS_INSTALL_ARGS += " \
+ --with-xslt-config='pkg-config libxslt' \
+ --with-xml2-config='pkg-config libxml-2.0' \
+"
+
+inherit pypi
+
+do_configure_prepend() {
+ sed -i -e 's/--version/--modversion/' ${B}/setupinfo.py
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS_${PN} += "libxml2 libxslt ${PYTHON_PN}-compression"
+RDEPENDS_${PN}_class-native = "libxml2-native libxslt-native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-lxml_4.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-lxml_4.2.1.bb
new file mode 100644
index 000000000..81ccb12d8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-lxml_4.2.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-lxml.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/0001-setup.py-link-in-sysroot-not-in-host-directories.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/0001-setup.py-link-in-sysroot-not-in-host-directories.patch
new file mode 100644
index 000000000..c71b16fec
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/0001-setup.py-link-in-sysroot-not-in-host-directories.patch
@@ -0,0 +1,39 @@
+From dfb83a41aaeae326e9b6f02b233af375bc7b8815 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 3407c82..15ed7cd 100644
+--- a/setup.py
++++ b/setup.py
+@@ -127,7 +127,7 @@ class _M2CryptoBuildExt(build_ext.build_ext):
+ self.openssl = os.path.join(self.openssl, 'OpenSSL')
+ else:
+ self.libraries = ['ssl', 'crypto']
+- self.openssl = '/usr'
++ self.openssl = os.environ.get( "STAGING_DIR" )
+
+ def finalize_options(self):
+ '''Overloaded build_ext implementation to append custom openssl
+@@ -143,8 +143,8 @@ class _M2CryptoBuildExt(build_ext.build_ext):
+ if _openssl and os.path.isdir(_openssl):
+ self.openssl = _openssl
+
+- self.include_dirs.append(os.path.join(self.openssl, 'include'))
+- openssl_library_dir = os.path.join(self.openssl, 'lib')
++ self.include_dirs.append(os.environ.get( "STAGING_INCDIR" ))
++ openssl_library_dir = os.environ.get( "STAGING_LIBDIR" )
+
+ if platform.system() == "Linux":
+ if _multiarch: # on Fedora/RHEL it is an empty string
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/cross-compile-platform.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/cross-compile-platform.patch
new file mode 100644
index 000000000..c6654e540
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/cross-compile-platform.patch
@@ -0,0 +1,30 @@
+Do not compute platform, this does not work in cross compile environment
+since it pokes at the system for getting architecture values
+
+Upstream-Status: Inappropriate
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: M2Crypto-0.26.0/setup.py
+===================================================================
+--- M2Crypto-0.26.0.orig/setup.py
++++ M2Crypto-0.26.0/setup.py
+@@ -141,19 +141,6 @@ class _M2CryptoBuildExt(build_ext.build_
+ self.include_dirs.append(
+ os.path.join(self.openssl, 'include', 'openssl'))
+
+- # For RedHat-based distros, the '-D__{arch}__' option for
+- # Swig needs to be normalized, particularly on i386.
+- mach = platform.machine().lower()
+- if mach in ('i386', 'i486', 'i586', 'i686'):
+- arch = '__i386__'
+- elif mach in ('ppc64', 'powerpc64'):
+- arch = '__powerpc64__'
+- elif mach in ('ppc', 'powerpc'):
+- arch = '__powerpc__'
+- else:
+- arch = '__%s__' % mach
+- self.swig_opts.append('-D%s' % arch)
+-
+ self.swig_opts.extend(['-I%s' % i for i in self.include_dirs])
+ self.swig_opts.append('-includeall')
+ self.swig_opts.append('-modern')
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/m2crypto-0.26.4-gcc_macros.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/m2crypto-0.26.4-gcc_macros.patch
new file mode 100644
index 000000000..2d738cc94
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/m2crypto-0.26.4-gcc_macros.patch
@@ -0,0 +1,24 @@
+Imported from Fedora
+
+--- M2Crypto/SWIG/_m2crypto.i 2017-09-26 11:26:33.000000000 +0200
++++ M2Crypto-0.26.4/SWIG/_m2crypto.i 2017-09-26 21:04:14.080330741 +0200
+@@ -7,6 +7,7 @@
+ * Copyright (c) 2009-2010 Heikki Toivonen. All rights reserved.
+ *
+ */
++%import "gcc_macros.h"
+
+ %module(threads=1) m2crypto
+ /* We really don't need threadblock (PyGILState_Ensure() etc.) anywhere.
+@@ -15,11 +16,6 @@
+ %nothreadblock;
+ %nothreadallow;
+
+-#if SWIG_VERSION >= 0x030000
+-#define __WCHAR_MAX__ __WCHAR_MAX
+-#define __WCHAR_MIN__ __WCHAR_MIN
+-#endif
+-
+ %{
+ #if __GNUC__ < 5
+ #pragma GCC diagnostic ignored "-Wunused-label"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto_0.26.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto_0.26.4.bb
new file mode 100644
index 000000000..272c76ca1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto_0.26.4.bb
@@ -0,0 +1,50 @@
+SUMMARY = "A Python crypto and SSL toolkit"
+HOMEPAGE = "https://gitlab.com/m2crypto/m2crypto"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=b0e1f0b7d0ce8a62c18b1287b991800e"
+
+SRC_URI += "file://0001-setup.py-link-in-sysroot-not-in-host-directories.patch \
+ file://cross-compile-platform.patch \
+ file://m2crypto-0.26.4-gcc_macros.patch \
+ "
+SRC_URI[md5sum] = "5c74c25ba8b45122318a165a3a2059ad"
+SRC_URI[sha256sum] = "5cae7acc0b34821f8c0ddf6665e482893fe1f198ad6379e61ffa9d8e65f5c199"
+
+PYPI_PACKAGE = "M2Crypto"
+inherit pypi setuptools siteinfo
+
+DEPENDS += "openssl swig-native"
+RDEPENDS_${PN} += "python-typing"
+
+DISTUTILS_BUILD_ARGS += "build_ext --openssl=${STAGING_DIR_HOST} -I${STAGING_INCDIR}"
+DISTUTILS_INSTALL_ARGS += "build_ext --openssl=${STAGING_DIR_HOST}"
+
+SWIG_FEATURES_x86 = "-D__i386__"
+SWIG_FEATURES ?= "-D__${HOST_ARCH}__"
+export SWIG_FEATURES
+
+# Get around a problem with swig, but only if the
+# multilib header file exists.
+#
+do_compile_prepend() {
+ ${CPP} -dM - < /dev/null | grep -v __STDC__ | grep -v __REGISTER_PREFIX__ | grep -v __GNUC__ \
+ | sed 's/^\(#define \([^ ]*\) .*\)$/#undef \2\n\1/' > SWIG/gcc_macros.h
+ 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-openembedded/meta-python/recipes-devtools/python/python-mako.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-mako.inc
new file mode 100644
index 000000000..a9fa55639
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-mako.inc
@@ -0,0 +1,21 @@
+SUMMARY = "A super-fast templating language that borrows the best ideas from the existing templating languages"
+HOMEPAGE = "http://www.makotemplates.org/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1bb21fa2d2f7a534c884b990430a6863"
+
+PYPI_PACKAGE = "Mako"
+
+inherit pypi
+
+SRC_URI[md5sum] = "5836cc997b1b773ef389bf6629c30e65"
+SRC_URI[sha256sum] = "4e02fde57bd4abb5ec400181e4c314f56ac3e49ba4fb8b0d50bba18cb27d25ae"
+
+RDEPENDS_${PN} = " \
+ ${PYTHON_PN}-html \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-mako_1.0.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-mako_1.0.7.bb
new file mode 100644
index 000000000..3372eeb28
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-mako_1.0.7.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-mako.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe.inc
new file mode 100644
index 000000000..927f84452
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe.inc
@@ -0,0 +1,12 @@
+DESCRIPTION = "Implements a XML/HTML/XHTML Markup safe string for Python"
+HOMEPAGE = "http://github.com/mitsuhiko/markupsafe"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c6d1adcf45d69359f256c1cea3254127"
+
+SRC_URI[md5sum] = "2fcedc9284d50e577b5192e8e3578355"
+SRC_URI[sha256sum] = "a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665"
+
+PYPI_PACKAGE = "MarkupSafe"
+inherit pypi
+
+RDEPENDS_${PN} += "${PYTHON_PN}-stringold"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe_1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe_1.0.bb
new file mode 100644
index 000000000..05bbe8a35
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe_1.0.bb
@@ -0,0 +1,6 @@
+inherit setuptools
+require python-markupsafe.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-re"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib/fix_setupext.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib/fix_setupext.patch
new file mode 100644
index 000000000..21b9094a1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib/fix_setupext.patch
@@ -0,0 +1,110 @@
+This fixes the numpy import problem in setupext.py using a hard-coded path.
+
+Index: matplotlib-2.0.2/setupext.py
+===================================================================
+--- matplotlib-2.0.2.orig/setupext.py
++++ matplotlib-2.0.2/setupext.py
+@@ -148,6 +148,7 @@ def has_include_file(include_dirs, filen
+ Returns `True` if `filename` can be found in one of the
+ directories in `include_dirs`.
+ """
++ return True
+ if sys.platform == 'win32':
+ include_dirs += os.environ.get('INCLUDE', '.').split(';')
+ for dir in include_dirs:
+@@ -172,7 +173,7 @@ def get_base_dirs():
+ Returns a list of standard base directories on this platform.
+ """
+ if options['basedirlist']:
+- return options['basedirlist']
++ return [os.environ['STAGING_LIBDIR']]
+
+ basedir_map = {
+ 'win32': ['win32_static', ],
+@@ -260,14 +261,6 @@ def make_extension(name, files, *args, *
+ `distutils.core.Extension` constructor.
+ """
+ ext = DelayedExtension(name, files, *args, **kwargs)
+- for dir in get_base_dirs():
+- include_dir = os.path.join(dir, 'include')
+- if os.path.exists(include_dir):
+- ext.include_dirs.append(include_dir)
+- for lib in ('lib', 'lib64'):
+- lib_dir = os.path.join(dir, lib)
+- if os.path.exists(lib_dir):
+- ext.library_dirs.append(lib_dir)
+ ext.include_dirs.append('.')
+
+ return ext
+@@ -314,6 +307,7 @@ class PkgConfig(object):
+ " matplotlib may not be able to find some of its dependencies")
+
+ def set_pkgconfig_path(self):
++ return
+ pkgconfig_path = sysconfig.get_config_var('LIBDIR')
+ if pkgconfig_path is None:
+ return
+@@ -875,14 +869,14 @@ class Numpy(SetupPackage):
+ reload(numpy)
+
+ ext = Extension('test', [])
+- ext.include_dirs.append(numpy.get_include())
++ ext.include_dirs.append(os.path.join(os.environ['STAGING_LIBDIR'], 'python2.7/site-packages/numpy/core/include/'))
+ if not has_include_file(
+ ext.include_dirs, os.path.join("numpy", "arrayobject.h")):
+ warnings.warn(
+ "The C headers for numpy could not be found. "
+ "You may need to install the development package")
+
+- return [numpy.get_include()]
++ return [os.path.join(os.environ['STAGING_LIBDIR'], 'python2.7/site-packages/numpy/core/include/')]
+
+ def check(self):
+ min_version = extract_versions()['__version__numpy__']
+Index: matplotlib-2.0.2/setup.py
+===================================================================
+--- matplotlib-2.0.2.orig/setup.py
++++ matplotlib-2.0.2/setup.py
+@@ -66,28 +66,6 @@ mpl_packages = [
+ setupext.Python(),
+ setupext.Platform(),
+ 'Required dependencies and extensions',
+- setupext.Numpy(),
+- setupext.Six(),
+- setupext.Dateutil(),
+- setupext.FuncTools32(),
+- setupext.Subprocess32(),
+- setupext.Pytz(),
+- setupext.Cycler(),
+- setupext.Tornado(),
+- setupext.Pyparsing(),
+- setupext.LibAgg(),
+- setupext.FreeType(),
+- setupext.FT2Font(),
+- setupext.Png(),
+- setupext.Qhull(),
+- setupext.Image(),
+- setupext.TTConv(),
+- setupext.Path(),
+- setupext.ContourLegacy(),
+- setupext.Contour(),
+- setupext.Delaunay(),
+- setupext.QhullWrap(),
+- setupext.Tri(),
+ 'Optional subpackages',
+ setupext.SampleData(),
+ setupext.Toolkits(),
+@@ -100,13 +78,8 @@ mpl_packages = [
+ setupext.BackendMacOSX(),
+ setupext.BackendQt5(),
+ setupext.BackendQt4(),
+- setupext.BackendGtk3Agg(),
+ setupext.BackendGtk3Cairo(),
+- setupext.BackendGtkAgg(),
+- setupext.BackendTkAgg(),
+- setupext.BackendWxAgg(),
+ setupext.BackendGtk(),
+- setupext.BackendAgg(),
+ setupext.BackendCairo(),
+ setupext.Windowing(),
+ 'Optional LaTeX dependencies',
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib_2.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib_2.0.2.bb
new file mode 100644
index 000000000..5b1c3f05b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib_2.0.2.bb
@@ -0,0 +1,18 @@
+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://LICENSE/LICENSE;md5=afec61498aa5f0c45936687da9a53d74"
+
+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 = "https://github.com/matplotlib/matplotlib/archive/v${PV}.tar.gz \
+ file://fix_setupext.patch \
+"
+SRC_URI[md5sum] = "89717c1ef3c6fdcd6fb1f3b597a4858c"
+SRC_URI[sha256sum] = "aebed23921562792b68b8ca355de5abc176af4424f1987e2fa95f65e5c5e7e89"
+S = "${WORKDIR}/matplotlib-${PV}"
+EXTRA_OECONF = "--disable-docs"
+
+inherit setuptools pkgconfig
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-mccabe/0001-python-mccabe-remove-unnecessary-setup_requires-pyte.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-mccabe/0001-python-mccabe-remove-unnecessary-setup_requires-pyte.patch
new file mode 100644
index 000000000..941bed3d7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-mccabe/0001-python-mccabe-remove-unnecessary-setup_requires-pyte.patch
@@ -0,0 +1,33 @@
+From 3484bdfa7adbaebcf8bb8e7d4820f64b12717932 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Fri, 29 Jul 2016 15:37:18 +0800
+Subject: [PATCH] python-mccabe: remove unnecessary setup_requires
+ pytest-runner
+
+* Remove setup_requires pytest-runner as the
+ setup_requires pytest-runner actually is not
+ used for pytest which only in do_compile phase
+ via setup.py build
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ setup.py | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index e59903d..bf2aaba 100644
+--- a/setup.py
++++ b/setup.py
+@@ -33,7 +33,6 @@ setup(
+ license='Expat license',
+ py_modules=['mccabe'],
+ zip_safe=False,
+- setup_requires=['pytest-runner'],
+ tests_require=['pytest'],
+ entry_points={
+ 'flake8.extension': [
+--
+2.8.1
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-mccabe_0.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-mccabe_0.4.0.bb
new file mode 100644
index 000000000..a86d15800
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-mccabe_0.4.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "McCabe checker, plugin for flake8"
+HOMEPAGE = "https://github.com/dreamhost/cliff"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.rst;md5=f8b50fba1711ecac6bcdb6324f85a66d"
+
+SRC_URI += " \
+ file://0001-python-mccabe-remove-unnecessary-setup_requires-pyte.patch \
+"
+
+SRC_URI[md5sum] = "8c425db05f310adcd4bb174b991f26f5"
+SRC_URI[sha256sum] = "9a2b12ebd876e77c72e41ebf401cc2e7c5b566649d50105ca49822688642207b"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += " \
+ python-prettytable \
+ python-cmd2 \
+ python-pyparsing"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-mock_2.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-mock_2.0.0.bb
new file mode 100644
index 000000000..840c36efe
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-mock_2.0.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A Python Mocking and Patching Library for Testing"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=de9dfbf780446b18aab11f00baaf5b7e"
+
+SRC_URI[md5sum] = "0febfafd14330c9dcaa40de2d82d40ad"
+SRC_URI[sha256sum] = "b158b6df76edd239b8208d481dc46b6afd45a846b7812ff0ce58971cf5bc8bba"
+
+inherit pypi setuptools
+
+DEPENDS += " \
+ python-pbr-native"
+
+RDEPENDS_${PN} += " \
+ python-prettytable \
+ python-cmd2 \
+ python-pyparsing \
+ python-mccabe \
+ python-pep8 \
+ python-pyflakes \
+ python-pbr \
+ python-funcsigs \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-monotonic_1.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-monotonic_1.4.bb
new file mode 100644
index 000000000..4c5d8aedc
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-monotonic_1.4.bb
@@ -0,0 +1,10 @@
+SUMMARY = "An implementation of time.monotonic() for Python 2.0 through 3.2"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d2794c0df5b907fdace235a619d80314"
+
+SRC_URI[md5sum] = "29302cd6b1013b3ab0d1ed78e20d22f2"
+SRC_URI[sha256sum] = "a02611d5b518cd4051bf22d21bd0ae55b3a03f2d2993a19b6c90d9d168691f84"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "${PYTHON_PN}-ctypes ${PYTHON_PN}-io ${PYTHON_PN}-re ${PYTHON_PN}-threading"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-msgpack.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-msgpack.inc
new file mode 100644
index 000000000..fdc892610
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-msgpack.inc
@@ -0,0 +1,13 @@
+SUMMARY = "MessagePack (de)serializer"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=cd9523181d9d4fbf7ffca52eaa2a5751"
+
+SRC_URI[md5sum] = "6d644c06a87a5a111bbbf5b34b4be440"
+SRC_URI[sha256sum] = "378cc8a6d3545b532dfd149da715abae4fda2a3adb6d74e525d0d5e51f46909b"
+
+PYPI_PACKAGE = "msgpack-python"
+inherit pypi
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-io \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-msgpack_0.5.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-msgpack_0.5.6.bb
new file mode 100644
index 000000000..2c2c8f2ad
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-msgpack_0.5.6.bb
@@ -0,0 +1,2 @@
+require python-msgpack.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-ndg-httpsclient.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-ndg-httpsclient.inc
new file mode 100644
index 000000000..d74302398
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-ndg-httpsclient.inc
@@ -0,0 +1,25 @@
+DESCRIPTION = "Provides enhanced HTTPS support for httplib and urllib2 using PyOpenSSL"
+HOMEPAGE = "http://python-requests.org"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://MANIFEST.in;md5=ce22c0cd986d2de3f7073cd6b5523ae0"
+
+SRC_URI[md5sum] = "a0d349cf9530e331697a6e5ab1f40de6"
+SRC_URI[sha256sum] = "fba4d4798dcac2965874f24afb6631b4326baa4bd02505744d34f690c354856a"
+
+PYPI_PACKAGE = "ndg_httpsclient"
+
+DEPENDS += " \
+ ${PYTHON_PN}-pyopenssl \
+ ${PYTHON_PN}-pyasn1 \
+"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-pyopenssl \
+ ${PYTHON_PN}-pyasn1 \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+UPSTREAM_CHECK_REGEX = ""
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-ndg-httpsclient_0.4.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-ndg-httpsclient_0.4.4.bb
new file mode 100644
index 000000000..ca0eb3263
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-ndg-httpsclient_0.4.4.bb
@@ -0,0 +1,2 @@
+require python-ndg-httpsclient.inc
+inherit pypi setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-netaddr.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-netaddr.inc
new file mode 100644
index 000000000..5b6d4dffa
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-netaddr.inc
@@ -0,0 +1,13 @@
+SUMMARY = "A network address manipulation library for Python."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e6345d695ffe3776f68a56fe7962db44"
+
+SRC_URI[md5sum] = "51019ef59c93f3979bcb37d3b8527e07"
+SRC_URI[sha256sum] = "38aeec7cdd035081d3a4c306394b19d677623bf76fa0913f6695127c7753aefd"
+
+inherit pypi
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-pprint \
+ ${PYTHON_PN}-xml \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-netaddr_0.7.19.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-netaddr_0.7.19.bb
new file mode 100644
index 000000000..ca5a79a78
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-netaddr_0.7.19.bb
@@ -0,0 +1,6 @@
+require python-netaddr.inc
+inherit setuptools
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-textutils \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-networkx_2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-networkx_2.1.bb
new file mode 100644
index 000000000..bc0c6863d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-networkx_2.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Python package for creating and manipulating graphs and networks"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3376ff7c9c58048c62d91431f7f08cde"
+
+SRC_URI[md5sum] = "4a2c2a62dfc46ba7d594daca7c834995"
+SRC_URI[sha256sum] = "64272ca418972b70a196cb15d9c85a5a6041f09a2f32e0d30c0255f25d458bb1"
+
+PYPI_PACKAGE_EXT = "zip"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "python-2to3"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-numeric/0001-it-tries-to-define-this-function-differently-than-it.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-numeric/0001-it-tries-to-define-this-function-differently-than-it.patch
new file mode 100644
index 000000000..81ed744cb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-numeric/0001-it-tries-to-define-this-function-differently-than-it.patch
@@ -0,0 +1,30 @@
+From 322e781c67d7a78fc2cfc3d377f50b825fc64abb Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 2 Jun 2017 20:21:01 -0700
+Subject: [PATCH] it tries to define this function differently than it is
+ defined in sys/time.h.
+
+Use the definition from system
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Packages/RNG/Src/ranf.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/Packages/RNG/Src/ranf.c b/Packages/RNG/Src/ranf.c
+index 5ca7dc5..e669fa8 100644
+--- a/Packages/RNG/Src/ranf.c
++++ b/Packages/RNG/Src/ranf.c
+@@ -149,9 +149,6 @@ void Mixranf(int *s,u32 s48[2])
+ #else
+ struct timeval tv;
+ struct timezone tz;
+-#if !defined(__sgi)
+- int gettimeofday(struct timeval *, struct timezone *);
+-#endif
+
+ (void)gettimeofday(&tv,&tz);
+ s48[0] = (u32)tv.tv_sec;
+--
+2.13.0
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-numeric_24.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-numeric_24.2.bb
new file mode 100644
index 000000000..c91d77c81
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-numeric_24.2.bb
@@ -0,0 +1,16 @@
+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 \
+ file://0001-it-tries-to-define-this-function-differently-than-it.patch \
+"
+S = "${WORKDIR}/Numeric-${PV}"
+
+inherit distutils
+
+SRC_URI[md5sum] = "2ae672656e06716a149acb048cca3093"
+SRC_URI[sha256sum] = "5f72e729eb6ff57442f2a38bfc9931738b59e5077928e2e70d22b4610ff15258"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-oauthlib.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-oauthlib.inc
new file mode 100644
index 000000000..c5de8a091
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-oauthlib.inc
@@ -0,0 +1,25 @@
+SUMMARY = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic"
+HOMEPAGE = "https://github.com/idan/oauthlib"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5ba9ce41463615e082609806255bce1b"
+
+SRC_URI = "https://pypi.python.org/packages/a5/8a/212e9b47fb54be109f3ff0684165bb38c51117f34e175c379fce5c7df754/oauthlib-${PV}.tar.gz"
+SRC_URI[md5sum] = "277a9a966cc8c72e492b4eeb41332445"
+SRC_URI[sha256sum] = "ce57b501e906ff4f614e71c36a3ab9eacbb96d35c24d1970d2539bbc3ec70ce1"
+
+S = "${WORKDIR}/oauthlib-${PV}"
+
+# The following configs & dependencies are from setuptools extras_require.
+# These dependencies are optional, hence can be controlled via PACKAGECONFIG.
+# The upstream names may not correspond exactly to bitbake package names.
+#
+# Uncomment this line to enable all the optional features.
+#PACKAGECONFIG ?= "test signedtoken signals rsa"
+PACKAGECONFIG[test] = ",,,${PYTHON_PN}-blinker ${PYTHON_PN}-cryptography ${PYTHON_PN}-nose ${PYTHON_PN}-pyjwt"
+PACKAGECONFIG[signedtoken] = ",,,${PYTHON_PN}-cryptography ${PYTHON_PN}-pyjwt"
+PACKAGECONFIG[signals] = ",,,${PYTHON_PN}-blinker"
+PACKAGECONFIG[rsa] = ",,,${PYTHON_PN}-cryptography"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-core ${PYTHON_PN}-crypt ${PYTHON_PN}-datetime ${PYTHON_PN}-json ${PYTHON_PN}-logging ${PYTHON_PN}-math ${PYTHON_PN}-netclient ${PYTHON_PN}-unittest"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-oauthlib_2.0.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-oauthlib_2.0.6.bb
new file mode 100644
index 000000000..4329d21a1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-oauthlib_2.0.6.bb
@@ -0,0 +1,4 @@
+inherit setuptools
+require python-oauthlib.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-re ${PYTHON_PN}-lang"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-paho-mqtt.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-paho-mqtt.inc
new file mode 100644
index 000000000..f834e6fd8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-paho-mqtt.inc
@@ -0,0 +1,21 @@
+SUMMARY = "MQTT version 3.1/3.1.1 client library"
+LICENSE = "EPL-1.0 | EDL-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=eb48c6ee2cb9f5b8b9fe75e6f817bdfc \
+ file://epl-v10;md5=8d383c379e91d20ba18a52c3e7d3a979 \
+ file://edl-v10;md5=c09f121939f063aeb5235972be8c722c \
+"
+SRCNAME = "paho-mqtt"
+
+inherit pypi
+SRC_URI[md5sum] = "2cc27d8b369700b1fc99325add0dadd2"
+SRC_URI[sha256sum] = "31911f6031de306c27ed79dc77b690d7c55b0dcb0f0434ca34ec6361d0371122"
+
+DEPENDS += "${PYTHON_PN}-pytest-runner-native"
+
+RDEPENDS_${PN} = "\
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-math \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-threading \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-paho-mqtt_1.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-paho-mqtt_1.3.1.bb
new file mode 100644
index 000000000..a1031176e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-paho-mqtt_1.3.1.bb
@@ -0,0 +1,6 @@
+inherit setuptools
+require python-paho-mqtt.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pam_1.8.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pam_1.8.2.bb
new file mode 100644
index 000000000..60a3b43de
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pam_1.8.2.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Python PAM module using ctypes, py3/py2."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=64326d42471b493c5c088305364ad5da"
+
+SRC_URI[md5sum] = "db71b6b999246fb05d78ecfbe166629d"
+SRC_URI[sha256sum] = "26efe4e79b869b10f97cd8c4a6bbb04a4e54d41186364e975b4108c9c071812c"
+
+PYPI_PACKAGE = "python-pam"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "libpam"
+
+inherit distro_features_check
+REQUIRED_DISTRO_FEATURES = "pam"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pandas.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pandas.inc
new file mode 100644
index 000000000..b9f84a614
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pandas.inc
@@ -0,0 +1,23 @@
+SUMMARY = "pandas library for high-performance data analysis tools"
+DESCRIPTION = "pandas is an open source, BSD-licensed library providing \
+high-performance, easy-to-use data structures and data analysis tools for \
+the Python programming language."
+HOMEPAGE = "http://pandas.pydata.org/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ee0470f2de336c370a71c2f8d5e81c11"
+
+SRC_URI[md5sum] = "c7a2757b607748255f3270221ac61d59"
+SRC_URI[sha256sum] = "44a94091dd71f05922eec661638ec1a35f26d573c119aa2fad964f10a2880e6c"
+
+inherit pypi
+
+DEPENDS += " \
+ ${PYTHON_PN}-numpy-native \
+"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-numpy \
+ ${PYTHON_PN}-dateutil \
+ ${PYTHON_PN}-pytz \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pandas_0.22.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pandas_0.22.0.bb
new file mode 100644
index 000000000..b3bfab969
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pandas_0.22.0.bb
@@ -0,0 +1,7 @@
+inherit setuptools
+require python-pandas.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-future \
+ ${PYTHON_PN}-json \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-parse-type_0.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-parse-type_0.4.2.bb
new file mode 100644
index 000000000..b516c5912
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-parse-type_0.4.2.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Simplifies building parse types based on the parse module"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d07323820cca0f1d192cbbf8a0516f95"
+PYPI_PACKAGE = "parse_type"
+
+SRC_URI[md5sum] = "b5fa59e45965d1b2896023742df2e707"
+SRC_URI[sha256sum] = "f596bdc75d3dd93036fbfe3d04127da9f6df0c26c36e01e76da85adef4336b3c"
+
+RDEPENDS_${PN} += "python-parse"
+
+inherit pypi setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-parse_1.8.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-parse_1.8.2.bb
new file mode 100644
index 000000000..8e16372c5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-parse_1.8.2.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Parse strings using a specification based on the Python format() syntax"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://parse.py;beginline=1191;endline=1209;md5=5147afdd9b3615290ad8733f0137a1a1"
+
+SRC_URI[md5sum] = "42002338551bdfa0f01bbe4e679a17dd"
+SRC_URI[sha256sum] = "8048dde3f5ca07ad7ac7350460952d83b63eaacecdac1b37f45fd74870d849d2"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-logging \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-passlib.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-passlib.inc
new file mode 100644
index 000000000..9e477ecf9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-passlib.inc
@@ -0,0 +1,19 @@
+SUMMARY = "comprehensive password hashing framework supporting over 30 schemes"
+DESCRIPTION = "\
+Passlib is a password hashing library for Python 2 & 3, which provides cross-platform \
+implementations of over 30 password hashing algorithms, as well as a framework for \
+managing existing password hashes. It’s designed to be useful for a wide range of \
+tasks, from verifying a hash found in /etc/shadow, to providing full-strength password \
+hashing for multi-user applications."
+HOMEPAGE = "https://bitbucket.org/ecollins/passlib"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=73eed1a5470b969951dac411086c7036"
+
+SRC_URI[md5sum] = "254869dae3fd9f09f0746a3cb29a0b15"
+SRC_URI[sha256sum] = "3d948f64138c25633613f303bcc471126eae67c04d5e3f6b7b8ce6242f8653e0"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-crypt \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-netclient \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-passlib_1.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-passlib_1.7.1.bb
new file mode 100644
index 000000000..11c598a08
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-passlib_1.7.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-passlib.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-paste_2.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-paste_2.0.3.bb
new file mode 100644
index 000000000..6b4019f84
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-paste_2.0.3.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Tools for using a Web Server Gateway Interface stack"
+HOMEPAGE = "http://pythonpaste.org/"
+LICENSE = "MIT"
+RDEPENDS_${PN} = "python-six"
+
+LIC_FILES_CHKSUM = "file://docs/license.txt;md5=1798f29d55080c60365e6283cb49779c"
+
+SRC_URI[md5sum] = "1231e14eae62fa7ed76e9130b04bc61e"
+SRC_URI[sha256sum] = "2346a347824c32641bf020c17967b49ae74d3310ec1bc9b958d4b84e2d985218"
+
+PYPI_PACKAGE = "Paste"
+inherit pypi setuptools
+
+FILES_${PN} += "/usr/lib/*"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pbr_3.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pbr_3.1.1.bb
new file mode 100644
index 000000000..bdff867f3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pbr_3.1.1.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Python Build Reasonableness: PBR is a library that injects some useful and sensible default behaviors into your setuptools run"
+HOMEPAGE = "https://pypi.python.org/pypi/pbr"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1dece7821bf3fd70fe1309eaa37d52a2"
+
+SRC_URI[md5sum] = "4e82c2e07af544c56a5b71c801525b00"
+SRC_URI[sha256sum] = "05f61c71aaefc02d8e37c0a3eeb9815ff526ea28b3b76324769e6158d7f95be1"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN}_class-target += " \
+ python-pip \
+ "
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pep8_1.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pep8_1.7.1.bb
new file mode 100644
index 000000000..b12d72d38
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pep8_1.7.1.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Python style guide checker"
+HOMEPAGE = "https://github.com/dreamhost/cliff"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.rst;md5=d8ebbbe831259ce010179d2f310b0f3e"
+
+SRC_URI[md5sum] = "603821d06db945c71d811b5a8d78423c"
+SRC_URI[sha256sum] = "fe249b52e20498e59e0b5c5256aa52ee99fc295b26ec9eaa85776ffdb9fe6374"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += " \
+ python-prettytable \
+ python-cmd2 \
+ python-pyparsing"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect.inc
new file mode 100644
index 000000000..fa8ad0119
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect.inc
@@ -0,0 +1,21 @@
+SUMMARY = "A Pure Python Expect like Module for Python"
+HOMEPAGE = "http://pexpect.readthedocs.org/"
+SECTION = "devel/python"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1c7a725251880af8c6a148181665385b"
+
+SRC_URI[md5sum] = "913fc0a68a915cdf6ad4250493c94cf7"
+SRC_URI[sha256sum] = "9f8eb3277716a01faafaba553d629d3d60a1a624c7cf45daa600d2148c30020c"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/pexpect"
+
+RDEPENDS_${PN} = "\
+ ${PYTHON_PN}-core \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-terminal \
+ ${PYTHON_PN}-resource \
+ ${PYTHON_PN}-fcntl \
+ ${PYTHON_PN}-ptyprocess \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect_4.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect_4.5.0.bb
new file mode 100644
index 000000000..1c46b47a2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect_4.5.0.bb
@@ -0,0 +1,2 @@
+require python-pexpect.inc
+inherit pypi setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pip_9.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pip_9.0.3.bb
new file mode 100644
index 000000000..e3fc6ba65
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pip_9.0.3.bb
@@ -0,0 +1,14 @@
+SUMMARY = "PIP is a tool for installing and managing Python packages"
+HOMEPAGE = "https://pip.pypa.io/"
+LICENSE = "MIT & LGPL-2.1"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=25fba45109565f87de20bae85bc39452"
+
+SRC_URI[md5sum] = "b15b33f9aad61f88d0f8c866d16c55d8"
+SRC_URI[sha256sum] = "7bf48f9a693be1d58f49f7af7e0ae9fe29fd671cde8a55e6edca3581c4ef5796"
+
+inherit pypi setuptools
+
+# Since PIP is like CPAN for PERL we need to drag in all python modules to ensure everything works
+RDEPENDS_${PN}_class-target = "python-modules python-distribute python-misc"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc
new file mode 100644
index 000000000..320359aa6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc
@@ -0,0 +1,9 @@
+SUMMARY = "Plugin and hook calling mechanisms for python"
+HOMEPAGE = "https://github.com/pytest-dev/pluggy"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=338dad807ed9337bfaeb9979c3bfe20f"
+
+SRC_URI[md5sum] = "ffdde7c3a5ba9a440404570366ffb6d5"
+SRC_URI[sha256sum] = "7f8ae7f5bdf75671a718d2daf0a64b7885f74510bcd98b1a0bb420eb9a9d0cff"
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy_0.6.0.bb
new file mode 100644
index 000000000..edcd4f512
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy_0.6.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-pluggy.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-ply.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-ply.inc
new file mode 100644
index 000000000..a744950b6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-ply.inc
@@ -0,0 +1,18 @@
+SUMMARY = "Python Lex and Yacc"
+DESCRIPTION = "Python ply: PLY is yet another implementation of lex and yacc for Python"
+HOMEPAGE = "https://pypi.python.org/pypi/ply"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://README.md;beginline=5;endline=32;md5=f5ee5c355c0e6719c787a71b8f0fa96c"
+
+SRC_URI[md5sum] = "6465f602e656455affcd7c5734c638f8"
+SRC_URI[sha256sum] = "00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"
+
+inherit pypi
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-ply_3.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-ply_3.11.bb
new file mode 100644
index 000000000..2b6165c5b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-ply_3.11.bb
@@ -0,0 +1,2 @@
+require python-ply.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pretend.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pretend.inc
new file mode 100644
index 000000000..b342aef52
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pretend.inc
@@ -0,0 +1,9 @@
+SUMMARY = "A library for stubbing in Python"
+HOMEPAGE = "https://github.com/alex/pretend"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=411780c0b7fa756753e94affeee5bc99"
+
+SRC_URI[md5sum] = "ad53883ede48aeac7ae584f0de0240e8"
+SRC_URI[sha256sum] = "c90eb810cde8ebb06dafcb8796f9a95228ce796531bc806e794c2f4649aa1b10"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pretend_1.0.9.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pretend_1.0.9.bb
new file mode 100644
index 000000000..73b8ed4d7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pretend_1.0.9.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-pretend.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-prettytable_0.7.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-prettytable_0.7.2.bb
new file mode 100644
index 000000000..6f4390e24
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-prettytable_0.7.2.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Python library for displaying tabular data in a ASCII table format"
+HOMEPAGE = "http://code.google.com/p/prettytable"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3e73500ffa52de5071cff65990055282"
+
+SRC_URI[md5sum] = "0c1361104caff8b09f220748f9d69899"
+SRC_URI[sha256sum] = "a53da3b43d7a5c229b5e3ca2892ef982c46b7923b51e98f0db49956531211c4f"
+
+SRCNAME = "prettytable"
+
+SRC_URI = "https://pypi.python.org/packages/source/P/PrettyTable/${SRCNAME}-${PV}.zip"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+do_install_append() {
+ perm_files=`find "${D}${PYTHON_SITEPACKAGES_DIR}/" -name "*.txt" -o -name "PKG-INFO"`
+ for f in $perm_files; do
+ chmod 644 "${f}"
+ done
+}
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/PrettyTable/"
+UPSTREAM_CHECK_REGEX = "/PrettyTable/(?P<pver>(\d+[\.\-_]*)+)"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-progress.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-progress.inc
new file mode 100644
index 000000000..297c0d373
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-progress.inc
@@ -0,0 +1,14 @@
+SUMMARY = "Easy progress reporting for Python"
+HOMEPAGE = "http://github.com/verigak/progress/"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=aef5566ac4fede9815eccf124c281317"
+
+SRC_URI[md5sum] = "f65ccfcc2339d522b2dd5801aaa40dc7"
+SRC_URI[sha256sum] = "c88d89ee3bd06716a0b8b5504d9c3bcb3c1c0ab98f96dc7f1dc5f56812a4f60a"
+
+RDEPENDS_${PN}_class-target += " \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-math \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-progress_1.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-progress_1.3.bb
new file mode 100644
index 000000000..80608627a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-progress_1.3.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-progress.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-prompt-toolkit.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-prompt-toolkit.inc
new file mode 100644
index 000000000..cc409a4eb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-prompt-toolkit.inc
@@ -0,0 +1,18 @@
+SUMMARY = "Library for building powerful interactive command lines in Python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b2cde7da89f0c1f3e49bf968d00d554f"
+
+SRC_URI[md5sum] = "8fe70295006dbc8afedd43e5eba99032"
+SRC_URI[sha256sum] = "858588f1983ca497f1cf4ffde01d978a3ea02b01c8a26a8bbc5cd2e66d816917"
+
+PYPI_PACKAGE = "prompt_toolkit"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-core \
+ ${PYTHON_PN}-six \
+ ${PYTHON_PN}-terminal \
+ ${PYTHON_PN}-threading \
+ ${PYTHON_PN}-wcwidth \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-prompt-toolkit_1.0.15.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-prompt-toolkit_1.0.15.bb
new file mode 100644
index 000000000..527c905a8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-prompt-toolkit_1.0.15.bb
@@ -0,0 +1,6 @@
+inherit pypi setuptools
+require python-prompt-toolkit.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-protobuf.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-protobuf.inc
new file mode 100644
index 000000000..b84983d5b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-protobuf.inc
@@ -0,0 +1,25 @@
+DESCRIPTION = "Protocol Buffers"
+HOMEPAGE = "https://developers.google.com/protocol-buffers/"
+SECTION = "devel/python"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
+
+inherit pypi
+
+SRC_URI[md5sum] = "393a53483224cb338df5c643646c0300"
+SRC_URI[sha256sum] = "09879a295fd7234e523b62066223b128c5a8a88f682e3aff62fb115e4a0d8be0"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-pkgutil \
+ ${PYTHON_PN}-six \
+ ${PYTHON_PN}-unittest \
+"
+
+# For usage in other recipies when compiling protobuf files (e.g. by grpcio-tools)
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-protobuf_3.5.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-protobuf_3.5.2.bb
new file mode 100644
index 000000000..f04fc489f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-protobuf_3.5.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-protobuf.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-psutil.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-psutil.inc
new file mode 100644
index 000000000..5d8e61f4b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-psutil.inc
@@ -0,0 +1,20 @@
+SUMMARY = "A cross-platform process and system utilities module for Python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0f02e99f7f3c9a7fe8ecfc5d44c2be62"
+
+SRC_URI[md5sum] = "3b291833dbea631db9d271aa602a169a"
+SRC_URI[sha256sum] = "e2467e9312c2fa191687b89ff4bc2ad8843be4af6fb4dc95a7cc5f7d7a327b18"
+
+PACKAGES =+ "${PN}-tests"
+
+FILES_${PN}-tests += " \
+ ${PYTHON_SITEPACKAGES_DIR}/psutil/test* \
+ ${PYTHON_SITEPACKAGES_DIR}/psutil/__pycache__/test* \
+"
+
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-threading \
+ ${PYTHON_PN}-xml \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-psutil_5.4.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-psutil_5.4.3.bb
new file mode 100644
index 000000000..9aabfb206
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-psutil_5.4.3.bb
@@ -0,0 +1,6 @@
+inherit pypi setuptools
+require python-psutil.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-ptyprocess.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-ptyprocess.inc
new file mode 100644
index 000000000..43f2d094a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-ptyprocess.inc
@@ -0,0 +1,20 @@
+SUMMARY = "Run a subprocess in a pseudo terminal"
+HOMEPAGE = "http://ptyprocess.readthedocs.io/en/latest/"
+SECTION = "devel/python"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=cfdcd51fa7d5808da4e74346ee394490"
+
+SRCNAME = "ptyprocess"
+
+SRC_URI[md5sum] = "d3b8febae1b8c53b054bd818d0bb8665"
+SRC_URI[sha256sum] = "e64193f0047ad603b71f202332ab5527c5e52aa7c8b609704fc28c0dc20c4365"
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/ptyprocess"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+RDEPENDS_${PN} = "\
+ ${PYTHON_PN}-core \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-ptyprocess_0.5.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-ptyprocess_0.5.2.bb
new file mode 100644
index 000000000..7ca458771
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-ptyprocess_0.5.2.bb
@@ -0,0 +1,2 @@
+require python-ptyprocess.inc
+inherit pypi setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-py.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-py.inc
new file mode 100644
index 000000000..c7d672737
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-py.inc
@@ -0,0 +1,9 @@
+SUMMARY = "Library with cross-python path, ini-parsing, io, code, log facilities"
+HOMEPAGE = "http://py.readthedocs.io/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9"
+
+SRC_URI[md5sum] = "279ca69c632069e1b71e11b14641ca28"
+SRC_URI[sha256sum] = "ca18943e28235417756316bfada6cd96b23ce60dd532642690dcfdaba988a76d"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-py_1.5.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-py_1.5.2.bb
new file mode 100644
index 000000000..5ad2c1976
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-py_1.5.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-py.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyalsaaudio.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyalsaaudio.inc
new file mode 100644
index 000000000..d150409a2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyalsaaudio.inc
@@ -0,0 +1,11 @@
+SUMMARY = "Support for the Linux 2.6.x ALSA Sound System"
+SECTION = "devel/python"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1a3b161aa0fcec32a0c8907a2219ad9d"
+
+SRC_URI[md5sum] = "b46f69561bc85fc52e698b2440ca251e"
+SRC_URI[sha256sum] = "84e8f8da544d7f4bd96479ce4a237600077984d9be1d7f16c1d9a492ecf50085"
+
+DEPENDS += "alsa-lib"
+
+RDEPENDS_${PN} += "libasound"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyalsaaudio_0.8.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyalsaaudio_0.8.4.bb
new file mode 100644
index 000000000..e5153421b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyalsaaudio_0.8.4.bb
@@ -0,0 +1,2 @@
+require python-pyalsaaudio.inc
+inherit pypi setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1-modules.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1-modules.inc
new file mode 100644
index 000000000..9fa54cfe0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1-modules.inc
@@ -0,0 +1,16 @@
+SUMMARY = "A collection of ASN.1-based protocols modules."
+DESCRIPTION = "A collection of ASN.1 modules expressed in form of pyasn1\
+ classes. Includes protocols PDUs definition (SNMP, LDAP etc.) and various\
+ data structures (X.509, PKCS etc.)."
+HOMEPAGE = "https://github.com/etingof/pyasn1-modules"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=280606d9c18f200e03e0c247ac61475a"
+
+SRC_URI[md5sum] = "ff938698590f314ff9b3d5c48737d899"
+SRC_URI[sha256sum] = "af00ea8f2022b6287dc375b2c70f31ab5af83989fc6fe9eacd4976ce26cd7ccc"
+
+inherit pypi
+
+RDEPENDS_${PN} = "${PYTHON_PN}-pyasn1"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1-modules_0.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1-modules_0.2.1.bb
new file mode 100644
index 000000000..eb7888408
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1-modules_0.2.1.bb
@@ -0,0 +1,2 @@
+require python-pyasn1-modules.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1.inc
new file mode 100644
index 000000000..f3c32e08a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1.inc
@@ -0,0 +1,16 @@
+SUMMARY = "Python library implementing ASN.1 types."
+HOMEPAGE = "http://pyasn1.sourceforge.net/"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=280606d9c18f200e03e0c247ac61475a"
+
+SRC_URI[md5sum] = "cb5883ddc6a9f405600429f37cf0759c"
+SRC_URI[sha256sum] = "d258b0a71994f7770599835249cece1caef3c70def868c4915e6e5ca49b67d15"
+
+RDEPENDS_${PN}_class-target += " \
+ ${PYTHON_PN}-codecs \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-math \
+ ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1_0.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1_0.4.2.bb
new file mode 100644
index 000000000..a13c74dda
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1_0.4.2.bb
@@ -0,0 +1,6 @@
+inherit pypi setuptools
+require python-pyasn1.inc
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-lang \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pybind11.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pybind11.inc
new file mode 100644
index 000000000..e441dc6de
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pybind11.inc
@@ -0,0 +1,7 @@
+SUMMARY = "Seamless operability between C++11 and Python"
+HOMEPAGE = "https://github.com/wjakob/pybind11"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=beb87117af69fd10fbf9fb14c22a2e62"
+
+SRC_URI[md5sum] = "2c651a75a20dabbaa18a8b023ffd54c0"
+SRC_URI[sha256sum] = "cbb036a8aad59a199ad672f98813f85c672642c6a67b4ff3868b1d6abc5fae3e"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pybind11_2.2.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pybind11_2.2.2.bb
new file mode 100644
index 000000000..e56743002
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pybind11_2.2.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-pybind11.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pybluez.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pybluez.inc
new file mode 100644
index 000000000..399fe579f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pybluez.inc
@@ -0,0 +1,21 @@
+DESCRIPTION = "Bluetooth Python extension module"
+HOMEPAGE = "http://karulis.github.io/pybluez/"
+SECTION = "devel/python"
+
+DEPENDS = "bluez5"
+
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8a71d0475d08eee76d8b6d0c6dbec543"
+
+inherit pypi
+
+SRC_URI = "https://pypi.python.org/packages/c1/98/3149481d508bee174335be6725880f00d297afebe75c15e917af8f6fe169/PyBluez-0.22.zip"
+SRC_URI[md5sum] = "49dab9d5a8f0b798c8125c7f649be3cd"
+SRC_URI[sha256sum] = "4ce006716a54d9d18e8186a3f1c8b12a8e6befecffe8fd5828a291fb694ce49d"
+
+S = "${WORKDIR}/PyBluez-${PV}"
+
+RDEPENDS_${PN} += "\
+ bluez5 \
+ ${PYTHON_PN}-fcntl \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pybluez_0.22.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pybluez_0.22.bb
new file mode 100644
index 000000000..3158f4b64
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pybluez_0.22.bb
@@ -0,0 +1,2 @@
+require python-pybluez.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pycparser.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pycparser.inc
new file mode 100644
index 000000000..d112d9f77
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pycparser.inc
@@ -0,0 +1,16 @@
+SUMMARY = "Parser of the C language, written in pure Python"
+HOMEPAGE = "https://github.com/eliben/pycparser"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86f1cedb4e6410a88ce8e30b91079169"
+
+SRC_URI[md5sum] = "72370da54358202a60130e223d488136"
+SRC_URI[sha256sum] = "99a8ca03e29851d96616ad0404b4aad7d9ee16f25c9f9708a11faf2810f7b226"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-ply \
+ ${PYTHON_PN}-pprint \
+ cpp \
+ cpp-symlinks \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pycparser_2.18.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pycparser_2.18.bb
new file mode 100644
index 000000000..98742737f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pycparser_2.18.bb
@@ -0,0 +1,6 @@
+inherit pypi setuptools
+require python-pycparser.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto.inc
new file mode 100644
index 000000000..232cdb711
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto.inc
@@ -0,0 +1,21 @@
+DESCRIPTION = "Cryptographic modules for Python."
+HOMEPAGE = "http://www.pycrypto.org/"
+LICENSE = "PSFv2"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=35f354d199e8cb7667b059a23578e63d"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-pycrypto:"
+
+DEPENDS += " gmp"
+
+inherit pypi autotools-brokensep
+
+SRC_URI += "file://cross-compiling.patch \
+ file://CVE-2013-7459.patch \
+ "
+
+SRC_URI[md5sum] = "55a61a054aa66812daf5161a0d5d7eda"
+SRC_URI[sha256sum] = "f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c"
+
+do_compile[noexec] = "1"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto/CVE-2013-7459.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto/CVE-2013-7459.patch
new file mode 100644
index 000000000..9006c5c35
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto/CVE-2013-7459.patch
@@ -0,0 +1,98 @@
+From 8dbe0dc3eea5c689d4f76b37b93fe216cf1f00d4 Mon Sep 17 00:00:00 2001
+From: Legrandin <helderijs@gmail.com>
+Date: Sun, 22 Dec 2013 22:24:46 +0100
+Subject: [PATCH] Throw exception when IV is used with ECB or CTR
+
+The IV parameter is currently ignored when initializing
+a cipher in ECB or CTR mode.
+
+For CTR mode, it is confusing: it takes some time to see
+that a different parameter is needed (the counter).
+
+For ECB mode, it is outright dangerous.
+
+This patch forces an exception to be raised.
+
+Upstream-Status: Backport
+[https://github.com/dlitz/pycrypto/commit/8dbe0dc3eea5c689d4f76b37b93fe216cf1f00d4]
+
+CVE: CVE-2013-7459
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ lib/Crypto/SelfTest/Cipher/common.py | 31 +++++++++++++++++++++++--------
+ src/block_template.c | 11 +++++++++++
+ 2 files changed, 34 insertions(+), 8 deletions(-)
+
+diff --git a/lib/Crypto/SelfTest/Cipher/common.py b/lib/Crypto/SelfTest/Cipher/common.py
+index 8bebed9..91ec743 100644
+--- a/lib/Crypto/SelfTest/Cipher/common.py
++++ b/lib/Crypto/SelfTest/Cipher/common.py
+@@ -239,19 +239,34 @@ class RoundtripTest(unittest.TestCase):
+ return """%s .decrypt() output of .encrypt() should not be garbled""" % (self.module_name,)
+
+ def runTest(self):
+- for mode in (self.module.MODE_ECB, self.module.MODE_CBC, self.module.MODE_CFB, self.module.MODE_OFB, self.module.MODE_OPENPGP):
++
++ ## ECB mode
++ mode = self.module.MODE_ECB
++ encryption_cipher = self.module.new(a2b_hex(self.key), mode)
++ ciphertext = encryption_cipher.encrypt(self.plaintext)
++ decryption_cipher = self.module.new(a2b_hex(self.key), mode)
++ decrypted_plaintext = decryption_cipher.decrypt(ciphertext)
++ self.assertEqual(self.plaintext, decrypted_plaintext)
++
++ ## OPENPGP mode
++ mode = self.module.MODE_OPENPGP
++ encryption_cipher = self.module.new(a2b_hex(self.key), mode, self.iv)
++ eiv_ciphertext = encryption_cipher.encrypt(self.plaintext)
++ eiv = eiv_ciphertext[:self.module.block_size+2]
++ ciphertext = eiv_ciphertext[self.module.block_size+2:]
++ decryption_cipher = self.module.new(a2b_hex(self.key), mode, eiv)
++ decrypted_plaintext = decryption_cipher.decrypt(ciphertext)
++ self.assertEqual(self.plaintext, decrypted_plaintext)
++
++ ## All other non-AEAD modes (but CTR)
++ for mode in (self.module.MODE_CBC, self.module.MODE_CFB, self.module.MODE_OFB):
+ encryption_cipher = self.module.new(a2b_hex(self.key), mode, self.iv)
+ ciphertext = encryption_cipher.encrypt(self.plaintext)
+-
+- if mode != self.module.MODE_OPENPGP:
+- decryption_cipher = self.module.new(a2b_hex(self.key), mode, self.iv)
+- else:
+- eiv = ciphertext[:self.module.block_size+2]
+- ciphertext = ciphertext[self.module.block_size+2:]
+- decryption_cipher = self.module.new(a2b_hex(self.key), mode, eiv)
++ decryption_cipher = self.module.new(a2b_hex(self.key), mode, self.iv)
+ decrypted_plaintext = decryption_cipher.decrypt(ciphertext)
+ self.assertEqual(self.plaintext, decrypted_plaintext)
+
++
+ class PGPTest(unittest.TestCase):
+ def __init__(self, module, params):
+ unittest.TestCase.__init__(self)
+diff --git a/src/block_template.c b/src/block_template.c
+index c36b316..8746948 100644
+--- a/src/block_template.c
++++ b/src/block_template.c
+@@ -170,6 +170,17 @@ ALGnew(PyObject *self, PyObject *args, PyObject *kwdict)
+ "Key cannot be the null string");
+ return NULL;
+ }
++ if (IVlen != 0 && mode == MODE_ECB)
++ {
++ PyErr_Format(PyExc_ValueError, "ECB mode does not use IV");
++ return NULL;
++ }
++ if (IVlen != 0 && mode == MODE_CTR)
++ {
++ PyErr_Format(PyExc_ValueError,
++ "CTR mode needs counter parameter, not IV");
++ return NULL;
++ }
+ if (IVlen != BLOCK_SIZE && mode != MODE_ECB && mode != MODE_CTR)
+ {
+ PyErr_Format(PyExc_ValueError,
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto/cross-compiling.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto/cross-compiling.patch
new file mode 100644
index 000000000..712f3e8dd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto/cross-compiling.patch
@@ -0,0 +1,23 @@
+Index: pycrypto-2.6/setup.py
+===================================================================
+--- pycrypto-2.6.orig/setup.py
++++ pycrypto-2.6/setup.py
+@@ -271,7 +271,8 @@ class PCTBuildConfigure(Command):
+ if not os.path.exists("config.status"):
+ if os.system("chmod 0755 configure") != 0:
+ raise RuntimeError("chmod error")
+- cmd = "sh configure" # we use "sh" here so that it'll work on mingw32 with standard python.org binaries
++ host = os.environ.get("HOST_SYS")
++ cmd = "ac_cv_func_malloc_0_nonnull=yes sh configure --host " + host # we use "sh" here so that it'll work on mingw32 with standard python.org binaries
+ if self.verbose < 1:
+ cmd += " -q"
+ if os.system(cmd) != 0:
+@@ -370,7 +371,7 @@ kw = {'name':"pycrypto",
+ 'ext_modules': plat_ext + [
+ # _fastmath (uses GNU mp library)
+ Extension("Crypto.PublicKey._fastmath",
+- include_dirs=['src/','/usr/include/'],
++ include_dirs=['src/'],
+ libraries=['gmp'],
+ sources=["src/_fastmath.c"]),
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto_2.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto_2.6.1.bb
new file mode 100644
index 000000000..e13db01b7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pycrypto_2.6.1.bb
@@ -0,0 +1,9 @@
+inherit distutils
+require python-pycrypto.inc
+
+# We explicitly call distutils_do_install, since we want it to run, but
+# *don't* want the autotools install to run, since this package doesn't
+# provide a "make install" target.
+do_install() {
+ distutils_do_install
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome.inc
new file mode 100644
index 000000000..c4969f966
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome.inc
@@ -0,0 +1,29 @@
+SUMMARY = "Cryptographic library for Python"
+DESCRIPTION = "PyCryptodome is a self-contained Python package of low-level\
+ cryptographic primitives."
+HOMEPAGE = "http://www.pycryptodome.org"
+LICENSE = "PD & BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=775fe77831c03bf82f35abc0e230d4c1"
+
+SRC_URI[md5sum] = "a2587b6381b0ef4eb960cea1e7507d04"
+SRC_URI[sha256sum] = "c5dd29e9f1b733e74311bf95d0e544e91bd1d14bc0366e8f443562d8d9920b7d"
+
+inherit pypi
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-math \
+"
+
+RDEPENDS_${PN}-tests += " \
+ ${PYTHON_PN}-unittest \
+"
+
+PACKAGES =+ "${PN}-tests"
+
+FILES_${PN}-tests += " \
+ ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/ \
+ ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/__pycache__/ \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome_3.4.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome_3.4.11.bb
new file mode 100644
index 000000000..c7701eb9f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome_3.4.11.bb
@@ -0,0 +1,2 @@
+require python-pycryptodome.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pydbus.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pydbus.inc
new file mode 100644
index 000000000..0773b7ff8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pydbus.inc
@@ -0,0 +1,11 @@
+DESCRIPTION = "Pythonic DBus library"
+HOMEPAGE = "https://pypi.python.org/pypi/pydbus/"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a916467b91076e631dd8edb7424769c7"
+
+SRC_URI[md5sum] = "c6abd44862322679bd4e907bebc3e0d0"
+SRC_URI[sha256sum] = "4207162eff54223822c185da06c1ba8a34137a9602f3da5a528eedf3f78d0f2c"
+
+S = "${WORKDIR}/pydbus-${PV}"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-pygobject"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pydbus_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pydbus_0.6.0.bb
new file mode 100644
index 000000000..1722a80cd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pydbus_0.6.0.bb
@@ -0,0 +1,2 @@
+require python-pydbus.inc
+inherit pypi setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyexpect.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyexpect.inc
new file mode 100644
index 000000000..d2d41d51d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyexpect.inc
@@ -0,0 +1,11 @@
+SUMMARY = "Python expectaton library"
+DESCRIPTION = "Minimal but very flexible implementation of the expect pattern"
+SECTION = "devel/python"
+HOMEPAGE = " https://bitbucket.org/dwt/pyexpect"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://README.md;md5=500b884e9dcd5f677a53cbbee8ace939"
+
+inherit pypi
+
+SRC_URI[md5sum] = "c71307d6c7096fdbde0813018dfa0092"
+SRC_URI[sha256sum] = "d656ef7e07a8aa539ce0a4883a683341037b6fc1c329bf55b63bffbf2cce9582"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyexpect_1.0.17.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyexpect_1.0.17.bb
new file mode 100644
index 000000000..d26beb794
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyexpect_1.0.17.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-pyexpect.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyfirmata.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyfirmata.inc
new file mode 100644
index 000000000..2365379aa
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyfirmata.inc
@@ -0,0 +1,13 @@
+SUMMARY = "A Python interface for the Firmata protocol"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=84ddcef430b7c44caa22b2ff4b37a3df"
+PYPI_PACKAGE = "pyFirmata"
+
+RDEPENDS_${PN} = "\
+ ${PYTHON_PN}-pyserial \
+"
+
+SRC_URI[md5sum] = "ee4c23ca5c35d3091d550a63540811a3"
+SRC_URI[sha256sum] = "b54d49d66a9d93c1ef9c72ca01264414cb2de177baac116c12d5cce0c380160c"
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyfirmata_1.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyfirmata_1.0.3.bb
new file mode 100644
index 000000000..d77e0f385
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyfirmata_1.0.3.bb
@@ -0,0 +1,3 @@
+inherit setuptools
+require python-pyfirmata.inc
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyflakes_1.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyflakes_1.6.0.bb
new file mode 100644
index 000000000..244485965
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyflakes_1.6.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "passive checker of Python programs"
+HOMEPAGE = "https://github.com/dreamhost/cliff"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.rst;md5=029ce1beb023f2c4ca9f417e4984a865"
+
+SRC_URI[md5sum] = "b385b0e4cd40a522553e97cd2d83573e"
+SRC_URI[sha256sum] = "8d616a382f243dbf19b54743f280b80198be0bca3a5396f1d2e1fca6223e8805"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-prettytable \
+ ${PYTHON_PN}-cmd2 \
+ ${PYTHON_PN}-pyparsing"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0001-reflect-2.1-reporting-for-key-imports.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0001-reflect-2.1-reporting-for-key-imports.patch
new file mode 100644
index 000000000..1f31cb805
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0001-reflect-2.1-reporting-for-key-imports.patch
@@ -0,0 +1,90 @@
+From ed44474c11f577c1644910964a917a4cf701bb0f Mon Sep 17 00:00:00 2001
+From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+Date: Tue, 26 Jan 2016 14:24:26 -0500
+Subject: [PATCH] reflect 2.1 reporting for key imports
+
+GnuPG 2.1 changes how it reports key imports. These changes should
+make the pygpgme test suite compatible with GnuPG 2.1.
+
+See also:
+https://lists.gnupg.org/pipermail/gnupg-devel/2016-January/030718.html
+
+Upstream-Status: Backport
+
+Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
+
+---
+ tests/test_import.py | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/tests/test_import.py b/tests/test_import.py
+index 10eb816..597eb47 100644
+--- a/tests/test_import.py
++++ b/tests/test_import.py
+@@ -55,7 +55,7 @@ class ImportTestCase(GpgHomeTestCase):
+ ctx = gpgme.Context()
+ with self.keyfile('key1.sec') as fp:
+ result = ctx.import_(fp)
+- self.assertEqual(result.considered, 1)
++ self.assertEqual(result.considered, 3)
+ self.assertEqual(result.no_user_id, 0)
+ self.assertEqual(result.imported, 1)
+ self.assertEqual(result.imported_rsa, 0)
+@@ -64,18 +64,18 @@ class ImportTestCase(GpgHomeTestCase):
+ self.assertEqual(result.new_sub_keys, 0)
+ self.assertEqual(result.new_signatures, 0)
+ self.assertEqual(result.new_revocations, 0)
+- self.assertEqual(result.secret_read, 1)
+- self.assertEqual(result.secret_imported, 1)
++ self.assertEqual(result.secret_read, 3)
++ self.assertEqual(result.secret_imported, 2)
+ self.assertEqual(result.secret_unchanged, 0)
+ self.assertEqual(result.skipped_new_keys, 0)
+ self.assertEqual(result.not_imported, 0)
+ self.assertEqual(len(result.imports), 2)
+ self.assertEqual(result.imports[0],
+ ('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
+- None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
++ None, gpgme.IMPORT_NEW))
+ self.assertEqual(result.imports[1],
+ ('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
+- None, gpgme.IMPORT_NEW))
++ None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
+ # can we get the public key?
+ key = ctx.get_key('E79A842DA34A1CA383F64A1546BB55F0885C65A4')
+ # can we get the secret key?
+@@ -102,17 +102,17 @@ class ImportTestCase(GpgHomeTestCase):
+ fp = BytesIO(b'\n'.join(keys))
+ ctx = gpgme.Context()
+ result = ctx.import_(fp)
+- self.assertEqual(result.considered, 3)
++ self.assertEqual(result.considered, 5)
+ self.assertEqual(result.no_user_id, 0)
+ self.assertEqual(result.imported, 2)
+- self.assertEqual(result.imported_rsa, 1)
++ self.assertEqual(result.imported_rsa, 0)
+ self.assertEqual(result.unchanged, 0)
+ self.assertEqual(result.new_user_ids, 0)
+ self.assertEqual(result.new_sub_keys, 0)
+ self.assertEqual(result.new_signatures, 1)
+ self.assertEqual(result.new_revocations, 0)
+- self.assertEqual(result.secret_read, 1)
+- self.assertEqual(result.secret_imported, 1)
++ self.assertEqual(result.secret_read, 3)
++ self.assertEqual(result.secret_imported, 2)
+ self.assertEqual(result.secret_unchanged, 0)
+ self.assertEqual(result.skipped_new_keys, 0)
+ self.assertEqual(result.not_imported, 0)
+@@ -122,10 +122,10 @@ class ImportTestCase(GpgHomeTestCase):
+ None, gpgme.IMPORT_NEW))
+ self.assertEqual(result.imports[1],
+ ('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
+- None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
++ None, gpgme.IMPORT_SIG))
+ self.assertEqual(result.imports[2],
+ ('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
+- None, gpgme.IMPORT_SIG))
++ None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
+ self.assertEqual(result.imports[3],
+ ('93C2240D6B8AA10AB28F701D2CF46B7FC97E6B0F',
+ None, gpgme.IMPORT_NEW))
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0002-passphrase_cb-is-deprecated.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0002-passphrase_cb-is-deprecated.patch
new file mode 100644
index 000000000..c18cf3feb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0002-passphrase_cb-is-deprecated.patch
@@ -0,0 +1,52 @@
+From ba0dc8273e4f83bcd2d43baa5910aae34b93048c Mon Sep 17 00:00:00 2001
+From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+Date: Mon, 1 Feb 2016 19:25:12 -0500
+Subject: [PATCH] passphrase_cb is deprecated
+
+https://bugs.gnupg.org/gnupg/issue767 indicates that
+gpgme_set_passphrase_cb is a deprecated corner of the API and that
+developers using gpgme should really rely on the gpg-agent to handle
+this stuff. This should actually simplify things for most
+installations -- just strip out all passphrase handling from your
+application entirely, relying on gpg to figure out how to find the
+agent, and relying on the agent figuring out how to prompt the user
+(if necessary).
+
+However, if a developer really wants to use the passphrase callback
+approach, they'll have to use loopback pinentry. This sets up the
+test suite to be able to make those tests.
+
+Upstream-Status: Backport
+
+Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
+
+---
+ tests/util.py | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/tests/util.py b/tests/util.py
+index cd803c2..86892ca 100644
+--- a/tests/util.py
++++ b/tests/util.py
+@@ -28,7 +28,9 @@ keydir = os.path.join(os.path.dirname(__file__), 'keys')
+
+ class GpgHomeTestCase(unittest.TestCase):
+
+- gpg_conf_contents = ''
++ gpg_conf_contents = 'pinentry-mode loopback'
++ gpg_agent_conf_contents = 'allow-loopback-pinentry'
++
+ import_keys = []
+
+ def keyfile(self, key):
+@@ -41,6 +43,10 @@ class GpgHomeTestCase(unittest.TestCase):
+ fp.write(self.gpg_conf_contents.encode('UTF-8'))
+ fp.close()
+
++ fp = open(os.path.join(self._gpghome, 'gpg-agent.conf'), 'wb')
++ fp.write(self.gpg_agent_conf_contents.encode('UTF-8'))
++ fp.close()
++
+ # import requested keys into the keyring
+ ctx = gpgme.Context()
+ for key in self.import_keys:
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0003-handle-generic-error-when-no-passphrase-callback-pre.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0003-handle-generic-error-when-no-passphrase-callback-pre.patch
new file mode 100644
index 000000000..6acb68bfe
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/0003-handle-generic-error-when-no-passphrase-callback-pre.patch
@@ -0,0 +1,30 @@
+From 579b5930e15de8855bf63b3c20b6c3aaf894c3eb Mon Sep 17 00:00:00 2001
+From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+Date: Mon, 1 Feb 2016 19:27:59 -0500
+Subject: [PATCH] handle generic error when no passphrase callback present
+
+apparently gpg 2.1 returns ERR_GENERAL right now if the pinentry was
+in loopback mode and no passphrase callback was supplied. Earlier
+versions supplied ERR_BAD_PASSPHRASE.
+
+Upstream-Status: Backport
+
+Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
+
+---
+ tests/test_passphrase.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/test_passphrase.py b/tests/test_passphrase.py
+index 0a235e9..35b3c59 100644
+--- a/tests/test_passphrase.py
++++ b/tests/test_passphrase.py
+@@ -41,7 +41,7 @@ class PassphraseTestCase(GpgHomeTestCase):
+ new_sigs = ctx.sign(plaintext, signature, gpgme.SIG_MODE_CLEAR)
+ except gpgme.GpgmeError as exc:
+ self.assertEqual(exc.args[0], gpgme.ERR_SOURCE_GPGME)
+- self.assertEqual(exc.args[1], gpgme.ERR_BAD_PASSPHRASE)
++ self.assertEqual(exc.args[1], gpgme.ERR_GENERAL)
+ else:
+ self.fail('gpgme.GpgmeError not raised')
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/run-ptest
new file mode 100644
index 000000000..ce2abb66a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+GPG_AGENT_INFO= python test_all.py -v 2>&1 | sed -e '/\.\.\. ok/ s/^/PASS: /g' -e '/\.\.\. [ERROR|FAIL]/ s/^/FAIL: /g' -e '/\.\.\. skipped/ s/^/SKIP: /g' -e 's/ \.\.\. ok//g' -e 's/ \.\.\. ERROR//g' -e 's/ \.\.\. FAIL//g' -e 's/ \.\.\. skipped//g'
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme_0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme_0.3.bb
new file mode 100644
index 000000000..14e967db8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme_0.3.bb
@@ -0,0 +1,26 @@
+SUMMARY = "A Python module for working with OpenPGP messages"
+DESCRIPTION = "PyGPGME is a Python module that lets you sign, verify, \
+ encrypt and decrypt messages using the OpenPGP format."
+HOMEPAGE = "https://launchpad.net/pygpgme"
+
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=6517bdc8f2416f27ab725d4702f7aac3"
+
+SRC_URI = "file://run-ptest \
+ file://0001-reflect-2.1-reporting-for-key-imports.patch \
+ file://0002-passphrase_cb-is-deprecated.patch \
+ file://0003-handle-generic-error-when-no-passphrase-callback-pre.patch \
+"
+
+SRC_URI[md5sum] = "d38355af73f0352cde3d410b25f34fd0"
+SRC_URI[sha256sum] = "5fd887c407015296a8fd3f4b867fe0fcca3179de97ccde90449853a3dfb802e1"
+
+DEPENDS += "gpgme"
+RDEPENDS_${PN} += "gnupg"
+
+inherit pypi setuptools ptest
+
+do_install_ptest(){
+ install ${S}/test_all.py ${D}${PTEST_PATH}
+ cp -r ${S}/tests ${D}${PTEST_PATH}
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyhamcrest_1.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyhamcrest_1.9.0.bb
new file mode 100644
index 000000000..02d4f54e1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyhamcrest_1.9.0.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Hamcrest framework for matcher objects"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f6df1318c6071dd1707f5e3b6c11f24f"
+
+PYPI_PACKAGE = "PyHamcrest"
+
+SRC_URI[md5sum] = "8b833a3fa30197455df79424f30c8c3f"
+SRC_URI[sha256sum] = "8ffaa0a53da57e89de14ced7185ac746227a8894dbd5a3c718bf05ddbd1d56cd"
+
+inherit pypi setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyiface.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyiface.inc
new file mode 100644
index 000000000..620b244c6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyiface.inc
@@ -0,0 +1,11 @@
+SUMMARY = "Pyiface is a package that exposes the network interfaces of the operating system in a easy to use and transparent way"
+SECTION = "devel/python"
+HOMEPAGE = "https://pypi.python.org/pypi/pyiface/"
+LICENSE = "GPLv3+"
+
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4fe869ee987a340198fb0d54c55c47f1"
+
+SRC_URI[md5sum] = "06c3c71fe51df740dae6a88a13afb5e0"
+SRC_URI[sha256sum] = "4bb79100cbcf7344a1ccaddc578cd6455da47d8eac6eb1bf903ec32e043af924"
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyiface_0.0.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyiface_0.0.5.bb
new file mode 100644
index 000000000..854cb30ee
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyiface_0.0.5.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-pyiface.inc \ No newline at end of file
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyinotify.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyinotify.inc
new file mode 100644
index 000000000..975f11c10
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyinotify.inc
@@ -0,0 +1,15 @@
+DESCRIPTION = "Python pyinotify: Linux filesystem events monitoring"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ab173cade7965b411528464589a08382"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-threading \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-misc \
+ ${PYTHON_PN}-shell \
+"
+
+SRC_URI[md5sum] = "8e580fa1ff3971f94a6f81672b76c406"
+SRC_URI[sha256sum] = "9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4"
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyinotify_0.9.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyinotify_0.9.6.bb
new file mode 100644
index 000000000..0c9a2c72e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyinotify_0.9.6.bb
@@ -0,0 +1,6 @@
+inherit setuptools
+require python-pyinotify.inc
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyjks.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyjks.inc
new file mode 100644
index 000000000..d866c5650
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyjks.inc
@@ -0,0 +1,22 @@
+SUMMARY = "Pure-Python Java Keystore (JKS) library"
+DESCRIPTION = "PyJKS enables Python projects to load and manipulate\
+ Java KeyStore (JKS) data without a JVM dependency. PyJKS supports JKS,\
+ JCEKS, BKS and UBER (BouncyCastle) keystores."
+HOMEPAGE = "http://github.com/kurtbrose/pyjks"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9694d6cc724caf7f7386be88a4a81958"
+
+SRC_URI[md5sum] = "d53501e7c80d465969742bc6bee91d49"
+SRC_URI[sha256sum] = "709c44a303dd6b2464078ebeb677417e717818d4b3dc3844a462bef9d215dcc8"
+
+inherit pypi
+
+RDEPENDS_${PN} = "\
+ ${PYTHON_PN}-javaobj-py3 \
+ ${PYTHON_PN}-pyasn1 \
+ ${PYTHON_PN}-pyasn1-modules \
+ ${PYTHON_PN}-pycryptodome \
+ ${PYTHON_PN}-twofish\
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyjks_17.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyjks_17.1.1.bb
new file mode 100644
index 000000000..ce99f2835
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyjks_17.1.1.bb
@@ -0,0 +1,2 @@
+require python-pyjks.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyjwt.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyjwt.inc
new file mode 100644
index 000000000..9f9282eac
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyjwt.inc
@@ -0,0 +1,17 @@
+SUMMARY = "JSON Web Token implementation in Python"
+SUMMARY = "JSON Web Token implementation in Python"
+DESCRIPTION = "A Python implementation of JSON Web Token draft 32.\
+ Original implementation was written by https://github.com/progrium"
+HOMEPAGE = "http://github.com/jpadilla/pyjwt"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=68626705a7b513ca8d5f44a3e200ed0c"
+
+SRC_URI[md5sum] = "f7dbe0d62f2087a7605946aeeca02541"
+SRC_URI[sha256sum] = "dacba5786fe3bf1a0ae8673874e29f9ac497860955c501289c63b15d3daae63a"
+
+PYPI_PACKAGE = "PyJWT"
+inherit pypi
+
+RDEPENDS_${PN} = "${PYTHON_PN}-cryptography"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyjwt_1.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyjwt_1.6.1.bb
new file mode 100644
index 000000000..f0a77b674
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyjwt_1.6.1.bb
@@ -0,0 +1,2 @@
+require python-pyjwt.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pylint.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pylint.inc
new file mode 100644
index 000000000..ba85b9887
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pylint.inc
@@ -0,0 +1,38 @@
+SUMMARY="Pylint is a Python source code analyzer"
+HOMEPAGE= "http://www.pylint.org/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4"
+
+SRC_URI[md5sum] = "2eb5f3cb8fe567eaf5420dd415012202"
+SRC_URI[sha256sum] = "c77311859e0c2d7932095f30d2b1bfdc4b6fe111f534450ba727a52eae330ef2"
+
+inherit pypi
+
+DEPENDS += "${PYTHON_PN}-pytest-runner-native"
+
+do_install_append(){
+ rm ${D}${bindir}/pylint
+ cat >> ${D}${bindir}/pylint <<EOF
+#!/usr/bin/env ${PYTHON_PN}
+from pylint import run_pylint
+run_pylint()
+EOF
+ chmod 755 ${D}${bindir}/pylint
+ sed -i -e 's:^#!/usr/bin/python:#!/usr/bin/env\ ${PYTHON_PN}:g' ${D}/${PYTHON_SITEPACKAGES_DIR}/pylint/test/data/ascript
+}
+
+PACKAGES =+ "${PN}-tests"
+FILES_${PN}-tests+= " \
+ ${PYTHON_SITEPACKAGES_DIR}/pylint/test/ \
+ ${PYTHON_SITEPACKAGES_DIR}/pylint/testutils.py \
+"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-astroid \
+ ${PYTHON_PN}-isort \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-pkgutil \
+ ${PYTHON_PN}-difflib \
+ ${PYTHON_PN}-netserver \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pylint_1.8.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pylint_1.8.3.bb
new file mode 100644
index 000000000..7b51d3fbd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pylint_1.8.3.bb
@@ -0,0 +1,4 @@
+inherit setuptools python-dir
+require python-pylint.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-backports-functools-lru-cache"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp.inc
new file mode 100644
index 000000000..7765cc59c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp.inc
@@ -0,0 +1,15 @@
+DESCRIPTION = "Python API for MISP"
+HOMEPAGE = "https://github.com/MISP/PyMISP"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a3639cf5780f71b125d3e9d1dc127c20"
+
+SRC_URI[md5sum] = "d4fee2abb2d7468010b7fe9ebc68b0cb"
+SRC_URI[sha256sum] = "304fbd8862dfde27d767c093de87fec42fc63c70d8393643d1a3b4f765aae78f"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-dateutil \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-jsonschema \
+ ${PYTHON_PN}-requests \
+ ${PYTHON_PN}-six \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp_2.4.89.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp_2.4.89.bb
new file mode 100644
index 000000000..1b1fbe956
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp_2.4.89.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-pymisp.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo.inc
new file mode 100644
index 000000000..baf3dd547
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo.inc
@@ -0,0 +1,29 @@
+SUMMARY = "Python driver for MongoDB <http://www.mongodb.org>"
+DESCRIPTION = "\
+The PyMongo distribution contains tools for interacting with MongoDB \
+database from Python. The bson package is an implementation of the BSON \
+format for Python. The pymongo package is a native Python driver for \
+MongoDB. The gridfs package is a gridfs implementation on top of pymongo."
+HOMEPAGE = "http://github.com/mongodb/mongo-python-driver"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+SRC_URI[md5sum] = "0d72c87fb93cea0759529befafefce54"
+SRC_URI[sha256sum] = "f7ebcb846962ee40374db2d9014a89bea9c983ae63c1877957c3a0a756974796"
+
+PACKAGES =+ "${PYTHON_PN}-bson"
+
+FILES_${PYTHON_PN}-bson = "${PYTHON_SITEPACKAGES_DIR}/bson/*"
+
+RDEPENDS_${PYTHON_PN}-bson += " \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-threading \
+"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-bson \
+ ${PYTHON_PN}-pprint \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo_3.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo_3.6.1.bb
new file mode 100644
index 000000000..b1778b2f1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo_3.6.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-pymongo.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pynetlinux.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pynetlinux.inc
new file mode 100644
index 000000000..6a3989627
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pynetlinux.inc
@@ -0,0 +1,11 @@
+SUMMARY = "Linux network configuration library for Python"
+DESCRIPTION = "This library contains Python bindings to ioctl calls"
+SECTION = "devel/python"
+HOMEPAGE = "http://github.com/rlisagor/pynetlinux"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=74e1861736ee959824fe7542323c12e9"
+
+inherit pypi
+
+SRC_URI[md5sum] = "3336e5d4a478acca4e35bf3125b4f883"
+SRC_URI[sha256sum] = "4ad08298c9f5ba15a11cddc639ba8778cabdfc402b51066d9e0a325e5a5b391c"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pynetlinux_1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pynetlinux_1.1.bb
new file mode 100644
index 000000000..c45ad6ad6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pynetlinux_1.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-pynetlinux.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl.inc
new file mode 100644
index 000000000..7722e8ecd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl.inc
@@ -0,0 +1,23 @@
+SUMMARY = "Simple Python wrapper around the OpenSSL library"
+HOMEPAGE = "https://pyopenssl.org/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+DEPENDS += "openssl ${PYTHON_PN}-cryptography"
+
+SRC_URI[md5sum] = "d9c5134db8bf3183573b7840954cac94"
+SRC_URI[sha256sum] = "2c10cfba46a52c0b0950118981d61e72c1e5b1aac451ca1bc77de1a679456773"
+
+PYPI_PACKAGE = "pyOpenSSL"
+
+PACKAGES =+ "${PN}-tests"
+FILES_${PN}-tests = "${libdir}/${PYTHON_DIR}/site-packages/OpenSSL/test"
+
+RDEPENDS_${PN}_class-target = " \
+ ${PYTHON_PN}-cryptography \
+ ${PYTHON_PN}-six \
+ ${PYTHON_PN}-threading \
+"
+RDEPENDS_${PN}-tests = "${PN}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl_17.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl_17.5.0.bb
new file mode 100644
index 000000000..b7d514613
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl_17.5.0.bb
@@ -0,0 +1,2 @@
+require python-pyopenssl.inc
+inherit pypi setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing.inc
new file mode 100644
index 000000000..e30839f87
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing.inc
@@ -0,0 +1,21 @@
+SUMMARY = "Python parsing module"
+HOMEPAGE = "http://pyparsing.wikispaces.com/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=fb46329938e6bc829b256e37d5c1e31a"
+
+SRC_URI[md5sum] = "0214e42d63af850256962b6744c948d9"
+SRC_URI[sha256sum] = "0832bcf47acd283788593e7a0f542407bd9550a55a8a8435214a1960e04bcb04"
+
+inherit pypi
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-debugger \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-pprint \
+ ${PYTHON_PN}-stringold \
+ ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing_2.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing_2.2.0.bb
new file mode 100644
index 000000000..90217f3c3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing_2.2.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-pyparsing.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyperclip.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyperclip.inc
new file mode 100644
index 000000000..e05de6723
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyperclip.inc
@@ -0,0 +1,12 @@
+DESCRIPTION = "A cross-platform clipboard module for Python. (only handles plain text for now)"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=1ed92115c8f96b19ec34ed09df586e51"
+
+SRC_URI[md5sum] = "d2f6a3129cd6f2518b52bb0b8deeeda7"
+SRC_URI[sha256sum] = "ce829433a9af640e08ee89b20f7c62132714bcc5d77df114044d0fccb8c3b3b8"
+
+inherit pypi
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-ctypes \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyperclip_1.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyperclip_1.6.0.bb
new file mode 100644
index 000000000..6c9fcbd84
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyperclip_1.6.0.bb
@@ -0,0 +1,7 @@
+inherit setuptools
+require python-pyperclip.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-contextlib \
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyrex-native_0.9.9.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyrex-native_0.9.9.bb
new file mode 100644
index 000000000..e8ef1aa12
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyrex-native_0.9.9.bb
@@ -0,0 +1,5 @@
+require python-pyrex_${PV}.bb
+inherit native pythonnative
+DEPENDS = "python-native"
+RDEPENDS_${PN} = ""
+PR = "r3"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch
new file mode 100644
index 000000000..c58c3280e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyrex/pyrex-fix-optimized-mode.patch
@@ -0,0 +1,15 @@
+Upstream-Status: Pending
+
+Index: Pyrex-0.9.8.4/Pyrex/Distutils/extension.py
+===================================================================
+--- Pyrex-0.9.8.4.orig/Pyrex/Distutils/extension.py
++++ Pyrex-0.9.8.4/Pyrex/Distutils/extension.py
+@@ -15,7 +15,7 @@ except ImportError:
+ warnings = None
+
+ class Extension(_Extension.Extension):
+- _Extension.Extension.__doc__ + \
++ _Extension.Extension.__doc__ or "" + \
+ """pyrex_include_dirs : [string]
+ list of directories to search for Pyrex header files (.pxd) (in
+ Unix form for portability)
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyrex_0.9.9.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyrex_0.9.9.bb
new file mode 100644
index 000000000..c4dd2e69b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyrex_0.9.9.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Language for writing Python extension modules"
+DESCRIPTION = "Pyrex is a language specially designed for writing Python extension modules. \
+It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \
+and the messy, low-level world of C."
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=771d472f53f933033f57eeee7808e5bd"
+SRCNAME = "Pyrex"
+PR = "r4"
+
+SRC_URI = "\
+ http://www.cosc.canterbury.ac.nz/greg.ewing/python/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
+ file://pyrex-fix-optimized-mode.patch \
+"
+
+SRC_URI[md5sum] = "515dee67d15d4393841e2d60e8341947"
+SRC_URI[sha256sum] = "5f87df06831d0b3412eb4bc9d3fc2ee7bfae1b913d7da8c23ab2bf5699fb6b50"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+FILES_${PN} += "${datadir}${base_libdir}/${PYTHON_DIR}/site-packages/Pyrex/Compiler/Lexicon.pickle"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyroute2.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyroute2.inc
new file mode 100644
index 000000000..9ec9866d8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyroute2.inc
@@ -0,0 +1,25 @@
+SUMMARY = "A pure Python netlink and Linux network configuration library"
+LICENSE = "GPLv2 & Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.GPL.v2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://LICENSE.Apache.v2;md5=34281e312165f843a2b7d1f114fe65ce"
+
+SRC_URI[md5sum] = "9c251543c4282a2f8b1a8d6aa8afc688"
+SRC_URI[sha256sum] = "7afad28ee0a0f3e7c34adaa9f953d00560ed9910203e93f107833b6e8d151171"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-pyroute2:"
+
+inherit pypi
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-distutils \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-multiprocessing \
+ ${PYTHON_PN}-pickle \
+ ${PYTHON_PN}-pkgutil \
+ ${PYTHON_PN}-pprint \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-unixadmin \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyroute2_0.4.21.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyroute2_0.4.21.bb
new file mode 100644
index 000000000..f25f1b4ab
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyroute2_0.4.21.bb
@@ -0,0 +1,6 @@
+require python-pyroute2.inc
+inherit setuptools
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyserial.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyserial.inc
new file mode 100644
index 000000000..52a7e05ce
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyserial.inc
@@ -0,0 +1,42 @@
+SUMMARY = "Serial Port Support for Python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=d476d94926db6e0008a5b3860d1f5c0d"
+
+SRC_URI[md5sum] = "ed6183b15519a0ae96675e9c3330c69b"
+SRC_URI[sha256sum] = "6e2d401fdee0eab996cf734e67773a0143b932772ca8b42451440cfed942c627"
+
+inherit pypi
+
+PACKAGES =+ "${PN}-java ${PN}-osx ${PN}-win32 ${PN}-tools"
+
+FILES_${PN}-java = " \
+ ${PYTHON_SITEPACKAGES_DIR}/serial/*java* \
+ ${PYTHON_SITEPACKAGES_DIR}/serial/__pycache__/*java* \
+"
+
+FILES_${PN}-osx = " \
+ ${PYTHON_SITEPACKAGES_DIR}/serial/tools/*osx* \
+ ${PYTHON_SITEPACKAGES_DIR}/serial/tools/__pycache__/*osx* \
+"
+
+FILES_${PN}-win32 = " \
+ ${PYTHON_SITEPACKAGES_DIR}/serial/*serialcli* \
+ ${PYTHON_SITEPACKAGES_DIR}/serial/__pycache__/*serialcli* \
+ ${PYTHON_SITEPACKAGES_DIR}/serial/*win32* \
+ ${PYTHON_SITEPACKAGES_DIR}/serial/__pycache__/*win32* \
+ ${PYTHON_SITEPACKAGES_DIR}/serial/tools/miniterm* \
+ ${PYTHON_SITEPACKAGES_DIR}/serial/tools/__pycache__/miniterm* \
+ ${PYTHON_SITEPACKAGES_DIR}/serial/tools/*windows* \
+ ${PYTHON_SITEPACKAGES_DIR}/serial/tools/__pycache__/*windows* \
+"
+
+RDEPENDS_${PN} = "\
+ ${PYTHON_PN}-fcntl \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-stringold \
+ ${PYTHON_PN}-threading \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyserial_3.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyserial_3.4.bb
new file mode 100644
index 000000000..fd852a2bf
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyserial_3.4.bb
@@ -0,0 +1,4 @@
+inherit setuptools
+require python-pyserial.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-argparse"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pysmi_0.2.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pysmi_0.2.2.bb
new file mode 100644
index 000000000..24759b5d6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pysmi_0.2.2.bb
@@ -0,0 +1,16 @@
+SUMMARY = "SNMP SMI/MIB Parser"
+DESCRIPTION = "A pure-Python implementation of SNMP/SMI MIB \
+ parsing and conversion library. Can produce PySNMP MIB modules. \
+"
+HOMEPAGE = "https://pypi.python.org/pypi/pysmi"
+SECTION = "devel/python"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=d8b1bbadd635f187dee74d999a8c67b8"
+
+SRC_URI[md5sum] = "3b0f71e4e9f730d211f09d8ef5371140"
+SRC_URI[sha256sum] = "2a315cc3e556b3428372b69da663a24d2f0df9e9ab075b022cb133855f25aef7"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "python-ply"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pysnmp_4.3.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pysnmp_4.3.5.bb
new file mode 100644
index 000000000..0b38d58e4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pysnmp_4.3.5.bb
@@ -0,0 +1,25 @@
+SUMMARY = "A pure-Python SNMPv1/v2c/v3 library"
+DESCRIPTION = "SNMP v1/v2c/v3 engine and apps written in pure-Python. \
+ Supports Manager/Agent/Proxy roles, scriptable MIBs, asynchronous \
+ operation (asyncio, twisted, asyncore) and multiple transports.\
+"
+HOMEPAGE = "https://pypi.python.org/pypi/pysnmp"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=280606d9c18f200e03e0c247ac61475a"
+
+SRCNAME = "pysnmp"
+
+SRC_URI = "https://files.pythonhosted.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "387aaa23c168ccc0b59775cfdf519fc0"
+SRC_URI[sha256sum] = "38253fe95cea33f352fb36e85f3c2874043401724300c4888df74835161169d2"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} += "python-pycrypto \
+ python-pyasn1 \
+ python-pysmi \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pysocks.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pysocks.inc
new file mode 100644
index 000000000..53ec1b7d8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pysocks.inc
@@ -0,0 +1,18 @@
+DESCRIPTION = "A Python SOCKS client module"
+HOMEPAGE = "http://python-requests.org"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1d457bcffb9661b45f799d4efee72f16"
+
+SRC_URI[md5sum] = "441c4e3bf5b042f7e70613cd871df26c"
+SRC_URI[sha256sum] = "3fe52c55890a248676fd69dc9e3c4e811718b777834bcaab7a8125cf9deac672"
+
+PYPI_PACKAGE = "PySocks"
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-email \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pysocks_1.6.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pysocks_1.6.8.bb
new file mode 100644
index 000000000..8a24e4c49
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pysocks_1.6.8.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-pysocks.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pysqlite.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pysqlite.inc
new file mode 100644
index 000000000..884556570
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pysqlite.inc
@@ -0,0 +1,18 @@
+DESCRIPTION = "DB-API 2.0 interface for SQLite 3.x"
+HOMEPAGE = "http://github.com/ghaering/pysqlite"
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=28ad4f115e06c88bd737372a453369d8"
+
+SRC_URI[md5sum] = "033f17b8644577715aee55e8832ac9fc"
+SRC_URI[sha256sum] = "17d3335863e8cf8392eea71add33dab3f96d060666fe68ab7382469d307f4490"
+
+inherit pypi
+
+DEPENDS += "${PYTHON_PN}-pip"
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-datetime \
+ sqlite3 \
+"
+
+FILES_${PN}-doc += "${datadir}"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pysqlite_2.8.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pysqlite_2.8.3.bb
new file mode 100644
index 000000000..95938f2b6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pysqlite_2.8.3.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-pysqlite.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pystache.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pystache.inc
new file mode 100644
index 000000000..6dbc99f53
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pystache.inc
@@ -0,0 +1,13 @@
+SUMMARY = "Python implementation of Mustache"
+HOMEPAGE = "https://github.com/defunkt/pystache"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=eb4417802c56384aac71b34505528a60"
+
+SRC_URI[md5sum] = "485885e67a0f6411d5252e69b20a35ca"
+SRC_URI[sha256sum] = "f7bbc265fb957b4d6c7c042b336563179444ab313fb93a719759111eabd3b85a"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-netserver \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pystache_0.5.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pystache_0.5.4.bb
new file mode 100644
index 000000000..a45501247
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pystache_0.5.4.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-pystache.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest-runner.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest-runner.inc
new file mode 100644
index 000000000..7546743fb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest-runner.inc
@@ -0,0 +1,16 @@
+SUMMARY = "Invoke py.test as distutils command with dependency resolution"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a33f38bbf47d48c70fe0d40e5f77498e"
+
+SRC_URI[md5sum] = "8f8363a52bbabc4cedd5e239beb2ba11"
+SRC_URI[sha256sum] = "0f7c3a3cf5aead13f54baaa01ceb49e5ae92aba5d3ff1928e81e189c40bc6703"
+
+inherit pypi
+
+DEPENDS += " \
+ ${PYTHON_PN}-setuptools-scm-native"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-py ${PYTHON_PN}-setuptools ${PYTHON_PN}-debugger ${PYTHON_PN}-json \
+ ${PYTHON_PN}-io"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest-runner_3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest-runner_3.0.bb
new file mode 100644
index 000000000..1765a732d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest-runner_3.0.bb
@@ -0,0 +1,5 @@
+inherit setuptools
+require python-pytest-runner.inc
+
+# Dependency only exists for python2
+RDEPENDS_${PN} += "python-argparse python-compiler"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest.inc
new file mode 100644
index 000000000..4feb9a03c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest.inc
@@ -0,0 +1,25 @@
+SUMMARY = "Simple powerful teting with python"
+HOMEPAGE = "http://pytest.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c39b24965f4aef64222cb35de9d47cc4"
+
+SRC_URI[md5sum] = "1b83a25d45fad893f430fc5031653c56"
+SRC_URI[sha256sum] = "117bad36c1a787e1a8a659df35de53ba05f9f3398fb9e4ac17e80ad5903eb8c5"
+
+SRC_URI_append = " file://0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch \
+ file://pytest_version_fix.patch "
+
+RDEPENDS_${PN}_class-target += " \
+ ${PYTHON_PN}-attrs \
+ ${PYTHON_PN}-debugger \
+ ${PYTHON_PN}-doctest \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-pluggy \
+ ${PYTHON_PN}-py \
+ ${PYTHON_PN}-setuptools \
+ ${PYTHON_PN}-six \
+"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-pytest:"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch
new file mode 100644
index 000000000..06dfcdfc6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch
@@ -0,0 +1,32 @@
+From 24a901fd17926e8e05be4ed2e01b0113a2e3a852 Mon Sep 17 00:00:00 2001
+From: Derek Straka <derek@asterius.io>
+Date: Tue, 19 Dec 2017 11:36:39 -0500
+Subject: [PATCH] [PATCH 1/1] setup.py: remove the setup_requires for
+ setuptools-scm
+
+The setup_requires argument forces the download of the egg file for setuptools-scm
+during the do_compile phase. This download is incompatible with the typical fetch
+and mirror structure. The only usage of scm is the generation of the _version.py
+file and in the release tarball it is already correctly created
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Derek Straka <derek@asterius.io>
+---
+ setup.py | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 3eb38ef..1163202 100644
+--- a/setup.py
++++ b/setup.py
+@@ -82,7 +82,6 @@ def main():
+ keywords="test unittest",
+ cmdclass={'test': PyTest},
+ # the following should be enabled for release
+- setup_requires=['setuptools-scm'],
+ python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*',
+ install_requires=install_requires,
+ extras_require=extras_require,
+--
+2.7.4
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest/pytest_version_fix.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest/pytest_version_fix.patch
new file mode 100644
index 000000000..b373d93e8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest/pytest_version_fix.patch
@@ -0,0 +1,51 @@
+Upstream-Status: Inappropriate (OE specific)
+
+python-pytest: remove fetch during do_compile phase
+commit: c974fbf9ebf185552ab65301e07af44f36517abf
+
+introduced an issue by making the version 0.0.0
+this fixes that
+
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+Index: pytest-3.2.2/setup.py
+===================================================================
+--- pytest-3.2.2.orig/setup.py
++++ pytest-3.2.2/setup.py
+@@ -1,5 +1,6 @@
+ import os
+ import sys
++import re
+ import setuptools
+ import pkg_resources
+ from setuptools import setup, Command
+@@ -22,6 +23,18 @@ classifiers = [
+ with open('README.rst') as fd:
+ long_description = fd.read()
+
++def read(*names, **kwargs):
++ with open(os.path.join( *names), 'r') as fp:
++ return fp.read()
++
++def find_version(*file_paths):
++ version_file = read(*file_paths)
++ version_match = re.search(r"^version = ['\']([^'\"]*)['\']",
++ version_file, re.M)
++
++ if version_match:
++ return version_match.group(1)
++ raise RuntimeError("Unable to find version string.")
+
+ def get_environment_marker_support_level():
+ """
+@@ -59,9 +72,7 @@ def main():
+ name='pytest',
+ description='pytest: simple powerful testing with Python',
+ long_description=long_description,
+- use_scm_version={
+- 'write_to': '_pytest/_version.py',
+- },
++ version=find_version("_pytest", "_version.py"),
+ url='http://pytest.org',
+ license='MIT license',
+ platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest_3.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest_3.4.2.bb
new file mode 100644
index 000000000..201ab050c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest_3.4.2.bb
@@ -0,0 +1,8 @@
+inherit pypi setuptools
+require python-pytest.inc
+
+RDEPENDS_${PN}_class-target += " \
+ ${PYTHON_PN}-argparse \
+ ${PYTHON_PN}-compiler \
+ ${PYTHON_PN}-funcsigs \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pytz.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pytz.inc
new file mode 100644
index 000000000..519487f49
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pytz.inc
@@ -0,0 +1,20 @@
+SUMMARY = "World timezone definitions, modern and historical"
+HOMEPAGE = "http://pythonhosted.org/pytz"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4878a915709225bceab739bdc2a18e8d"
+
+inherit pypi
+
+SRC_URI[md5sum] = "f054437920c895dd14a4509fabafe029"
+SRC_URI[sha256sum] = "c06425302f2cf668f1bba7a0a03f3c1d34d4ebeef2c72003da308b3947c7f749"
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-doctest \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-pickle \
+ ${PYTHON_PN}-pprint \
+ ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pytz_2018.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pytz_2018.4.bb
new file mode 100755
index 000000000..f2ffc596f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pytz_2018.4.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-pytz.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyudev.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyudev.inc
new file mode 100644
index 000000000..cb906c9ec
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyudev.inc
@@ -0,0 +1,18 @@
+SUMMARY = "A libudev binding"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
+
+SRC_URI[md5sum] = "cf4d9db7d772622144ca1be6b5d9353b"
+SRC_URI[sha256sum] = "094b7a100150114748aaa3b70663485dd360457a709bfaaafe5a977371033f2b"
+
+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_PN}-ctypes \
+ ${PYTHON_PN}-misc \
+ ${PYTHON_PN}-six \
+ ${PYTHON_PN}-threading \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyudev_0.21.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyudev_0.21.0.bb
new file mode 100644
index 000000000..a3e15014a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyudev_0.21.0.bb
@@ -0,0 +1,9 @@
+require python-pyudev.inc
+
+RDEPENDS_${PN} = "\
+ ${PYTHON_PN}-contextlib \
+ ${PYTHON_PN}-subprocess \
+"
+
+inherit pypi setuptools
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyusb.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyusb.inc
new file mode 100644
index 000000000..30bbe85a9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyusb.inc
@@ -0,0 +1,10 @@
+SUMMARY = "PyUSB provides USB access on the Python language"
+HOMEPAGE = "http://pyusb.sourceforge.net/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=51691ed11cc2c7ae93e383f60ed49b0f"
+DEPENDS += "libusb1"
+
+SRC_URI[md5sum] = "862b56452c64948c787ad8ef9498590b"
+SRC_URI[sha256sum] = "4e9b72cc4a4205ca64fbf1f3fff39a335512166c151ad103e55c8223ac147362"
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyusb_1.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyusb_1.0.2.bb
new file mode 100644
index 000000000..99a795b22
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyusb_1.0.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-pyusb.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml.inc
new file mode 100644
index 000000000..3fef0cacd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml.inc
@@ -0,0 +1,18 @@
+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_PN}-cython-native ${PYTHON_PN}"
+
+PYPI_PACKAGE = "PyYAML"
+inherit pypi
+
+SRC_URI[md5sum] = "4c129761b661d181ebf7ff4eb2d79950"
+SRC_URI[sha256sum] = "592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-datetime \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_3.12.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_3.12.bb
new file mode 100644
index 000000000..5a4c92d88
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_3.12.bb
@@ -0,0 +1,2 @@
+require python-pyyaml.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq/club-rpath-out.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq/club-rpath-out.patch
new file mode 100644
index 000000000..2dc3b73f9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq/club-rpath-out.patch
@@ -0,0 +1,26 @@
+diff --git a/setup.py b/setup.py
+index 62df445..1fdbdeb 100755
+--- a/setup.py
++++ b/setup.py
+@@ -213,12 +213,6 @@ def settings_from_prefix(prefix=None, bundle_libzmq_dylib=False):
+ pass
+ # unused rpath args for OS X:
+ # settings['extra_link_args'] = ['-Wl,-rpath','-Wl,$ORIGIN/..']
+- else:
+- settings['runtime_library_dirs'] += ['$ORIGIN/..']
+- elif sys.platform != 'darwin':
+- settings['runtime_library_dirs'] += [
+- os.path.abspath(x) for x in settings['library_dirs']
+- ]
+
+ return settings
+
+@@ -592,8 +586,6 @@ class Configure(build_ext):
+ pass
+ # unused rpath args for OS X:
+ # settings['extra_link_args'] = ['-Wl,-rpath','-Wl,$ORIGIN/../zmq']
+- else:
+- settings['runtime_library_dirs'] = [ os.path.abspath(pjoin('.', 'zmq')) ]
+
+ line()
+ info("Configure: Autodetecting ZMQ settings...")
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq_14.7.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq_14.7.0.bb
new file mode 100644
index 000000000..b5baf82df
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq_14.7.0.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Pyzmq provides Zero message queue access for the Python language"
+HOMEPAGE = "http://zeromq.org/bindings:python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING.BSD;md5=11c65680f637c3df7f58bbc8d133e96e"
+DEPENDS = "zeromq"
+
+SRC_URI = "file://club-rpath-out.patch"
+SRC_URI[md5sum] = "87e3abb33af5794db5ae85c667bbf324"
+SRC_URI[sha256sum] = "77994f80360488e7153e64e5959dc5471531d1648e3a4bff14a714d074a38cc2"
+
+inherit pypi setuptools pkgconfig
+
+RDEPENDS_${PN} += "python-multiprocessing"
+
+FILES_${PN}-dbg =+ "${PYTHON_SITEPACKAGES_DIR}/zmq/backend/cython/.debug"
+
+do_compile_prepend() {
+ echo [global] > ${S}/setup.cfg
+ echo zmq_prefix = ${STAGING_DIR_HOST} >> ${S}/setup.cfg
+ echo have_sys_un_h = True >> ${S}/setup.cfg
+ echo skip_check_zmq = True >> ${S}/setup.cfg
+ echo libzmq_extension = False >> ${S}/setup.cfg
+ echo no_libzmq_extension = True >> ${S}/setup.cfg
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-redis.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-redis.inc
new file mode 100644
index 000000000..1a65d7314
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-redis.inc
@@ -0,0 +1,12 @@
+SUMMARY = "Python client for Redis key-value store"
+DESCRIPTION = "The Python interface to the Redis key-value store."
+HOMEPAGE = "http://github.com/andymccurdy/redis-py"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=51d9ad56299ab60ba7be65a621004f27"
+
+SRC_URI[md5sum] = "048348d8cfe0b5d0bba2f4d835005c3b"
+SRC_URI[sha256sum] = "a22ca993cea2962dbb588f9f30d0015ac4afcc45bee27d3978c0dbe9e97c6c0f"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-datetime \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-redis_2.10.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-redis_2.10.6.bb
new file mode 100644
index 000000000..6c3ca8516
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-redis_2.10.6.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-redis.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-requests.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-requests.inc
new file mode 100644
index 000000000..5d6dca5d3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-requests.inc
@@ -0,0 +1,24 @@
+DESCRIPTION = "Python HTTP for Humans."
+HOMEPAGE = "http://python-requests.org"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=979d6a23b143e13ea0e5e3aa81248820"
+
+SRC_URI[md5sum] = "081412b2ef79bdc48229891af13f4d82"
+SRC_URI[sha256sum] = "9c443e7324ba5b85070c4a818ade28bfabedf16ea10206da1132edaa6dda237e"
+
+inherit pypi
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-email \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-ndg-httpsclient \
+ ${PYTHON_PN}-netserver \
+ ${PYTHON_PN}-pyasn1 \
+ ${PYTHON_PN}-pyopenssl \
+ ${PYTHON_PN}-pysocks \
+ ${PYTHON_PN}-urllib3 \
+ ${PYTHON_PN}-chardet \
+ ${PYTHON_PN}-idna \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-requests_2.18.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-requests_2.18.4.bb
new file mode 100644
index 000000000..0d7a29f74
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-requests_2.18.4.bb
@@ -0,0 +1,4 @@
+inherit setuptools
+require python-requests.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-zlib"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-rfc3987.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-rfc3987.inc
new file mode 100644
index 000000000..461590411
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-rfc3987.inc
@@ -0,0 +1,8 @@
+SUMMARY = "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)"
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=9;md5=2b723edf67b2f3088bc5e339b1ceda2d"
+
+SRC_URI[md5sum] = "aa108c7590902fe609c036864ecb7f84"
+SRC_URI[sha256sum] = "91a7826b0a26c246a5a91bef09c2c0809c713a689be689b9571e78a13f6557a4"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-rfc3987_1.3.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-rfc3987_1.3.7.bb
new file mode 100644
index 000000000..dcda5aa46
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-rfc3987_1.3.7.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-rfc3987.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-robotframework.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-robotframework.inc
new file mode 100644
index 000000000..78bbbc6de
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-robotframework.inc
@@ -0,0 +1,26 @@
+SUMMARY = "A Python generic test automation framework"
+DESCRIPTION = "Generic open source test atomation framework for acceptance\
+testing and acceptance test-driven development (ATDD). It has easy-to-use\
+tabular test data syntax and it utilizes the keyword-driven testing approach.\
+Its testing capabilities can be extended by test libraries implemented either\
+with Python or Java, and users can create new higher-level keywords from\
+existing ones using the same syntax that is used for creating test cases."
+HOMEPAGE = "http://robotframework.org"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+inherit pypi
+
+SRC_URI[md5sum] = "ea49a54b9d7e38302712194e85c37eaa"
+SRC_URI[sha256sum] = "2018f233568227f9af8c366f93e243a157b742f3baf5b649ecc9750ac0ee1ff7"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-pprint \
+ ${PYTHON_PN}-xml \
+ ${PYTHON_PN}-difflib \
+ ${PYTHON_PN}-threading \
+ ${PYTHON_PN}-html \
+ ${PYTHON_PN}-docutils \
+ ${PYTHON_PN}-ctypes \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-robotframework_3.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-robotframework_3.0.2.bb
new file mode 100644
index 000000000..ff7dedb55
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-robotframework_3.0.2.bb
@@ -0,0 +1,6 @@
+inherit setuptools
+require python-robotframework.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-zlib \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-scrypt.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-scrypt.inc
new file mode 100644
index 000000000..783d05b7e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-scrypt.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "Bindings for the scrypt key derivation function library"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-2-Clause;md5=8bef8e6712b1be5aa76af1ebde9d6378"
+HOMEPAGE="https://bitbucket.org/mhallin/py-scrypt/overview"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-scrypt:"
+
+SRC_URI += "file://0001-py-scrypt-remove-the-hard-coded-include-paths.patch"
+
+SRC_URI[md5sum] = "ae8e3263aa31b040c1f9c7f1e1843a56"
+SRC_URI[sha256sum] = "f8239b2d47fa1d40bc27efd231dc7083695d10c1c2ac51a99380360741e0362d"
+
+inherit pypi
+
+RDEPENDS_${PN}_class-target += "\
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-scrypt/0001-py-scrypt-remove-the-hard-coded-include-paths.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-scrypt/0001-py-scrypt-remove-the-hard-coded-include-paths.patch
new file mode 100644
index 000000000..d535e4326
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-scrypt/0001-py-scrypt-remove-the-hard-coded-include-paths.patch
@@ -0,0 +1,26 @@
+From d8db473ce9346cd6254c90e13ac45b3bbde494c4 Mon Sep 17 00:00:00 2001
+From: Derek Straka <derek@asterius.io>
+Date: Sun, 11 Mar 2018 19:55:38 -0400
+Subject: [PATCH] py-scrypt: remove the hard coded include paths
+
+Upstream-Status: Pending
+
+Signed-off-by: Derek Straka <derek@asterius.io>
+---
+ setup.py | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index e36adc4..2ebfbf1 100644
+--- a/setup.py
++++ b/setup.py
+@@ -24,7 +24,6 @@ if sys.platform.startswith('linux'):
+ ('HAVE_SYS_SYSINFO_H', '1'),
+ ('_FILE_OFFSET_BITS', '64')]
+ libraries = ['crypto', 'rt']
+- includes = ['/usr/local/include', '/usr/include']
+ CFLAGS.append('-O2')
+ elif sys.platform.startswith('win32'):
+ define_macros = [('inline', '__inline')]
+--
+2.7.4
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-scrypt_0.8.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-scrypt_0.8.6.bb
new file mode 100644
index 000000000..9fbd00e04
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-scrypt_0.8.6.bb
@@ -0,0 +1,3 @@
+inherit setuptools python-dir
+require python-scrypt.inc
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-sdnotify.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-sdnotify.inc
new file mode 100644
index 000000000..ea0e575c4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-sdnotify.inc
@@ -0,0 +1,16 @@
+HOMEPAGE = "https://github.com/bb4242/sdnotify"
+SUMMARY = "A pure Python implementation of systemd's service notification protocol (sd_notify)"
+
+DESCRIPTION = "\
+ sdnotify is a pure Python implementation of the systemd sd_notify protocol. \
+ This protocol can be used to inform systemd about service start-up completion, \
+ watchdog events, and other service status changes. \
+ Thus, this package can be used to write system services in Python that play nicely with systemd. \
+ "
+
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=cc572ccc4b18a4b7d13be5d01bc8213e"
+
+SRC_URI[md5sum] = "749ddca1c70be1697fecc443fb1fdb16"
+SRC_URI[sha256sum] = "73977fc746b36cc41184dd43c3fe81323e7b8b06c2bb0826c4f59a20c56bb9f1"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-sdnotify_0.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-sdnotify_0.3.2.bb
new file mode 100644
index 000000000..39ae3fb0b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-sdnotify_0.3.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools pypi
+require python-sdnotify.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-selectors34_1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-selectors34_1.2.bb
new file mode 100644
index 000000000..69545ebbb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-selectors34_1.2.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Backport of the selectors module from Python 3.4"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=2fae0222c31d6c10488d4ab93a863af7"
+
+SRC_URI[md5sum] = "bc855a1c8839a811476c019dc07d92dd"
+SRC_URI[sha256sum] = "09f5066337f8a76fb5233f267873f89a27a17c10bf79575954894bb71686451c"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-six \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-serpent.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-serpent.inc
new file mode 100644
index 000000000..3f51bc29b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-serpent.inc
@@ -0,0 +1,13 @@
+SUMMARY = "Serialization based on ast.literal_eval"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=acdea68f0e5a89eb6cbfdf54e38c356e"
+
+SRC_URI[md5sum] = "d0c50f1943ff86d830eb3fe40f6dc1e3"
+SRC_URI[sha256sum] = "b6855483d95a03b6aee358363684cd38a3a670240da5bc6da4253079cb07b8df"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-numbers \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-serpent_1.24.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-serpent_1.24.bb
new file mode 100644
index 000000000..0db3cf98a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-serpent_1.24.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-serpent.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-setuptools-scm.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-setuptools-scm.inc
new file mode 100644
index 000000000..eb66580a6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-setuptools-scm.inc
@@ -0,0 +1,14 @@
+SUMMARY = "the blessed package to manage your versions by scm tags"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+SRC_URI[md5sum] = "1b55f9cedde4a33ab5d286c5f30e86db"
+SRC_URI[sha256sum] = "e163e8a12d2121f77575773cfc2b5988275dc1f1d2541fdf780127c29dbbea9c"
+
+PYPI_PACKAGE = "setuptools_scm"
+inherit pypi
+
+RDEPENDS_${PN}_class-target = "${PYTHON_PN}-py ${PYTHON_PN}-setuptools ${PYTHON_PN}-debugger ${PYTHON_PN}-json"
+RDEPENDS_${PN}_class-native = "${PYTHON_PN}-setuptools-native"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-setuptools-scm_1.15.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-setuptools-scm_1.15.7.bb
new file mode 100644
index 000000000..64b36e3a0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-setuptools-scm_1.15.7.bb
@@ -0,0 +1,4 @@
+inherit setuptools
+require python-setuptools-scm.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-argparse"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-simplejson.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-simplejson.inc
new file mode 100644
index 000000000..e28d51859
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-simplejson.inc
@@ -0,0 +1,23 @@
+SUMMARY = "Simple, fast, extensible JSON encoder/decoder for Python"
+HOMEPAGE = "http://cheeseshop.python.org/pypi/simplejson"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c6338d7abd321c0b50a2a547e441c52e"
+
+SRC_URI[md5sum] = "870bf6257465ce2ee8cad14e2394f7eb"
+SRC_URI[sha256sum] = "4c4ecf20e054716cc1e5a81cadc44d3f4027108d8dd0861d8b1e3bd7a32d4f0a"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-netserver \
+ ${PYTHON_PN}-numbers \
+"
+
+PACKAGES =+ "${PN}-tests"
+RDEPENDS_${PN}-tests = "${PN} ${PYTHON_PN}-unittest"
+FILES_${PN}-tests+= " \
+ ${PYTHON_SITEPACKAGES_DIR}/simplejson/tests \
+ ${PYTHON_SITEPACKAGES_DIR}/simplejson/tool.py* \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-simplejson_3.13.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-simplejson_3.13.2.bb
new file mode 100644
index 000000000..24ad9a960
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-simplejson_3.13.2.bb
@@ -0,0 +1,4 @@
+inherit setuptools
+require python-simplejson.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-re"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-singledispatch_3.4.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-singledispatch_3.4.0.3.bb
new file mode 100644
index 000000000..44c9505b3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-singledispatch_3.4.0.3.bb
@@ -0,0 +1,12 @@
+SUMMARY = "functools.singledispatch from Python 3.4"
+DESCRIPTION = "PEP 443 proposed to expose a mechanism in the functools standard library module \
+in Python 3.4 that provides a simple form of generic programming known as single-dispatch \
+generic functions. This library is a backport of this functionality to Python 2.6 - 3.3"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.rst;md5=ee3cd67264adc7eb07981f3644dc17dc"
+
+SRC_URI[md5sum] = "af2fc6a3d6cc5a02d0bf54d909785fcb"
+SRC_URI[sha256sum] = "5b06af87df13818d14f08a028e42f566640aef80805c3b50c5056b086e3c2b9c"
+
+inherit pypi setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-six.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-six.inc
new file mode 100644
index 000000000..a5915c116
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-six.inc
@@ -0,0 +1,19 @@
+SUMMARY = "Python 2 and 3 compatibility library"
+HOMEPAGE = "http://pypi.python.org/pypi/six/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=35cec5bf04dd0820d0a18533ea7c774a"
+
+SRC_URI[md5sum] = "d12789f9baf7e9fb2524c0c64f1773f8"
+SRC_URI[sha256sum] = "70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9"
+
+do_compile_append() {
+ ${PYTHON} setup.py -q bdist_egg --dist-dir ./
+}
+do_install_append() {
+ install -m 0644 ${S}/*.egg ${D}/${PYTHON_SITEPACKAGES_DIR}/
+}
+
+RDEPENDS_${PN} += "${PYTHON_PN}-io"
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-six_1.11.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-six_1.11.0.bb
new file mode 100644
index 000000000..9075745d7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-six_1.11.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-six.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-slip-dbus_0.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-slip-dbus_0.6.1.bb
new file mode 100644
index 000000000..8081416ee
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-slip-dbus_0.6.1.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://github.com/nphilipp/${SRCNAME}/releases/download/${SRCNAME}-${PV}/${SRCNAME}-${PV}.tar.bz2"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+SRC_URI[md5sum] = "a6d8ee96245fc21785d4c1c062c85f2f"
+SRC_URI[sha256sum] = "bc897f1ab6f5b4989f85548799aaeb84fde67bbba18e40341bfe1d7885c2fd9a"
+
+do_compile_prepend() {
+ sed -e 's/@VERSION@/${PV}/g' setup.py.in > setup.py
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-smbus.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-smbus.inc
new file mode 100644
index 000000000..f472a57f4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-smbus.inc
@@ -0,0 +1,12 @@
+SUMMARY = "Set of i2c tools for linux - Python module"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://smbusmodule.c;beginline=1;endline=17;md5=fa24df321a520ff8e10f203425ab9fa8"
+PR = "r1"
+
+SRC_URI = "${KERNELORG_MIRROR}/software/utils/i2c-tools/i2c-tools-${PV}.tar.gz "
+SRC_URI[md5sum] = "d92a288d70f306d3895e3a7e9c14c9aa"
+SRC_URI[sha256sum] = "5b60daf6f011de0acb61de57dba62f2054bb39f19961d67e0c91610f071ca403"
+
+DEPENDS += "i2c-tools"
+
+S = "${WORKDIR}/i2c-tools-${PV}/py-smbus/"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-smbus_4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-smbus_4.0.bb
new file mode 100644
index 000000000..1b9577887
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-smbus_4.0.bb
@@ -0,0 +1,2 @@
+inherit distutils
+require python-smbus.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-snakefood_1.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-snakefood_1.4.bb
new file mode 100644
index 000000000..e4a6d767d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-snakefood_1.4.bb
@@ -0,0 +1,51 @@
+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"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI[md5sum] = "56c88667a33d8909b0aabf2ab6903bdf"
+SRC_URI[sha256sum] = "295784668032254e7391ca99ba7060edd3ae4eca1a330ac11627b18ab5923b77"
+
+inherit pypi 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-openembedded/meta-python/recipes-devtools/python/python-snimpy_0.8.12.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-snimpy_0.8.12.bb
new file mode 100644
index 000000000..c5af48dd3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-snimpy_0.8.12.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Interactive SNMP tool"
+DESCRIPTION = "Snimpy is a Python-based tool providing a simple interface to build SNMP query"
+HOMEPAGE = "https://pypi.python.org/pypi/snimpy"
+SECTION = "devel/python"
+
+DEPENDS += "libsmi python-cffi-native python-vcversioner-native"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://docs/license.rst;md5=7c53ab2d1240828625c3e093d049d4f4"
+
+SRC_URI[md5sum] = "6d016b6356db432e6a87ad708eb8fcb6"
+SRC_URI[sha256sum] = "04efcfba867ffb0e10cc8d7f93a553ceb6bdf2ee34e49762749028a2c76096c1"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "python-cffi \
+ python-pycparser \
+ python-pysnmp \
+ python-setuptools \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-sparts_0.7.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-sparts_0.7.3.bb
new file mode 100644
index 000000000..a1253112c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-sparts_0.7.3.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Library for rapid service prototyping with minimal boilerplate"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0c1554636a564da3baf037ac652fc831"
+
+SRC_URI[md5sum] = "6aa8815652c6f5e5e8e5b2ac1813dd87"
+SRC_URI[sha256sum] = "b25707c349079a7c888155e7fdfd8394df2da9aca9c8eee4e205528cb16b7662"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "\
+ python-subprocess \
+ python-six \
+ python-argparse \
+ python-re \
+ python-shell \
+ python-threading \
+ python-logging \
+ python-unixadmin \
+ python-distutils \
+ python-daemonize \
+ python-futures \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-speaklater.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-speaklater.inc
new file mode 100644
index 000000000..94fa8a6c0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-speaklater.inc
@@ -0,0 +1,9 @@
+DESCRIPTION = "Media asset management for Python, with glue code for various frameworks"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b810770075a29bf44b96607440e7c801"
+
+SRC_URI[md5sum] = "e8d5dbe36e53d5a35cff227e795e8bbf"
+SRC_URI[sha256sum] = "59fea336d0eed38c1f0bf3181ee1222d0ef45f3a9dd34ebe65e6bfffdd6a65a9"
+
+PYPI_PACKAGE = "speaklater"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-speaklater_1.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-speaklater_1.3.bb
new file mode 100644
index 000000000..56fd55577
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-speaklater_1.3.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-speaklater.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-spidev.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-spidev.inc
new file mode 100644
index 000000000..1b93763d5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-spidev.inc
@@ -0,0 +1,17 @@
+SUMMARY = "Python bindings for Linux SPI access through spidev"
+DESCRIPTION = "This project contains a python module for interfacing with SPI\
+devices from user space via the spidev linux kernel driver.\
+This is a modified version of the code originally found\
+[here](http://elk.informatik.fh-augsburg.de/da/da-49/trees/pyap7k/lang/py-spi)\
+All code is GPLv2 licensed unless explicitly stated otherwise."
+HOMEPAGE = "http://github.com/doceme/py-spidev"
+SECTION = "devel/python"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=54bdb9022ebb75ab68399cdaab97da60"
+SRCNAME = "spidev"
+
+SRC_URI[md5sum] = "f601676f1bb48b9aa3b3897f95216365"
+SRC_URI[sha256sum] = "09d2b5122f0dd79910713a11f9a0020f71537224bf829916def4fffc0ea59456"
+
+
+inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy.inc
new file mode 100644
index 000000000..0c191ae7d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy.inc
@@ -0,0 +1,20 @@
+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=b1c412c9d8d1ce018f7a9374407c22bb"
+
+PYPI_PACKAGE = "SQLAlchemy"
+inherit pypi
+
+SRC_URI[md5sum] = "03db1c8f8ae911977c0bf3950a4c9c21"
+SRC_URI[sha256sum] = "6b55ec379c11ad696f9371ce8e0de93c7f21134323f56a56a1b0d8fbef17013c"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-pickle \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-threading \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy_1.1.17.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy_1.1.17.bb
new file mode 100644
index 000000000..53c8fecf7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy_1.1.17.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-sqlalchemy.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-strict-rfc3339.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-strict-rfc3339.inc
new file mode 100644
index 000000000..dca9ea93e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-strict-rfc3339.inc
@@ -0,0 +1,8 @@
+SUMMARY = "Strict, simple, lightweight RFC3339 function.s"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8f0e2cd40e05189ec81232da84bd6e1a"
+
+SRC_URI[md5sum] = "4d9b635b4df885bc37bc1189d66c9abc"
+SRC_URI[sha256sum] = "5cad17bedfc3af57b399db0fed32771f18fc54bbd917e85546088607ac5e1277"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-strict-rfc3339_0.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-strict-rfc3339_0.7.bb
new file mode 100644
index 000000000..b01ea99a3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-strict-rfc3339_0.7.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-strict-rfc3339.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-subprocess32_3.2.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-subprocess32_3.2.7.bb
new file mode 100644
index 000000000..f43706923
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-subprocess32_3.2.7.bb
@@ -0,0 +1,15 @@
+SUMMARY = "A backport of the subprocess module from Python 3.2 for use on 2.x"
+DESCRIPTION = "This is a backport of the subprocess standard library module \
+from Python 3.2 - 3.5 for use on Python 2. It includes bugfixes and some new \
+features. On POSIX systems it is guaranteed to be reliable when used in \
+threaded applications. It includes timeout support from Python 3.3 and the \
+run() API from 3.5 but otherwise matches 3.2's API."
+LICENSE = "Python-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d3e62baa8fb96b11a59d3f2cd335d5c0"
+
+SRC_URI[md5sum] = "824c801e479d3e916879aae3e9c15e16"
+SRC_URI[sha256sum] = "1e450a4a4c53bf197ad6402c564b9f7a53539385918ef8f12bdf430a61036590"
+
+inherit pypi setuptools
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-systemd.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-systemd.inc
new file mode 100644
index 000000000..5be5de092
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-systemd.inc
@@ -0,0 +1,18 @@
+SUMMARY = "Python interface for libsystemd"
+HOMEPAGE = "https://github.com/systemd/python-systemd"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4fbd65380cdd255951079008b364516c"
+
+PYPI_PACKAGE = "systemd-python"
+DEPENDS += "systemd (<=234)"
+RDEPENDS_${PN} += "systemd ${PYTHON_PN}-syslog ${PYTHON_PN}-logging"
+REQUIRED_DISTRO_FEATURES = "systemd"
+inherit pypi distro_features_check
+
+SRC_URI[md5sum] = "5071ea5bcb976186e92a3f5e75df221d"
+SRC_URI[sha256sum] = "fd0e44bf70eadae45aadc292cb0a7eb5b0b6372cd1b391228047d33895db83e7"
+
+# allow for common patches for python- and python3-systemd
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-systemd:"
+
+SRC_URI_append_libc-musl = " file://0001-Provide-implementation-of-strndupa-for-musl.patch"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-systemd/0001-Provide-implementation-of-strndupa-for-musl.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-systemd/0001-Provide-implementation-of-strndupa-for-musl.patch
new file mode 100644
index 000000000..d7085a856
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-systemd/0001-Provide-implementation-of-strndupa-for-musl.patch
@@ -0,0 +1,42 @@
+From 8b639f9faf6199e47b9eae0698d01a22917b6abe Mon Sep 17 00:00:00 2001
+From: Tim Orling <timothy.t.orling@linux.intel.com>
+Date: Fri, 29 Dec 2017 09:17:17 -0800
+Subject: [PATCH] Provide implementation of strndupa for musl
+
+Reuse the approach from oe-core:
+/meta/recipes-core/systemd/systemd/0002-src-basic-missing.h-check-for-missing-strndupa.patch
+
+Original patch author: Emil Renner Berthing <systemd@esmil.dk>
+
+Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com
+---
+Upstream-Status: Pending
+
+ systemd/util.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/systemd/util.c b/systemd/util.c
+index e02c825..277e611 100644
+--- a/systemd/util.c
++++ b/systemd/util.c
+@@ -34,6 +34,17 @@
+
+ #include "util.h"
+
++#if !HAVE_DECL_STRNDUPA
++#define strndupa(s, n) \
++ ({ \
++ const char *__old = (s); \
++ size_t __len = strnlen(__old, (n)); \
++ char *__new = (char *)alloca(__len + 1); \
++ __new[__len] = '\0'; \
++ (char *)memcpy(__new, __old, __len); \
++ })
++#endif
++
+ int safe_atou(const char *s, unsigned *ret_u) {
+ char *x = NULL;
+ unsigned long l;
+--
+2.13.6
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-systemd_234.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-systemd_234.bb
new file mode 100644
index 000000000..80f290077
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-systemd_234.bb
@@ -0,0 +1,2 @@
+require python-systemd.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-tornado-redis_2.4.18.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-tornado-redis_2.4.18.bb
new file mode 100644
index 000000000..46a20a5ed
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-tornado-redis_2.4.18.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Tornado-Redis is an asyncronous Redis client for the Tornado Web Server"
+DESCRIPTION = "Tornado-Redis is a Redis client that uses Tornado's native 'tornado-gen' interface. \
+It can be used alongside redis-py in Tornado applications: \
+tornado-redis to subscribe to Pub/Sub notifications and for blocking commands (such as BLPOP, BRPOP, BRPOPLPUSH); \
+redis-py for other commands."
+HOMEPAGE = "https://github.com/leporo/tornado-redis"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=ca307e8f37b5fa7f8dbbec033f7db7de"
+
+SRC_URI[md5sum] = "1c7ec0f645d15400871141c1149e6934"
+SRC_URI[sha256sum] = "8fd3b324158291ad5fb7f5f8dc2e8763b2895556bd2a44f2dd721b703c669046"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "python-tornado"
+
+RDEPENDS_${PN}-test += "${PN} python-tornado"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-tornado.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-tornado.inc
new file mode 100644
index 000000000..29d10da6b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-tornado.inc
@@ -0,0 +1,25 @@
+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://setup.py;beginline=3;endline=15;md5=8d463fc66ff8f275354ffe88d1896e12"
+
+SRC_URI[md5sum] = "a5fc7fd4aea94867609a491ce65786f1"
+SRC_URI[sha256sum] = "6d14e47eab0e15799cf3cdcc86b0b98279da68522caace2bd7ce644287685f0a"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-compression ${PYTHON_PN}-numbers ${PYTHON_PN}-email \
+ ${PYTHON_PN}-pkgutil ${PYTHON_PN}-html ${PYTHON_PN}-json ${PYTHON_PN}-certifi ${PYTHON_PN}-threading \
+ ${PYTHON_PN}-ctypes"
+
+RDEPENDS_${PN}-test += "${PN} ${PYTHON_PN}-unittest"
+
+PACKAGES =+ "\
+ ${PN}-test \
+"
+
+FILES_${PN}-test = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/*/test \
+ ${libdir}/${PYTHON_DIR}/site-packages/*/testing.py* \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-tornado_4.5.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-tornado_4.5.3.bb
new file mode 100644
index 000000000..193a4db7d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-tornado_4.5.3.bb
@@ -0,0 +1,8 @@
+inherit pypi setuptools
+require python-tornado.inc
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-backports-abc \
+ ${PYTHON_PN}-backports-ssl \
+ ${PYTHON_PN}-singledispatch \
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc
new file mode 100644
index 000000000..6480ad54f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc
@@ -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"
+
+#twisted/topfiles/NEWS:655: - Relicensed: Now under the MIT license, rather than LGPL.
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8a9c2fbfcba7d70504e3ba545e1820ed"
+
+SRC_URI[md5sum] = "6dbedb918f0c7288a4c670f59393ecf8"
+SRC_URI[sha256sum] = "0da1a7e35d5fcae37bc9c7978970b5feb3bc82822155b8654ec63925c05af75c"
+
+PYPI_PACKAGE = "Twisted"
+PYPI_PACKAGE_EXT = "tar.bz2"
+
+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}-mail \
+ ${PN}-names \
+ ${PN}-news \
+ ${PN}-runner \
+ ${PN}-web \
+ ${PN}-words \
+ ${PN}-flow \
+ ${PN}-pair \
+ ${PN}-core \
+"
+
+PACKAGES =+ "\
+ ${PN}-src \
+ ${PN}-bin \
+"
+
+DEPENDS += " \
+ ${PYTHON_PN}-incremental-native \
+"
+
+RDEPENDS_${PN} = "\
+ ${PN}-bin \
+ ${PN}-core \
+ ${PN}-conch \
+ ${PN}-mail \
+ ${PN}-names \
+ ${PN}-runner \
+ ${PN}-web \
+ ${PN}-words \
+"
+
+RDEPENDS_${PN}-core = "${PYTHON_PN}-core ${PYTHON_PN}-zopeinterface ${PYTHON_PN}-incremental ${PYTHON_PN}-constantly ${PYTHON_PN}-hyperlink ${PYTHON_PN}-automat"
+RDEPENDS_${PN}-test = "${PN}"
+RDEPENDS_${PN}-conch = "${PN}-core ${PN}-protocols"
+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 \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/haproxy/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/ \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/haproxy \
+"
+
+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 \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/logger/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/_threads/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/positioning/ \
+"
+
+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 \
+"
+
+FILES_${PN}-doc += " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/_pydoctortemplates/ \
+"
+
+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-openembedded/meta-python/recipes-devtools/python/python-twisted_17.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-twisted_17.9.0.bb
new file mode 100644
index 000000000..2be1709d0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-twisted_17.9.0.bb
@@ -0,0 +1,4 @@
+inherit pypi setuptools
+require python-twisted.inc
+
+RDEPENDS_${PN}-core += "${PYTHON_PN}-contextlib"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-twofish.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-twofish.inc
new file mode 100644
index 000000000..79ab285e5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-twofish.inc
@@ -0,0 +1,13 @@
+SUMMARY = "Bindings for the Twofish implementation by Niels Ferguson"
+DESCRIPTION = "Bindings for the Twofish implementation by Niels Ferguson\
+ libtwofish-dev."
+HOMEPAGE = "http://github.com/keybase/python-twofish"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=33a63abf6d7567b1689d8ce69f00e43b"
+
+SRC_URI[md5sum] = "d7d22f16dc4ffa0e3ae2200654033abe"
+SRC_URI[sha256sum] = "b09d8bb50d33b23ff34cafb1f9209f858f752935c6a5c901efb92a41acb830fa"
+
+inherit pypi
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-twofish_0.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-twofish_0.3.0.bb
new file mode 100644
index 000000000..85b021594
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-twofish_0.3.0.bb
@@ -0,0 +1,2 @@
+require python-twofish.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-typing.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-typing.inc
new file mode 100644
index 000000000..a0ee6b24b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-typing.inc
@@ -0,0 +1,9 @@
+SUMMARY = "Simple Python module defined by PEP 484."
+HOMEPAGE = "https://github.com/python/typing"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=64fc2b30b67d0a8423c250e0386ed72f"
+
+SRC_URI[md5sum] = "5b2ade08d83be488f17b5fe587c27c74"
+SRC_URI[sha256sum] = "d400a9344254803a2368533e4533a4200d21eb7b6b729c173bc38201a74db3f2"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-typing_3.6.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-typing_3.6.4.bb
new file mode 100644
index 000000000..04ce063c9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-typing_3.6.4.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-typing.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-ujson.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-ujson.inc
new file mode 100644
index 000000000..c3d0bfeed
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-ujson.inc
@@ -0,0 +1,15 @@
+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."
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=88df8e78b9edfd744953862179f2d14e"
+
+SRC_URI[md5sum] = "42f77b0cce686dfa4da2e68480b1dd24"
+SRC_URI[sha256sum] = "f66073e5506e91d204ab0c614a148d5aa938bdbf104751be66f8ad7a222f5f86"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-numbers \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-ujson_1.35.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-ujson_1.35.bb
new file mode 100644
index 000000000..b3c6ae66f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-ujson_1.35.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-ujson.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-unidiff.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-unidiff.inc
new file mode 100644
index 000000000..fc1206201
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-unidiff.inc
@@ -0,0 +1,14 @@
+SUMMARY = "Unified diff parsing/metadata extraction library"
+HOMEPAGE = "http://github.com/matiasb/python-unidiff"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4c434b08ef42fea235bb019b5e5a97b3"
+
+SRC_URI[md5sum] = "47f669d7273541fec45e4cc0fba8d8e9"
+SRC_URI[sha256sum] = "9c9ab5fb96b6988b4cd5def6b275492442c04a570900d33aa6373105780025bc"
+
+inherit pypi
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-codecs \
+ ${PYTHON_PN}-io \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-unidiff_0.5.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-unidiff_0.5.5.bb
new file mode 100644
index 000000000..bdb3d27f9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-unidiff_0.5.5.bb
@@ -0,0 +1,2 @@
+require python-unidiff.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-urllib3.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-urllib3.inc
new file mode 100644
index 000000000..cf79926a6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-urllib3.inc
@@ -0,0 +1,19 @@
+SUMMARY = "Python HTTP library with thread-safe connection pooling, file post support, sanity friendly, and more"
+HOMEPAGE = "https://github.com/shazow/urllib3"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=ea114851ad9a8c311aac8728a681a067"
+
+SRC_URI[md5sum] = "0da7bed3fe94bf7dc59ae37885cc72f7"
+SRC_URI[sha256sum] = "cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-certifi \
+ ${PYTHON_PN}-cryptography \
+ ${PYTHON_PN}-email \
+ ${PYTHON_PN}-idna \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-pyopenssl \
+ ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-urllib3_1.22.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-urllib3_1.22.bb
new file mode 100644
index 000000000..6c81f1db9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-urllib3_1.22.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-urllib3.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-vcversioner_2.16.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-vcversioner_2.16.0.0.bb
new file mode 100644
index 000000000..cd6fa8dff
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-vcversioner_2.16.0.0.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Python vcversioner, automagically update the project's version"
+HOMEPAGE = "https://github.com/habnabit/vcversioner"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=827a7a91a8d20d3c666b665cd96db8e3"
+
+SRC_URI[md5sum] = "aab6ef5e0cf8614a1b1140ed5b7f107d"
+SRC_URI[sha256sum] = "dae60c17a479781f44a4010701833f1829140b1eeccd258762a74974aa06e19b"
+
+inherit pypi setuptools
+
+do_compile_append() {
+ ${PYTHON} setup.py -q bdist_egg --dist-dir ./
+}
+
+do_install_append() {
+ install -m 0644 ${S}/vcversioner*.egg ${D}/${PYTHON_SITEPACKAGES_DIR}/
+}
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-subprocess \
+ "
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-visitor.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-visitor.inc
new file mode 100644
index 000000000..8c2288cf0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-visitor.inc
@@ -0,0 +1,6 @@
+SUMMARY = "A tiny pythonic visitor implementation."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+SRC_URI[md5sum] = "94a024ed0ec1b02b4497c15267d319ca"
+SRC_URI[sha256sum] = "2c737903b2b6864ebc6167eef7cf3b997126f1aa94bdf590f90f1436d23e480a"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-visitor_0.1.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-visitor_0.1.3.bb
new file mode 100644
index 000000000..eee25a543
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-visitor_0.1.3.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-visitor.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-vobject_0.9.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-vobject_0.9.5.bb
new file mode 100644
index 000000000..d2f343eb1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-vobject_0.9.5.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Python package for parsing and generating vCard and vCalendar files"
+HOMEPAGE = "http://vobject.skyhouseconsulting.com/"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE-2.0.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI[md5sum] = "aa629d6ae95db5edfd5b2402eb1073cb"
+SRC_URI[sha256sum] = "0f56cae196303d875682b9648b4bb43ffc769d2f0f800958e0a506af867b1243"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-dateutil \
+ ${PYTHON_PN}-numbers \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-wcwidth.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-wcwidth.inc
new file mode 100644
index 000000000..1429450bb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-wcwidth.inc
@@ -0,0 +1,8 @@
+SUMMARY = "Library for building powerful interactive command lines in Python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=11fba47286258744a6bc6e43530c32a1"
+
+SRC_URI[md5sum] = "b3b6a0a08f0c8a34d1de8cf44150a4ad"
+SRC_URI[sha256sum] = "3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-wcwidth_0.1.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-wcwidth_0.1.7.bb
new file mode 100644
index 000000000..ef107c16a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-wcwidth_0.1.7.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-wcwidth.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-webcolors.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-webcolors.inc
new file mode 100644
index 000000000..a02bbbbed
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-webcolors.inc
@@ -0,0 +1,12 @@
+SUMMARY = "Simple Python module for working with HTML/CSS color definitions."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=197add016087e6884a012b0f185d44ad"
+
+SRC_URI[md5sum] = "40890db38b2a856e526a568864025fe6"
+SRC_URI[sha256sum] = "030562f624467a9901f0b455fef05486a88cfb5daa1e356bd4aacea043850b59"
+
+RDEPENDS_${PN}_class-target = "\
+ ${PYTHON_PN}-stringold \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-webcolors_1.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-webcolors_1.8.1.bb
new file mode 100644
index 000000000..a0b6708ca
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-webcolors_1.8.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-webcolors.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-webdav_0.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-webdav_0.1.2.bb
new file mode 100644
index 000000000..7a6437dc5
--- /dev/null
+++ b/meta-openembedded/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-openembedded/meta-python/recipes-devtools/python/python-webencodings.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-webencodings.inc
new file mode 100644
index 000000000..34ca7066b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-webencodings.inc
@@ -0,0 +1,13 @@
+SUMMARY = "Character encoding aliases for legacy web content"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709"
+
+SRC_URI[md5sum] = "32f6e261d52e57bf7e1c4d41546d15b8"
+SRC_URI[sha256sum] = "b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"
+
+inherit pypi
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-codecs \
+ ${PYTHON_PN}-json \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-webencodings_0.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-webencodings_0.5.1.bb
new file mode 100644
index 000000000..5de2ed1d7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-webencodings_0.5.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-webencodings.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-werkzeug.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-werkzeug.inc
new file mode 100644
index 000000000..c04a4e0c4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-werkzeug.inc
@@ -0,0 +1,47 @@
+SUMMARY = "The Swiss Army knife of Python web development"
+DESCRIPTION = "\
+Werkzeug started as simple collection of various utilities for WSGI \
+applications and has become one of the most advanced WSGI utility modules. \
+It includes a powerful debugger, full featured request and response objects, \
+HTTP utilities to handle entity tags, cache control headers, HTTP dates, \
+cookie handling, file uploads, a powerful URL routing system and a bunch \
+of community contributed addon modules."
+HOMEPAGE = "http://werkzeug.pocoo.org/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ed9a0b7c0254616d72dadb98b293ef1b"
+
+SRC_URI[md5sum] = "6d20b5be2d245be4ac7706cc390d130c"
+SRC_URI[sha256sum] = "c3fd7a7d41976d9f44db327260e263132466836cef6f91512889ed60ad26557c"
+
+PYPI_PACKAGE = "Werkzeug"
+
+CLEANBROKEN = "1"
+
+PACKAGES =+ "${PN}-tests"
+FILES_${PN}-tests+= " \
+ ${PYTHON_SITEPACKAGES_DIR}/werkzeug/test* \
+ ${PYTHON_SITEPACKAGES_DIR}/werkzeug/__pycache__/test* \
+ ${PYTHON_SITEPACKAGES_DIR}/werkzeug/contrib/test* \
+ ${PYTHON_SITEPACKAGES_DIR}/werkzeug/contrib/__pycache__/test* \
+"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-difflib \
+ ${PYTHON_PN}-email \
+ ${PYTHON_PN}-html \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-netserver \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-pkgutil \
+ ${PYTHON_PN}-pprint \
+ ${PYTHON_PN}-threading \
+ ${PYTHON_PN}-unixadmin \
+"
+
+RDEPENDS_${PN}-tests = " \
+ ${PN} \
+ ${PYTHON_PN}-unittest \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-werkzeug_0.14.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-werkzeug_0.14.1.bb
new file mode 100644
index 000000000..db41161b3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-werkzeug_0.14.1.bb
@@ -0,0 +1,7 @@
+inherit pypi setuptools
+require python-werkzeug.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-subprocess \
+ ${PYTHON_PN}-zlib \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-whoosh.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-whoosh.inc
new file mode 100644
index 000000000..a4ca5dcd4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-whoosh.inc
@@ -0,0 +1,24 @@
+SUMMARY = "Fast, pure-Python full text indexing, search, and spell checking library."
+DESCRIPTION = "\
+Whoosh is a fast, featureful full-text indexing and searching library \
+implemented in pure Python. Programmers can use it to easily add search \
+functionality to their applications and websites. Every part of how \
+Whoosh works can be extended or replaced to meet your needs exactly."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=05303186defc6141143629961c7c8a60"
+
+SRC_URI[md5sum] = "893433e9c0525ac043df33e6e04caab2"
+SRC_URI[sha256sum] = "e0857375f63e9041e03fedd5b7541f97cf78917ac1b6b06c1fcc9b45375dda69"
+
+PYPI_PACKAGE = "Whoosh"
+PYPI_PACKAGE_EXT = "zip"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-email \
+ ${PYTHON_PN}-multiprocessing \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-pickle \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-stringold \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-whoosh_2.7.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-whoosh_2.7.4.bb
new file mode 100644
index 000000000..3b4291f40
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-whoosh_2.7.4.bb
@@ -0,0 +1,6 @@
+inherit pypi setuptools
+require python-whoosh.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-subprocess \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-wrapt.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-wrapt.inc
new file mode 100644
index 000000000..c85548fb4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-wrapt.inc
@@ -0,0 +1,15 @@
+SUMMARY = "A Python module for decorators, wrappers and monkey patching."
+HOMEPAGE = "http://wrapt.readthedocs.org/"
+LICENSE = "BSD"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=61c27930012e86b3dc7e36f92e83c4d8"
+
+SRC_URI[md5sum] = "e1346f31782d50401f81c2345b037076"
+SRC_URI[sha256sum] = "d4d560d479f2c21e1b5443bbd15fe7ec4b37fe7e53d335d3b9b0a7b1226fe3c6"
+
+inherit pypi
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-stringold \
+ ${PYTHON_PN}-threading \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-wrapt_1.10.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-wrapt_1.10.11.bb
new file mode 100644
index 000000000..bb4247657
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-wrapt_1.10.11.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-wrapt.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-wtforms.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-wtforms.inc
new file mode 100644
index 000000000..916697fcf
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-wtforms.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "A flexible forms validation and rendering library for python web development."
+HOMEPAGE = "https://pypi.python.org/pypi/WTForms"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=c459accc90c6ed6a94878c8fe0535be2"
+
+SRC_URI[md5sum] = "6938a541fafd1a1ae2f6b9b88588eef2"
+SRC_URI[sha256sum] = "ffdf10bd1fa565b8233380cb77a304cd36fd55c73023e91d4b803c96bc11d46f"
+
+PYPI_PACKAGE = "WTForms"
+PYPI_PACKAGE_EXT = "zip"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-netserver \
+ ${PYTHON_PN}-numbers \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-wtforms_2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-wtforms_2.1.bb
new file mode 100644
index 000000000..fdb015e8a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-wtforms_2.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-wtforms.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-xlrd.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-xlrd.inc
new file mode 100644
index 000000000..d1ab05d4f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-xlrd.inc
@@ -0,0 +1,12 @@
+SUMMARY = "Library for developers to extract data from Microsoft Excel (tm) spreadsheet files"
+DESCRIPTION = "Extract data from Excel spreadsheets (.xls and .xlsx,\
+ versions 2.0 onwards) on any platform. Pure Python (2.6, 2.7, 3.2+). \
+Strong support for Excel dates. Unicode-aware."
+HOMEPAGE = "http://www.python-excel.org/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=08bd814936237b6e1355e6370b24b2c1"
+
+SRC_URI[md5sum] = "b85c9916ac755cad489a9005f5a0d390"
+SRC_URI[sha256sum] = "8a21885513e6d915fe33a8ee5fdfa675433b61405ba13e2a69e62ee36828d7e2"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-compression ${PYTHON_PN}-io ${PYTHON_PN}-pprint ${PYTHON_PN}-shell"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-xlrd_1.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-xlrd_1.1.0.bb
new file mode 100644
index 000000000..3a4d709eb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-xlrd_1.1.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-xlrd.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-xstatic-font-awesome.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-xstatic-font-awesome.inc
new file mode 100644
index 000000000..d13cb83f6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-xstatic-font-awesome.inc
@@ -0,0 +1,17 @@
+DESCRIPTION = "Font Awesome icons packaged for setuptools (easy_install) / pip."
+HOMEPAGE = "https://pypi.python.org/pypi/XStatic-Font-Awesome"
+SECTION = "devel/python"
+LICENSE = "Apache-2"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=313d021898694cd2b0ea6508bdfe51a2"
+
+PYPI_PACKAGE = "XStatic-Font-Awesome"
+
+inherit pypi
+
+SRC_URI[md5sum] = "141a0e9a7e21e82f922573a00ae0c166"
+SRC_URI[sha256sum] = "e01fb480caaa7c7963dcb3328a4700e631bef6070db0e8b685816d220e685f6c"
+
+DEPENDS += " \
+ ${PYTHON_PN}-xstatic \
+ ${PYTHON_PN}-pip \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-xstatic-font-awesome_4.7.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-xstatic-font-awesome_4.7.0.0.bb
new file mode 100644
index 000000000..41e85f4a9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-xstatic-font-awesome_4.7.0.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-xstatic-font-awesome.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-xstatic.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-xstatic.inc
new file mode 100644
index 000000000..f7c7db99a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-xstatic.inc
@@ -0,0 +1,14 @@
+DESCRIPTION = "XStatic base package with minimal support code"
+HOMEPAGE = "https://pypi.python.org/pypi/XStatic"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README.txt;md5=36a1e7eaa71e1bd07b8d2247839f228e"
+
+PYPI_PACKAGE = "XStatic"
+
+SRC_URI[md5sum] = "7064b5ea7fd1ee990e0ae0538301d9bc"
+SRC_URI[sha256sum] = "0ec93d7c66ebb9e0d31b664753437dc8634cb66e13310cb47c9eb1e0bc66d726"
+
+DEPENDS += " \
+ ${PYTHON_PN}-pip \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-xstatic_1.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-xstatic_1.0.1.bb
new file mode 100644
index 000000000..807303704
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-xstatic_1.0.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-xstatic.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-yappi.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-yappi.inc
new file mode 100644
index 000000000..651ce7731
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-yappi.inc
@@ -0,0 +1,16 @@
+SUMMARY = "Yet Another Python Profiler"
+HOMEPAGE = "http://yappi.googlecode.com/"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=6b131c3041637f6a5175a43112dde05c"
+
+SRC_URI[md5sum] = "dc56240575c99938a924eaeb7c0d8beb"
+SRC_URI[sha256sum] = "5f657129e1b9b952379ffbc009357d0dcdb58c50f3bfe88ffbb992e4b27b263c"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-pickle \
+ ${PYTHON_PN}-threading \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-yappi_0.98.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-yappi_0.98.bb
new file mode 100644
index 000000000..a3bdde5c2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-yappi_0.98.bb
@@ -0,0 +1,2 @@
+require python-yappi.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-zopeinterface.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-zopeinterface.inc
new file mode 100644
index 000000000..1fab2cc7f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-zopeinterface.inc
@@ -0,0 +1,22 @@
+SUMMARY = "Interface definitions for Zope products"
+LICENSE = "ZPL-2.1"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e54fd776274c1b7423ec128974bd9d46"
+
+SRC_URI[md5sum] = "8700a4f527c1203b34b10c2b4e7a6912"
+SRC_URI[sha256sum] = "d6d26d5dfbfd60c65152938fcb82f949e8dada37c041f72916fef6621ba5c5ce"
+
+PYPI_PACKAGE = "zope.interface"
+
+PACKAGES =. "${PN}-test "
+
+RPROVIDES_${PN} += "zope-interfaces"
+
+RDEPENDS_${PN}_class-target += "${PYTHON_PN}-datetime"
+
+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}-test += " \
+ ${PYTHON_SITEPACKAGES_DIR}/zope/interface/tests \
+ ${PYTHON_SITEPACKAGES_DIR}/zope/interface/common/tests \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-zopeinterface_4.4.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-zopeinterface_4.4.3.bb
new file mode 100644
index 000000000..1bdfd4d37
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-zopeinterface_4.4.3.bb
@@ -0,0 +1,4 @@
+inherit pypi setuptools
+require python-zopeinterface.inc
+
+RDEPENDS_${PN}-test += "python-unittest python-doctest"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_0.9.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_0.9.8.bb
new file mode 100644
index 000000000..e248fe7ce
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_0.9.8.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-alembic.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson_0.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson_0.3.3.bb
new file mode 100644
index 000000000..199e225b2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson_0.3.3.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-anyjson.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-appdirs_1.4.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-appdirs_1.4.3.bb
new file mode 100644
index 000000000..d24e1d8b6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-appdirs_1.4.3.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-appdirs.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-asn1crypto_0.24.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-asn1crypto_0.24.0.bb
new file mode 100644
index 000000000..cfbe57520
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-asn1crypto_0.24.0.bb
@@ -0,0 +1,6 @@
+inherit setuptools3
+require python-asn1crypto.inc
+
+RDEPENDS_${PN}_class-target += " \
+ ${PYTHON_PN}-shell \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_1.6.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_1.6.3.bb
new file mode 100644
index 000000000..6e32c288f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_1.6.3.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-astroid.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-attr_0.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-attr_0.3.1.bb
new file mode 100644
index 000000000..e80648c8c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-attr_0.3.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-attr.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-attrs_17.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-attrs_17.4.0.bb
new file mode 100644
index 000000000..c34693f50
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-attrs_17.4.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-attrs.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-automat_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-automat_0.6.0.bb
new file mode 100644
index 000000000..2c747643f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-automat_0.6.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-automat.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python_1.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python_1.3.1.bb
new file mode 100644
index 000000000..c43649dbf
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python_1.3.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-aws-iot-device-sdk-python.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-babel_2.5.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-babel_2.5.3.bb
new file mode 100644
index 000000000..0715d59f4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-babel_2.5.3.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-babel.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bcrypt_3.1.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bcrypt_3.1.4.bb
new file mode 100644
index 000000000..d2ec9e386
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bcrypt_3.1.4.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-bcrypt.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-beautifulsoup4_4.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-beautifulsoup4_4.6.0.bb
new file mode 100644
index 000000000..d98df11e3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-beautifulsoup4_4.6.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-beautifulsoup4.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_0.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_0.8.1.bb
new file mode 100644
index 000000000..7ee444dc9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_0.8.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-bitarray.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-blinker_1.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-blinker_1.4.bb
new file mode 100644
index 000000000..924b3cf51
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-blinker_1.4.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-blinker.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-can_2.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-can_2.1.0.bb
new file mode 100644
index 000000000..aaa9e811c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-can_2.1.0.bb
@@ -0,0 +1,7 @@
+require python-can.inc
+inherit pypi setuptools3
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-codecs \
+ ${PYTHON_PN}-compression \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.13.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.13.0.bb
new file mode 100644
index 000000000..34f149d3f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.13.0.bb
@@ -0,0 +1,8 @@
+inherit setuptools3
+require python-cassandra-driver.inc
+
+# Requires concurrent which is currently in -misc
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-misc \
+ ${PYTHON_PN}-numbers \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2018.1.18.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2018.1.18.bb
new file mode 100644
index 000000000..70f674b22
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2018.1.18.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-certifi.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.11.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.11.5.bb
new file mode 100644
index 000000000..e88808434
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.11.5.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-cffi.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-chardet_3.0.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-chardet_3.0.4.bb
new file mode 100644
index 000000000..038043c56
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-chardet_3.0.4.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-chardet.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-click_6.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-click_6.7.bb
new file mode 100644
index 000000000..192064404
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-click_6.7.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-click.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-configparser_3.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-configparser_3.5.0.bb
new file mode 100644
index 000000000..770cba596
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-configparser_3.5.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-configparser.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-constantly_15.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-constantly_15.1.0.bb
new file mode 100644
index 000000000..3f667540d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-constantly_15.1.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-constantly.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_4.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_4.4.2.bb
new file mode 100644
index 000000000..c983e0b5d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_4.4.2.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Code coverage measurement for Python"
+HOMEPAGE = "https://coverage.readthedocs.io"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ee41112a44fe7014dce33e26468ba93"
+
+SRC_URI[md5sum] = "29a9fe85377e0f7327cf5db1e335483f"
+SRC_URI[sha256sum] = "309d91bd7a35063ec7a0e4d75645488bfab3f0b66373e7722f23da7f5b0f34cc"
+
+inherit pypi setuptools3
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_2.1.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_2.1.4.bb
new file mode 100644
index 000000000..58994ffff
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_2.1.4.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-cryptography-vectors.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/run-ptest
new file mode 100644
index 000000000..0ba239c2a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/run-ptest
@@ -0,0 +1,2 @@
+#!/bin/sh
+py.test
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_2.1.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_2.1.4.bb
new file mode 100644
index 000000000..195923343
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_2.1.4.bb
@@ -0,0 +1,8 @@
+inherit pypi setuptools3
+require python-cryptography.inc
+
+LDSHARED += "-pthread"
+
+SRC_URI += " \
+ file://run-ptest \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cython_0.28.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cython_0.28.2.bb
new file mode 100644
index 000000000..2ce6bdbd6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cython_0.28.2.bb
@@ -0,0 +1,18 @@
+inherit setuptools3
+require python-cython.inc
+
+RDEPENDS_${PN} += "\
+ python3-setuptools \
+"
+
+# running build_ext a second time during install fails, because Python
+# would then attempt to import cythonized modules built for the target
+# architecture.
+DISTUTILS_INSTALL_ARGS += "--skip-build"
+
+do_install_append() {
+ # rename scripts that would conflict with the Python 2 build of Cython
+ mv ${D}${bindir}/cython ${D}${bindir}/cython3
+ mv ${D}${bindir}/cythonize ${D}${bindir}/cythonize3
+ mv ${D}${bindir}/cygdb ${D}${bindir}/cygdb3
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.7.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.7.2.bb
new file mode 100644
index 000000000..1d2baf55c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.7.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-dateutil.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-decorator_4.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-decorator_4.3.0.bb
new file mode 100644
index 000000000..844cbdc9a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-decorator_4.3.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-decorator.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django-south_1.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django-south_1.0.2.bb
new file mode 100644
index 000000000..10519111f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-django-south_1.0.2.bb
@@ -0,0 +1,2 @@
+require python-django-south.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_1.11.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_1.11.10.bb
new file mode 100644
index 000000000..e1e38c322
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_1.11.10.bb
@@ -0,0 +1,2 @@
+require python-django.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_1.15.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_1.15.0.bb
new file mode 100644
index 000000000..ce4dfdc74
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_1.15.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-dnspython.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.3.1.bb
new file mode 100644
index 000000000..5304ccc18
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.3.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-dominate.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-editor_1.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-editor_1.0.3.bb
new file mode 100644
index 000000000..8ad2b869d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-editor_1.0.3.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-editor.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-evdev_0.7.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-evdev_0.7.0.bb
new file mode 100644
index 000000000..3a92b6ec9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-evdev_0.7.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-evdev.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-feedformatter_0.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-feedformatter_0.4.bb
new file mode 100644
index 000000000..95a5405f3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-feedformatter_0.4.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-feedformatter.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-babel_0.11.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-babel_0.11.2.bb
new file mode 100644
index 000000000..104e7c28f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-babel_0.11.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-babel.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-bootstrap_3.3.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-bootstrap_3.3.7.1.bb
new file mode 100644
index 000000000..877c75436
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-bootstrap_3.3.7.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-bootstrap.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-login_0.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-login_0.4.1.bb
new file mode 100644
index 000000000..2d23fe167
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-login_0.4.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-login.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-mail_0.9.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-mail_0.9.1.bb
new file mode 100644
index 000000000..0b963be56
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-mail_0.9.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-mail.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_2.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_2.1.1.bb
new file mode 100644
index 000000000..c98cbfddb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_2.1.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-migrate.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-nav_0.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-nav_0.6.bb
new file mode 100644
index 000000000..d25115251
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-nav_0.6.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-nav.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-pymongo_0.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-pymongo_0.5.1.bb
new file mode 100644
index 000000000..2102554b6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-pymongo_0.5.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-pymongo.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restful_0.3.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restful_0.3.6.bb
new file mode 100644
index 000000000..6bff59a56
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restful_0.3.6.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-flask-restful.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-script_2.0.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-script_2.0.6.bb
new file mode 100644
index 000000000..9f885191b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-script_2.0.6.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-script.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.3.2.bb
new file mode 100644
index 000000000..07f45bcff
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.3.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-sqlalchemy.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-uploads_0.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-uploads_0.2.1.bb
new file mode 100644
index 000000000..758c2acf7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-uploads_0.2.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-uploads.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-user_0.6.19.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-user_0.6.19.bb
new file mode 100644
index 000000000..251017f81
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-user_0.6.19.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-user.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_0.14.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_0.14.2.bb
new file mode 100644
index 000000000..52362a865
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_0.14.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-wtf.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-xstatic_0.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-xstatic_0.0.1.bb
new file mode 100644
index 000000000..5412befdb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-xstatic_0.0.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-xstatic.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_0.12.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_0.12.2.bb
new file mode 100644
index 000000000..cd439900c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_0.12.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gevent_1.2.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gevent_1.2.2.bb
new file mode 100644
index 000000000..1f172e586
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-gevent_1.2.2.bb
@@ -0,0 +1,3 @@
+require python-gevent.inc
+inherit setuptools3
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_0.4.13.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_0.4.13.bb
new file mode 100644
index 000000000..1aedf7fa8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_0.4.13.bb
@@ -0,0 +1,2 @@
+inherit distutils3
+require python-greenlet.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-html5lib_1.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-html5lib_1.0.1.bb
new file mode 100644
index 000000000..6bd8b49f5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-html5lib_1.0.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-html5lib.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_0.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_0.5.1.bb
new file mode 100644
index 000000000..04464ac59
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_0.5.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-humanize.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-hyperlink_17.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-hyperlink_17.3.1.bb
new file mode 100644
index 000000000..70813bf34
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-hyperlink_17.3.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-hyperlink.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_2.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_2.6.bb
new file mode 100644
index 000000000..a08ca714a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_2.6.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-idna.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-incremental_17.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-incremental_17.5.0.bb
new file mode 100644
index 000000000..0f04df4a6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-incremental_17.5.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-incremental.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-iso8601_0.1.12.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-iso8601_0.1.12.bb
new file mode 100644
index 000000000..4a332b53b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-iso8601_0.1.12.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-iso8601.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_4.3.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_4.3.4.bb
new file mode 100644
index 000000000..755b3e2f2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_4.3.4.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-isort.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_0.24.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_0.24.bb
new file mode 100644
index 000000000..a71c20f0e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_0.24.bb
@@ -0,0 +1,6 @@
+inherit pypi setuptools3
+require python-itsdangerous.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-compression \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-javaobj-py3_0.2.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-javaobj-py3_0.2.4.bb
new file mode 100644
index 000000000..0ec23ba99
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-javaobj-py3_0.2.4.bb
@@ -0,0 +1,2 @@
+require python-javaobj-py3.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jinja2_2.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jinja2_2.10.bb
new file mode 100644
index 000000000..61156b630
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-jinja2_2.10.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-jinja2.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpatch_1.23.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpatch_1.23.bb
new file mode 100644
index 000000000..73efceeed
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpatch_1.23.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-jsonpatch.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpointer_2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpointer_2.0.bb
new file mode 100644
index 000000000..8d0a09b43
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonpointer_2.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-jsonpointer.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_2.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_2.6.0.bb
new file mode 100644
index 000000000..926990747
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_2.6.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-jsonschema.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.38.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.38.bb
new file mode 100644
index 000000000..0ca58c7b7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.38.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "langtable is used to guess reasonable defaults for locale,\
+keyboard, territory"
+HOMEPAGE = "https://github.com/mike-fabian/langtable/"
+LICENSE = "GPLv3+"
+SECTION = "devel/python"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+S = "${WORKDIR}/git"
+B = "${S}"
+
+SRCREV = "35687ca957b746f153a6872139462b1443f8cad1"
+PV = "0.0.38+git${SRCPV}"
+SRC_URI = "git://github.com/mike-fabian/langtable.git;branch=master \
+"
+
+inherit setuptools3 python3native
+
+DISTUTILS_INSTALL_ARGS = "--prefix=${D}/${prefix} \
+ --install-data=${D}/${datadir}/langtable"
+
+FILES_${PN} += "${datadir}/*"
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-compression \
+ ${PYTHON_PN}-doctest \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-xml \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lazy-object-proxy_1.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-lazy-object-proxy_1.3.1.bb
new file mode 100644
index 000000000..150e12fd4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-lazy-object-proxy_1.3.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-lazy-object-proxy.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.2.1.bb
new file mode 100644
index 000000000..ff4bc7faa
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.2.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-lxml.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-markupsafe_1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-markupsafe_1.0.bb
new file mode 100644
index 000000000..765e3c906
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-markupsafe_1.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-markupsafe.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-msgpack_0.5.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-msgpack_0.5.6.bb
new file mode 100644
index 000000000..096d7ddcb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-msgpack_0.5.6.bb
@@ -0,0 +1,2 @@
+require python-msgpack.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_3.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_3.3.2.bb
new file mode 100644
index 000000000..7f9cd5564
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_3.3.2.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Multidicts are useful for working with HTTP headers, URL query args etc."
+HOMEPAGE = "https://github.com/aio-libs/multidict/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e74c98abe0de8f798ca609137f9cef4a"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "06ca91d993de2d04c7ee6df0cbb44ea2"
+SRC_URI[sha256sum] = "f82e61c7408ed0dce1862100db55595481911f159d6ddec0b375d35b6449509b"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ndg-httpsclient_0.4.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ndg-httpsclient_0.4.4.bb
new file mode 100644
index 000000000..3f07b2ed2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ndg-httpsclient_0.4.4.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-ndg-httpsclient.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-netaddr_0.7.19.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-netaddr_0.7.19.bb
new file mode 100644
index 000000000..30416a4ff
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-netaddr_0.7.19.bb
@@ -0,0 +1,2 @@
+require python-netaddr.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.3.3.bb
new file mode 100644
index 000000000..93df83ad3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.3.3.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "This module offers a simple interface to query NTP servers from Python."
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://ntplib.py;beginline=1;endline=23;md5=afa07338a9595257e94c205c3e72224d"
+
+SRCNAME = "ntplib"
+SRC_URI[md5sum] = "c7cc8e9b09f40c84819859d70b7784ca"
+SRC_URI[sha256sum] = "c4621b64d50be9461d9bd9a71ba0b4af06fbbf818bbd483752d95c1a4e273ede"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools3 python3native pypi
+
+RDEPENDS_${PN} += "${PYTHON_PN}-datetime"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-oauthlib_2.0.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-oauthlib_2.0.6.bb
new file mode 100644
index 000000000..da13b55d8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-oauthlib_2.0.6.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-oauthlib.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ordered-set_2.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ordered-set_2.0.2.bb
new file mode 100644
index 000000000..be6d4e169
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ordered-set_2.0.2.bb
@@ -0,0 +1,10 @@
+SUMMARY = "A MutableSet that remembers its order, so that every entry has an index."
+HOMEPAGE = "http://github.com/LuminosoInsight/ordered-set"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://MIT-LICENSE;md5=0feb0c85b722f488b87844fb5f81d2dc"
+
+SRC_URI[md5sum] = "7b8d73dc64fd3c783ecb48e050bfcc0d"
+SRC_URI[sha256sum] = "942cad5d7d5b0760d5cbe93dfb385ac2ed402ca1d48c9f4e102d7d5cce3a90eb"
+
+inherit pypi setuptools3
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_1.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_1.3.1.bb
new file mode 100644
index 000000000..4981e61ed
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_1.3.1.bb
@@ -0,0 +1,3 @@
+inherit setuptools3
+require python-paho-mqtt.inc
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_0.22.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_0.22.0.bb
new file mode 100644
index 000000000..b5dd5e092
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_0.22.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pandas.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-passlib_1.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-passlib_1.7.1.bb
new file mode 100644
index 000000000..18180a07a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-passlib_1.7.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-passlib.inc \ No newline at end of file
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pexpect_4.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pexpect_4.5.0.bb
new file mode 100644
index 000000000..cf39233a3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pexpect_4.5.0.bb
@@ -0,0 +1,2 @@
+require python-pexpect.inc
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pid/0001-remove-requirement-of-nose.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pid/0001-remove-requirement-of-nose.patch
new file mode 100644
index 000000000..3beef0700
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pid/0001-remove-requirement-of-nose.patch
@@ -0,0 +1,29 @@
+From 04d04a8fa1ef3d8dbdaebbaac9ae936e1c8234c1 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 28 Jun 2017 21:17:43 -0400
+Subject: [PATCH] remove requirement of nose
+
+The nose extends unittest to make testing easier.
+Do not need the test suite, so remove requirement of nose.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ setup.py | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 3f7c7cb..c42a546 100644
+--- a/setup.py
++++ b/setup.py
+@@ -53,6 +53,4 @@ setup(
+ keywords='pid pidfile context manager decorator',
+ packages=["pid"],
+ install_requires=[],
+- test_suite='nose.collector',
+- setup_requires=['nose>=1.0'],
+ )
+--
+2.8.1
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pid_2.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pid_2.2.0.bb
new file mode 100644
index 000000000..e43831989
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pid_2.2.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Pidfile featuring stale detection and file-locking, can also \
+be used as context-manager or decorator"
+HOMEPAGE = "https://github.com/trbs/pid/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=83d53cbd3105063f20305bc313464e29"
+
+SRC_URI[md5sum] = "04d30308013d16aa882b3806feda8ab2"
+SRC_URI[sha256sum] = "d8bb2ceec21a4ae84be6e9d320db1f56934b30e676e31c6f098ca7218b3d67d4"
+
+inherit pypi setuptools3
+
+SRC_URI += " \
+ file://0001-remove-requirement-of-nose.patch \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.6.0.bb
new file mode 100644
index 000000000..941e8e3d8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.6.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pluggy.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ply_3.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ply_3.11.bb
new file mode 100644
index 000000000..72410baeb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ply_3.11.bb
@@ -0,0 +1,2 @@
+require python-ply.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl/0001-support-cross-complication.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl/0001-support-cross-complication.patch
new file mode 100644
index 000000000..775ae1b2e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl/0001-support-cross-complication.patch
@@ -0,0 +1,61 @@
+From 9a16800738547d117284354bbcad7dd77d9d0344 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 21 Apr 2016 03:05:57 -0400
+Subject: [PATCH] support cross-complication
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ setup.py | 35 -----------------------------------
+ 1 file changed, 35 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 658d1a5..e8be7eb 100755
+--- a/setup.py
++++ b/setup.py
+@@ -13,41 +13,6 @@ import sys
+ # - Need gcc
+ # - Need C headers
+ # - Need libcap headers
+-if not sys.platform.startswith('linux'):
+- sys.stderr.write("This module only works on linux\n")
+- sys.exit(1)
+-
+-kvers = os.uname()[2]
+-if kvers < '2.6.18' and not os.environ.get("PRCTL_SKIP_KERNEL_CHECK",False):
+- sys.stderr.write("This module requires linux 2.6.18 or newer\n")
+- sys.exit(1)
+-
+-if sys.version_info[:2] < (2,4):
+- sys.stderr.write("This module requires python 2.4 or newer\n")
+- sys.exit(1)
+-
+-exit = False
+-try:
+- subprocess.call(['gcc','-v'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+-except:
+- sys.stderr.write("You need to install gcc to build this module\n")
+- sys.exit(1)
+-
+-sp = subprocess.Popen(['cpp'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+-sp.communicate('#include <sys/prctl.h>\n'.encode())
+-if sp.returncode:
+- sys.stderr.write("You need to install libc development headers to build this module\n")
+- exit = True
+-
+-sp = subprocess.Popen(['cpp'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+-sp.communicate('#include <sys/capability.h>\n'.encode())
+-if sp.returncode:
+- sys.stderr.write("You need to install libcap development headers to build this module\n")
+- exit = True
+-
+-if exit:
+- sys.exit(1)
+-
+ _prctl = Extension("_prctl",
+ sources = ['_prctlmodule.c'],
+ depends = ['securebits.h'],
+--
+2.8.1
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.6.1.bb
new file mode 100644
index 000000000..5de83ce48
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.6.1.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Control process attributes through prctl"
+DESCRIPTION = "The linux prctl function allows you to control specific characteristics of a \
+process' behaviour. Usage of the function is fairly messy though, due to \
+limitations in C and linux. This module provides a nice non-messy python(ic) \
+interface."
+SECTION = "devel/python"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5eb2f4bcd60326f83e5deb542372d52f"
+
+S = "${WORKDIR}/git"
+B = "${S}"
+
+SRCREV = "1107d0be7bec4b28c85c62c454882d16844c930a"
+PV = "1.6.1+git${SRCPV}"
+
+SRC_URI = "git://github.com/seveas/python-prctl;branch=master \
+ file://0001-support-cross-complication.patch \
+"
+inherit setuptools3 python3native
+
+DEPENDS += "libcap"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pretend_1.0.9.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pretend_1.0.9.bb
new file mode 100644
index 000000000..9c5d8a843
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pretend_1.0.9.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-pretend.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-progress_1.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-progress_1.3.bb
new file mode 100644
index 000000000..45e264213
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-progress_1.3.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-progress.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_1.0.15.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_1.0.15.bb
new file mode 100644
index 000000000..0e99917c2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_1.0.15.bb
@@ -0,0 +1,7 @@
+inherit pypi setuptools3
+require python-prompt-toolkit.inc
+
+RDEPENDS_${PN} += " \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-shell \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.5.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.5.2.bb
new file mode 100644
index 000000000..781d1dc4d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.5.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-protobuf.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-psutil_5.4.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-psutil_5.4.3.bb
new file mode 100644
index 000000000..c1969ea65
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-psutil_5.4.3.bb
@@ -0,0 +1,4 @@
+inherit pypi setuptools3
+require python-psutil.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-netclient"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ptyprocess_0.5.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ptyprocess_0.5.2.bb
new file mode 100644
index 000000000..bdcd0e253
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ptyprocess_0.5.2.bb
@@ -0,0 +1,2 @@
+require python-ptyprocess.inc
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-py_1.5.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-py_1.5.2.bb
new file mode 100644
index 000000000..0ee373d24
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-py_1.5.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-py.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyalsaaudio_0.8.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyalsaaudio_0.8.4.bb
new file mode 100644
index 000000000..b7da1a43d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyalsaaudio_0.8.4.bb
@@ -0,0 +1,2 @@
+require python-pyalsaaudio.inc
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules_0.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules_0.2.1.bb
new file mode 100644
index 000000000..3b1186f06
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules_0.2.1.bb
@@ -0,0 +1,2 @@
+require python-pyasn1-modules.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1_0.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1_0.4.2.bb
new file mode 100644
index 000000000..a5e2a7136
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1_0.4.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-pyasn1.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11_2.2.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11_2.2.2.bb
new file mode 100644
index 000000000..355e28460
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11_2.2.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-pybind11.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.22.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.22.bb
new file mode 100644
index 000000000..9712a7608
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.22.bb
@@ -0,0 +1,2 @@
+require python-pybluez.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pycparser_2.18.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycparser_2.18.bb
new file mode 100644
index 000000000..7cc024ea0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycparser_2.18.bb
@@ -0,0 +1,6 @@
+inherit pypi setuptools3
+require python-pycparser.inc
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-netclient \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pycrypto_2.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycrypto_2.6.1.bb
new file mode 100644
index 000000000..02d634cb0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycrypto_2.6.1.bb
@@ -0,0 +1,9 @@
+inherit distutils3
+require python-pycrypto.inc
+
+# We explicitly call distutils_do_install, since we want it to run, but
+# *don't* want the autotools install to run, since this package doesn't
+# provide a "make install" target.
+do_install() {
+ distutils3_do_install
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pycryptodome_3.4.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycryptodome_3.4.11.bb
new file mode 100644
index 000000000..0c062dddf
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycryptodome_3.4.11.bb
@@ -0,0 +1,2 @@
+require python-pycryptodome.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus_0.6.0.bb
new file mode 100644
index 000000000..7ed1c63b6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus_0.6.0.bb
@@ -0,0 +1,2 @@
+require python-pydbus.inc
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyexpect_1.0.17.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyexpect_1.0.17.bb
new file mode 100644
index 000000000..bfd584041
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyexpect_1.0.17.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pyexpect.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyfirmata_1.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyfirmata_1.0.3.bb
new file mode 100644
index 000000000..25af1b5c0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyfirmata_1.0.3.bb
@@ -0,0 +1,3 @@
+inherit setuptools3
+require python-pyfirmata.inc
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyiface_0.0.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyiface_0.0.5.bb
new file mode 100644
index 000000000..721e7b1c9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyiface_0.0.5.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pyiface.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb
new file mode 100644
index 000000000..b3bab989a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pyinotify.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjks_17.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjks_17.1.1.bb
new file mode 100644
index 000000000..8982fcebc
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjks_17.1.1.bb
@@ -0,0 +1,2 @@
+require python-pyjks.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjwt_1.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjwt_1.6.1.bb
new file mode 100644
index 000000000..dc16d2282
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjwt_1.6.1.bb
@@ -0,0 +1,2 @@
+require python-pyjwt.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_1.8.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_1.8.3.bb
new file mode 100644
index 000000000..563e8316c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_1.8.3.bb
@@ -0,0 +1,2 @@
+inherit setuptools3 python3-dir
+require python-pylint.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.89.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.89.bb
new file mode 100644
index 000000000..4523d9e30
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.89.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-pymisp.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_3.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_3.6.1.bb
new file mode 100644
index 000000000..5164b186b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_3.6.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-pymongo.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pynetlinux_1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pynetlinux_1.1.bb
new file mode 100644
index 000000000..f6d9e3c06
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pynetlinux_1.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pynetlinux.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_17.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_17.5.0.bb
new file mode 100644
index 000000000..0f0f83e3a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_17.5.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-pyopenssl.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyparsing_2.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyparsing_2.2.0.bb
new file mode 100644
index 000000000..0805fee3e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyparsing_2.2.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pyparsing.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperclip_1.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperclip_1.6.0.bb
new file mode 100644
index 000000000..ee6f88bbb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperclip_1.6.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pyperclip.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.4.21.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.4.21.bb
new file mode 100644
index 000000000..a23e72c4a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.4.21.bb
@@ -0,0 +1,2 @@
+require python-pyroute2.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial_3.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial_3.4.bb
new file mode 100644
index 000000000..17ed3f8bc
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial_3.4.bb
@@ -0,0 +1,7 @@
+inherit setuptools3
+require python-pyserial.inc
+
+do_install_append() {
+ rm -f ${D}${bindir}/miniterm.py
+ rmdir ${D}${bindir}
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pysocks_1.6.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pysocks_1.6.8.bb
new file mode 100644
index 000000000..bbda05a51
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pysocks_1.6.8.bb
@@ -0,0 +1,6 @@
+inherit pypi setuptools3
+require python-pysocks.inc
+
+RDEPENDS_${PN}_class-target += "\
+ ${PYTHON_PN}-netclient \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-runner_3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-runner_3.0.bb
new file mode 100644
index 000000000..df56ba6d4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-runner_3.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pytest-runner.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_3.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_3.4.2.bb
new file mode 100644
index 000000000..466cfa825
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_3.4.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-pytest.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2018.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2018.4.bb
new file mode 100755
index 000000000..19a89dc55
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2018.4.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pytz.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyudev_0.21.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyudev_0.21.0.bb
new file mode 100644
index 000000000..a62d944ba
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyudev_0.21.0.bb
@@ -0,0 +1,2 @@
+require python-pyudev.inc
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.0.2.bb
new file mode 100644
index 000000000..1ecede7cf
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.0.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pyusb.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_3.12.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_3.12.bb
new file mode 100644
index 000000000..470aca608
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_3.12.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pyyaml.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_2.10.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_2.10.6.bb
new file mode 100644
index 000000000..b192ed872
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_2.10.6.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-redis.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-file_1.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-file_1.4.2.bb
new file mode 100644
index 000000000..8652876a4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-file_1.4.2.bb
@@ -0,0 +1,14 @@
+SUMMARY = "File transport adapter for Requests"
+HOMEPAGE = "http://github.com/dashea/requests-file"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9cc728d6087e43796227b0a31422de6b"
+
+SRC_URI[md5sum] = "a907efb75faf0ccbb1857432bf9d8c0f"
+SRC_URI[sha256sum] = "f518e7cfe048e053fd1019dfb891b4c55b871c56c5a31693d733240c80b8f191"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+ python3-requests \
+"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-ftp_0.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-ftp_0.3.1.bb
new file mode 100644
index 000000000..3f99ed675
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-ftp_0.3.1.bb
@@ -0,0 +1,14 @@
+SUMMARY = "FTP Transport Adapter for Requests"
+HOMEPAGE = "http://github.com/Lukasa/requests-ftp"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6683a23c9968b97709441dc884d46df6"
+
+SRC_URI[md5sum] = "1a52ad1219e696b5abd5449d1ccc0294"
+SRC_URI[sha256sum] = "7504ceb5cba8a5c0135ed738596820a78c5f2be92d79b29f96ba99b183d8057a"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+ python3-requests \
+"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.18.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.18.4.bb
new file mode 100644
index 000000000..0a2410f85
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.18.4.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-requests.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-rfc3987_1.3.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-rfc3987_1.3.7.bb
new file mode 100644
index 000000000..cd1536b36
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-rfc3987_1.3.7.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-rfc3987.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_3.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_3.0.2.bb
new file mode 100644
index 000000000..8f613c386
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_3.0.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-robotframework.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-scapy_0.23.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-scapy_0.23.bb
new file mode 100644
index 000000000..3e7baf45c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-scapy_0.23.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Packet crafting/sending/sniffing, PCAP processing tool,\
+based on scapy with python3 compatibility"
+SECTION = "devel/python"
+HOMEPAGE = "https://github.com/phaethon/scapy"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=95ea6ecfc360eb47fe6f470ad736d7cd"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "scapy-python3"
+
+SRC_URI[md5sum] = "8642d09ca727e7e2b455223ae94059b7"
+SRC_URI[sha256sum] = "8760991a67162f43af4d9e64828bcefc100ba88859b75177ae9f7ace56e58186"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.6.bb
new file mode 100644
index 000000000..f49665322
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.6.bb
@@ -0,0 +1,3 @@
+inherit setuptools3 python3-dir
+require python-scrypt.inc
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sdnotify_0.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sdnotify_0.3.2.bb
new file mode 100644
index 000000000..377af12e1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sdnotify_0.3.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools3 pypi
+require python-sdnotify.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-serpent_1.24.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-serpent_1.24.bb
new file mode 100644
index 000000000..1e04def7b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-serpent_1.24.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-serpent.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-setuptools-scm_1.15.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-setuptools-scm_1.15.7.bb
new file mode 100644
index 000000000..5bf598387
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-setuptools-scm_1.15.7.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-setuptools-scm.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-simplejson_3.13.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-simplejson_3.13.2.bb
new file mode 100644
index 000000000..38f406c5d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-simplejson_3.13.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-simplejson.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-smbus_4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-smbus_4.0.bb
new file mode 100644
index 000000000..b357bcd82
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-smbus_4.0.bb
@@ -0,0 +1,2 @@
+inherit distutils3
+require python-smbus.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-speaklater_1.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-speaklater_1.3.bb
new file mode 100644
index 000000000..aa4f699be
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-speaklater_1.3.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-speaklater.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-spidev_3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-spidev_3.2.bb
new file mode 100644
index 000000000..610611e43
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-spidev_3.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-spidev.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.1.17.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.1.17.bb
new file mode 100644
index 000000000..86cf9edde
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.1.17.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-sqlalchemy.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-strict-rfc3339_0.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-strict-rfc3339_0.7.bb
new file mode 100644
index 000000000..9e37052ae
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-strict-rfc3339_0.7.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-strict-rfc3339.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb
new file mode 100644
index 000000000..580d99352
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb
@@ -0,0 +1,2 @@
+require python-systemd.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_4.5.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_4.5.3.bb
new file mode 100644
index 000000000..77c9fb516
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_4.5.3.bb
@@ -0,0 +1,7 @@
+inherit pypi setuptools3
+require python-tornado.inc
+
+# Requires _compression which is currently located in misc
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-misc \
+ "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_17.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_17.9.0.bb
new file mode 100644
index 000000000..6bd8c52eb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_17.9.0.bb
@@ -0,0 +1,67 @@
+inherit pypi setuptools3
+require python-twisted.inc
+
+PACKAGES_remove = "${PN}-src"
+
+FILES_${PN}-core_append += " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/__pycache__ \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/__pycache__/*pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/__init__*.pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/notestplugin*.pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/testplugin*.pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_ftp*.pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_inet*.pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_manhole*.pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_portforward*.pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_socks*.pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_telnet*.pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_trial*.pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_core*.pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_qtstub*.pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_reactors*.pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/cred*.pyc \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/dropin*.cache \
+"
+
+FILES_${PN}-names_append = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_names*.pyc \
+"
+
+FILES_${PN}-news_append = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_news*.pyc \
+"
+
+FILES_${PN}-protocols_append += " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/__pycache__/*pyc \
+"
+
+FILES_${PN}-conch_append = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_conch*.pyc \
+"
+
+FILES_${PN}-lore_append = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_lore*.pyc \
+"
+FILES_${PN}-mail_append = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_mail*.pyc \
+"
+
+FILES_${PN}-web_append = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_web*.pyc \
+"
+
+FILES_${PN}-words_append = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_words*.pyc \
+"
+
+FILES_${PN}-flow_append = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_flow*.pyc \
+"
+
+FILES_${PN}-pair_append = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_pair*.pyc \
+"
+
+FILES_${PN}-runner_append = " \
+ ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__pycache__/twisted_runner*.pyc \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish_0.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish_0.3.0.bb
new file mode 100644
index 000000000..e593f6f21
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish_0.3.0.bb
@@ -0,0 +1,2 @@
+require python-twofish.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_1.35.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_1.35.bb
new file mode 100644
index 000000000..ae4cc0a81
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_1.35.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-ujson.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-unidiff_0.5.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-unidiff_0.5.5.bb
new file mode 100644
index 000000000..0ddc7e2f2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-unidiff_0.5.5.bb
@@ -0,0 +1,2 @@
+require python-unidiff.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.22.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.22.bb
new file mode 100644
index 000000000..19eb7025b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.22.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-urllib3.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb
new file mode 100644
index 000000000..f6372c8d5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Python vcversioner, automagically update the project's version"
+HOMEPAGE = "https://github.com/habnabit/vcversioner"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=827a7a91a8d20d3c666b665cd96db8e3"
+
+SRC_URI[md5sum] = "aab6ef5e0cf8614a1b1140ed5b7f107d"
+SRC_URI[sha256sum] = "dae60c17a479781f44a4010701833f1829140b1eeccd258762a74974aa06e19b"
+
+inherit pypi setuptools3
+
+do_compile_append() {
+ ${PYTHON} setup.py -q bdist_egg --dist-dir ./
+}
+
+do_install_append() {
+ install -m 0644 ${S}/vcversioner*.egg ${D}/${PYTHON_SITEPACKAGES_DIR}/
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-visitor_0.1.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-visitor_0.1.3.bb
new file mode 100644
index 000000000..b9bc51d4b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-visitor_0.1.3.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-visitor.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-wcwidth_0.1.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-wcwidth_0.1.7.bb
new file mode 100644
index 000000000..5f6259b08
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-wcwidth_0.1.7.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-wcwidth.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-webcolors_1.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-webcolors_1.8.1.bb
new file mode 100644
index 000000000..fcd9f7072
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-webcolors_1.8.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-webcolors.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-webencodings_0.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-webencodings_0.5.1.bb
new file mode 100644
index 000000000..71fe741e4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-webencodings_0.5.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-webencodings.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_4.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_4.0.1.bb
new file mode 100644
index 000000000..414129c59
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_4.0.1.bb
@@ -0,0 +1,16 @@
+SUMMARY = "An implementation of the WebSocket Protocol (RFC 6455)"
+HOMEPAGE = "https://github.com/aaugustin/websockets"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5070256738c06d2e59adbec1f4057dac"
+
+inherit pypi setuptools3
+
+SRC_URI[md5sum] = "9e8c6b3c70def4146d75fbb0f52bdfc7"
+SRC_URI[sha256sum] = "da4d4fbe059b0453e726d6d993760065d69b823a27efc3040402a6fcfe6a1ed9"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS_${PN} = "\
+ ${PYTHON_PN}-asyncio \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_0.14.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_0.14.1.bb
new file mode 100644
index 000000000..145a1de0a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_0.14.1.bb
@@ -0,0 +1,4 @@
+inherit pypi setuptools3
+require python-werkzeug.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-misc"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-whoosh_2.7.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-whoosh_2.7.4.bb
new file mode 100644
index 000000000..5d8af303c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-whoosh_2.7.4.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-whoosh.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.10.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.10.11.bb
new file mode 100644
index 000000000..85f446ef9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.10.11.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-wrapt.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_2.1.bb
new file mode 100644
index 000000000..add59cf7d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_2.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-wtforms.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_1.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_1.1.0.bb
new file mode 100644
index 000000000..b7bd969c7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_1.1.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-xlrd.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic-font-awesome_4.7.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic-font-awesome_4.7.0.0.bb
new file mode 100644
index 000000000..639f80de9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic-font-awesome_4.7.0.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-xstatic-font-awesome.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic_1.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic_1.0.1.bb
new file mode 100644
index 000000000..76cb70273
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic_1.0.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-xstatic.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_0.98.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_0.98.bb
new file mode 100644
index 000000000..07da5b6eb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_0.98.bb
@@ -0,0 +1,2 @@
+require python-yappi.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-zopeinterface_4.4.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-zopeinterface_4.4.3.bb
new file mode 100644
index 000000000..be11858d3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-zopeinterface_4.4.3.bb
@@ -0,0 +1,4 @@
+inherit pypi setuptools3
+require python-zopeinterface.inc
+
+RDEPENDS_${PN}-test += "python3-unittest python3-doctest"
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0001-comment-out-selinux.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0001-comment-out-selinux.patch
new file mode 100644
index 000000000..0ee32057c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0001-comment-out-selinux.patch
@@ -0,0 +1,70 @@
+From 7d483c27ac0a23ca3bba7f320918afc40013bd8e Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 8 May 2017 14:25:52 +0800
+Subject: [PATCH 01/13] comment out selinux
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ blivet/flags.py | 5 +++--
+ blivet/util.py | 6 +++++-
+ 2 files changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/blivet/flags.py b/blivet/flags.py
+index 06822db..b55a93f 100644
+--- a/blivet/flags.py
++++ b/blivet/flags.py
+@@ -20,7 +20,7 @@
+ #
+
+ import shlex
+-import selinux
++#import selinux
+
+
+ class Flags(object):
+@@ -49,7 +49,8 @@ class Flags(object):
+ #
+ # enable/disable functionality
+ #
+- self.selinux = selinux.is_selinux_enabled()
++ #self.selinux = selinux.is_selinux_enabled()
++ self.selinux = False
+ self.multipath = True
+ self.dmraid = True
+ self.ibft = True
+diff --git a/blivet/util.py b/blivet/util.py
+index e3e71ce..0cf5188 100644
+--- a/blivet/util.py
++++ b/blivet/util.py
+@@ -4,7 +4,7 @@ import glob
+ import itertools
+ import os
+ import shutil
+-import selinux
++#import selinux
+ import subprocess
+ import re
+ import sys
+@@ -431,6 +431,8 @@ def get_cow_sysfs_path(dev_path, dev_sysfsPath):
+ def match_path_context(path):
+ """ Return the default SELinux context for the given path. """
+ context = None
++ return context
++
+ try:
+ context = selinux.matchpathcon(os.path.normpath(path), 0)[1]
+ except OSError as e:
+@@ -455,6 +457,8 @@ def set_file_context(path, context, root=None):
+
+ True if successful, False if not.
+ """
++ return False
++
+ if root is None:
+ root = '/'
+
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0002-run_program-support-timeout.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0002-run_program-support-timeout.patch
new file mode 100644
index 000000000..01e71be30
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0002-run_program-support-timeout.patch
@@ -0,0 +1,102 @@
+From 86744d408b91acdcb086a03d7779fcda152f2ac3 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 8 May 2017 14:39:56 +0800
+Subject: [PATCH 02/13] run_program support timeout
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ blivet/util.py | 68 +++++++++++++++++++++++++++++++++-------------------------
+ 1 file changed, 39 insertions(+), 29 deletions(-)
+
+diff --git a/blivet/util.py b/blivet/util.py
+index 0cf5188..d4bd9bb 100644
+--- a/blivet/util.py
++++ b/blivet/util.py
+@@ -158,6 +158,30 @@ class Path(str):
+ def __hash__(self):
+ return self._path.__hash__()
+
++def timeout_command(argv, timeout, *args, **kwargs):
++ """call shell-command and either return its output or kill it
++ if it doesn't normally exit within timeout seconds and return None"""
++ import subprocess, datetime, os, time, signal
++ start = datetime.datetime.now()
++
++ try:
++ proc = subprocess.Popen(argv, *args, **kwargs)
++ while proc.poll() is None:
++ time.sleep(0.1)
++ now = datetime.datetime.now()
++ if (now - start).seconds> timeout:
++ os.kill(proc.pid, signal.SIGKILL)
++ os.waitpid(-1, os.WNOHANG)
++ program_log.debug("%d seconds timeout" % timeout)
++ return (-1, None)
++
++
++ except OSError as e:
++ program_log.error("Error running %s: %s", argv[0], e.strerror)
++ raise
++
++ program_log.debug("Return code: %d", proc.returncode)
++ return (proc.returncode, proc.stdout.read())
+
+ def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=False, binary_output=False):
+ if env_prune is None:
+@@ -180,36 +204,22 @@ def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=Fa
+ stderr_dir = subprocess.STDOUT
+ else:
+ stderr_dir = subprocess.PIPE
+- try:
+- proc = subprocess.Popen(argv,
+- stdin=stdin,
+- stdout=subprocess.PIPE,
+- stderr=stderr_dir,
+- close_fds=True,
+- preexec_fn=chroot, cwd=root, env=env)
+-
+- out, err = proc.communicate()
+- if not binary_output and six.PY3:
+- out = out.decode("utf-8")
+- if out:
+- if not stderr_to_stdout:
+- program_log.info("stdout:")
+- for line in out.splitlines():
+- program_log.info("%s", line)
+-
+- if not stderr_to_stdout and err:
+- program_log.info("stderr:")
+- for line in err.splitlines():
+- program_log.info("%s", line)
+-
+- except OSError as e:
+- program_log.error("Error running %s: %s", argv[0], e.strerror)
+- raise
+-
+- program_log.debug("Return code: %d", proc.returncode)
+-
+- return (proc.returncode, out)
+
++ res, out = timeout_command(argv, 10,
++ stdin=stdin,
++ stdout=subprocess.PIPE,
++ stderr=stderr_dir,
++ close_fds=True,
++ preexec_fn=chroot, cwd=root, env=env)
++ if not binary_output and six.PY3:
++ out = out.decode("utf-8")
++ if out:
++ if not stderr_to_stdout:
++ program_log.info("stdout:")
++ for line in out.splitlines():
++ program_log.info("%s", line)
++
++ return (res, out)
+
+ def run_program(*args, **kwargs):
+ return _run_program(*args, **kwargs)[0]
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0003-support-infinit-timeout.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0003-support-infinit-timeout.patch
new file mode 100644
index 000000000..489fb56bb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0003-support-infinit-timeout.patch
@@ -0,0 +1,66 @@
+From 923265e04df5920fc99393aa05f584032aa1b383 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 8 May 2017 16:18:02 +0800
+Subject: [PATCH 03/13] support infinit timeout
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ blivet/util.py | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/blivet/util.py b/blivet/util.py
+index d4bd9bb..44a2da5 100644
+--- a/blivet/util.py
++++ b/blivet/util.py
+@@ -158,6 +158,7 @@ class Path(str):
+ def __hash__(self):
+ return self._path.__hash__()
+
++# timeout = -1 means infinite timeout, always wait.
+ def timeout_command(argv, timeout, *args, **kwargs):
+ """call shell-command and either return its output or kill it
+ if it doesn't normally exit within timeout seconds and return None"""
+@@ -169,7 +170,7 @@ def timeout_command(argv, timeout, *args, **kwargs):
+ while proc.poll() is None:
+ time.sleep(0.1)
+ now = datetime.datetime.now()
+- if (now - start).seconds> timeout:
++ if timeout != -1 and (now - start).seconds> timeout:
+ os.kill(proc.pid, signal.SIGKILL)
+ os.waitpid(-1, os.WNOHANG)
+ program_log.debug("%d seconds timeout" % timeout)
+@@ -183,7 +184,7 @@ def timeout_command(argv, timeout, *args, **kwargs):
+ program_log.debug("Return code: %d", proc.returncode)
+ return (proc.returncode, proc.stdout.read())
+
+-def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=False, binary_output=False):
++def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=False, binary_output=False, timeout=10):
+ if env_prune is None:
+ env_prune = []
+
+@@ -192,7 +193,10 @@ def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=Fa
+ os.chroot(root)
+
+ with program_log_lock: # pylint: disable=not-context-manager
+- program_log.info("Running... %s", " ".join(argv))
++ if timeout != -1:
++ program_log.info("Running... %s", " ".join(argv))
++ else:
++ program_log.info("Running... %s ...infinite timeout", " ".join(argv))
+
+ env = os.environ.copy()
+ env.update({"LC_ALL": "C",
+@@ -205,7 +209,7 @@ def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=Fa
+ else:
+ stderr_dir = subprocess.PIPE
+
+- res, out = timeout_command(argv, 10,
++ res, out = timeout_command(argv, timeout,
+ stdin=stdin,
+ stdout=subprocess.PIPE,
+ stderr=stderr_dir,
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0004-Mount-var-volatile-during-install.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0004-Mount-var-volatile-during-install.patch
new file mode 100644
index 000000000..cb837e286
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0004-Mount-var-volatile-during-install.patch
@@ -0,0 +1,59 @@
+From c3959bd00665e24a955bbdbea1ef555e76372f12 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 8 May 2017 16:25:16 +0800
+Subject: [PATCH 04/13] Mount /var/volatile during install
+
+The installed system needs /var/volatile clean, otherwise it
+caused systemd's journalctl failed to record boot log.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ blivet/osinstall.py | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/blivet/osinstall.py b/blivet/osinstall.py
+index a4f9535..61819c2 100644
+--- a/blivet/osinstall.py
++++ b/blivet/osinstall.py
+@@ -294,6 +294,7 @@ class FSSet(object):
+ self._sysfs = None
+ self._proc = None
+ self._devshm = None
++ self._volatile = None
+ self._usb = None
+ self._selinux = None
+ self._run = None
+@@ -335,6 +336,12 @@ class FSSet(object):
+ return self._devshm
+
+ @property
++ def volatile(self):
++ if not self._volatile:
++ self._volatile = NoDevice(fmt=get_format("tmpfs", device="tmpfs", mountpoint="/var/volatile"))
++ return self._volatile
++
++ @property
+ def usb(self):
+ if not self._usb:
+ self._usb = NoDevice(fmt=get_format("usbfs", device="usbfs", mountpoint="/proc/bus/usb"))
+@@ -591,6 +598,7 @@ class FSSet(object):
+
+ devices = list(self.mountpoints.values()) + self.swap_devices
+ devices.extend([self.dev, self.devshm, self.devpts, self.sysfs,
++ self.volatile,
+ self.proc, self.selinux, self.usb, self.run])
+ if isinstance(_platform, EFI):
+ devices.append(self.efivars)
+@@ -650,6 +658,7 @@ class FSSet(object):
+ """ unmount filesystems, except swap if swapoff == False """
+ devices = list(self.mountpoints.values()) + self.swap_devices
+ devices.extend([self.dev, self.devshm, self.devpts, self.sysfs,
++ self.volatile,
+ self.proc, self.usb, self.selinux, self.run])
+ if isinstance(_platform, EFI):
+ devices.append(self.efivars)
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0005-update-fstab-by-appending.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0005-update-fstab-by-appending.patch
new file mode 100644
index 000000000..4f343b7d8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0005-update-fstab-by-appending.patch
@@ -0,0 +1,32 @@
+From 386ff899763f8473eb93a7a1578fb7cc4f86f66d Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 8 May 2017 16:28:12 +0800
+Subject: [PATCH 05/13] update fstab by appending
+
+The 'storage.write()' has updated fstab by overwriting
+the original one, we should update fstab by appending
+to keep original tmpfs partitions.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ blivet/osinstall.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/blivet/osinstall.py b/blivet/osinstall.py
+index 61819c2..afa82db 100644
+--- a/blivet/osinstall.py
++++ b/blivet/osinstall.py
+@@ -728,7 +728,7 @@ class FSSet(object):
+ # /etc/fstab
+ fstab_path = os.path.normpath("%s/etc/fstab" % get_sysroot())
+ fstab = self.fstab()
+- open(fstab_path, "w").write(fstab)
++ open(fstab_path, "a").write(fstab)
+
+ # /etc/crypttab
+ crypttab_path = os.path.normpath("%s/etc/crypttab" % get_sysroot())
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0006-fix-new.roots-object-is-not-iterable.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0006-fix-new.roots-object-is-not-iterable.patch
new file mode 100644
index 000000000..f5ff754d8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0006-fix-new.roots-object-is-not-iterable.patch
@@ -0,0 +1,28 @@
+From cd92eea8fab37ba6b0c7f03daa5255343dc75716 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 8 May 2017 16:30:20 +0800
+Subject: [PATCH 06/13] fix new.roots object is not iterable
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ blivet/blivet.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/blivet/blivet.py b/blivet/blivet.py
+index 6a33e9c..79ae91a 100644
+--- a/blivet/blivet.py
++++ b/blivet/blivet.py
+@@ -1761,7 +1761,7 @@ class Blivet(object):
+ p = partition.disk.format.parted_disk.getPartitionByPath(partition.path)
+ partition.parted_partition = p
+
+- for root in new.roots:
++ for root in new.roots or []:
+ root.swaps = [new.devicetree.get_device_by_id(d.id, hidden=True) for d in root.swaps]
+ root.swaps = [s for s in root.swaps if s]
+
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0007-fix-incorrect-timeout-while-system-time-changed.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0007-fix-incorrect-timeout-while-system-time-changed.patch
new file mode 100644
index 000000000..6512d8642
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0007-fix-incorrect-timeout-while-system-time-changed.patch
@@ -0,0 +1,48 @@
+From 78ee2b9090f9400ccc4f730e674f5ae972740ccb Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 26 Aug 2016 02:02:49 -0400
+Subject: [PATCH 07/13] fix incorrect timeout while system time changed
+
+While system time changed by NTP, invoking timeout_command
+breaks with incorrect timeout.
+--------
+|05:40:55,872 INFO program: Running... mount -t ext2 -o
+ defaults,ro /dev/sda2 /mnt/sysimage
+|01:40:55,086 DEBUG program: 10 seconds timeout
+--------
+
+Use numbert count to replace current time count could workaround
+the issue.
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ blivet/util.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/blivet/util.py b/blivet/util.py
+index 44a2da5..b3c45ac 100644
+--- a/blivet/util.py
++++ b/blivet/util.py
+@@ -163,14 +163,14 @@ def timeout_command(argv, timeout, *args, **kwargs):
+ """call shell-command and either return its output or kill it
+ if it doesn't normally exit within timeout seconds and return None"""
+ import subprocess, datetime, os, time, signal
+- start = datetime.datetime.now()
++ count = 0
+
+ try:
+ proc = subprocess.Popen(argv, *args, **kwargs)
+ while proc.poll() is None:
+ time.sleep(0.1)
+- now = datetime.datetime.now()
+- if timeout != -1 and (now - start).seconds> timeout:
++ count += 1
++ if timeout != -1 and count > timeout*10:
+ os.kill(proc.pid, signal.SIGKILL)
+ os.waitpid(-1, os.WNOHANG)
+ program_log.debug("%d seconds timeout" % timeout)
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0008-tweak-btrfs-packages.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0008-tweak-btrfs-packages.patch
new file mode 100644
index 000000000..121336e4c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0008-tweak-btrfs-packages.patch
@@ -0,0 +1,45 @@
+From 6f661a511eea096c073888c7adb836a9a880b476 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 8 May 2017 16:33:15 +0800
+Subject: [PATCH 08/13] tweak btrfs packages
+
+In oe-cre/yocto, we name btrfs package with btrfs-tools,
+rather than btrfs-progs.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ blivet/devices/btrfs.py | 2 +-
+ blivet/formats/fs.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/blivet/devices/btrfs.py b/blivet/devices/btrfs.py
+index c5cb21f..9d417b2 100644
+--- a/blivet/devices/btrfs.py
++++ b/blivet/devices/btrfs.py
+@@ -55,7 +55,7 @@ class BTRFSDevice(StorageDevice):
+
+ """ Base class for BTRFS volume and sub-volume devices. """
+ _type = "btrfs"
+- _packages = ["btrfs-progs"]
++ _packages = ["btrfs-tools"]
+ _external_dependencies = [availability.BLOCKDEV_BTRFS_PLUGIN]
+
+ def __init__(self, *args, **kwargs):
+diff --git a/blivet/formats/fs.py b/blivet/formats/fs.py
+index a49826f..e8f216d 100644
+--- a/blivet/formats/fs.py
++++ b/blivet/formats/fs.py
+@@ -918,7 +918,7 @@ class BTRFS(FS):
+ _formattable = True
+ _linux_native = True
+ _supported = True
+- _packages = ["btrfs-progs"]
++ _packages = ["btrfs-tools"]
+ _min_size = Size("256 MiB")
+ _max_size = Size("16 EiB")
+ _mkfs_class = fsmkfs.BTRFSMkfs
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0009-invoking-mount-with-infinite-timeout.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0009-invoking-mount-with-infinite-timeout.patch
new file mode 100644
index 000000000..fc084b129
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0009-invoking-mount-with-infinite-timeout.patch
@@ -0,0 +1,31 @@
+From a6ac2157ee6793302e23ddbc5e3b249fa7da5b7e Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 31 Aug 2016 21:30:32 -0400
+Subject: [PATCH 09/13] invoking mount with infinite timeout
+
+This large timeout is needed when running on machines with
+lots of disks, or with slow disks.
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ blivet/util.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/blivet/util.py b/blivet/util.py
+index b3c45ac..9f02b18 100644
+--- a/blivet/util.py
++++ b/blivet/util.py
+@@ -257,7 +257,7 @@ def mount(device, mountpoint, fstype, options=None):
+
+ argv = ["mount", "-t", fstype, "-o", options, device, mountpoint]
+ try:
+- rc = run_program(argv)
++ rc = run_program(argv, timeout=-1)
+ except OSError:
+ raise
+
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0010-use-oe-variable-to-replace-hardcoded-dir.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0010-use-oe-variable-to-replace-hardcoded-dir.patch
new file mode 100644
index 000000000..45d8fabba
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0010-use-oe-variable-to-replace-hardcoded-dir.patch
@@ -0,0 +1,34 @@
+From e07133dbcf3c52e1ddd2f12797dcd16145269273 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 8 May 2017 03:54:12 -0400
+Subject: [PATCH 10/13] use oe variable to replace hardcoded dir
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ setup.py | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 4d06a33..a994d06 100644
+--- a/setup.py
++++ b/setup.py
+@@ -61,10 +61,10 @@ class blivet_sdist(sdist):
+
+
+ data_files = [
+- ('/etc/dbus-1/system.d', ['dbus/blivet.conf']),
+- ('/usr/share/dbus-1/system-services', ['dbus/com.redhat.Blivet1.service']),
+- ('/usr/libexec', ['dbus/blivetd']),
+- ('/usr/lib/systemd/system', ['dbus/blivet.service'])
++ (os.environ.get('sysconfdir')+'/dbus-1/system.d', ['dbus/blivet.conf']),
++ (os.environ.get('datadir')+'/dbus-1/system-services', ['dbus/com.redhat.Blivet1.service']),
++ (os.environ.get('libexecdir'), ['dbus/blivetd']),
++ (os.environ.get('systemd_system_unitdir'), ['dbus/blivet.service'])
+ ]
+
+
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0011-invoking-fsck-with-infinite-timeout.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0011-invoking-fsck-with-infinite-timeout.patch
new file mode 100644
index 000000000..c61fe01b9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0011-invoking-fsck-with-infinite-timeout.patch
@@ -0,0 +1,31 @@
+From e9ab4376a18cc1bd413c000b036320833eec80d7 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 1 Jun 2017 16:05:27 +0800
+Subject: [PATCH 11/13] invoking fsck with infinite timeout
+
+This large timeout is needed when running on machines with
+lots of disks, or with slow disks.
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ blivet/tasks/fsck.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/blivet/tasks/fsck.py b/blivet/tasks/fsck.py
+index c4214dc..e13ac6b 100644
+--- a/blivet/tasks/fsck.py
++++ b/blivet/tasks/fsck.py
+@@ -77,7 +77,7 @@ class FSCK(task.BasicApplication, fstask.FSTask):
+ raise FSError("\n".join(error_msgs))
+
+ try:
+- rc = util.run_program(self._fsck_command)
++ rc = util.run_program(self._fsck_command, timeout=-1)
+ except OSError as e:
+ raise FSError("filesystem check failed: %s" % e)
+
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0012-invoking-mkfs-with-infinite-timeout.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0012-invoking-mkfs-with-infinite-timeout.patch
new file mode 100644
index 000000000..33bdbe812
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0012-invoking-mkfs-with-infinite-timeout.patch
@@ -0,0 +1,31 @@
+From 9f5a048181cf29d241d96814e736b8235b3d42b1 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 16 Jun 2017 15:43:00 +0800
+Subject: [PATCH 12/13] invoking mkfs with infinite timeout
+
+This large timeout is needed when running on machines with
+lots of disks, or with slow disks.
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ blivet/tasks/fsmkfs.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/blivet/tasks/fsmkfs.py b/blivet/tasks/fsmkfs.py
+index ad166aa..7bf5075 100644
+--- a/blivet/tasks/fsmkfs.py
++++ b/blivet/tasks/fsmkfs.py
+@@ -170,7 +170,7 @@ class FSMkfs(task.BasicApplication, FSMkfsTask):
+ options = options or []
+ cmd = self._mkfs_command(options, label, set_uuid)
+ try:
+- ret = util.run_program(cmd)
++ ret = util.run_program(cmd, timeout=-1)
+ except OSError as e:
+ raise FSError(e)
+
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0013-Revert-Adapt-to-logging-module-name-change.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0013-Revert-Adapt-to-logging-module-name-change.patch
new file mode 100644
index 000000000..6bdf4ce94
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0013-Revert-Adapt-to-logging-module-name-change.patch
@@ -0,0 +1,30 @@
+From bfdaf79a2109ac6aed408f0c94f69766991e60e2 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 27 Jul 2017 14:34:30 +0800
+Subject: [PATCH 13/13] Revert "Adapt to logging module name change"
+
+Upstream-Status: Inappropriate [oe specific, sync with anaconda f26-release]
+
+This reverts commit c367d62a516e541ad28636c8259321f1c53417ce.
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ blivet/__init__.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/blivet/__init__.py b/blivet/__init__.py
+index 49277cb..a01e487 100644
+--- a/blivet/__init__.py
++++ b/blivet/__init__.py
+@@ -124,7 +124,7 @@ def enable_installer_mode():
+ from pyanaconda.constants import ROOT_PATH # pylint: disable=redefined-outer-name,no-name-in-module
+ _storage_root = _sysroot = ROOT_PATH
+
+- from pyanaconda.anaconda_logging import program_log_lock
++ from pyanaconda.anaconda_log import program_log_lock
+ util.program_log_lock = program_log_lock
+
+ flags.installer_mode = True
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0014-invoking-dd-with-infinite-timeout.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0014-invoking-dd-with-infinite-timeout.patch
new file mode 100644
index 000000000..12a9e4f54
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0014-invoking-dd-with-infinite-timeout.patch
@@ -0,0 +1,31 @@
+From 92fe7dfd01131c93a9b2013cabf77d5f46900fab Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Tue, 6 Mar 2018 17:28:56 +0800
+Subject: [PATCH] invoking dd with infinite timeout
+
+This large timeout is needed when running on machines with
+lots of disks, or with slow disks.
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ blivet/devices/partition.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/blivet/devices/partition.py b/blivet/devices/partition.py
+index a7372fb..8947472 100644
+--- a/blivet/devices/partition.py
++++ b/blivet/devices/partition.py
+@@ -594,7 +594,7 @@ class PartitionDevice(StorageDevice):
+ cmd = ["dd", "if=/dev/zero", "of=%s" % device, "bs=%d" % bs,
+ "seek=%d" % start, "count=%d" % count]
+ try:
+- util.run_program(cmd)
++ util.run_program(cmd, timeout=-1)
+ except OSError as e:
+ log.error(str(e))
+ finally:
+--
+1.8.3.1
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_2.2.0.bb b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_2.2.0.bb
new file mode 100644
index 000000000..46dc32de7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_2.2.0.bb
@@ -0,0 +1,47 @@
+DESCRIPTION = "A python module for system storage configuration"
+HOMEPAGE = "http://fedoraproject.org/wiki/blivet"
+LICENSE = "LGPLv2+"
+SECTION = "devel/python"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+S = "${WORKDIR}/git"
+B = "${S}"
+
+SRCREV = "39db82f20d8d4904c0c4dc8912e595177c59e091"
+SRC_URI = "git://github.com/rhinstaller/blivet;branch=2.2-devel \
+ file://0001-comment-out-selinux.patch \
+ file://0002-run_program-support-timeout.patch\
+ file://0003-support-infinit-timeout.patch \
+ file://0004-Mount-var-volatile-during-install.patch \
+ file://0005-update-fstab-by-appending.patch \
+ file://0006-fix-new.roots-object-is-not-iterable.patch \
+ file://0007-fix-incorrect-timeout-while-system-time-changed.patch \
+ file://0008-tweak-btrfs-packages.patch \
+ file://0009-invoking-mount-with-infinite-timeout.patch \
+ file://0010-use-oe-variable-to-replace-hardcoded-dir.patch \
+ file://0011-invoking-fsck-with-infinite-timeout.patch \
+ file://0012-invoking-mkfs-with-infinite-timeout.patch \
+ file://0013-Revert-Adapt-to-logging-module-name-change.patch \
+ file://0014-invoking-dd-with-infinite-timeout.patch \
+"
+
+inherit distro_features_check
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+inherit setuptools3 python3native
+
+RDEPENDS_${PN} = "python3-pykickstart python3-pyudev \
+ parted python3-pyparted multipath-tools \
+ lsof cryptsetup libblockdev \
+ libbytesize \
+"
+
+FILES_${PN} += " \
+ ${datadir}/dbus-1/system-services \
+"
+
+inherit systemd
+
+SYSTEMD_AUTO_ENABLE = "disable"
+SYSTEMD_SERVICE_${PN} = "blivet.service"
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.1.5.bb b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.1.5.bb
new file mode 100644
index 000000000..28c2565a1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.1.5.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "GUI tool for storage configuration using blivet library"
+HOMEPAGE = "https://github.com/rhinstaller/blivet-gui"
+LICENSE = "GPLv2+"
+SECTION = "devel/python"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+S = "${WORKDIR}/git"
+B = "${S}"
+
+SRCREV = "52ae8c000843c05abd1d8749f44bbe2e5d891d3d"
+SRC_URI = "git://github.com/rhinstaller/blivet-gui;branch=master \
+"
+
+inherit distro_features_check
+REQUIRED_DISTRO_FEATURES = "x11 systemd"
+
+inherit setuptools3 python3native
+
+RDEPENDS_${PN} = "python3-pygobject python3 \
+ python3-blivet gtk+3 \
+ python3-pid libreport \
+"
+
+FILES_${PN} += " \
+ ${datadir}/* \
+ "
diff --git a/meta-openembedded/meta-python/recipes-extended/python-cson/python-cson_git.bb b/meta-openembedded/meta-python/recipes-extended/python-cson/python-cson_git.bb
new file mode 100644
index 000000000..efb338cf2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-cson/python-cson_git.bb
@@ -0,0 +1,21 @@
+# Copyright (C) 2015 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "Python library for CSON (schema-compressed JSON)"
+HOMEPAGE = "https://github.com/gt3389b/python-cson/"
+LICENSE = "MIT"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7709d2635e63ab96973055a23c2a4cac"
+
+SRCREV = "f3f2898c44bb16b951d3e9f2fbf6d1c4158edda2"
+SRC_URI = "git://github.com/gt3389b/python-cson.git"
+
+S = "${WORKDIR}/git"
+
+RDEPENDS_${PN}_class-native = ""
+DEPENDS_append_class-native = " python-native "
+
+inherit setuptools
+
+BBCLASSEXTEND = "native"
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh_0.46.bb b/meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh_0.46.bb
new file mode 100644
index 000000000..40e2cbd4a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh_0.46.bb
@@ -0,0 +1,17 @@
+SUMMARY = "A python library for handling exceptions"
+DESCRIPTION = "The python-meh package is a python library for handling, saving, and reporting \
+exceptions."
+HOMEPAGE = "http://git.fedorahosted.org/git/?p=python-meh.git"
+LICENSE = "GPLv2+"
+
+inherit setuptools3
+
+S = "${WORKDIR}/git"
+
+SRC_URI = "git://github.com/rhinstaller/python-meh.git;protocol=https;branch=master \
+"
+SRCREV = "bb1156728a4f76e5e3638ab20b9454a1568a99db"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+FILES_${PN} += "${datadir}/*"
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pyephem/python-pyephem_3.7.6.0.bb b/meta-openembedded/meta-python/recipes-extended/python-pyephem/python-pyephem_3.7.6.0.bb
new file mode 100644
index 000000000..e28ce6ccc
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-pyephem/python-pyephem_3.7.6.0.bb
@@ -0,0 +1,17 @@
+SUMMARY = "PyEphem astronomical calculations"
+HOMEPAGE = "http://rhodesmill.org/pyephem/"
+
+LICENSE = "LGPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f288303760f6e5ceaafe3aaa32186ab1"
+
+SRC_URI[md5sum] = "405a109f3017251ecd8c2890d850f649"
+SRC_URI[sha256sum] = "7a4c82b1def2893e02aec0394f108d24adb17bd7b0ca6f4bc78eb7120c0212ac"
+
+PYPI_PACKAGE = "ephem"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-math \
+ "
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0001-support-authentication-for-kickstart.patch b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0001-support-authentication-for-kickstart.patch
new file mode 100644
index 000000000..617699db0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0001-support-authentication-for-kickstart.patch
@@ -0,0 +1,151 @@
+From d0d8890b5ef74c315381c9e1cff4b1d32892116b Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 1 Jun 2017 15:07:36 +0800
+Subject: [PATCH 1/4] support authentication for kickstart
+
+While download kickstart file from web server,
+we support basic/digest authentication.
+
+Add KickstartAuthError to report authentication failure,
+which the invoker could parse this specific error.
+
+Upstream-Status: inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ pykickstart/errors.py | 19 +++++++++++++++++++
+ pykickstart/load.py | 32 +++++++++++++++++++++++++++-----
+ pykickstart/parser.py | 4 ++--
+ 3 files changed, 48 insertions(+), 7 deletions(-)
+
+diff --git a/pykickstart/errors.py b/pykickstart/errors.py
+index b76e84c..fd81bc8 100644
+--- a/pykickstart/errors.py
++++ b/pykickstart/errors.py
+@@ -35,6 +35,10 @@ It also exports several exception classes:
+
+ KickstartVersionError - An exception for errors relating to unsupported
+ syntax versions.
++
++ KickstartAuthError - An exception for errors relating to authentication
++ failed while downloading kickstart from web server
++
+ """
+ import warnings
+
+@@ -103,3 +107,18 @@ class KickstartVersionError(KickstartError):
+
+ def __str__ (self):
+ return self.value
++
++class KickstartAuthError(KickstartError):
++ """An exception for errors relating to authentication failed while
++ downloading kickstart from web server
++ """
++ def __init__(self, msg):
++ """Create a new KickstartAuthError exception instance with the
++ descriptive message val. val should be the return value of
++ formatErrorMsg.
++ """
++ KickstartError.__init__(self, msg)
++
++ def __str__(self):
++ return self.value
++
+diff --git a/pykickstart/load.py b/pykickstart/load.py
+index 1f69b9c..0f5741b 100644
+--- a/pykickstart/load.py
++++ b/pykickstart/load.py
+@@ -18,10 +18,13 @@
+ # with the express permission of Red Hat, Inc.
+ #
+ import requests
++from requests.auth import HTTPDigestAuth
++from requests.auth import HTTPBasicAuth
++
+ import shutil
+ import six
+
+-from pykickstart.errors import KickstartError
++from pykickstart.errors import KickstartError, KickstartAuthError
+ from pykickstart.i18n import _
+ from requests.exceptions import SSLError, RequestException
+
+@@ -29,7 +32,7 @@ _is_url = lambda location: '://' in location # RFC 3986
+
+ SSL_VERIFY = True
+
+-def load_to_str(location):
++def load_to_str(location, user=None, passwd=None):
+ '''Load a destination URL or file into a string.
+ Type of input is inferred automatically.
+
+@@ -40,7 +43,7 @@ def load_to_str(location):
+ Raises: KickstartError on error reading'''
+
+ if _is_url(location):
+- return _load_url(location)
++ return _load_url(location, user=user, passwd=passwd)
+ else:
+ return _load_file(location)
+
+@@ -71,13 +74,32 @@ def load_to_file(location, destination):
+ _copy_file(location, destination)
+ return destination
+
++def _get_auth(location, user=None, passwd=None):
++
++ auth = None
++ request = requests.get(location, verify=SSL_VERIFY)
++ if request.status_code == requests.codes.unauthorized:
++ if user is None or passwd is None:
++ log.info("Require Authentication")
++ raise KickstartAuthError("Require Authentication.\nAppend 'ksuser=<username> kspasswd=<password>' to boot command")
+
++ reasons = request.headers.get("WWW-Authenticate", "").split()
++ if reasons:
++ auth_type = reasons[0]
++ if auth_type == "Basic":
++ auth = HTTPBasicAuth(user, passwd)
++ elif auth_type == "Digest":
++ auth=HTTPDigestAuth(user, passwd)
+
+-def _load_url(location):
++ return auth
++
++def _load_url(location, user=None, passwd=None):
+ '''Load a location (URL or filename) and return contents as string'''
+
++ auth = _get_auth(location, user=user, passwd=passwd)
++
+ try:
+- request = requests.get(location, verify=SSL_VERIFY)
++ request = requests.get(location, verify=SSL_VERIFY, auth=auth)
+ except SSLError as e:
+ raise KickstartError(_('Error securely accessing URL "%s"') % location + ': {e}'.format(e=str(e)))
+ except RequestException as e:
+diff --git a/pykickstart/parser.py b/pykickstart/parser.py
+index d2b0fbe..26b5de9 100644
+--- a/pykickstart/parser.py
++++ b/pykickstart/parser.py
+@@ -773,7 +773,7 @@ class KickstartParser(object):
+ i = PutBackIterator(s.splitlines(True) + [""])
+ self._stateMachine (i)
+
+- def readKickstart(self, f, reset=True):
++ def readKickstart(self, f, reset=True, username=None, password=None):
+ """Process a kickstart file, given by the filename f."""
+ if reset:
+ self._reset()
+@@ -794,7 +794,7 @@ class KickstartParser(object):
+ self.currentdir[self._includeDepth] = cd
+
+ try:
+- s = load_to_str(f)
++ s = load_to_str(f, user=username, passwd=password)
+ except KickstartError as e:
+ raise KickstartError(formatErrorMsg(0, msg=_("Unable to open input kickstart file: %s") % str(e)))
+
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0002-pykickstart-parser.py-add-lock-for-readKickstart-and.patch b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0002-pykickstart-parser.py-add-lock-for-readKickstart-and.patch
new file mode 100644
index 000000000..cb2123546
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0002-pykickstart-parser.py-add-lock-for-readKickstart-and.patch
@@ -0,0 +1,76 @@
+From e6e747b883114bfad51ad93f823e65f5a4d6438a Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 1 Jun 2017 15:12:29 +0800
+Subject: [PATCH 2/4] pykickstart/parser.py: add lock for readKickstart and
+ support https without certification
+
+- Add lock for readKickstart to fix race issue
+
+- Support to download kickstart file through https without certification
+
+Upstream-Status: Inappropriate[oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ pykickstart/load.py | 2 +-
+ pykickstart/parser.py | 24 ++++++++++++++++++++++++
+ 2 files changed, 25 insertions(+), 1 deletion(-)
+
+diff --git a/pykickstart/load.py b/pykickstart/load.py
+index 0f5741b..48c8276 100644
+--- a/pykickstart/load.py
++++ b/pykickstart/load.py
+@@ -30,7 +30,7 @@ from requests.exceptions import SSLError, RequestException
+
+ _is_url = lambda location: '://' in location # RFC 3986
+
+-SSL_VERIFY = True
++SSL_VERIFY = False
+
+ def load_to_str(location, user=None, passwd=None):
+ '''Load a destination URL or file into a string.
+diff --git a/pykickstart/parser.py b/pykickstart/parser.py
+index 26b5de9..264ba05 100644
+--- a/pykickstart/parser.py
++++ b/pykickstart/parser.py
+@@ -57,6 +57,26 @@ STATE_COMMANDS = "commands"
+
+ ver = version.DEVEL
+
++import logging
++log = logging.getLogger("anaconda")
++
++import inspect
++import threading
++_private_ks_lock = threading.RLock()
++
++class KsLock(object):
++ def __enter__(self):
++ log.info("%s %s" % (self.__class__.__name__, inspect.stack()[0][3]))
++ _private_ks_lock.acquire()
++ return _private_ks_lock
++
++ def __exit__(self, exc_type, exc_val, exc_tb):
++ log.info("%s %s" % (self.__class__.__name__, inspect.stack()[0][3]))
++ _private_ks_lock.release()
++
++
++_ks_lock = KsLock()
++
+ def _preprocessStateMachine (lineIter):
+ l = None
+ lineno = 0
+@@ -774,6 +794,10 @@ class KickstartParser(object):
+ self._stateMachine (i)
+
+ def readKickstart(self, f, reset=True, username=None, password=None):
++ with _ks_lock:
++ self._readKickstart(f, reset=reset, username=username, password=password)
++
++ def _readKickstart(self, f, reset=True, username=None, password=None):
+ """Process a kickstart file, given by the filename f."""
+ if reset:
+ self._reset()
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0003-comment-out-sections-shutdown-and-environment-in-gen.patch b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0003-comment-out-sections-shutdown-and-environment-in-gen.patch
new file mode 100644
index 000000000..9fb25fb18
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0003-comment-out-sections-shutdown-and-environment-in-gen.patch
@@ -0,0 +1,48 @@
+From be6012a5dd49ae5e8ac035654ab1c6f37f0dc8f4 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 1 Jun 2017 15:15:15 +0800
+Subject: [PATCH 3/4] comment out sections shutdown and environment in
+ generated kickstart file
+
+Both of them is disabled by default.
+
+Upstream-Status: Inappropriate[oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+fixup! add comments of shutdown for user
+---
+ pykickstart/commands/reboot.py | 3 +++
+ pykickstart/parser.py | 2 +-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/pykickstart/commands/reboot.py b/pykickstart/commands/reboot.py
+index 88799ba..2d0cea9 100644
+--- a/pykickstart/commands/reboot.py
++++ b/pykickstart/commands/reboot.py
+@@ -41,6 +41,9 @@ class FC3_Reboot(KickstartCommand):
+ elif self.action == KS_SHUTDOWN:
+ retval += "# Shutdown after installation\nshutdown"
+ retval += self._getArgsAsStr() + "\n"
++ else:
++ retval += "# Shutdown after installation\n#shutdown"
++ retval += self._getArgsAsStr() + "\n"
+
+ return retval
+
+diff --git a/pykickstart/parser.py b/pykickstart/parser.py
+index 264ba05..b3f33d7 100644
+--- a/pykickstart/parser.py
++++ b/pykickstart/parser.py
+@@ -383,7 +383,7 @@ class Packages(KickstartObject):
+
+ if not self.default:
+ if self.environment:
+- pkgs += "@^%s\n" % self.environment
++ pkgs += "#@^%s\n" % self.environment
+
+ grps = self.groupList
+ grps.sort()
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0004-load.py-retry-to-invoke-request-with-timeout.patch b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0004-load.py-retry-to-invoke-request-with-timeout.patch
new file mode 100644
index 000000000..70254f6fd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0004-load.py-retry-to-invoke-request-with-timeout.patch
@@ -0,0 +1,82 @@
+From c0e63f0d3c09bdabb0ad2c88b7cc73e7618dd86a Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 15 Jun 2017 17:35:33 +0800
+Subject: [PATCH 4/4] load.py: retry to invoke request with timeout
+
+While networkless, use request to fetch kickstart file from
+network, it failed and wait 300s to break, we should retry
+to invoke request with timeout explicitly. So if it the
+network is up, the fetch works.
+
+Upstream-Status: inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ pykickstart/load.py | 30 ++++++++++++++++++++++++++++++
+ 1 file changed, 30 insertions(+)
+
+diff --git a/pykickstart/load.py b/pykickstart/load.py
+index 48c8276..74b266b 100644
+--- a/pykickstart/load.py
++++ b/pykickstart/load.py
+@@ -21,6 +21,7 @@ import requests
+ from requests.auth import HTTPDigestAuth
+ from requests.auth import HTTPBasicAuth
+
++import time
+ import shutil
+ import six
+
+@@ -28,6 +29,9 @@ from pykickstart.errors import KickstartError, KickstartAuthError
+ from pykickstart.i18n import _
+ from requests.exceptions import SSLError, RequestException
+
++import logging
++log = logging.getLogger("anaconda")
++
+ _is_url = lambda location: '://' in location # RFC 3986
+
+ SSL_VERIFY = False
+@@ -74,6 +78,29 @@ def load_to_file(location, destination):
+ _copy_file(location, destination)
+ return destination
+
++def _access_url(location):
++ status = False
++
++ # Retry 45 times, wait 45s~135s
++ i = 0
++ while i < 45:
++
++ try:
++ request = requests.get(location, verify=SSL_VERIFY, timeout=2)
++ except RequestException as e:
++ log.info("Try '%s' %d times, %s" % (location, i, str(e)))
++ status = False
++ i += 1
++ time.sleep(1)
++ continue
++
++ else:
++ status = True
++ return status
++
++ return status
++
++
+ def _get_auth(location, user=None, passwd=None):
+
+ auth = None
+@@ -96,6 +123,9 @@ def _get_auth(location, user=None, passwd=None):
+ def _load_url(location, user=None, passwd=None):
+ '''Load a location (URL or filename) and return contents as string'''
+
++ if not _access_url(location):
++ raise KickstartError(_("Connection %s failed" % location))
++
+ auth = _get_auth(location, user=user, passwd=passwd)
+
+ try:
+--
+2.7.4
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0005-tweak-shebang-to-python3.patch b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0005-tweak-shebang-to-python3.patch
new file mode 100644
index 000000000..3d614955b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0005-tweak-shebang-to-python3.patch
@@ -0,0 +1,25 @@
+From 8a1f598223bd4cbcc877eb2aba3f5586c75c9d14 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 21 Aug 2017 10:05:06 +0800
+Subject: [PATCH] tweak shebang to python3
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ tools/ksvalidator.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/ksvalidator.py b/tools/ksvalidator.py
+index d6051d5..c3682e8 100755
+--- a/tools/ksvalidator.py
++++ b/tools/ksvalidator.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+ #
+ # Chris Lumens <clumens@redhat.com>
+ #
+--
+1.8.3.1
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_2.35.bb b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_2.35.bb
new file mode 100644
index 000000000..7fe603b55
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_2.35.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "A python library for manipulating kickstart files"
+HOMEPAGE = "http://fedoraproject.org/wiki/pykickstart"
+LICENSE = "GPLv2+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+DEPENDS = "python3"
+RDEPENDS_${PN} = "python3 \
+ python3-requests \
+ python3-six \
+"
+
+S = "${WORKDIR}/git"
+SRC_URI = "git://github.com/rhinstaller/pykickstart.git;protocol=https;branch=pykickstart-2 \
+ file://0001-support-authentication-for-kickstart.patch \
+ file://0002-pykickstart-parser.py-add-lock-for-readKickstart-and.patch \
+ file://0003-comment-out-sections-shutdown-and-environment-in-gen.patch \
+ file://0004-load.py-retry-to-invoke-request-with-timeout.patch \
+ file://0005-tweak-shebang-to-python3.patch \
+ "
+SRCREV = "b2787a818540e678c2f9c5dca0c6bbd65b8b55e5"
+
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pyparted/python-pyparted.inc b/meta-openembedded/meta-python/recipes-extended/python-pyparted/python-pyparted.inc
new file mode 100644
index 000000000..a0ec02817
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-pyparted/python-pyparted.inc
@@ -0,0 +1,22 @@
+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://github.com/rhinstaller/pyparted"
+LICENSE = "GPL-2.0+"
+LIC_FILES_CHKSUM = "\
+ file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
+ file://src/_pedmodule.c;beginline=10;endline=22;md5=9e53304db812b80d0939e11bb69dcab2 \
+"
+DEPENDS += "parted"
+
+# upstream only publishes releases in github archives which are discouraged
+SRCREV = "1fdb15120f35f5da1dc7ec116522f0c796a8376a"
+SRC_URI = "git://github.com/rhinstaller/pyparted.git;protocol=https"
+
+S = "${WORKDIR}/git"
+
+RDEPENDS_${PN}_class-target += " \
+ parted (>= 2.3) \
+"
+RDEPENDS_${PN}_class-native = ""
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pyparted/python-pyparted_3.11.1.bb b/meta-openembedded/meta-python/recipes-extended/python-pyparted/python-pyparted_3.11.1.bb
new file mode 100644
index 000000000..7d00fd7d9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-pyparted/python-pyparted_3.11.1.bb
@@ -0,0 +1,10 @@
+require python-pyparted.inc
+
+PV = "3.10.7+git${SRCPV}"
+
+inherit distutils
+
+RDEPENDS_${PN} += "python-stringold python-codecs python-math python-subprocess"
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pyparted/python3-pyparted_3.11.1.bb b/meta-openembedded/meta-python/recipes-extended/python-pyparted/python3-pyparted_3.11.1.bb
new file mode 100644
index 000000000..4d6f97b59
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-pyparted/python3-pyparted_3.11.1.bb
@@ -0,0 +1,10 @@
+require python-pyparted.inc
+
+PV = "3.10.7+git${SRCPV}"
+
+inherit distutils3
+
+RDEPENDS_${PN} += "python3-stringold python3-codecs python3-math"
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-extended/pywbem/pywbem_0.8.0.bb b/meta-openembedded/meta-python/recipes-extended/pywbem/pywbem_0.8.0.bb
new file mode 100644
index 000000000..7f1986e51
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/pywbem/pywbem_0.8.0.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Python WBEM Client and Provider Interface"
+DESCRIPTION = "\
+A Python library for making CIM (Common Information Model) operations over \
+HTTP using the WBEM CIM-XML protocol. It is based on the idea that a good \
+WBEM client should be easy to use and not necessarily require a large amount \
+of programming knowledge. It is suitable for a large range of tasks from \
+simply poking around to writing web and GUI applications. \
+\
+WBEM, or Web Based Enterprise Management is a manageability protocol, like \
+SNMP, standardised by the Distributed Management Task Force (DMTF) available \
+at http://www.dmtf.org/standards/wbem. \
+\
+It also provides a Python provider interface, and is the fastest and easiest \
+way to write providers on the planet."
+HOMEPAGE = "http://pywbem.sf.net/"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://pywbem/LICENSE.txt;md5=fbc093901857fcd118f065f900982c24"
+SECTION = "Development/Libraries"
+DEPENDS = "python-m2crypto-native python-typing-native"
+SRC_URI = "http://jaist.dl.sourceforge.net/project/${BPN}/${BPN}/${BP}/${BP}-dev.r704.zip"
+SRC_URI[md5sum] = "84072451dcdd1aa9ee82363848faf7ad"
+SRC_URI[sha256sum] = "898035866d3cc741bbcd62c4ac26e633ad07b7c11d89db2472b9f923f3fd3ed8"
+
+S = "${WORKDIR}/${BP}-dev"
+
+inherit setuptools python-dir
+
+do_install_append() {
+ mv ${D}${bindir}/wbemcli.py ${D}${bindir}/pywbemcli
+ mv ${D}${bindir}/mof_compiler.py ${D}${bindir}/mofcomp
+
+ rm ${D}${libdir}/python2.7/site-packages/${BPN}/wbemcli.py*
+ rm ${D}${libdir}/python2.7/site-packages/${BPN}/mof_compiler.py*
+}
+
+BBCLASSEXTEND = "native"
OpenPOWER on IntegriCloud