All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 00/14] python improvements
@ 2017-12-12  5:04 Tim Orling
  2017-12-12  5:04 ` [PATCH v3 01/14] pypi.bbclass: bring in from meta-python Tim Orling
                   ` (14 more replies)
  0 siblings, 15 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

We are not quite ready for the json manifest changes from v2, so
this series works with the original manifest generators.

The commit which deletes the old manifests will fail git send-email,
so this series must be pulled from git. This series DOES address this
issue by adding newlines in the generators so that the manifests do not
continue to break git send-mail workflow.

The pypi.bbclass added to meta-python by Derek Straka significantly
simplifies python module packaging and has utility outside of just
the meta-python layer. Most notably, it knows how to generate the
SRC_URI, S, UPSTREAM_CHECK_URI and UPSTREAM_CHECK_REGEX variables
given a PYPI_PACKAGE. For special cases where PYPI_PACKAGE is not
guessable from the BPN, the value can be set in your recipe. For
special cases where the upstream source is not bundled as a .tar.gz,
the PYPI_PACKAGE_EXT can be set in your recipe. Providing python2 and
python3 packaging is also simplified by putting most of the common
content into .inc files. Note that it is strongly recommend to use
PYTHON_PN to dynamically set "python-" vs. "python3-" prefix for your
DEPENDS and RDEPENDS needs. This often moves everything but the
"requires python-foo.inc" and "include setuptools*" lines in your
python recipes to the common .inc file. Much simpler maintenance.

This patch series adds runpy to the python-*-manifests, which allows
you to run, for example "python -m pip" from the command line. It
also adds a couple dependencies that were silently breaking python
packages at runtime.

This series modifies all the recipes in recipes-devtools/python which
had a SRC_URI pointing to "pythonhosted" to use the pypi.bbclass. Where
it made sense, the "python-" and "python3-" specific files were
simplified, putting the common content into the .inc file.

Finally, this series upgrades python-scons and python*-setuptools to the
latest versions.

The following changes since commit a24c10b7bdab8aa960fdd3a58d2009f24344e579:

  populate_sdk_ext: Use prebuilt uninative tarball (2017-12-11 21:46:33 +0000)

are available in the Git repository at:

  git://git.openembedded.org/openembedded-core-contrib timo/pypi-v3
  http://cgit.openembedded.org//log/?h=timo/pypi-v3

Tim Orling (14):
  pypi.bbclass: bring in from meta-python
  python-*-manifest/generators: fix long line lengths
  python-*-manifest/generators: add runpy; python3-plistlib
  python-setuptools: upgrade to 38.2.4; use pypi.bbclass; improvements
  python3-pip: use pypi.bbclass
  python-nose: use pypi.bbclass
  python-six: use pypi.bbclass
  python-async: use pypi.bbclass
  python-mako: use pypi.bbclass
  python-smmap: use pypi.bbclass
  python-gitdb: use pypi.bbclass
  python-git: use pypi.bbclass
  python3-iniparse: use pypi.bbclass
  python-scons: upgrade to v3.0.1; use pypi.bbclass

 meta/classes/pypi.bbclass                          |  26 +
 .../python/python-2.7-manifest.inc                 | 699 +++++++++++++--
 .../python/python-3.5-manifest.inc                 | 990 +++++++++++++++++++--
 meta/recipes-devtools/python/python-async.inc      |   7 +-
 meta/recipes-devtools/python/python-git.inc        |  26 +-
 meta/recipes-devtools/python/python-gitdb.inc      |  15 +-
 meta/recipes-devtools/python/python-mako.inc       |  13 +-
 meta/recipes-devtools/python/python-nose.inc       |  18 +
 meta/recipes-devtools/python/python-nose_1.3.7.bb  |  25 +-
 ...ative_3.0.0.bb => python-scons-native_3.0.1.bb} |   0
 ...onscript-Support-python2-print-statements.patch |  38 -
 ...python-scons_3.0.0.bb => python-scons_3.0.1.bb} |  12 +-
 meta/recipes-devtools/python/python-setuptools.inc |  42 +-
 .../python/python-setuptools_36.5.0.bb             |  38 -
 .../python/python-setuptools_38.2.4.bb             |   9 +
 meta/recipes-devtools/python/python-six.inc        |   8 +-
 meta/recipes-devtools/python/python-smmap.inc      |  12 +-
 .../recipes-devtools/python/python3-async_0.6.2.bb |   6 +-
 meta/recipes-devtools/python/python3-git_2.1.7.bb  |   5 -
 .../recipes-devtools/python/python3-gitdb_0.6.4.bb |   7 +-
 .../python/python3-iniparse_0.4.bb                 |   9 +-
 meta/recipes-devtools/python/python3-mako_1.0.7.bb |  11 +-
 meta/recipes-devtools/python/python3-nose_1.3.7.bb |  24 +-
 meta/recipes-devtools/python/python3-pip_9.0.1.bb  |  13 +-
 .../python/python3-setuptools_36.5.0.bb            |  38 -
 .../python/python3-setuptools_38.2.4.bb            |   6 +
 meta/recipes-devtools/python/python3-six_1.11.0.bb |   2 -
 .../recipes-devtools/python/python3-smmap_0.9.0.bb |   5 +-
 scripts/contrib/python/generate-manifest-2.7.py    |  27 +-
 scripts/contrib/python/generate-manifest-3.5.py    |  31 +-
 30 files changed, 1743 insertions(+), 419 deletions(-)
 create mode 100644 meta/classes/pypi.bbclass
 create mode 100644 meta/recipes-devtools/python/python-nose.inc
 rename meta/recipes-devtools/python/{python-scons-native_3.0.0.bb => python-scons-native_3.0.1.bb} (100%)
 delete mode 100644 meta/recipes-devtools/python/python-scons/SConscript-Support-python2-print-statements.patch
 rename meta/recipes-devtools/python/{python-scons_3.0.0.bb => python-scons_3.0.1.bb} (54%)
 delete mode 100644 meta/recipes-devtools/python/python-setuptools_36.5.0.bb
 create mode 100644 meta/recipes-devtools/python/python-setuptools_38.2.4.bb
 delete mode 100644 meta/recipes-devtools/python/python3-setuptools_36.5.0.bb
 create mode 100644 meta/recipes-devtools/python/python3-setuptools_38.2.4.bb

-- 
2.14.3



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v3 01/14] pypi.bbclass: bring in from meta-python
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
@ 2017-12-12  5:04 ` Tim Orling
  2017-12-12  5:18   ` Tim Orling
  2017-12-12  5:04 ` [PATCH v3 02/14] python-*-manifest/generators: fix long line lengths Tim Orling
                   ` (13 subsequent siblings)
  14 siblings, 1 reply; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

The pypi.bbclass has usefullness in many meta layers, not
just meta-python. Add it to oe-core for the benefit of
everyone.

Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
---
 meta/classes/pypi.bbclass | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
 create mode 100644 meta/classes/pypi.bbclass

diff --git a/meta/classes/pypi.bbclass b/meta/classes/pypi.bbclass
new file mode 100644
index 0000000000..e5d7ab3ce1
--- /dev/null
+++ b/meta/classes/pypi.bbclass
@@ -0,0 +1,26 @@
+def pypi_package(d):
+    bpn = d.getVar('BPN')
+    if bpn.startswith('python-'):
+        return bpn[7:]
+    elif bpn.startswith('python3-'):
+        return bpn[8:]
+    return bpn
+
+PYPI_PACKAGE ?= "${@pypi_package(d)}"
+PYPI_PACKAGE_EXT ?= "tar.gz"
+
+def pypi_src_uri(d):
+    package = d.getVar('PYPI_PACKAGE')
+    package_ext = d.getVar('PYPI_PACKAGE_EXT')
+    pv = d.getVar('PV')
+    return 'https://files.pythonhosted.org/packages/source/%s/%s/%s-%s.%s' % (package[0], package, package, pv, package_ext)
+
+PYPI_SRC_URI ?= "${@pypi_src_uri(d)}"
+
+HOMEPAGE ?= "https://pypi.python.org/pypi/${PYPI_PACKAGE}/"
+SECTION = "devel/python"
+SRC_URI += "${PYPI_SRC_URI}"
+S = "${WORKDIR}/${PYPI_PACKAGE}-${PV}"
+
+UPSTREAM_CHECK_URI ?= "https://pypi.python.org/pypi/${PYPI_PACKAGE}/"
+UPSTREAM_CHECK_REGEX ?= "/${PYPI_PACKAGE}/(?P<pver>(\d+[\.\-_]*)+)"
-- 
2.14.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v3 02/14] python-*-manifest/generators: fix long line lengths
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
  2017-12-12  5:04 ` [PATCH v3 01/14] pypi.bbclass: bring in from meta-python Tim Orling
@ 2017-12-12  5:04 ` Tim Orling
  2017-12-12  5:04 ` [PATCH v3 03/14] python-*-manifest/generators: add runpy; python3-plistlib Tim Orling
                   ` (12 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

The generators create python-*-manifest.inc files with
lines over 2500 characters long which breaks sending
patches via git send-email (because of smtp limitation).

This patchset formats all the long lines into multiple lines.

Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
---
 .../python/python-2.7-manifest.inc                 | 690 +++++++++++++--
 .../python/python-3.5-manifest.inc                 | 969 +++++++++++++++++++--
 scripts/contrib/python/generate-manifest-2.7.py    |  24 +-
 scripts/contrib/python/generate-manifest-3.5.py    |  24 +-
 4 files changed, 1540 insertions(+), 167 deletions(-)

diff --git a/meta/recipes-devtools/python/python-2.7-manifest.inc b/meta/recipes-devtools/python/python-2.7-manifest.inc
index 57d4834b3a..6198e2d1c3 100644
--- a/meta/recipes-devtools/python/python-2.7-manifest.inc
+++ b/meta/recipes-devtools/python/python-2.7-manifest.inc
@@ -1,287 +1,831 @@
 
 # WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file.
-# Generator: '../../../scripts/contrib/python/generate-manifest-2.7.py' Version 20110222.2 (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
+# Generator: './scripts/contrib/python/generate-manifest-2.7.py' Version 20110222.2 (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
 
  
 
-PROVIDES+="${PN}-2to3 ${PN}-argparse ${PN}-audio ${PN}-bsddb ${PN}-codecs ${PN}-compile ${PN}-compiler ${PN}-compression ${PN}-contextlib ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils ${PN}-distutils-staticdev ${PN}-doctest ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-hotshot ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-plistlib ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-resource ${PN}-robotparser ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-zlib "
-
-PACKAGES="${PN}-dbg ${PN}-2to3 ${PN}-argparse ${PN}-audio ${PN}-bsddb ${PN}-codecs ${PN}-compile ${PN}-compiler ${PN}-compression ${PN}-contextlib ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils-staticdev ${PN}-distutils ${PN}-doctest ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-hotshot ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-plistlib ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-resource ${PN}-robotparser ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-zlib ${PN}-modules"
+PROVIDES+=" \
+  ${PN}-2to3 \
+  ${PN}-argparse \
+  ${PN}-audio \
+  ${PN}-bsddb \
+  ${PN}-codecs \
+  ${PN}-compile \
+  ${PN}-compiler \
+  ${PN}-compression \
+  ${PN}-contextlib \
+  ${PN}-core \
+  ${PN}-crypt \
+  ${PN}-ctypes \
+  ${PN}-curses \
+  ${PN}-datetime \
+  ${PN}-db \
+  ${PN}-debugger \
+  ${PN}-dev \
+  ${PN}-difflib \
+  ${PN}-distutils \
+  ${PN}-distutils-staticdev \
+  ${PN}-doctest \
+  ${PN}-email \
+  ${PN}-fcntl \
+  ${PN}-gdbm \
+  ${PN}-hotshot \
+  ${PN}-html \
+  ${PN}-idle \
+  ${PN}-image \
+  ${PN}-importlib \
+  ${PN}-io \
+  ${PN}-json \
+  ${PN}-lang \
+  ${PN}-logging \
+  ${PN}-mailbox \
+  ${PN}-math \
+  ${PN}-mime \
+  ${PN}-mmap \
+  ${PN}-multiprocessing \
+  ${PN}-netclient \
+  ${PN}-netserver \
+  ${PN}-numbers \
+  ${PN}-pickle \
+  ${PN}-pkgutil \
+  ${PN}-plistlib \
+  ${PN}-pprint \
+  ${PN}-profile \
+  ${PN}-pydoc \
+  ${PN}-re \
+  ${PN}-readline \
+  ${PN}-resource \
+  ${PN}-robotparser \
+  ${PN}-shell \
+  ${PN}-smtpd \
+  ${PN}-sqlite3 \
+  ${PN}-sqlite3-tests \
+  ${PN}-stringold \
+  ${PN}-subprocess \
+  ${PN}-syslog \
+  ${PN}-terminal \
+  ${PN}-tests \
+  ${PN}-textutils \
+  ${PN}-threading \
+  ${PN}-tkinter \
+  ${PN}-unittest \
+  ${PN}-unixadmin \
+  ${PN}-xml \
+  ${PN}-xmlrpc \
+  ${PN}-zlib \
+"
+
+PACKAGES=" \
+  ${PN}-dbg \
+  ${PN}-2to3 \
+  ${PN}-argparse \
+  ${PN}-audio \
+  ${PN}-bsddb \
+  ${PN}-codecs \
+  ${PN}-compile \
+  ${PN}-compiler \
+  ${PN}-compression \
+  ${PN}-contextlib \
+  ${PN}-core \
+  ${PN}-crypt \
+  ${PN}-ctypes \
+  ${PN}-curses \
+  ${PN}-datetime \
+  ${PN}-db \
+  ${PN}-debugger \
+  ${PN}-dev \
+  ${PN}-difflib \
+  ${PN}-distutils-staticdev ${PN}-distutils \
+  ${PN}-doctest \
+  ${PN}-email \
+  ${PN}-fcntl \
+  ${PN}-gdbm \
+  ${PN}-hotshot \
+  ${PN}-html \
+  ${PN}-idle \
+  ${PN}-image \
+  ${PN}-importlib \
+  ${PN}-io \
+  ${PN}-json \
+  ${PN}-lang \
+  ${PN}-logging \
+  ${PN}-mailbox \
+  ${PN}-math \
+  ${PN}-mime \
+  ${PN}-mmap \
+  ${PN}-multiprocessing \
+  ${PN}-netclient \
+  ${PN}-netserver \
+  ${PN}-numbers \
+  ${PN}-pickle \
+  ${PN}-pkgutil \
+  ${PN}-plistlib \
+  ${PN}-pprint \
+  ${PN}-profile \
+  ${PN}-pydoc \
+  ${PN}-re \
+  ${PN}-readline \
+  ${PN}-resource \
+  ${PN}-robotparser \
+  ${PN}-shell \
+  ${PN}-smtpd \
+  ${PN}-sqlite3 \
+  ${PN}-sqlite3-tests \
+  ${PN}-stringold \
+  ${PN}-subprocess \
+  ${PN}-syslog \
+  ${PN}-terminal \
+  ${PN}-tests \
+  ${PN}-textutils \
+  ${PN}-threading \
+  ${PN}-tkinter \
+  ${PN}-unittest \
+  ${PN}-unixadmin \
+  ${PN}-xml \
+  ${PN}-xmlrpc \
+  ${PN}-zlib \
+  ${PN}-modules\
+"
 
 SUMMARY_${PN}-2to3="Python automated Python 2 to 3 code translator"
 RDEPENDS_${PN}-2to3="${PN}-core"
-FILES_${PN}-2to3="${bindir}/2to3 ${libdir}/python2.7/lib2to3 "
+FILES_${PN}-2to3=" \
+    ${bindir}/2to3 \
+    ${libdir}/python2.7/lib2to3 \
+"
 
 SUMMARY_${PN}-argparse="Python command line argument parser"
 RDEPENDS_${PN}-argparse="${PN}-core ${PN}-codecs ${PN}-textutils"
-FILES_${PN}-argparse="${libdir}/python2.7/argparse.* "
+FILES_${PN}-argparse=" \
+    ${libdir}/python2.7/argparse.* \
+"
 
 SUMMARY_${PN}-audio="Python Audio Handling"
 RDEPENDS_${PN}-audio="${PN}-core"
-FILES_${PN}-audio="${libdir}/python2.7/wave.* ${libdir}/python2.7/chunk.* ${libdir}/python2.7/sndhdr.* ${libdir}/python2.7/lib-dynload/ossaudiodev.so ${libdir}/python2.7/lib-dynload/audioop.so ${libdir}/python2.7/audiodev.* ${libdir}/python2.7/sunaudio.* ${libdir}/python2.7/sunau.* ${libdir}/python2.7/toaiff.* "
+FILES_${PN}-audio=" \
+    ${libdir}/python2.7/wave.* \
+    ${libdir}/python2.7/chunk.* \
+    ${libdir}/python2.7/sndhdr.* \
+    ${libdir}/python2.7/lib-dynload/ossaudiodev.so \
+    ${libdir}/python2.7/lib-dynload/audioop.so \
+    ${libdir}/python2.7/audiodev.* \
+    ${libdir}/python2.7/sunaudio.* \
+    ${libdir}/python2.7/sunau.* \
+    ${libdir}/python2.7/toaiff.* \
+"
 
 SUMMARY_${PN}-bsddb="Python bindings for the Berkeley Database"
 RDEPENDS_${PN}-bsddb="${PN}-core"
-FILES_${PN}-bsddb="${libdir}/python2.7/bsddb ${libdir}/python2.7/lib-dynload/_bsddb.so "
+FILES_${PN}-bsddb=" \
+    ${libdir}/python2.7/bsddb \
+    ${libdir}/python2.7/lib-dynload/_bsddb.so \
+"
 
 SUMMARY_${PN}-codecs="Python codecs, encodings & i18n support"
 RDEPENDS_${PN}-codecs="${PN}-core ${PN}-lang"
-FILES_${PN}-codecs="${libdir}/python2.7/codecs.* ${libdir}/python2.7/encodings ${libdir}/python2.7/gettext.* ${libdir}/python2.7/locale.* ${libdir}/python2.7/lib-dynload/_locale.so ${libdir}/python2.7/lib-dynload/_codecs* ${libdir}/python2.7/lib-dynload/_multibytecodec.so ${libdir}/python2.7/lib-dynload/unicodedata.so ${libdir}/python2.7/stringprep.* ${libdir}/python2.7/xdrlib.* "
+FILES_${PN}-codecs=" \
+    ${libdir}/python2.7/codecs.* \
+    ${libdir}/python2.7/encodings \
+    ${libdir}/python2.7/gettext.* \
+    ${libdir}/python2.7/locale.* \
+    ${libdir}/python2.7/lib-dynload/_locale.so \
+    ${libdir}/python2.7/lib-dynload/_codecs* \
+    ${libdir}/python2.7/lib-dynload/_multibytecodec.so \
+    ${libdir}/python2.7/lib-dynload/unicodedata.so \
+    ${libdir}/python2.7/stringprep.* \
+    ${libdir}/python2.7/xdrlib.* \
+"
 
 SUMMARY_${PN}-compile="Python bytecode compilation support"
 RDEPENDS_${PN}-compile="${PN}-core"
-FILES_${PN}-compile="${libdir}/python2.7/py_compile.* ${libdir}/python2.7/compileall.* "
+FILES_${PN}-compile=" \
+    ${libdir}/python2.7/py_compile.* \
+    ${libdir}/python2.7/compileall.* \
+"
 
 SUMMARY_${PN}-compiler="Python compiler support"
 RDEPENDS_${PN}-compiler="${PN}-core"
-FILES_${PN}-compiler="${libdir}/python2.7/compiler "
+FILES_${PN}-compiler=" \
+    ${libdir}/python2.7/compiler \
+"
 
 SUMMARY_${PN}-compression="Python high-level compression support"
 RDEPENDS_${PN}-compression="${PN}-core ${PN}-zlib"
-FILES_${PN}-compression="${libdir}/python2.7/gzip.* ${libdir}/python2.7/zipfile.* ${libdir}/python2.7/tarfile.* ${libdir}/python2.7/lib-dynload/bz2.so "
+FILES_${PN}-compression=" \
+    ${libdir}/python2.7/gzip.* \
+    ${libdir}/python2.7/zipfile.* \
+    ${libdir}/python2.7/tarfile.* \
+    ${libdir}/python2.7/lib-dynload/bz2.so \
+"
 
 SUMMARY_${PN}-contextlib="Python utilities for with-statementcontexts."
 RDEPENDS_${PN}-contextlib="${PN}-core"
-FILES_${PN}-contextlib="${libdir}/python${PYTHON_MAJMIN}/contextlib.* "
+FILES_${PN}-contextlib=" \
+    ${libdir}/python${PYTHON_MAJMIN}/contextlib.* \
+"
 
 SUMMARY_${PN}-core="Python interpreter and core modules"
 RDEPENDS_${PN}-core="${PN}-lang ${PN}-re"
-FILES_${PN}-core="${libdir}/python2.7/__future__.* ${libdir}/python2.7/_abcoll.* ${libdir}/python2.7/abc.* ${libdir}/python2.7/ast.* ${libdir}/python2.7/copy.* ${libdir}/python2.7/copy_reg.* ${libdir}/python2.7/ConfigParser.* ${libdir}/python2.7/genericpath.* ${libdir}/python2.7/getopt.* ${libdir}/python2.7/linecache.* ${libdir}/python2.7/new.* ${libdir}/python2.7/os.* ${libdir}/python2.7/posixpath.* ${libdir}/python2.7/struct.* ${libdir}/python2.7/warnings.* ${libdir}/python2.7/site.* ${libdir}/python2.7/stat.* ${libdir}/python2.7/UserDict.* ${libdir}/python2.7/UserList.* ${libdir}/python2.7/UserString.* ${libdir}/python2.7/lib-dynload/binascii.so ${libdir}/python2.7/lib-dynload/_struct.so ${libdir}/python2.7/lib-dynload/time.so ${libdir}/python2.7/lib-dynload/xreadlines.so ${libdir}/python2.7/types.* ${libdir}/python2.7/platform.* ${bindir}/python* ${libdir}/python2.7/_weakrefset.* ${libdir}/python2.7/sysconfig.* ${libdir}/python2.7/_sysconfigdata.* ${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h ${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py "
+FILES_${PN}-core=" \
+    ${libdir}/python2.7/__future__.* \
+    ${libdir}/python2.7/_abcoll.* \
+    ${libdir}/python2.7/abc.* \
+    ${libdir}/python2.7/ast.* \
+    ${libdir}/python2.7/copy.* \
+    ${libdir}/python2.7/copy_reg.* \
+    ${libdir}/python2.7/ConfigParser.* \
+    ${libdir}/python2.7/genericpath.* \
+    ${libdir}/python2.7/getopt.* \
+    ${libdir}/python2.7/linecache.* \
+    ${libdir}/python2.7/new.* \
+    ${libdir}/python2.7/os.* \
+    ${libdir}/python2.7/posixpath.* \
+    ${libdir}/python2.7/struct.* \
+    ${libdir}/python2.7/warnings.* \
+    ${libdir}/python2.7/site.* \
+    ${libdir}/python2.7/stat.* \
+    ${libdir}/python2.7/UserDict.* \
+    ${libdir}/python2.7/UserList.* \
+    ${libdir}/python2.7/UserString.* \
+    ${libdir}/python2.7/lib-dynload/binascii.so \
+    ${libdir}/python2.7/lib-dynload/_struct.so \
+    ${libdir}/python2.7/lib-dynload/time.so \
+    ${libdir}/python2.7/lib-dynload/xreadlines.so \
+    ${libdir}/python2.7/types.* \
+    ${libdir}/python2.7/platform.* \
+    ${bindir}/python* \
+    ${libdir}/python2.7/_weakrefset.* \
+    ${libdir}/python2.7/sysconfig.* \
+    ${libdir}/python2.7/_sysconfigdata.* \
+    ${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h \
+    ${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py \
+"
 
 SUMMARY_${PN}-crypt="Python basic cryptographic and hashing support"
 RDEPENDS_${PN}-crypt="${PN}-core"
-FILES_${PN}-crypt="${libdir}/python2.7/hashlib.* ${libdir}/python2.7/md5.* ${libdir}/python2.7/sha.* ${libdir}/python2.7/lib-dynload/crypt.so ${libdir}/python2.7/lib-dynload/_hashlib.so ${libdir}/python2.7/lib-dynload/_sha256.so ${libdir}/python2.7/lib-dynload/_sha512.so "
+FILES_${PN}-crypt=" \
+    ${libdir}/python2.7/hashlib.* \
+    ${libdir}/python2.7/md5.* \
+    ${libdir}/python2.7/sha.* \
+    ${libdir}/python2.7/lib-dynload/crypt.so \
+    ${libdir}/python2.7/lib-dynload/_hashlib.so \
+    ${libdir}/python2.7/lib-dynload/_sha256.so \
+    ${libdir}/python2.7/lib-dynload/_sha512.so \
+"
 
 SUMMARY_${PN}-ctypes="Python C types support"
 RDEPENDS_${PN}-ctypes="${PN}-core"
-FILES_${PN}-ctypes="${libdir}/python2.7/ctypes ${libdir}/python2.7/lib-dynload/_ctypes.so ${libdir}/python2.7/lib-dynload/_ctypes_test.so "
+FILES_${PN}-ctypes=" \
+    ${libdir}/python2.7/ctypes \
+    ${libdir}/python2.7/lib-dynload/_ctypes.so \
+    ${libdir}/python2.7/lib-dynload/_ctypes_test.so \
+"
 
 SUMMARY_${PN}-curses="Python curses support"
 RDEPENDS_${PN}-curses="${PN}-core"
-FILES_${PN}-curses="${libdir}/python2.7/curses ${libdir}/python2.7/lib-dynload/_curses.so ${libdir}/python2.7/lib-dynload/_curses_panel.so "
+FILES_${PN}-curses=" \
+    ${libdir}/python2.7/curses \
+    ${libdir}/python2.7/lib-dynload/_curses.so \
+    ${libdir}/python2.7/lib-dynload/_curses_panel.so \
+"
 
 SUMMARY_${PN}-datetime="Python calendar and time support"
 RDEPENDS_${PN}-datetime="${PN}-core ${PN}-codecs"
-FILES_${PN}-datetime="${libdir}/python2.7/_strptime.* ${libdir}/python2.7/calendar.* ${libdir}/python2.7/lib-dynload/datetime.so "
+FILES_${PN}-datetime=" \
+    ${libdir}/python2.7/_strptime.* \
+    ${libdir}/python2.7/calendar.* \
+    ${libdir}/python2.7/lib-dynload/datetime.so \
+"
 
 SUMMARY_${PN}-db="Python file-based database support"
 RDEPENDS_${PN}-db="${PN}-core"
-FILES_${PN}-db="${libdir}/python2.7/anydbm.* ${libdir}/python2.7/dumbdbm.* ${libdir}/python2.7/whichdb.* "
+FILES_${PN}-db=" \
+    ${libdir}/python2.7/anydbm.* \
+    ${libdir}/python2.7/dumbdbm.* \
+    ${libdir}/python2.7/whichdb.* \
+"
 
 SUMMARY_${PN}-debugger="Python debugger"
 RDEPENDS_${PN}-debugger="${PN}-core ${PN}-io ${PN}-lang ${PN}-re ${PN}-stringold ${PN}-shell ${PN}-pprint"
-FILES_${PN}-debugger="${libdir}/python2.7/bdb.* ${libdir}/python2.7/pdb.* "
+FILES_${PN}-debugger=" \
+    ${libdir}/python2.7/bdb.* \
+    ${libdir}/python2.7/pdb.* \
+"
 
 SUMMARY_${PN}-dev="Python development package"
 RDEPENDS_${PN}-dev="${PN}-core"
-FILES_${PN}-dev="${includedir} ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la ${libdir}/*.a ${libdir}/*.o ${libdir}/pkgconfig ${base_libdir}/*.a ${base_libdir}/*.o ${datadir}/aclocal ${datadir}/pkgconfig ${libdir}/python2.7/config/Makefile "
+FILES_${PN}-dev=" \
+    ${includedir} \
+    ${libdir}/lib*${SOLIBSDEV} \
+    ${libdir}/*.la \
+    ${libdir}/*.a \
+    ${libdir}/*.o \
+    ${libdir}/pkgconfig \
+    ${base_libdir}/*.a \
+    ${base_libdir}/*.o \
+    ${datadir}/aclocal \
+    ${datadir}/pkgconfig \
+    ${libdir}/python2.7/config/Makefile \
+"
 
 SUMMARY_${PN}-difflib="Python helpers for computing deltas between objects"
 RDEPENDS_${PN}-difflib="${PN}-lang ${PN}-re"
-FILES_${PN}-difflib="${libdir}/python2.7/difflib.* "
+FILES_${PN}-difflib=" \
+    ${libdir}/python2.7/difflib.* \
+"
 
 SUMMARY_${PN}-distutils="Python Distribution Utilities"
 RDEPENDS_${PN}-distutils="${PN}-core ${PN}-email"
-FILES_${PN}-distutils="${libdir}/python2.7/config ${libdir}/python2.7/distutils "
+FILES_${PN}-distutils=" \
+    ${libdir}/python2.7/config \
+    ${libdir}/python2.7/distutils \
+"
 
 SUMMARY_${PN}-distutils-staticdev="Python distribution utilities (static libraries)"
 RDEPENDS_${PN}-distutils-staticdev="${PN}-distutils"
-FILES_${PN}-distutils-staticdev="${libdir}/python2.7/config/lib*.a "
+FILES_${PN}-distutils-staticdev=" \
+    ${libdir}/python2.7/config/lib*.a \
+"
 
 SUMMARY_${PN}-doctest="Python framework for running examples in docstrings"
 RDEPENDS_${PN}-doctest="${PN}-core ${PN}-lang ${PN}-io ${PN}-re ${PN}-unittest ${PN}-debugger ${PN}-difflib"
-FILES_${PN}-doctest="${libdir}/python2.7/doctest.* "
+FILES_${PN}-doctest=" \
+    ${libdir}/python2.7/doctest.* \
+"
 
 SUMMARY_${PN}-email="Python email support"
 RDEPENDS_${PN}-email="${PN}-core ${PN}-io ${PN}-re ${PN}-mime ${PN}-audio ${PN}-image ${PN}-netclient"
-FILES_${PN}-email="${libdir}/python2.7/imaplib.* ${libdir}/python2.7/email "
+FILES_${PN}-email=" \
+    ${libdir}/python2.7/imaplib.* \
+    ${libdir}/python2.7/email \
+"
 
 SUMMARY_${PN}-fcntl="Python's fcntl interface"
 RDEPENDS_${PN}-fcntl="${PN}-core"
-FILES_${PN}-fcntl="${libdir}/python2.7/lib-dynload/fcntl.so "
+FILES_${PN}-fcntl=" \
+    ${libdir}/python2.7/lib-dynload/fcntl.so \
+"
 
 SUMMARY_${PN}-gdbm="Python GNU database support"
 RDEPENDS_${PN}-gdbm="${PN}-core"
-FILES_${PN}-gdbm="${libdir}/python2.7/lib-dynload/gdbm.so "
+FILES_${PN}-gdbm=" \
+    ${libdir}/python2.7/lib-dynload/gdbm.so \
+"
 
 SUMMARY_${PN}-hotshot="Python hotshot performance profiler"
 RDEPENDS_${PN}-hotshot="${PN}-core"
-FILES_${PN}-hotshot="${libdir}/python2.7/hotshot ${libdir}/python2.7/lib-dynload/_hotshot.so "
+FILES_${PN}-hotshot=" \
+    ${libdir}/python2.7/hotshot \
+    ${libdir}/python2.7/lib-dynload/_hotshot.so \
+"
 
 SUMMARY_${PN}-html="Python HTML processing support"
 RDEPENDS_${PN}-html="${PN}-core"
-FILES_${PN}-html="${libdir}/python2.7/formatter.* ${libdir}/python2.7/htmlentitydefs.* ${libdir}/python2.7/htmllib.* ${libdir}/python2.7/markupbase.* ${libdir}/python2.7/sgmllib.* ${libdir}/python2.7/HTMLParser.* "
+FILES_${PN}-html=" \
+    ${libdir}/python2.7/formatter.* \
+    ${libdir}/python2.7/htmlentitydefs.* \
+    ${libdir}/python2.7/htmllib.* \
+    ${libdir}/python2.7/markupbase.* \
+    ${libdir}/python2.7/sgmllib.* \
+    ${libdir}/python2.7/HTMLParser.* \
+"
 
 SUMMARY_${PN}-idle="Python Integrated Development Environment"
 RDEPENDS_${PN}-idle="${PN}-core ${PN}-tkinter"
-FILES_${PN}-idle="${bindir}/idle ${libdir}/python2.7/idlelib "
+FILES_${PN}-idle=" \
+    ${bindir}/idle \
+    ${libdir}/python2.7/idlelib \
+"
 
 SUMMARY_${PN}-image="Python graphical image handling"
 RDEPENDS_${PN}-image="${PN}-core"
-FILES_${PN}-image="${libdir}/python2.7/colorsys.* ${libdir}/python2.7/imghdr.* ${libdir}/python2.7/lib-dynload/imageop.so ${libdir}/python2.7/lib-dynload/rgbimg.so "
+FILES_${PN}-image=" \
+    ${libdir}/python2.7/colorsys.* \
+    ${libdir}/python2.7/imghdr.* \
+    ${libdir}/python2.7/lib-dynload/imageop.so \
+    ${libdir}/python2.7/lib-dynload/rgbimg.so \
+"
 
 SUMMARY_${PN}-importlib="Python import implementation library"
 RDEPENDS_${PN}-importlib="${PN}-core"
-FILES_${PN}-importlib="${libdir}/python2.7/importlib "
+FILES_${PN}-importlib=" \
+    ${libdir}/python2.7/importlib \
+"
 
 SUMMARY_${PN}-io="Python low-level I/O"
 RDEPENDS_${PN}-io="${PN}-core ${PN}-math ${PN}-textutils ${PN}-netclient ${PN}-contextlib"
-FILES_${PN}-io="${libdir}/python2.7/lib-dynload/_socket.so ${libdir}/python2.7/lib-dynload/_io.so ${libdir}/python2.7/lib-dynload/_ssl.so ${libdir}/python2.7/lib-dynload/select.so ${libdir}/python2.7/lib-dynload/termios.so ${libdir}/python2.7/lib-dynload/cStringIO.so ${libdir}/python2.7/pipes.* ${libdir}/python2.7/socket.* ${libdir}/python2.7/ssl.* ${libdir}/python2.7/tempfile.* ${libdir}/python2.7/StringIO.* ${libdir}/python2.7/io.* ${libdir}/python2.7/_pyio.* "
+FILES_${PN}-io=" \
+    ${libdir}/python2.7/lib-dynload/_socket.so \
+    ${libdir}/python2.7/lib-dynload/_io.so \
+    ${libdir}/python2.7/lib-dynload/_ssl.so \
+    ${libdir}/python2.7/lib-dynload/select.so \
+    ${libdir}/python2.7/lib-dynload/termios.so \
+    ${libdir}/python2.7/lib-dynload/cStringIO.so \
+    ${libdir}/python2.7/pipes.* \
+    ${libdir}/python2.7/socket.* \
+    ${libdir}/python2.7/ssl.* \
+    ${libdir}/python2.7/tempfile.* \
+    ${libdir}/python2.7/StringIO.* \
+    ${libdir}/python2.7/io.* \
+    ${libdir}/python2.7/_pyio.* \
+"
 
 SUMMARY_${PN}-json="Python JSON support"
 RDEPENDS_${PN}-json="${PN}-core ${PN}-math ${PN}-re ${PN}-codecs"
-FILES_${PN}-json="${libdir}/python2.7/json ${libdir}/python2.7/lib-dynload/_json.so "
+FILES_${PN}-json=" \
+    ${libdir}/python2.7/json \
+    ${libdir}/python2.7/lib-dynload/_json.so \
+"
 
 SUMMARY_${PN}-lang="Python low-level language support"
 RDEPENDS_${PN}-lang="${PN}-core"
-FILES_${PN}-lang="${libdir}/python2.7/lib-dynload/_bisect.so ${libdir}/python2.7/lib-dynload/_collections.so ${libdir}/python2.7/lib-dynload/_heapq.so ${libdir}/python2.7/lib-dynload/_weakref.so ${libdir}/python2.7/lib-dynload/_functools.so ${libdir}/python2.7/lib-dynload/array.so ${libdir}/python2.7/lib-dynload/itertools.so ${libdir}/python2.7/lib-dynload/operator.so ${libdir}/python2.7/lib-dynload/parser.so ${libdir}/python2.7/atexit.* ${libdir}/python2.7/bisect.* ${libdir}/python2.7/code.* ${libdir}/python2.7/codeop.* ${libdir}/python2.7/collections.* ${libdir}/python2.7/dis.* ${libdir}/python2.7/functools.* ${libdir}/python2.7/heapq.* ${libdir}/python2.7/inspect.* ${libdir}/python2.7/keyword.* ${libdir}/python2.7/opcode.* ${libdir}/python2.7/symbol.* ${libdir}/python2.7/repr.* ${libdir}/python2.7/token.* ${libdir}/python2.7/tokenize.* ${libdir}/python2.7/traceback.* ${libdir}/python2.7/weakref.* "
+FILES_${PN}-lang=" \
+    ${libdir}/python2.7/lib-dynload/_bisect.so \
+    ${libdir}/python2.7/lib-dynload/_collections.so \
+    ${libdir}/python2.7/lib-dynload/_heapq.so \
+    ${libdir}/python2.7/lib-dynload/_weakref.so \
+    ${libdir}/python2.7/lib-dynload/_functools.so \
+    ${libdir}/python2.7/lib-dynload/array.so \
+    ${libdir}/python2.7/lib-dynload/itertools.so \
+    ${libdir}/python2.7/lib-dynload/operator.so \
+    ${libdir}/python2.7/lib-dynload/parser.so \
+    ${libdir}/python2.7/atexit.* \
+    ${libdir}/python2.7/bisect.* \
+    ${libdir}/python2.7/code.* \
+    ${libdir}/python2.7/codeop.* \
+    ${libdir}/python2.7/collections.* \
+    ${libdir}/python2.7/dis.* \
+    ${libdir}/python2.7/functools.* \
+    ${libdir}/python2.7/heapq.* \
+    ${libdir}/python2.7/inspect.* \
+    ${libdir}/python2.7/keyword.* \
+    ${libdir}/python2.7/opcode.* \
+    ${libdir}/python2.7/symbol.* \
+    ${libdir}/python2.7/repr.* \
+    ${libdir}/python2.7/token.* \
+    ${libdir}/python2.7/tokenize.* \
+    ${libdir}/python2.7/traceback.* \
+    ${libdir}/python2.7/weakref.* \
+"
 
 SUMMARY_${PN}-logging="Python logging support"
 RDEPENDS_${PN}-logging="${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-stringold"
-FILES_${PN}-logging="${libdir}/python2.7/logging "
+FILES_${PN}-logging=" \
+    ${libdir}/python2.7/logging \
+"
 
 SUMMARY_${PN}-mailbox="Python mailbox format support"
 RDEPENDS_${PN}-mailbox="${PN}-core ${PN}-mime"
-FILES_${PN}-mailbox="${libdir}/python2.7/mailbox.* "
+FILES_${PN}-mailbox=" \
+    ${libdir}/python2.7/mailbox.* \
+"
 
 SUMMARY_${PN}-math="Python math support"
 RDEPENDS_${PN}-math="${PN}-core ${PN}-crypt"
-FILES_${PN}-math="${libdir}/python2.7/lib-dynload/cmath.so ${libdir}/python2.7/lib-dynload/math.so ${libdir}/python2.7/lib-dynload/_random.so ${libdir}/python2.7/random.* ${libdir}/python2.7/sets.* "
+FILES_${PN}-math=" \
+    ${libdir}/python2.7/lib-dynload/cmath.so \
+    ${libdir}/python2.7/lib-dynload/math.so \
+    ${libdir}/python2.7/lib-dynload/_random.so \
+    ${libdir}/python2.7/random.* \
+    ${libdir}/python2.7/sets.* \
+"
 
 SUMMARY_${PN}-mime="Python MIME handling APIs"
 RDEPENDS_${PN}-mime="${PN}-core ${PN}-io"
-FILES_${PN}-mime="${libdir}/python2.7/mimetools.* ${libdir}/python2.7/uu.* ${libdir}/python2.7/quopri.* ${libdir}/python2.7/rfc822.* ${libdir}/python2.7/MimeWriter.* "
+FILES_${PN}-mime=" \
+    ${libdir}/python2.7/mimetools.* \
+    ${libdir}/python2.7/uu.* \
+    ${libdir}/python2.7/quopri.* \
+    ${libdir}/python2.7/rfc822.* \
+    ${libdir}/python2.7/MimeWriter.* \
+"
 
 SUMMARY_${PN}-mmap="Python memory-mapped file support"
 RDEPENDS_${PN}-mmap="${PN}-core ${PN}-io"
-FILES_${PN}-mmap="${libdir}/python2.7/lib-dynload/mmap.so "
+FILES_${PN}-mmap=" \
+    ${libdir}/python2.7/lib-dynload/mmap.so \
+"
 
 SUMMARY_${PN}-multiprocessing="Python multiprocessing support"
 RDEPENDS_${PN}-multiprocessing="${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-threading ${PN}-ctypes ${PN}-mmap"
-FILES_${PN}-multiprocessing="${libdir}/python2.7/lib-dynload/_multiprocessing.so ${libdir}/python2.7/multiprocessing "
+FILES_${PN}-multiprocessing=" \
+    ${libdir}/python2.7/lib-dynload/_multiprocessing.so \
+    ${libdir}/python2.7/multiprocessing \
+"
 
 SUMMARY_${PN}-netclient="Python Internet Protocol clients"
 RDEPENDS_${PN}-netclient="${PN}-core ${PN}-crypt ${PN}-datetime ${PN}-io ${PN}-lang ${PN}-logging ${PN}-mime"
-FILES_${PN}-netclient="${libdir}/python2.7/*Cookie*.* ${libdir}/python2.7/base64.* ${libdir}/python2.7/cookielib.* ${libdir}/python2.7/ftplib.* ${libdir}/python2.7/gopherlib.* ${libdir}/python2.7/hmac.* ${libdir}/python2.7/httplib.* ${libdir}/python2.7/mimetypes.* ${libdir}/python2.7/nntplib.* ${libdir}/python2.7/poplib.* ${libdir}/python2.7/smtplib.* ${libdir}/python2.7/telnetlib.* ${libdir}/python2.7/urllib.* ${libdir}/python2.7/urllib2.* ${libdir}/python2.7/urlparse.* ${libdir}/python2.7/uuid.* ${libdir}/python2.7/rfc822.* ${libdir}/python2.7/mimetools.* "
+FILES_${PN}-netclient=" \
+    ${libdir}/python2.7/*Cookie*.* \
+    ${libdir}/python2.7/base64.* \
+    ${libdir}/python2.7/cookielib.* \
+    ${libdir}/python2.7/ftplib.* \
+    ${libdir}/python2.7/gopherlib.* \
+    ${libdir}/python2.7/hmac.* \
+    ${libdir}/python2.7/httplib.* \
+    ${libdir}/python2.7/mimetypes.* \
+    ${libdir}/python2.7/nntplib.* \
+    ${libdir}/python2.7/poplib.* \
+    ${libdir}/python2.7/smtplib.* \
+    ${libdir}/python2.7/telnetlib.* \
+    ${libdir}/python2.7/urllib.* \
+    ${libdir}/python2.7/urllib2.* \
+    ${libdir}/python2.7/urlparse.* \
+    ${libdir}/python2.7/uuid.* \
+    ${libdir}/python2.7/rfc822.* \
+    ${libdir}/python2.7/mimetools.* \
+"
 
 SUMMARY_${PN}-netserver="Python Internet Protocol servers"
 RDEPENDS_${PN}-netserver="${PN}-core ${PN}-netclient ${PN}-shell ${PN}-threading"
-FILES_${PN}-netserver="${libdir}/python2.7/cgi.* ${libdir}/python2.7/*HTTPServer.* ${libdir}/python2.7/SocketServer.* "
+FILES_${PN}-netserver=" \
+    ${libdir}/python2.7/cgi.* \
+    ${libdir}/python2.7/*HTTPServer.* \
+    ${libdir}/python2.7/SocketServer.* \
+"
 
 SUMMARY_${PN}-numbers="Python number APIs"
 RDEPENDS_${PN}-numbers="${PN}-core ${PN}-lang ${PN}-re"
-FILES_${PN}-numbers="${libdir}/python2.7/decimal.* ${libdir}/python2.7/fractions.* ${libdir}/python2.7/numbers.* "
+FILES_${PN}-numbers=" \
+    ${libdir}/python2.7/decimal.* \
+    ${libdir}/python2.7/fractions.* \
+    ${libdir}/python2.7/numbers.* \
+"
 
 SUMMARY_${PN}-pickle="Python serialisation/persistence support"
 RDEPENDS_${PN}-pickle="${PN}-core ${PN}-codecs ${PN}-io ${PN}-re"
-FILES_${PN}-pickle="${libdir}/python2.7/pickle.* ${libdir}/python2.7/shelve.* ${libdir}/python2.7/lib-dynload/cPickle.so ${libdir}/python2.7/pickletools.* "
+FILES_${PN}-pickle=" \
+    ${libdir}/python2.7/pickle.* \
+    ${libdir}/python2.7/shelve.* \
+    ${libdir}/python2.7/lib-dynload/cPickle.so \
+    ${libdir}/python2.7/pickletools.* \
+"
 
 SUMMARY_${PN}-pkgutil="Python package extension utility support"
 RDEPENDS_${PN}-pkgutil="${PN}-core"
-FILES_${PN}-pkgutil="${libdir}/python2.7/pkgutil.* "
+FILES_${PN}-pkgutil=" \
+    ${libdir}/python2.7/pkgutil.* \
+"
 
 SUMMARY_${PN}-plistlib="Generate and parse Mac OS X .plist files"
 RDEPENDS_${PN}-plistlib="${PN}-core ${PN}-datetime ${PN}-io"
-FILES_${PN}-plistlib="${libdir}/python2.7/plistlib.* "
+FILES_${PN}-plistlib=" \
+    ${libdir}/python2.7/plistlib.* \
+"
 
 SUMMARY_${PN}-pprint="Python pretty-print support"
 RDEPENDS_${PN}-pprint="${PN}-core ${PN}-io"
-FILES_${PN}-pprint="${libdir}/python2.7/pprint.* "
+FILES_${PN}-pprint=" \
+    ${libdir}/python2.7/pprint.* \
+"
 
 SUMMARY_${PN}-profile="Python basic performance profiling support"
 RDEPENDS_${PN}-profile="${PN}-core ${PN}-textutils"
-FILES_${PN}-profile="${libdir}/python2.7/profile.* ${libdir}/python2.7/pstats.* ${libdir}/python2.7/cProfile.* ${libdir}/python2.7/lib-dynload/_lsprof.so "
+FILES_${PN}-profile=" \
+    ${libdir}/python2.7/profile.* \
+    ${libdir}/python2.7/pstats.* \
+    ${libdir}/python2.7/cProfile.* \
+    ${libdir}/python2.7/lib-dynload/_lsprof.so \
+"
 
 SUMMARY_${PN}-pydoc="Python interactive help support"
 RDEPENDS_${PN}-pydoc="${PN}-core ${PN}-lang ${PN}-stringold ${PN}-re"
-FILES_${PN}-pydoc="${bindir}/pydoc ${libdir}/python2.7/pydoc.* ${libdir}/python2.7/pydoc_data "
+FILES_${PN}-pydoc=" \
+    ${bindir}/pydoc \
+    ${libdir}/python2.7/pydoc.* \
+    ${libdir}/python2.7/pydoc_data \
+"
 
 SUMMARY_${PN}-re="Python Regular Expression APIs"
 RDEPENDS_${PN}-re="${PN}-core"
-FILES_${PN}-re="${libdir}/python2.7/re.* ${libdir}/python2.7/sre.* ${libdir}/python2.7/sre_compile.* ${libdir}/python2.7/sre_constants* ${libdir}/python2.7/sre_parse.* "
+FILES_${PN}-re=" \
+    ${libdir}/python2.7/re.* \
+    ${libdir}/python2.7/sre.* \
+    ${libdir}/python2.7/sre_compile.* \
+    ${libdir}/python2.7/sre_constants* \
+    ${libdir}/python2.7/sre_parse.* \
+"
 
 SUMMARY_${PN}-readline="Python readline support"
 RDEPENDS_${PN}-readline="${PN}-core"
-FILES_${PN}-readline="${libdir}/python2.7/lib-dynload/readline.so ${libdir}/python2.7/rlcompleter.* "
+FILES_${PN}-readline=" \
+    ${libdir}/python2.7/lib-dynload/readline.so \
+    ${libdir}/python2.7/rlcompleter.* \
+"
 
 SUMMARY_${PN}-resource="Python resource control interface"
 RDEPENDS_${PN}-resource="${PN}-core"
-FILES_${PN}-resource="${libdir}/python2.7/lib-dynload/resource.so "
+FILES_${PN}-resource=" \
+    ${libdir}/python2.7/lib-dynload/resource.so \
+"
 
 SUMMARY_${PN}-robotparser="Python robots.txt parser"
 RDEPENDS_${PN}-robotparser="${PN}-core ${PN}-netclient"
-FILES_${PN}-robotparser="${libdir}/python2.7/robotparser.* "
+FILES_${PN}-robotparser=" \
+    ${libdir}/python2.7/robotparser.* \
+"
 
 SUMMARY_${PN}-shell="Python shell-like functionality"
 RDEPENDS_${PN}-shell="${PN}-core ${PN}-re"
-FILES_${PN}-shell="${libdir}/python2.7/cmd.* ${libdir}/python2.7/commands.* ${libdir}/python2.7/dircache.* ${libdir}/python2.7/fnmatch.* ${libdir}/python2.7/glob.* ${libdir}/python2.7/popen2.* ${libdir}/python2.7/shlex.* ${libdir}/python2.7/shutil.* "
+FILES_${PN}-shell=" \
+    ${libdir}/python2.7/cmd.* \
+    ${libdir}/python2.7/commands.* \
+    ${libdir}/python2.7/dircache.* \
+    ${libdir}/python2.7/fnmatch.* \
+    ${libdir}/python2.7/glob.* \
+    ${libdir}/python2.7/popen2.* \
+    ${libdir}/python2.7/shlex.* \
+    ${libdir}/python2.7/shutil.* \
+"
 
 SUMMARY_${PN}-smtpd="Python Simple Mail Transport Daemon"
 RDEPENDS_${PN}-smtpd="${PN}-core ${PN}-netserver ${PN}-email ${PN}-mime"
-FILES_${PN}-smtpd="${bindir}/smtpd.* ${libdir}/python2.7/smtpd.* "
+FILES_${PN}-smtpd=" \
+    ${bindir}/smtpd.* \
+    ${libdir}/python2.7/smtpd.* \
+"
 
 SUMMARY_${PN}-sqlite3="Python Sqlite3 database support"
 RDEPENDS_${PN}-sqlite3="${PN}-core ${PN}-datetime ${PN}-lang ${PN}-crypt ${PN}-io ${PN}-threading ${PN}-zlib"
-FILES_${PN}-sqlite3="${libdir}/python2.7/lib-dynload/_sqlite3.so ${libdir}/python2.7/sqlite3/dbapi2.* ${libdir}/python2.7/sqlite3/__init__.* ${libdir}/python2.7/sqlite3/dump.* "
+FILES_${PN}-sqlite3=" \
+    ${libdir}/python2.7/lib-dynload/_sqlite3.so \
+    ${libdir}/python2.7/sqlite3/dbapi2.* \
+    ${libdir}/python2.7/sqlite3/__init__.* \
+    ${libdir}/python2.7/sqlite3/dump.* \
+"
 
 SUMMARY_${PN}-sqlite3-tests="Python Sqlite3 database support tests"
 RDEPENDS_${PN}-sqlite3-tests="${PN}-core ${PN}-sqlite3"
-FILES_${PN}-sqlite3-tests="${libdir}/python2.7/sqlite3/test "
+FILES_${PN}-sqlite3-tests=" \
+    ${libdir}/python2.7/sqlite3/test \
+"
 
 SUMMARY_${PN}-stringold="Python string APIs [deprecated]"
 RDEPENDS_${PN}-stringold="${PN}-core ${PN}-re"
-FILES_${PN}-stringold="${libdir}/python2.7/lib-dynload/strop.so ${libdir}/python2.7/string.* ${libdir}/python2.7/stringold.* "
+FILES_${PN}-stringold=" \
+    ${libdir}/python2.7/lib-dynload/strop.so \
+    ${libdir}/python2.7/string.* \
+    ${libdir}/python2.7/stringold.* \
+"
 
 SUMMARY_${PN}-subprocess="Python subprocess support"
 RDEPENDS_${PN}-subprocess="${PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle"
-FILES_${PN}-subprocess="${libdir}/python2.7/subprocess.* "
+FILES_${PN}-subprocess=" \
+    ${libdir}/python2.7/subprocess.* \
+"
 
 SUMMARY_${PN}-syslog="Python syslog interface"
 RDEPENDS_${PN}-syslog="${PN}-core"
-FILES_${PN}-syslog="${libdir}/python2.7/lib-dynload/syslog.so "
+FILES_${PN}-syslog=" \
+    ${libdir}/python2.7/lib-dynload/syslog.so \
+"
 
 SUMMARY_${PN}-terminal="Python terminal controlling support"
 RDEPENDS_${PN}-terminal="${PN}-core ${PN}-io"
-FILES_${PN}-terminal="${libdir}/python2.7/pty.* ${libdir}/python2.7/tty.* "
+FILES_${PN}-terminal=" \
+    ${libdir}/python2.7/pty.* \
+    ${libdir}/python2.7/tty.* \
+"
 
 SUMMARY_${PN}-tests="Python tests"
 RDEPENDS_${PN}-tests="${PN}-core ${PN}-modules"
-FILES_${PN}-tests="${libdir}/python2.7/test "
+FILES_${PN}-tests=" \
+    ${libdir}/python2.7/test \
+"
 
 SUMMARY_${PN}-textutils="Python option parsing, text wrapping and CSV support"
 RDEPENDS_${PN}-textutils="${PN}-core ${PN}-io ${PN}-re ${PN}-stringold"
-FILES_${PN}-textutils="${libdir}/python2.7/lib-dynload/_csv.so ${libdir}/python2.7/csv.* ${libdir}/python2.7/optparse.* ${libdir}/python2.7/textwrap.* "
+FILES_${PN}-textutils=" \
+    ${libdir}/python2.7/lib-dynload/_csv.so \
+    ${libdir}/python2.7/csv.* \
+    ${libdir}/python2.7/optparse.* \
+    ${libdir}/python2.7/textwrap.* \
+"
 
 SUMMARY_${PN}-threading="Python threading & synchronization support"
 RDEPENDS_${PN}-threading="${PN}-core ${PN}-lang"
-FILES_${PN}-threading="${libdir}/python2.7/_threading_local.* ${libdir}/python2.7/dummy_thread.* ${libdir}/python2.7/dummy_threading.* ${libdir}/python2.7/mutex.* ${libdir}/python2.7/threading.* ${libdir}/python2.7/Queue.* "
+FILES_${PN}-threading=" \
+    ${libdir}/python2.7/_threading_local.* \
+    ${libdir}/python2.7/dummy_thread.* \
+    ${libdir}/python2.7/dummy_threading.* \
+    ${libdir}/python2.7/mutex.* \
+    ${libdir}/python2.7/threading.* \
+    ${libdir}/python2.7/Queue.* \
+"
 
 SUMMARY_${PN}-tkinter="Python Tcl/Tk bindings"
 RDEPENDS_${PN}-tkinter="${PN}-core"
-FILES_${PN}-tkinter="${libdir}/python2.7/lib-dynload/_tkinter.so ${libdir}/python2.7/lib-tk "
+FILES_${PN}-tkinter=" \
+    ${libdir}/python2.7/lib-dynload/_tkinter.so \
+    ${libdir}/python2.7/lib-tk \
+"
 
 SUMMARY_${PN}-unittest="Python unit testing framework"
 RDEPENDS_${PN}-unittest="${PN}-core ${PN}-stringold ${PN}-lang ${PN}-io ${PN}-difflib ${PN}-pprint ${PN}-shell"
-FILES_${PN}-unittest="${libdir}/python2.7/unittest/ "
+FILES_${PN}-unittest=" \
+    ${libdir}/python2.7/unittest/ \
+"
 
 SUMMARY_${PN}-unixadmin="Python Unix administration support"
 RDEPENDS_${PN}-unixadmin="${PN}-core"
-FILES_${PN}-unixadmin="${libdir}/python2.7/lib-dynload/nis.so ${libdir}/python2.7/lib-dynload/grp.so ${libdir}/python2.7/lib-dynload/pwd.so ${libdir}/python2.7/getpass.* "
+FILES_${PN}-unixadmin=" \
+    ${libdir}/python2.7/lib-dynload/nis.so \
+    ${libdir}/python2.7/lib-dynload/grp.so \
+    ${libdir}/python2.7/lib-dynload/pwd.so \
+    ${libdir}/python2.7/getpass.* \
+"
 
 SUMMARY_${PN}-xml="Python basic XML support"
 RDEPENDS_${PN}-xml="${PN}-core ${PN}-re"
-FILES_${PN}-xml="${libdir}/python2.7/lib-dynload/_elementtree.so ${libdir}/python2.7/lib-dynload/pyexpat.so ${libdir}/python2.7/xml ${libdir}/python2.7/xmllib.* "
+FILES_${PN}-xml=" \
+    ${libdir}/python2.7/lib-dynload/_elementtree.so \
+    ${libdir}/python2.7/lib-dynload/pyexpat.so \
+    ${libdir}/python2.7/xml \
+    ${libdir}/python2.7/xmllib.* \
+"
 
 SUMMARY_${PN}-xmlrpc="Python XML-RPC support"
 RDEPENDS_${PN}-xmlrpc="${PN}-core ${PN}-xml ${PN}-netserver ${PN}-lang"
-FILES_${PN}-xmlrpc="${libdir}/python2.7/xmlrpclib.* ${libdir}/python2.7/SimpleXMLRPCServer.* ${libdir}/python2.7/DocXMLRPCServer.* "
+FILES_${PN}-xmlrpc=" \
+    ${libdir}/python2.7/xmlrpclib.* \
+    ${libdir}/python2.7/SimpleXMLRPCServer.* \
+    ${libdir}/python2.7/DocXMLRPCServer.* \
+"
 
 SUMMARY_${PN}-zlib="Python zlib compression support"
 RDEPENDS_${PN}-zlib="${PN}-core"
-FILES_${PN}-zlib="${libdir}/python2.7/lib-dynload/zlib.so "
+FILES_${PN}-zlib=" \
+    ${libdir}/python2.7/lib-dynload/zlib.so \
+"
 
 SUMMARY_${PN}-modules="All Python modules"
-RDEPENDS_${PN}-modules="${PN}-2to3 ${PN}-argparse ${PN}-audio ${PN}-bsddb ${PN}-codecs ${PN}-compile ${PN}-compiler ${PN}-compression ${PN}-contextlib ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-difflib ${PN}-distutils ${PN}-doctest ${PN}-email ${PN}-fcntl ${PN}-gdbm ${PN}-hotshot ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-plistlib ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-resource ${PN}-robotparser ${PN}-shell ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-zlib  "
+RDEPENDS_${PN}-modules=" \
+  ${PN}-2to3 \
+  ${PN}-argparse \
+  ${PN}-audio \
+  ${PN}-bsddb \
+  ${PN}-codecs \
+  ${PN}-compile \
+  ${PN}-compiler \
+  ${PN}-compression \
+  ${PN}-contextlib \
+  ${PN}-core \
+  ${PN}-crypt \
+  ${PN}-ctypes \
+  ${PN}-curses \
+  ${PN}-datetime \
+  ${PN}-db \
+  ${PN}-debugger \
+  ${PN}-difflib \
+  ${PN}-distutils \
+  ${PN}-doctest \
+  ${PN}-email \
+  ${PN}-fcntl \
+  ${PN}-gdbm \
+  ${PN}-hotshot \
+  ${PN}-html \
+  ${PN}-idle \
+  ${PN}-image \
+  ${PN}-importlib \
+  ${PN}-io \
+  ${PN}-json \
+  ${PN}-lang \
+  ${PN}-logging \
+  ${PN}-mailbox \
+  ${PN}-math \
+  ${PN}-mime \
+  ${PN}-mmap \
+  ${PN}-multiprocessing \
+  ${PN}-netclient \
+  ${PN}-netserver \
+  ${PN}-numbers \
+  ${PN}-pickle \
+  ${PN}-pkgutil \
+  ${PN}-plistlib \
+  ${PN}-pprint \
+  ${PN}-profile \
+  ${PN}-pydoc \
+  ${PN}-re \
+  ${PN}-readline \
+  ${PN}-resource \
+  ${PN}-robotparser \
+  ${PN}-shell \
+  ${PN}-smtpd \
+  ${PN}-sqlite3 \
+  ${PN}-sqlite3-tests \
+  ${PN}-stringold \
+  ${PN}-subprocess \
+  ${PN}-syslog \
+  ${PN}-terminal \
+  ${PN}-textutils \
+  ${PN}-threading \
+  ${PN}-tkinter \
+  ${PN}-unittest \
+  ${PN}-unixadmin \
+  ${PN}-xml \
+  ${PN}-xmlrpc \
+  ${PN}-zlib \
+"
 ALLOW_EMPTY_${PN}-modules = "1"
 
 
diff --git a/meta/recipes-devtools/python/python-3.5-manifest.inc b/meta/recipes-devtools/python/python-3.5-manifest.inc
index 0260e87e75..686b5f9842 100644
--- a/meta/recipes-devtools/python/python-3.5-manifest.inc
+++ b/meta/recipes-devtools/python/python-3.5-manifest.inc
@@ -1,283 +1,1108 @@
 
 # WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file.
-# Generator: 'scripts/contrib/python/generate-manifest-3.5.py' Version 20140131 (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
+# Generator: './scripts/contrib/python/generate-manifest-3.5.py' Version 20140131 (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
 
  
 
-PROVIDES+="${PN}-2to3 ${PN}-argparse ${PN}-asyncio ${PN}-audio ${PN}-codecs ${PN}-compile ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils ${PN}-distutils-staticdev ${PN}-doctest ${PN}-email ${PN}-enum ${PN}-fcntl ${PN}-gdbm ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-reprlib ${PN}-resource ${PN}-selectors ${PN}-shell ${PN}-signal ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-typing ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc "
-
-PACKAGES="${PN}-dbg ${PN}-2to3 ${PN}-argparse ${PN}-asyncio ${PN}-audio ${PN}-codecs ${PN}-compile ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-dev ${PN}-difflib ${PN}-distutils-staticdev ${PN}-distutils ${PN}-doctest ${PN}-email ${PN}-enum ${PN}-fcntl ${PN}-gdbm ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-reprlib ${PN}-resource ${PN}-selectors ${PN}-shell ${PN}-signal ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-tests ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-typing ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc ${PN}-modules"
+PROVIDES+="\
+  ${PN}-2to3 \
+  ${PN}-argparse \
+  ${PN}-asyncio \
+  ${PN}-audio \
+  ${PN}-codecs \
+  ${PN}-compile \
+  ${PN}-compression \
+  ${PN}-core \
+  ${PN}-crypt \
+  ${PN}-ctypes \
+  ${PN}-curses \
+  ${PN}-datetime \
+  ${PN}-db \
+  ${PN}-debugger \
+  ${PN}-dev \
+  ${PN}-difflib \
+  ${PN}-distutils \
+  ${PN}-distutils-staticdev \
+  ${PN}-doctest \
+  ${PN}-email \
+  ${PN}-enum \
+  ${PN}-fcntl \
+  ${PN}-gdbm \
+  ${PN}-html \
+  ${PN}-idle \
+  ${PN}-image \
+  ${PN}-importlib \
+  ${PN}-io \
+  ${PN}-json \
+  ${PN}-lang \
+  ${PN}-logging \
+  ${PN}-mailbox \
+  ${PN}-math \
+  ${PN}-mime \
+  ${PN}-mmap \
+  ${PN}-multiprocessing \
+  ${PN}-netclient \
+  ${PN}-netserver \
+  ${PN}-numbers \
+  ${PN}-pickle \
+  ${PN}-pkgutil \
+  ${PN}-pprint \
+  ${PN}-profile \
+  ${PN}-pydoc \
+  ${PN}-re \
+  ${PN}-readline \
+  ${PN}-reprlib \
+  ${PN}-resource \
+  ${PN}-selectors \
+  ${PN}-shell \
+  ${PN}-signal \
+  ${PN}-smtpd \
+  ${PN}-sqlite3 \
+  ${PN}-sqlite3-tests \
+  ${PN}-stringold \
+  ${PN}-subprocess \
+  ${PN}-syslog \
+  ${PN}-terminal \
+  ${PN}-tests \
+  ${PN}-textutils \
+  ${PN}-threading \
+  ${PN}-tkinter \
+  ${PN}-typing \
+  ${PN}-unittest \
+  ${PN}-unixadmin \
+  ${PN}-xml \
+  ${PN}-xmlrpc \
+"
+
+PACKAGES="\
+  ${PN}-dbg \
+  ${PN}-2to3 \
+  ${PN}-argparse \
+  ${PN}-asyncio \
+  ${PN}-audio \
+  ${PN}-codecs \
+  ${PN}-compile \
+  ${PN}-compression \
+  ${PN}-core \
+  ${PN}-crypt \
+  ${PN}-ctypes \
+  ${PN}-curses \
+  ${PN}-datetime \
+  ${PN}-db \
+  ${PN}-debugger \
+  ${PN}-dev \
+  ${PN}-difflib \
+${PN}-distutils \
+ ${PN}-distutils-staticdev \
+  ${PN}-doctest \
+  ${PN}-email \
+  ${PN}-enum \
+  ${PN}-fcntl \
+  ${PN}-gdbm \
+  ${PN}-html \
+  ${PN}-idle \
+  ${PN}-image \
+  ${PN}-importlib \
+  ${PN}-io \
+  ${PN}-json \
+  ${PN}-lang \
+  ${PN}-logging \
+  ${PN}-mailbox \
+  ${PN}-math \
+  ${PN}-mime \
+  ${PN}-mmap \
+  ${PN}-multiprocessing \
+  ${PN}-netclient \
+  ${PN}-netserver \
+  ${PN}-numbers \
+  ${PN}-pickle \
+  ${PN}-pkgutil \
+  ${PN}-pprint \
+  ${PN}-profile \
+  ${PN}-pydoc \
+  ${PN}-re \
+  ${PN}-readline \
+  ${PN}-reprlib \
+  ${PN}-resource \
+  ${PN}-selectors \
+  ${PN}-shell \
+  ${PN}-signal \
+  ${PN}-smtpd \
+  ${PN}-sqlite3 \
+  ${PN}-sqlite3-tests \
+  ${PN}-stringold \
+  ${PN}-subprocess \
+  ${PN}-syslog \
+  ${PN}-terminal \
+  ${PN}-tests \
+  ${PN}-textutils \
+  ${PN}-threading \
+  ${PN}-tkinter \
+  ${PN}-typing \
+  ${PN}-unittest \
+  ${PN}-unixadmin \
+  ${PN}-xml \
+  ${PN}-xmlrpc \
+  ${PN}-modules \
+"
 
 SUMMARY_${PN}-2to3="Python automated Python 2 to 3 code translator"
 RDEPENDS_${PN}-2to3="${PN}-core"
-FILES_${PN}-2to3="${libdir}/python3.5/lib2to3 ${libdir}/python3.5/lib2to3/__pycache__ "
+FILES_${PN}-2to3="\
+  ${libdir}/python3.5/lib2to3 \
+  ${libdir}/python3.5/lib2to3/__pycache__ \
+"
 
 SUMMARY_${PN}-argparse="Python command line argument parser"
 RDEPENDS_${PN}-argparse="${PN}-core ${PN}-codecs ${PN}-textutils"
-FILES_${PN}-argparse="${libdir}/python3.5/argparse.* ${libdir}/python3.5/__pycache__/argparse.* "
+FILES_${PN}-argparse="\
+  ${libdir}/python3.5/argparse.* \
+  ${libdir}/python3.5/__pycache__/argparse.* \
+"
 
 SUMMARY_${PN}-asyncio="Python Asynchronous I/O, event loop, coroutines and tasks"
 RDEPENDS_${PN}-asyncio="${PN}-core"
-FILES_${PN}-asyncio="${libdir}/python3.5/asyncio ${libdir}/python3.5/asyncio/__pycache__ "
+FILES_${PN}-asyncio="\
+  ${libdir}/python3.5/asyncio \
+  ${libdir}/python3.5/asyncio/__pycache__ \
+"
 
 SUMMARY_${PN}-audio="Python Audio Handling"
 RDEPENDS_${PN}-audio="${PN}-core"
-FILES_${PN}-audio="${libdir}/python3.5/wave.* ${libdir}/python3.5/__pycache__/wave.* ${libdir}/python3.5/chunk.* ${libdir}/python3.5/__pycache__/chunk.* ${libdir}/python3.5/sndhdr.* ${libdir}/python3.5/__pycache__/sndhdr.* ${libdir}/python3.5/lib-dynload/ossaudiodev.*.so ${libdir}/python3.5/lib-dynload/__pycache__/ossaudiodev.*.so ${libdir}/python3.5/lib-dynload/audioop.*.so ${libdir}/python3.5/lib-dynload/__pycache__/audioop.*.so ${libdir}/python3.5/audiodev.* ${libdir}/python3.5/__pycache__/audiodev.* ${libdir}/python3.5/sunaudio.* ${libdir}/python3.5/__pycache__/sunaudio.* ${libdir}/python3.5/sunau.* ${libdir}/python3.5/__pycache__/sunau.* ${libdir}/python3.5/toaiff.* ${libdir}/python3.5/__pycache__/toaiff.* "
+FILES_${PN}-audio="\
+  ${libdir}/python3.5/wave.* \
+  ${libdir}/python3.5/__pycache__/wave.* \
+  ${libdir}/python3.5/chunk.* \
+  ${libdir}/python3.5/__pycache__/chunk.* \
+  ${libdir}/python3.5/sndhdr.* \
+  ${libdir}/python3.5/__pycache__/sndhdr.* \
+  ${libdir}/python3.5/lib-dynload/ossaudiodev.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/ossaudiodev.*.so \
+  ${libdir}/python3.5/lib-dynload/audioop.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/audioop.*.so \
+  ${libdir}/python3.5/audiodev.* \
+  ${libdir}/python3.5/__pycache__/audiodev.* \
+  ${libdir}/python3.5/sunaudio.* \
+  ${libdir}/python3.5/__pycache__/sunaudio.* \
+  ${libdir}/python3.5/sunau.* \
+  ${libdir}/python3.5/__pycache__/sunau.* \
+  ${libdir}/python3.5/toaiff.* \
+  ${libdir}/python3.5/__pycache__/toaiff.* \
+"
 
 SUMMARY_${PN}-codecs="Python codecs, encodings & i18n support"
 RDEPENDS_${PN}-codecs="${PN}-core ${PN}-lang"
-FILES_${PN}-codecs="${libdir}/python3.5/codecs.* ${libdir}/python3.5/__pycache__/codecs.* ${libdir}/python3.5/encodings ${libdir}/python3.5/encodings/__pycache__ ${libdir}/python3.5/gettext.* ${libdir}/python3.5/__pycache__/gettext.* ${libdir}/python3.5/locale.* ${libdir}/python3.5/__pycache__/locale.* ${libdir}/python3.5/lib-dynload/_locale.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_locale.*.so ${libdir}/python3.5/lib-dynload/_codecs* ${libdir}/python3.5/lib-dynload/_codecs*/__pycache__ ${libdir}/python3.5/lib-dynload/_multibytecodec.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_multibytecodec.*.so ${libdir}/python3.5/lib-dynload/unicodedata.*.so ${libdir}/python3.5/lib-dynload/__pycache__/unicodedata.*.so ${libdir}/python3.5/stringprep.* ${libdir}/python3.5/__pycache__/stringprep.* ${libdir}/python3.5/xdrlib.* ${libdir}/python3.5/__pycache__/xdrlib.* "
+FILES_${PN}-codecs="\
+  ${libdir}/python3.5/codecs.* \
+  ${libdir}/python3.5/__pycache__/codecs.* \
+  ${libdir}/python3.5/encodings \
+  ${libdir}/python3.5/encodings/__pycache__ \
+  ${libdir}/python3.5/gettext.* \
+  ${libdir}/python3.5/__pycache__/gettext.* \
+  ${libdir}/python3.5/locale.* \
+  ${libdir}/python3.5/__pycache__/locale.* \
+  ${libdir}/python3.5/lib-dynload/_locale.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_locale.*.so \
+  ${libdir}/python3.5/lib-dynload/_codecs* \
+  ${libdir}/python3.5/lib-dynload/_codecs*/__pycache__ \
+  ${libdir}/python3.5/lib-dynload/_multibytecodec.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_multibytecodec.*.so \
+  ${libdir}/python3.5/lib-dynload/unicodedata.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/unicodedata.*.so \
+  ${libdir}/python3.5/stringprep.* \
+  ${libdir}/python3.5/__pycache__/stringprep.* \
+  ${libdir}/python3.5/xdrlib.* \
+  ${libdir}/python3.5/__pycache__/xdrlib.* \
+"
 
 SUMMARY_${PN}-compile="Python bytecode compilation support"
 RDEPENDS_${PN}-compile="${PN}-core"
-FILES_${PN}-compile="${libdir}/python3.5/py_compile.* ${libdir}/python3.5/__pycache__/py_compile.* ${libdir}/python3.5/compileall.* ${libdir}/python3.5/__pycache__/compileall.* "
+FILES_${PN}-compile="\
+  ${libdir}/python3.5/py_compile.* \
+  ${libdir}/python3.5/__pycache__/py_compile.* \
+  ${libdir}/python3.5/compileall.* \
+  ${libdir}/python3.5/__pycache__/compileall.* \
+"
 
 SUMMARY_${PN}-compression="Python high-level compression support"
 RDEPENDS_${PN}-compression="${PN}-core ${PN}-codecs ${PN}-importlib ${PN}-threading ${PN}-shell"
-FILES_${PN}-compression="${libdir}/python3.5/gzip.* ${libdir}/python3.5/__pycache__/gzip.* ${libdir}/python3.5/zipfile.* ${libdir}/python3.5/__pycache__/zipfile.* ${libdir}/python3.5/tarfile.* ${libdir}/python3.5/__pycache__/tarfile.* ${libdir}/python3.5/lib-dynload/bz2.*.so ${libdir}/python3.5/lib-dynload/__pycache__/bz2.*.so ${libdir}/python3.5/lib-dynload/zlib.*.so ${libdir}/python3.5/lib-dynload/__pycache__/zlib.*.so ${libdir}/python3.5/bz2.py ${libdir}/python3.5/__pycache__/bz2.py ${libdir}/python3.5/lzma.py ${libdir}/python3.5/__pycache__/lzma.py ${libdir}/python3.5/_compression.py ${libdir}/python3.5/__pycache__/_compression.py "
+FILES_${PN}-compression="\
+  ${libdir}/python3.5/gzip.* \
+  ${libdir}/python3.5/__pycache__/gzip.* \
+  ${libdir}/python3.5/zipfile.* \
+  ${libdir}/python3.5/__pycache__/zipfile.* \
+  ${libdir}/python3.5/tarfile.* \
+  ${libdir}/python3.5/__pycache__/tarfile.* \
+  ${libdir}/python3.5/lib-dynload/bz2.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/bz2.*.so \
+  ${libdir}/python3.5/lib-dynload/zlib.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/zlib.*.so \
+  ${libdir}/python3.5/bz2.py \
+  ${libdir}/python3.5/__pycache__/bz2.py \
+  ${libdir}/python3.5/lzma.py \
+  ${libdir}/python3.5/__pycache__/lzma.py \
+  ${libdir}/python3.5/_compression.py \
+  ${libdir}/python3.5/__pycache__/_compression.py \
+"
 
 SUMMARY_${PN}-core="Python interpreter and core modules"
 RDEPENDS_${PN}-core="${PN}-lang ${PN}-re ${PN}-reprlib ${PN}-codecs ${PN}-io ${PN}-math"
-FILES_${PN}-core="${libdir}/python3.5/__future__.* ${libdir}/python3.5/__pycache__/__future__.* ${libdir}/python3.5/_abcoll.* ${libdir}/python3.5/__pycache__/_abcoll.* ${libdir}/python3.5/abc.* ${libdir}/python3.5/__pycache__/abc.* ${libdir}/python3.5/ast.* ${libdir}/python3.5/__pycache__/ast.* ${libdir}/python3.5/copy.* ${libdir}/python3.5/__pycache__/copy.* ${libdir}/python3.5/copyreg.* ${libdir}/python3.5/__pycache__/copyreg.* ${libdir}/python3.5/configparser.* ${libdir}/python3.5/__pycache__/configparser.* ${libdir}/python3.5/genericpath.* ${libdir}/python3.5/__pycache__/genericpath.* ${libdir}/python3.5/getopt.* ${libdir}/python3.5/__pycache__/getopt.* ${libdir}/python3.5/linecache.* ${libdir}/python3.5/__pycache__/linecache.* ${libdir}/python3.5/new.* ${libdir}/python3.5/__pycache__/new.* ${libdir}/python3.5/os.* ${libdir}/python3.5/__pycache__/os.* ${libdir}/python3.5/posixpath.* ${libdir}/python3.5/__pycache__/posixpath.* ${libdir}/python3.5/struct.* ${libdir}/python3.5/__pycache__/struct.* ${libdir}/python3.5/warnings.* ${libdir}/python3.5/__pycache__/warnings.* ${libdir}/python3.5/site.* ${libdir}/python3.5/__pycache__/site.* ${libdir}/python3.5/stat.* ${libdir}/python3.5/__pycache__/stat.* ${libdir}/python3.5/UserDict.* ${libdir}/python3.5/__pycache__/UserDict.* ${libdir}/python3.5/UserList.* ${libdir}/python3.5/__pycache__/UserList.* ${libdir}/python3.5/UserString.* ${libdir}/python3.5/__pycache__/UserString.* ${libdir}/python3.5/lib-dynload/binascii.*.so ${libdir}/python3.5/lib-dynload/__pycache__/binascii.*.so ${libdir}/python3.5/lib-dynload/_struct.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_struct.*.so ${libdir}/python3.5/lib-dynload/time.*.so ${libdir}/python3.5/lib-dynload/__pycache__/time.*.so ${libdir}/python3.5/lib-dynload/xreadlines.*.so ${libdir}/python3.5/lib-dynload/__pycache__/xreadlines.*.so ${libdir}/python3.5/types.* ${libdir}/python3.5/__pycache__/types.* ${libdir}/python3.5/platform.* ${libdir}/python3.5/__pycache__/platform.* ${bindir}/python* ${libdir}/python3.5/_weakrefset.* ${libdir}/python3.5/__pycache__/_weakrefset.* ${libdir}/python3.5/sysconfig.* ${libdir}/python3.5/__pycache__/sysconfig.* ${libdir}/python3.5/_sysconfigdata.* ${libdir}/python3.5/__pycache__/_sysconfigdata.* ${includedir}/python${PYTHON_BINABI}/pyconfig*.h ${libdir}/python${PYTHON_MAJMIN}/collections ${libdir}/python${PYTHON_MAJMIN}/_collections_abc.* ${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.* ${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py "
+FILES_${PN}-core="\
+  ${libdir}/python3.5/__future__.* \
+  ${libdir}/python3.5/__pycache__/__future__.* \
+  ${libdir}/python3.5/_abcoll.* \
+  ${libdir}/python3.5/__pycache__/_abcoll.* \
+  ${libdir}/python3.5/abc.* \
+  ${libdir}/python3.5/__pycache__/abc.* \
+  ${libdir}/python3.5/ast.* \
+  ${libdir}/python3.5/__pycache__/ast.* \
+  ${libdir}/python3.5/copy.* \
+  ${libdir}/python3.5/__pycache__/copy.* \
+  ${libdir}/python3.5/copyreg.* \
+  ${libdir}/python3.5/__pycache__/copyreg.* \
+  ${libdir}/python3.5/configparser.* \
+  ${libdir}/python3.5/__pycache__/configparser.* \
+  ${libdir}/python3.5/genericpath.* \
+  ${libdir}/python3.5/__pycache__/genericpath.* \
+  ${libdir}/python3.5/getopt.* \
+  ${libdir}/python3.5/__pycache__/getopt.* \
+  ${libdir}/python3.5/linecache.* \
+  ${libdir}/python3.5/__pycache__/linecache.* \
+  ${libdir}/python3.5/new.* \
+  ${libdir}/python3.5/__pycache__/new.* \
+  ${libdir}/python3.5/os.* \
+  ${libdir}/python3.5/__pycache__/os.* \
+  ${libdir}/python3.5/posixpath.* \
+  ${libdir}/python3.5/__pycache__/posixpath.* \
+  ${libdir}/python3.5/struct.* \
+  ${libdir}/python3.5/__pycache__/struct.* \
+  ${libdir}/python3.5/warnings.* \
+  ${libdir}/python3.5/__pycache__/warnings.* \
+  ${libdir}/python3.5/site.* \
+  ${libdir}/python3.5/__pycache__/site.* \
+  ${libdir}/python3.5/stat.* \
+  ${libdir}/python3.5/__pycache__/stat.* \
+  ${libdir}/python3.5/UserDict.* \
+  ${libdir}/python3.5/__pycache__/UserDict.* \
+  ${libdir}/python3.5/UserList.* \
+  ${libdir}/python3.5/__pycache__/UserList.* \
+  ${libdir}/python3.5/UserString.* \
+  ${libdir}/python3.5/__pycache__/UserString.* \
+  ${libdir}/python3.5/lib-dynload/binascii.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/binascii.*.so \
+  ${libdir}/python3.5/lib-dynload/_struct.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_struct.*.so \
+  ${libdir}/python3.5/lib-dynload/time.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/time.*.so \
+  ${libdir}/python3.5/lib-dynload/xreadlines.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/xreadlines.*.so \
+  ${libdir}/python3.5/types.* \
+  ${libdir}/python3.5/__pycache__/types.* \
+  ${libdir}/python3.5/platform.* \
+  ${libdir}/python3.5/__pycache__/platform.* \
+  ${bindir}/python* \
+  ${libdir}/python3.5/_weakrefset.* \
+  ${libdir}/python3.5/__pycache__/_weakrefset.* \
+  ${libdir}/python3.5/sysconfig.* \
+  ${libdir}/python3.5/__pycache__/sysconfig.* \
+  ${libdir}/python3.5/_sysconfigdata.* \
+  ${libdir}/python3.5/__pycache__/_sysconfigdata.* \
+  ${includedir}/python${PYTHON_BINABI}/pyconfig*.h \
+  ${libdir}/python${PYTHON_MAJMIN}/collections \
+  ${libdir}/python${PYTHON_MAJMIN}/_collections_abc.* \
+  ${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.* \
+  ${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py \
+"
 
 SUMMARY_${PN}-crypt="Python basic cryptographic and hashing support"
 RDEPENDS_${PN}-crypt="${PN}-core"
-FILES_${PN}-crypt="${libdir}/python3.5/hashlib.* ${libdir}/python3.5/__pycache__/hashlib.* ${libdir}/python3.5/md5.* ${libdir}/python3.5/__pycache__/md5.* ${libdir}/python3.5/sha.* ${libdir}/python3.5/__pycache__/sha.* ${libdir}/python3.5/lib-dynload/crypt.*.so ${libdir}/python3.5/lib-dynload/__pycache__/crypt.*.so ${libdir}/python3.5/lib-dynload/_hashlib.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_hashlib.*.so ${libdir}/python3.5/lib-dynload/_sha256.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_sha256.*.so ${libdir}/python3.5/lib-dynload/_sha512.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_sha512.*.so "
+FILES_${PN}-crypt="\
+  ${libdir}/python3.5/hashlib.* \
+  ${libdir}/python3.5/__pycache__/hashlib.* \
+  ${libdir}/python3.5/md5.* \
+  ${libdir}/python3.5/__pycache__/md5.* \
+  ${libdir}/python3.5/sha.* \
+  ${libdir}/python3.5/__pycache__/sha.* \
+  ${libdir}/python3.5/lib-dynload/crypt.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/crypt.*.so \
+  ${libdir}/python3.5/lib-dynload/_hashlib.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_hashlib.*.so \
+  ${libdir}/python3.5/lib-dynload/_sha256.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_sha256.*.so \
+  ${libdir}/python3.5/lib-dynload/_sha512.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_sha512.*.so \
+"
 
 SUMMARY_${PN}-ctypes="Python C types support"
 RDEPENDS_${PN}-ctypes="${PN}-core ${PN}-subprocess"
-FILES_${PN}-ctypes="${libdir}/python3.5/ctypes ${libdir}/python3.5/ctypes/__pycache__ ${libdir}/python3.5/lib-dynload/_ctypes.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_ctypes.*.so ${libdir}/python3.5/lib-dynload/_ctypes_test.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_ctypes_test.*.so "
+FILES_${PN}-ctypes="\
+  ${libdir}/python3.5/ctypes \
+  ${libdir}/python3.5/ctypes/__pycache__ \
+  ${libdir}/python3.5/lib-dynload/_ctypes.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_ctypes.*.so \
+  ${libdir}/python3.5/lib-dynload/_ctypes_test.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_ctypes_test.*.so \
+"
 
 SUMMARY_${PN}-curses="Python curses support"
 RDEPENDS_${PN}-curses="${PN}-core"
-FILES_${PN}-curses="${libdir}/python3.5/curses ${libdir}/python3.5/curses/__pycache__ ${libdir}/python3.5/lib-dynload/_curses.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_curses.*.so ${libdir}/python3.5/lib-dynload/_curses_panel.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_curses_panel.*.so "
+FILES_${PN}-curses="\
+  ${libdir}/python3.5/curses \
+  ${libdir}/python3.5/curses/__pycache__ \
+  ${libdir}/python3.5/lib-dynload/_curses.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_curses.*.so \
+  ${libdir}/python3.5/lib-dynload/_curses_panel.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_curses_panel.*.so \
+"
 
 SUMMARY_${PN}-datetime="Python calendar and time support"
 RDEPENDS_${PN}-datetime="${PN}-core ${PN}-codecs"
-FILES_${PN}-datetime="${libdir}/python3.5/_strptime.* ${libdir}/python3.5/__pycache__/_strptime.* ${libdir}/python3.5/calendar.* ${libdir}/python3.5/__pycache__/calendar.* ${libdir}/python3.5/datetime.* ${libdir}/python3.5/__pycache__/datetime.* ${libdir}/python3.5/lib-dynload/_datetime.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_datetime.*.so "
+FILES_${PN}-datetime="\
+  ${libdir}/python3.5/_strptime.* \
+  ${libdir}/python3.5/__pycache__/_strptime.* \
+  ${libdir}/python3.5/calendar.* \
+  ${libdir}/python3.5/__pycache__/calendar.* \
+  ${libdir}/python3.5/datetime.* \
+  ${libdir}/python3.5/__pycache__/datetime.* \
+  ${libdir}/python3.5/lib-dynload/_datetime.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_datetime.*.so \
+"
 
 SUMMARY_${PN}-db="Python file-based database support"
 RDEPENDS_${PN}-db="${PN}-core"
-FILES_${PN}-db="${libdir}/python3.5/anydbm.* ${libdir}/python3.5/__pycache__/anydbm.* ${libdir}/python3.5/dumbdbm.* ${libdir}/python3.5/__pycache__/dumbdbm.* ${libdir}/python3.5/whichdb.* ${libdir}/python3.5/__pycache__/whichdb.* ${libdir}/python3.5/dbm ${libdir}/python3.5/dbm/__pycache__ ${libdir}/python3.5/lib-dynload/_dbm.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_dbm.*.so "
+FILES_${PN}-db="\
+  ${libdir}/python3.5/anydbm.* \
+  ${libdir}/python3.5/__pycache__/anydbm.* \
+  ${libdir}/python3.5/dumbdbm.* \
+  ${libdir}/python3.5/__pycache__/dumbdbm.* \
+  ${libdir}/python3.5/whichdb.* \
+  ${libdir}/python3.5/__pycache__/whichdb.* \
+  ${libdir}/python3.5/dbm \
+  ${libdir}/python3.5/dbm/__pycache__ \
+  ${libdir}/python3.5/lib-dynload/_dbm.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_dbm.*.so \
+"
 
 SUMMARY_${PN}-debugger="Python debugger"
 RDEPENDS_${PN}-debugger="${PN}-core ${PN}-io ${PN}-lang ${PN}-re ${PN}-stringold ${PN}-shell ${PN}-pprint ${PN}-importlib ${PN}-pkgutil"
-FILES_${PN}-debugger="${libdir}/python3.5/bdb.* ${libdir}/python3.5/__pycache__/bdb.* ${libdir}/python3.5/pdb.* ${libdir}/python3.5/__pycache__/pdb.* "
+FILES_${PN}-debugger="\
+  ${libdir}/python3.5/bdb.* \
+  ${libdir}/python3.5/__pycache__/bdb.* \
+  ${libdir}/python3.5/pdb.* \
+  ${libdir}/python3.5/__pycache__/pdb.* \
+"
 
 SUMMARY_${PN}-dev="Python development package"
 RDEPENDS_${PN}-dev="${PN}-core"
-FILES_${PN}-dev="${includedir} ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la ${libdir}/*.a ${libdir}/*.o ${libdir}/pkgconfig ${base_libdir}/*.a ${base_libdir}/*.o ${datadir}/aclocal ${datadir}/pkgconfig ${libdir}/python3.5/config*/Makefile ${libdir}/python3.5/config*/Makefile/__pycache__ "
+FILES_${PN}-dev="\
+  ${includedir} \
+  ${libdir}/lib*${SOLIBSDEV} \
+  ${libdir}/*.la \
+  ${libdir}/*.a \
+  ${libdir}/*.o \
+  ${libdir}/pkgconfig \
+  ${base_libdir}/*.a \
+  ${base_libdir}/*.o \
+  ${datadir}/aclocal \
+  ${datadir}/pkgconfig \
+  ${libdir}/python3.5/config*/Makefile \
+  ${libdir}/python3.5/config*/Makefile/__pycache__ \
+"
 
 SUMMARY_${PN}-difflib="Python helpers for computing deltas between objects"
 RDEPENDS_${PN}-difflib="${PN}-lang ${PN}-re"
-FILES_${PN}-difflib="${libdir}/python3.5/difflib.* ${libdir}/python3.5/__pycache__/difflib.* "
+FILES_${PN}-difflib="\
+  ${libdir}/python3.5/difflib.* \
+  ${libdir}/python3.5/__pycache__/difflib.* \
+"
 
 SUMMARY_${PN}-distutils="Python Distribution Utilities"
 RDEPENDS_${PN}-distutils="${PN}-core ${PN}-email"
-FILES_${PN}-distutils="${libdir}/python3.5/config ${libdir}/python3.5/config/__pycache__ ${libdir}/python3.5/distutils ${libdir}/python3.5/distutils/__pycache__ "
+FILES_${PN}-distutils="\
+  ${libdir}/python3.5/config \
+  ${libdir}/python3.5/config/__pycache__ \
+  ${libdir}/python3.5/distutils \
+  ${libdir}/python3.5/distutils/__pycache__ \
+"
 
 SUMMARY_${PN}-distutils-staticdev="Python distribution utilities (static libraries)"
 RDEPENDS_${PN}-distutils-staticdev="${PN}-distutils"
-FILES_${PN}-distutils-staticdev="${libdir}/python3.5/config/lib*.a ${libdir}/python3.5/config/__pycache__/lib*.a "
+FILES_${PN}-distutils-staticdev="\
+  ${libdir}/python3.5/config/lib*.a \
+  ${libdir}/python3.5/config/__pycache__/lib*.a \
+"
 
 SUMMARY_${PN}-doctest="Python framework for running examples in docstrings"
 RDEPENDS_${PN}-doctest="${PN}-core ${PN}-lang ${PN}-io ${PN}-re ${PN}-unittest ${PN}-debugger ${PN}-difflib"
-FILES_${PN}-doctest="${libdir}/python3.5/doctest.* ${libdir}/python3.5/__pycache__/doctest.* "
+FILES_${PN}-doctest="\
+  ${libdir}/python3.5/doctest.* \
+  ${libdir}/python3.5/__pycache__/doctest.* \
+"
 
 SUMMARY_${PN}-email="Python email support"
 RDEPENDS_${PN}-email="${PN}-core ${PN}-io ${PN}-re ${PN}-mime ${PN}-audio ${PN}-image ${PN}-netclient"
-FILES_${PN}-email="${libdir}/python3.5/imaplib.* ${libdir}/python3.5/__pycache__/imaplib.* ${libdir}/python3.5/email ${libdir}/python3.5/email/__pycache__ "
+FILES_${PN}-email="\
+  ${libdir}/python3.5/imaplib.* \
+  ${libdir}/python3.5/__pycache__/imaplib.* \
+  ${libdir}/python3.5/email \
+  ${libdir}/python3.5/email/__pycache__ \
+"
 
 SUMMARY_${PN}-enum="Python support for enumerations"
 RDEPENDS_${PN}-enum="${PN}-core"
-FILES_${PN}-enum="${libdir}/python3.5/enum.* ${libdir}/python3.5/__pycache__/enum.* "
+FILES_${PN}-enum="\
+  ${libdir}/python3.5/enum.* \
+  ${libdir}/python3.5/__pycache__/enum.* \
+"
 
 SUMMARY_${PN}-fcntl="Python's fcntl interface"
 RDEPENDS_${PN}-fcntl="${PN}-core"
-FILES_${PN}-fcntl="${libdir}/python3.5/lib-dynload/fcntl.*.so ${libdir}/python3.5/lib-dynload/__pycache__/fcntl.*.so "
+FILES_${PN}-fcntl="\
+  ${libdir}/python3.5/lib-dynload/fcntl.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/fcntl.*.so \
+"
 
 SUMMARY_${PN}-gdbm="Python GNU database support"
 RDEPENDS_${PN}-gdbm="${PN}-core"
-FILES_${PN}-gdbm="${libdir}/python3.5/lib-dynload/_gdbm.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_gdbm.*.so "
+FILES_${PN}-gdbm="\
+  ${libdir}/python3.5/lib-dynload/_gdbm.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_gdbm.*.so \
+"
 
 SUMMARY_${PN}-html="Python HTML processing support"
 RDEPENDS_${PN}-html="${PN}-core"
-FILES_${PN}-html="${libdir}/python3.5/formatter.* ${libdir}/python3.5/__pycache__/formatter.* ${libdir}/python3.5/htmlentitydefs.* ${libdir}/python3.5/__pycache__/htmlentitydefs.* ${libdir}/python3.5/html ${libdir}/python3.5/html/__pycache__ ${libdir}/python3.5/htmllib.* ${libdir}/python3.5/__pycache__/htmllib.* ${libdir}/python3.5/markupbase.* ${libdir}/python3.5/__pycache__/markupbase.* ${libdir}/python3.5/sgmllib.* ${libdir}/python3.5/__pycache__/sgmllib.* ${libdir}/python3.5/HTMLParser.* ${libdir}/python3.5/__pycache__/HTMLParser.* "
+FILES_${PN}-html="\
+  ${libdir}/python3.5/formatter.* \
+  ${libdir}/python3.5/__pycache__/formatter.* \
+  ${libdir}/python3.5/htmlentitydefs.* \
+  ${libdir}/python3.5/__pycache__/htmlentitydefs.* \
+  ${libdir}/python3.5/html \
+  ${libdir}/python3.5/html/__pycache__ \
+  ${libdir}/python3.5/htmllib.* \
+  ${libdir}/python3.5/__pycache__/htmllib.* \
+  ${libdir}/python3.5/markupbase.* \
+  ${libdir}/python3.5/__pycache__/markupbase.* \
+  ${libdir}/python3.5/sgmllib.* \
+  ${libdir}/python3.5/__pycache__/sgmllib.* \
+  ${libdir}/python3.5/HTMLParser.* \
+  ${libdir}/python3.5/__pycache__/HTMLParser.* \
+"
 
 SUMMARY_${PN}-idle="Python Integrated Development Environment"
 RDEPENDS_${PN}-idle="${PN}-core ${PN}-tkinter"
-FILES_${PN}-idle="${bindir}/idle ${libdir}/python3.5/idlelib ${libdir}/python3.5/idlelib/__pycache__ "
+FILES_${PN}-idle="\
+  ${bindir}/idle \
+  ${libdir}/python3.5/idlelib \
+  ${libdir}/python3.5/idlelib/__pycache__ \
+"
 
 SUMMARY_${PN}-image="Python graphical image handling"
 RDEPENDS_${PN}-image="${PN}-core"
-FILES_${PN}-image="${libdir}/python3.5/colorsys.* ${libdir}/python3.5/__pycache__/colorsys.* ${libdir}/python3.5/imghdr.* ${libdir}/python3.5/__pycache__/imghdr.* ${libdir}/python3.5/lib-dynload/imageop.*.so ${libdir}/python3.5/lib-dynload/__pycache__/imageop.*.so ${libdir}/python3.5/lib-dynload/rgbimg.*.so ${libdir}/python3.5/lib-dynload/__pycache__/rgbimg.*.so "
+FILES_${PN}-image="\
+  ${libdir}/python3.5/colorsys.* \
+  ${libdir}/python3.5/__pycache__/colorsys.* \
+  ${libdir}/python3.5/imghdr.* \
+  ${libdir}/python3.5/__pycache__/imghdr.* \
+  ${libdir}/python3.5/lib-dynload/imageop.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/imageop.*.so \
+  ${libdir}/python3.5/lib-dynload/rgbimg.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/rgbimg.*.so \
+"
 
 SUMMARY_${PN}-importlib="Python import implementation library"
 RDEPENDS_${PN}-importlib="${PN}-core ${PN}-lang"
-FILES_${PN}-importlib="${libdir}/python3.5/importlib ${libdir}/python3.5/importlib/__pycache__ ${libdir}/python3.5/imp.* ${libdir}/python3.5/__pycache__/imp.* "
+FILES_${PN}-importlib="\
+  ${libdir}/python3.5/importlib \
+  ${libdir}/python3.5/importlib/__pycache__ \
+  ${libdir}/python3.5/imp.* \
+  ${libdir}/python3.5/__pycache__/imp.* \
+"
 
 SUMMARY_${PN}-io="Python low-level I/O"
 RDEPENDS_${PN}-io="${PN}-core ${PN}-math"
-FILES_${PN}-io="${libdir}/python3.5/lib-dynload/_socket.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_socket.*.so ${libdir}/python3.5/lib-dynload/_io.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_io.*.so ${libdir}/python3.5/lib-dynload/_ssl.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_ssl.*.so ${libdir}/python3.5/lib-dynload/select.*.so ${libdir}/python3.5/lib-dynload/__pycache__/select.*.so ${libdir}/python3.5/lib-dynload/termios.*.so ${libdir}/python3.5/lib-dynload/__pycache__/termios.*.so ${libdir}/python3.5/lib-dynload/cStringIO.*.so ${libdir}/python3.5/lib-dynload/__pycache__/cStringIO.*.so ${libdir}/python3.5/ipaddress.* ${libdir}/python3.5/__pycache__/ipaddress.* ${libdir}/python3.5/pipes.* ${libdir}/python3.5/__pycache__/pipes.* ${libdir}/python3.5/socket.* ${libdir}/python3.5/__pycache__/socket.* ${libdir}/python3.5/ssl.* ${libdir}/python3.5/__pycache__/ssl.* ${libdir}/python3.5/tempfile.* ${libdir}/python3.5/__pycache__/tempfile.* ${libdir}/python3.5/StringIO.* ${libdir}/python3.5/__pycache__/StringIO.* ${libdir}/python3.5/io.* ${libdir}/python3.5/__pycache__/io.* ${libdir}/python3.5/_pyio.* ${libdir}/python3.5/__pycache__/_pyio.* "
+FILES_${PN}-io="\
+  ${libdir}/python3.5/lib-dynload/_socket.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_socket.*.so \
+  ${libdir}/python3.5/lib-dynload/_io.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_io.*.so \
+  ${libdir}/python3.5/lib-dynload/_ssl.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_ssl.*.so \
+  ${libdir}/python3.5/lib-dynload/select.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/select.*.so \
+  ${libdir}/python3.5/lib-dynload/termios.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/termios.*.so \
+  ${libdir}/python3.5/lib-dynload/cStringIO.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/cStringIO.*.so \
+  ${libdir}/python3.5/ipaddress.* \
+  ${libdir}/python3.5/__pycache__/ipaddress.* \
+  ${libdir}/python3.5/pipes.* \
+  ${libdir}/python3.5/__pycache__/pipes.* \
+  ${libdir}/python3.5/socket.* \
+  ${libdir}/python3.5/__pycache__/socket.* \
+  ${libdir}/python3.5/ssl.* \
+  ${libdir}/python3.5/__pycache__/ssl.* \
+  ${libdir}/python3.5/tempfile.* \
+  ${libdir}/python3.5/__pycache__/tempfile.* \
+  ${libdir}/python3.5/StringIO.* \
+  ${libdir}/python3.5/__pycache__/StringIO.* \
+  ${libdir}/python3.5/io.* \
+  ${libdir}/python3.5/__pycache__/io.* \
+  ${libdir}/python3.5/_pyio.* \
+  ${libdir}/python3.5/__pycache__/_pyio.* \
+"
 
 SUMMARY_${PN}-json="Python JSON support"
 RDEPENDS_${PN}-json="${PN}-core ${PN}-math ${PN}-re"
-FILES_${PN}-json="${libdir}/python3.5/json ${libdir}/python3.5/json/__pycache__ ${libdir}/python3.5/lib-dynload/_json.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_json.*.so "
+FILES_${PN}-json="\
+  ${libdir}/python3.5/json \
+  ${libdir}/python3.5/json/__pycache__ \
+  ${libdir}/python3.5/lib-dynload/_json.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_json.*.so \
+"
 
 SUMMARY_${PN}-lang="Python low-level language support"
 RDEPENDS_${PN}-lang="${PN}-core ${PN}-importlib"
-FILES_${PN}-lang="${libdir}/python3.5/lib-dynload/_bisect.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_bisect.*.so ${libdir}/python3.5/lib-dynload/_collections.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_collections.*.so ${libdir}/python3.5/lib-dynload/_heapq.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_heapq.*.so ${libdir}/python3.5/lib-dynload/_weakref.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_weakref.*.so ${libdir}/python3.5/lib-dynload/_functools.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_functools.*.so ${libdir}/python3.5/lib-dynload/array.*.so ${libdir}/python3.5/lib-dynload/__pycache__/array.*.so ${libdir}/python3.5/lib-dynload/itertools.*.so ${libdir}/python3.5/lib-dynload/__pycache__/itertools.*.so ${libdir}/python3.5/lib-dynload/operator.*.so ${libdir}/python3.5/lib-dynload/__pycache__/operator.*.so ${libdir}/python3.5/lib-dynload/parser.*.so ${libdir}/python3.5/lib-dynload/__pycache__/parser.*.so ${libdir}/python3.5/atexit.* ${libdir}/python3.5/__pycache__/atexit.* ${libdir}/python3.5/bisect.* ${libdir}/python3.5/__pycache__/bisect.* ${libdir}/python3.5/code.* ${libdir}/python3.5/__pycache__/code.* ${libdir}/python3.5/codeop.* ${libdir}/python3.5/__pycache__/codeop.* ${libdir}/python3.5/collections.* ${libdir}/python3.5/__pycache__/collections.* ${libdir}/python3.5/_collections_abc.* ${libdir}/python3.5/__pycache__/_collections_abc.* ${libdir}/python3.5/contextlib.* ${libdir}/python3.5/__pycache__/contextlib.* ${libdir}/python3.5/dis.* ${libdir}/python3.5/__pycache__/dis.* ${libdir}/python3.5/functools.* ${libdir}/python3.5/__pycache__/functools.* ${libdir}/python3.5/heapq.* ${libdir}/python3.5/__pycache__/heapq.* ${libdir}/python3.5/inspect.* ${libdir}/python3.5/__pycache__/inspect.* ${libdir}/python3.5/keyword.* ${libdir}/python3.5/__pycache__/keyword.* ${libdir}/python3.5/opcode.* ${libdir}/python3.5/__pycache__/opcode.* ${libdir}/python3.5/operator.* ${libdir}/python3.5/__pycache__/operator.* ${libdir}/python3.5/symbol.* ${libdir}/python3.5/__pycache__/symbol.* ${libdir}/python3.5/repr.* ${libdir}/python3.5/__pycache__/repr.* ${libdir}/python3.5/token.* ${libdir}/python3.5/__pycache__/token.* ${libdir}/python3.5/tokenize.* ${libdir}/python3.5/__pycache__/tokenize.* ${libdir}/python3.5/traceback.* ${libdir}/python3.5/__pycache__/traceback.* ${libdir}/python3.5/weakref.* ${libdir}/python3.5/__pycache__/weakref.* "
+FILES_${PN}-lang="\
+  ${libdir}/python3.5/lib-dynload/_bisect.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_bisect.*.so \
+  ${libdir}/python3.5/lib-dynload/_collections.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_collections.*.so \
+  ${libdir}/python3.5/lib-dynload/_heapq.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_heapq.*.so \
+  ${libdir}/python3.5/lib-dynload/_weakref.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_weakref.*.so \
+  ${libdir}/python3.5/lib-dynload/_functools.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_functools.*.so \
+  ${libdir}/python3.5/lib-dynload/array.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/array.*.so \
+  ${libdir}/python3.5/lib-dynload/itertools.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/itertools.*.so \
+  ${libdir}/python3.5/lib-dynload/operator.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/operator.*.so \
+  ${libdir}/python3.5/lib-dynload/parser.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/parser.*.so \
+  ${libdir}/python3.5/atexit.* \
+  ${libdir}/python3.5/__pycache__/atexit.* \
+  ${libdir}/python3.5/bisect.* \
+  ${libdir}/python3.5/__pycache__/bisect.* \
+  ${libdir}/python3.5/code.* \
+  ${libdir}/python3.5/__pycache__/code.* \
+  ${libdir}/python3.5/codeop.* \
+  ${libdir}/python3.5/__pycache__/codeop.* \
+  ${libdir}/python3.5/collections.* \
+  ${libdir}/python3.5/__pycache__/collections.* \
+  ${libdir}/python3.5/_collections_abc.* \
+  ${libdir}/python3.5/__pycache__/_collections_abc.* \
+  ${libdir}/python3.5/contextlib.* \
+  ${libdir}/python3.5/__pycache__/contextlib.* \
+  ${libdir}/python3.5/dis.* \
+  ${libdir}/python3.5/__pycache__/dis.* \
+  ${libdir}/python3.5/functools.* \
+  ${libdir}/python3.5/__pycache__/functools.* \
+  ${libdir}/python3.5/heapq.* \
+  ${libdir}/python3.5/__pycache__/heapq.* \
+  ${libdir}/python3.5/inspect.* \
+  ${libdir}/python3.5/__pycache__/inspect.* \
+  ${libdir}/python3.5/keyword.* \
+  ${libdir}/python3.5/__pycache__/keyword.* \
+  ${libdir}/python3.5/opcode.* \
+  ${libdir}/python3.5/__pycache__/opcode.* \
+  ${libdir}/python3.5/operator.* \
+  ${libdir}/python3.5/__pycache__/operator.* \
+  ${libdir}/python3.5/symbol.* \
+  ${libdir}/python3.5/__pycache__/symbol.* \
+  ${libdir}/python3.5/repr.* \
+  ${libdir}/python3.5/__pycache__/repr.* \
+  ${libdir}/python3.5/token.* \
+  ${libdir}/python3.5/__pycache__/token.* \
+  ${libdir}/python3.5/tokenize.* \
+  ${libdir}/python3.5/__pycache__/tokenize.* \
+  ${libdir}/python3.5/traceback.* \
+  ${libdir}/python3.5/__pycache__/traceback.* \
+  ${libdir}/python3.5/weakref.* \
+  ${libdir}/python3.5/__pycache__/weakref.* \
+"
 
 SUMMARY_${PN}-logging="Python logging support"
 RDEPENDS_${PN}-logging="${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-stringold"
-FILES_${PN}-logging="${libdir}/python3.5/logging ${libdir}/python3.5/logging/__pycache__ "
+FILES_${PN}-logging="\
+  ${libdir}/python3.5/logging \
+  ${libdir}/python3.5/logging/__pycache__ \
+"
 
 SUMMARY_${PN}-mailbox="Python mailbox format support"
 RDEPENDS_${PN}-mailbox="${PN}-core ${PN}-mime"
-FILES_${PN}-mailbox="${libdir}/python3.5/mailbox.* ${libdir}/python3.5/__pycache__/mailbox.* "
+FILES_${PN}-mailbox="\
+  ${libdir}/python3.5/mailbox.* \
+  ${libdir}/python3.5/__pycache__/mailbox.* \
+"
 
 SUMMARY_${PN}-math="Python math support"
 RDEPENDS_${PN}-math="${PN}-core ${PN}-crypt"
-FILES_${PN}-math="${libdir}/python3.5/lib-dynload/cmath.*.so ${libdir}/python3.5/lib-dynload/__pycache__/cmath.*.so ${libdir}/python3.5/lib-dynload/math.*.so ${libdir}/python3.5/lib-dynload/__pycache__/math.*.so ${libdir}/python3.5/lib-dynload/_random.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_random.*.so ${libdir}/python3.5/random.* ${libdir}/python3.5/__pycache__/random.* ${libdir}/python3.5/sets.* ${libdir}/python3.5/__pycache__/sets.* "
+FILES_${PN}-math="\
+  ${libdir}/python3.5/lib-dynload/cmath.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/cmath.*.so \
+  ${libdir}/python3.5/lib-dynload/math.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/math.*.so \
+  ${libdir}/python3.5/lib-dynload/_random.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_random.*.so \
+  ${libdir}/python3.5/random.* \
+  ${libdir}/python3.5/__pycache__/random.* \
+  ${libdir}/python3.5/sets.* \
+  ${libdir}/python3.5/__pycache__/sets.* \
+"
 
 SUMMARY_${PN}-mime="Python MIME handling APIs"
 RDEPENDS_${PN}-mime="${PN}-core ${PN}-io"
-FILES_${PN}-mime="${libdir}/python3.5/mimetools.* ${libdir}/python3.5/__pycache__/mimetools.* ${libdir}/python3.5/uu.* ${libdir}/python3.5/__pycache__/uu.* ${libdir}/python3.5/quopri.* ${libdir}/python3.5/__pycache__/quopri.* ${libdir}/python3.5/rfc822.* ${libdir}/python3.5/__pycache__/rfc822.* ${libdir}/python3.5/MimeWriter.* ${libdir}/python3.5/__pycache__/MimeWriter.* "
+FILES_${PN}-mime="\
+  ${libdir}/python3.5/mimetools.* \
+  ${libdir}/python3.5/__pycache__/mimetools.* \
+  ${libdir}/python3.5/uu.* \
+  ${libdir}/python3.5/__pycache__/uu.* \
+  ${libdir}/python3.5/quopri.* \
+  ${libdir}/python3.5/__pycache__/quopri.* \
+  ${libdir}/python3.5/rfc822.* \
+  ${libdir}/python3.5/__pycache__/rfc822.* \
+  ${libdir}/python3.5/MimeWriter.* \
+  ${libdir}/python3.5/__pycache__/MimeWriter.* \
+"
 
 SUMMARY_${PN}-mmap="Python memory-mapped file support"
 RDEPENDS_${PN}-mmap="${PN}-core ${PN}-io"
-FILES_${PN}-mmap="${libdir}/python3.5/lib-dynload/mmap.*.so ${libdir}/python3.5/lib-dynload/__pycache__/mmap.*.so "
+FILES_${PN}-mmap="\
+  ${libdir}/python3.5/lib-dynload/mmap.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/mmap.*.so \
+"
 
 SUMMARY_${PN}-multiprocessing="Python multiprocessing support"
 RDEPENDS_${PN}-multiprocessing="${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-threading ${PN}-ctypes ${PN}-mmap"
-FILES_${PN}-multiprocessing="${libdir}/python3.5/lib-dynload/_multiprocessing.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_multiprocessing.*.so ${libdir}/python3.5/multiprocessing ${libdir}/python3.5/multiprocessing/__pycache__ "
+FILES_${PN}-multiprocessing="\
+  ${libdir}/python3.5/lib-dynload/_multiprocessing.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_multiprocessing.*.so \
+  ${libdir}/python3.5/multiprocessing \
+  ${libdir}/python3.5/multiprocessing/__pycache__ \
+"
 
 SUMMARY_${PN}-netclient="Python Internet Protocol clients"
 RDEPENDS_${PN}-netclient="${PN}-argparse ${PN}-core ${PN}-crypt ${PN}-datetime ${PN}-io ${PN}-lang ${PN}-logging ${PN}-mime ${PN}-html"
-FILES_${PN}-netclient="${libdir}/python3.5/*Cookie*.* ${libdir}/python3.5/__pycache__/*Cookie*.* ${libdir}/python3.5/base64.* ${libdir}/python3.5/__pycache__/base64.* ${libdir}/python3.5/cookielib.* ${libdir}/python3.5/__pycache__/cookielib.* ${libdir}/python3.5/ftplib.* ${libdir}/python3.5/__pycache__/ftplib.* ${libdir}/python3.5/gopherlib.* ${libdir}/python3.5/__pycache__/gopherlib.* ${libdir}/python3.5/hmac.* ${libdir}/python3.5/__pycache__/hmac.* ${libdir}/python3.5/http* ${libdir}/python3.5/http*/__pycache__ ${libdir}/python3.5/httplib.* ${libdir}/python3.5/__pycache__/httplib.* ${libdir}/python3.5/mimetypes.* ${libdir}/python3.5/__pycache__/mimetypes.* ${libdir}/python3.5/nntplib.* ${libdir}/python3.5/__pycache__/nntplib.* ${libdir}/python3.5/poplib.* ${libdir}/python3.5/__pycache__/poplib.* ${libdir}/python3.5/smtplib.* ${libdir}/python3.5/__pycache__/smtplib.* ${libdir}/python3.5/telnetlib.* ${libdir}/python3.5/__pycache__/telnetlib.* ${libdir}/python3.5/urllib ${libdir}/python3.5/urllib/__pycache__ ${libdir}/python3.5/uuid.* ${libdir}/python3.5/__pycache__/uuid.* ${libdir}/python3.5/rfc822.* ${libdir}/python3.5/__pycache__/rfc822.* ${libdir}/python3.5/mimetools.* ${libdir}/python3.5/__pycache__/mimetools.* "
+FILES_${PN}-netclient="\
+  ${libdir}/python3.5/*Cookie*.* \
+  ${libdir}/python3.5/__pycache__/*Cookie*.* \
+  ${libdir}/python3.5/base64.* \
+  ${libdir}/python3.5/__pycache__/base64.* \
+  ${libdir}/python3.5/cookielib.* \
+  ${libdir}/python3.5/__pycache__/cookielib.* \
+  ${libdir}/python3.5/ftplib.* \
+  ${libdir}/python3.5/__pycache__/ftplib.* \
+  ${libdir}/python3.5/gopherlib.* \
+  ${libdir}/python3.5/__pycache__/gopherlib.* \
+  ${libdir}/python3.5/hmac.* \
+  ${libdir}/python3.5/__pycache__/hmac.* \
+  ${libdir}/python3.5/http* \
+  ${libdir}/python3.5/http*/__pycache__ \
+  ${libdir}/python3.5/httplib.* \
+  ${libdir}/python3.5/__pycache__/httplib.* \
+  ${libdir}/python3.5/mimetypes.* \
+  ${libdir}/python3.5/__pycache__/mimetypes.* \
+  ${libdir}/python3.5/nntplib.* \
+  ${libdir}/python3.5/__pycache__/nntplib.* \
+  ${libdir}/python3.5/poplib.* \
+  ${libdir}/python3.5/__pycache__/poplib.* \
+  ${libdir}/python3.5/smtplib.* \
+  ${libdir}/python3.5/__pycache__/smtplib.* \
+  ${libdir}/python3.5/telnetlib.* \
+  ${libdir}/python3.5/__pycache__/telnetlib.* \
+  ${libdir}/python3.5/urllib \
+  ${libdir}/python3.5/urllib/__pycache__ \
+  ${libdir}/python3.5/uuid.* \
+  ${libdir}/python3.5/__pycache__/uuid.* \
+  ${libdir}/python3.5/rfc822.* \
+  ${libdir}/python3.5/__pycache__/rfc822.* \
+  ${libdir}/python3.5/mimetools.* \
+  ${libdir}/python3.5/__pycache__/mimetools.* \
+"
 
 SUMMARY_${PN}-netserver="Python Internet Protocol servers"
 RDEPENDS_${PN}-netserver="${PN}-core ${PN}-netclient ${PN}-shell ${PN}-threading"
-FILES_${PN}-netserver="${libdir}/python3.5/cgi.* ${libdir}/python3.5/__pycache__/cgi.* ${libdir}/python3.5/socketserver.* ${libdir}/python3.5/__pycache__/socketserver.* ${libdir}/python3.5/*HTTPServer.* ${libdir}/python3.5/__pycache__/*HTTPServer.* ${libdir}/python3.5/SocketServer.* ${libdir}/python3.5/__pycache__/SocketServer.* "
+FILES_${PN}-netserver="\
+  ${libdir}/python3.5/cgi.* \
+  ${libdir}/python3.5/__pycache__/cgi.* \
+  ${libdir}/python3.5/socketserver.* \
+  ${libdir}/python3.5/__pycache__/socketserver.* \
+  ${libdir}/python3.5/*HTTPServer.* \
+  ${libdir}/python3.5/__pycache__/*HTTPServer.* \
+  ${libdir}/python3.5/SocketServer.* \
+  ${libdir}/python3.5/__pycache__/SocketServer.* \
+"
 
 SUMMARY_${PN}-numbers="Python number APIs"
 RDEPENDS_${PN}-numbers="${PN}-core ${PN}-lang ${PN}-re"
-FILES_${PN}-numbers="${libdir}/python3.5/decimal.* ${libdir}/python3.5/__pycache__/decimal.* ${libdir}/python3.5/fractions.* ${libdir}/python3.5/__pycache__/fractions.* ${libdir}/python3.5/numbers.* ${libdir}/python3.5/__pycache__/numbers.* "
+FILES_${PN}-numbers="\
+  ${libdir}/python3.5/decimal.* \
+  ${libdir}/python3.5/__pycache__/decimal.* \
+  ${libdir}/python3.5/fractions.* \
+  ${libdir}/python3.5/__pycache__/fractions.* \
+  ${libdir}/python3.5/numbers.* \
+  ${libdir}/python3.5/__pycache__/numbers.* \
+"
 
 SUMMARY_${PN}-pickle="Python serialisation/persistence support"
 RDEPENDS_${PN}-pickle="${PN}-core ${PN}-codecs ${PN}-io ${PN}-re"
-FILES_${PN}-pickle="${libdir}/python3.5/_compat_pickle.* ${libdir}/python3.5/__pycache__/_compat_pickle.* ${libdir}/python3.5/pickle.* ${libdir}/python3.5/__pycache__/pickle.* ${libdir}/python3.5/shelve.* ${libdir}/python3.5/__pycache__/shelve.* ${libdir}/python3.5/lib-dynload/cPickle.*.so ${libdir}/python3.5/lib-dynload/__pycache__/cPickle.*.so ${libdir}/python3.5/pickletools.* ${libdir}/python3.5/__pycache__/pickletools.* "
+FILES_${PN}-pickle="\
+  ${libdir}/python3.5/_compat_pickle.* \
+  ${libdir}/python3.5/__pycache__/_compat_pickle.* \
+  ${libdir}/python3.5/pickle.* \
+  ${libdir}/python3.5/__pycache__/pickle.* \
+  ${libdir}/python3.5/shelve.* \
+  ${libdir}/python3.5/__pycache__/shelve.* \
+  ${libdir}/python3.5/lib-dynload/cPickle.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/cPickle.*.so \
+  ${libdir}/python3.5/pickletools.* \
+  ${libdir}/python3.5/__pycache__/pickletools.* \
+"
 
 SUMMARY_${PN}-pkgutil="Python package extension utility support"
 RDEPENDS_${PN}-pkgutil="${PN}-core"
-FILES_${PN}-pkgutil="${libdir}/python3.5/pkgutil.* ${libdir}/python3.5/__pycache__/pkgutil.* "
+FILES_${PN}-pkgutil="\
+  ${libdir}/python3.5/pkgutil.* \
+  ${libdir}/python3.5/__pycache__/pkgutil.* \
+"
 
 SUMMARY_${PN}-pprint="Python pretty-print support"
 RDEPENDS_${PN}-pprint="${PN}-core ${PN}-io"
-FILES_${PN}-pprint="${libdir}/python3.5/pprint.* ${libdir}/python3.5/__pycache__/pprint.* "
+FILES_${PN}-pprint="\
+  ${libdir}/python3.5/pprint.* \
+  ${libdir}/python3.5/__pycache__/pprint.* \
+"
 
 SUMMARY_${PN}-profile="Python basic performance profiling support"
 RDEPENDS_${PN}-profile="${PN}-core ${PN}-textutils"
-FILES_${PN}-profile="${libdir}/python3.5/profile.* ${libdir}/python3.5/__pycache__/profile.* ${libdir}/python3.5/pstats.* ${libdir}/python3.5/__pycache__/pstats.* ${libdir}/python3.5/cProfile.* ${libdir}/python3.5/__pycache__/cProfile.* ${libdir}/python3.5/lib-dynload/_lsprof.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_lsprof.*.so "
+FILES_${PN}-profile="\
+  ${libdir}/python3.5/profile.* \
+  ${libdir}/python3.5/__pycache__/profile.* \
+  ${libdir}/python3.5/pstats.* \
+  ${libdir}/python3.5/__pycache__/pstats.* \
+  ${libdir}/python3.5/cProfile.* \
+  ${libdir}/python3.5/__pycache__/cProfile.* \
+  ${libdir}/python3.5/lib-dynload/_lsprof.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_lsprof.*.so \
+"
 
 SUMMARY_${PN}-pydoc="Python interactive help support"
 RDEPENDS_${PN}-pydoc="${PN}-core ${PN}-lang ${PN}-stringold ${PN}-re"
-FILES_${PN}-pydoc="${bindir}/pydoc ${libdir}/python3.5/pydoc.* ${libdir}/python3.5/__pycache__/pydoc.* ${libdir}/python3.5/pydoc_data ${libdir}/python3.5/pydoc_data/__pycache__ "
+FILES_${PN}-pydoc="\
+  ${bindir}/pydoc \
+  ${libdir}/python3.5/pydoc.* \
+  ${libdir}/python3.5/__pycache__/pydoc.* \
+  ${libdir}/python3.5/pydoc_data \
+  ${libdir}/python3.5/pydoc_data/__pycache__ \
+"
 
 SUMMARY_${PN}-re="Python Regular Expression APIs"
 RDEPENDS_${PN}-re="${PN}-core"
-FILES_${PN}-re="${libdir}/python3.5/re.* ${libdir}/python3.5/__pycache__/re.* ${libdir}/python3.5/sre.* ${libdir}/python3.5/__pycache__/sre.* ${libdir}/python3.5/sre_compile.* ${libdir}/python3.5/__pycache__/sre_compile.* ${libdir}/python3.5/sre_constants* ${libdir}/python3.5/sre_constants*/__pycache__ ${libdir}/python3.5/sre_parse.* ${libdir}/python3.5/__pycache__/sre_parse.* "
+FILES_${PN}-re="\
+  ${libdir}/python3.5/re.* \
+  ${libdir}/python3.5/__pycache__/re.* \
+  ${libdir}/python3.5/sre.* \
+  ${libdir}/python3.5/__pycache__/sre.* \
+  ${libdir}/python3.5/sre_compile.* \
+  ${libdir}/python3.5/__pycache__/sre_compile.* \
+  ${libdir}/python3.5/sre_constants* \
+  ${libdir}/python3.5/sre_constants*/__pycache__ \
+  ${libdir}/python3.5/sre_parse.* \
+  ${libdir}/python3.5/__pycache__/sre_parse.* \
+"
 
 SUMMARY_${PN}-readline="Python readline support"
 RDEPENDS_${PN}-readline="${PN}-core"
-FILES_${PN}-readline="${libdir}/python3.5/lib-dynload/readline.*.so ${libdir}/python3.5/lib-dynload/__pycache__/readline.*.so ${libdir}/python3.5/rlcompleter.* ${libdir}/python3.5/__pycache__/rlcompleter.* "
+FILES_${PN}-readline="\
+  ${libdir}/python3.5/lib-dynload/readline.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/readline.*.so \
+  ${libdir}/python3.5/rlcompleter.* \
+  ${libdir}/python3.5/__pycache__/rlcompleter.* \
+"
 
 SUMMARY_${PN}-reprlib="Python alternate repr() implementation"
 RDEPENDS_${PN}-reprlib="${PN}-core"
-FILES_${PN}-reprlib="${libdir}/python3.5/reprlib.py ${libdir}/python3.5/__pycache__/reprlib.py "
+FILES_${PN}-reprlib="\
+  ${libdir}/python3.5/reprlib.py \
+  ${libdir}/python3.5/__pycache__/reprlib.py \
+"
 
 SUMMARY_${PN}-resource="Python resource control interface"
 RDEPENDS_${PN}-resource="${PN}-core"
-FILES_${PN}-resource="${libdir}/python3.5/lib-dynload/resource.*.so ${libdir}/python3.5/lib-dynload/__pycache__/resource.*.so "
+FILES_${PN}-resource="\
+  ${libdir}/python3.5/lib-dynload/resource.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/resource.*.so \
+"
 
 SUMMARY_${PN}-selectors="Python High-level I/O multiplexing"
 RDEPENDS_${PN}-selectors="${PN}-core"
-FILES_${PN}-selectors="${libdir}/python3.5/selectors.* ${libdir}/python3.5/__pycache__/selectors.* "
+FILES_${PN}-selectors="\
+  ${libdir}/python3.5/selectors.* \
+  ${libdir}/python3.5/__pycache__/selectors.* \
+"
 
 SUMMARY_${PN}-shell="Python shell-like functionality"
 RDEPENDS_${PN}-shell="${PN}-core ${PN}-re ${PN}-compression"
-FILES_${PN}-shell="${libdir}/python3.5/cmd.* ${libdir}/python3.5/__pycache__/cmd.* ${libdir}/python3.5/commands.* ${libdir}/python3.5/__pycache__/commands.* ${libdir}/python3.5/dircache.* ${libdir}/python3.5/__pycache__/dircache.* ${libdir}/python3.5/fnmatch.* ${libdir}/python3.5/__pycache__/fnmatch.* ${libdir}/python3.5/glob.* ${libdir}/python3.5/__pycache__/glob.* ${libdir}/python3.5/popen2.* ${libdir}/python3.5/__pycache__/popen2.* ${libdir}/python3.5/shlex.* ${libdir}/python3.5/__pycache__/shlex.* ${libdir}/python3.5/shutil.* ${libdir}/python3.5/__pycache__/shutil.* "
+FILES_${PN}-shell="\
+  ${libdir}/python3.5/cmd.* \
+  ${libdir}/python3.5/__pycache__/cmd.* \
+  ${libdir}/python3.5/commands.* \
+  ${libdir}/python3.5/__pycache__/commands.* \
+  ${libdir}/python3.5/dircache.* \
+  ${libdir}/python3.5/__pycache__/dircache.* \
+  ${libdir}/python3.5/fnmatch.* \
+  ${libdir}/python3.5/__pycache__/fnmatch.* \
+  ${libdir}/python3.5/glob.* \
+  ${libdir}/python3.5/__pycache__/glob.* \
+  ${libdir}/python3.5/popen2.* \
+  ${libdir}/python3.5/__pycache__/popen2.* \
+  ${libdir}/python3.5/shlex.* \
+  ${libdir}/python3.5/__pycache__/shlex.* \
+  ${libdir}/python3.5/shutil.* \
+  ${libdir}/python3.5/__pycache__/shutil.* \
+"
 
 SUMMARY_${PN}-signal="Python set handlers for asynchronous events support"
 RDEPENDS_${PN}-signal="${PN}-core ${PN}-enum"
-FILES_${PN}-signal="${libdir}/python3.5/signal.* ${libdir}/python3.5/__pycache__/signal.* "
+FILES_${PN}-signal="\
+  ${libdir}/python3.5/signal.* \
+  ${libdir}/python3.5/__pycache__/signal.* \
+"
 
 SUMMARY_${PN}-smtpd="Python Simple Mail Transport Daemon"
 RDEPENDS_${PN}-smtpd="${PN}-core ${PN}-netserver ${PN}-email ${PN}-mime"
-FILES_${PN}-smtpd="${bindir}/smtpd.* ${libdir}/python3.5/smtpd.* ${libdir}/python3.5/__pycache__/smtpd.* "
+FILES_${PN}-smtpd="\
+  ${bindir}/smtpd.* \
+  ${libdir}/python3.5/smtpd.* \
+  ${libdir}/python3.5/__pycache__/smtpd.* \
+"
 
 SUMMARY_${PN}-sqlite3="Python Sqlite3 database support"
 RDEPENDS_${PN}-sqlite3="${PN}-core ${PN}-datetime ${PN}-lang ${PN}-crypt ${PN}-io ${PN}-threading"
-FILES_${PN}-sqlite3="${libdir}/python3.5/lib-dynload/_sqlite3.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_sqlite3.*.so ${libdir}/python3.5/sqlite3/dbapi2.* ${libdir}/python3.5/sqlite3/__pycache__/dbapi2.* ${libdir}/python3.5/sqlite3/__init__.* ${libdir}/python3.5/sqlite3/__pycache__/__init__.* ${libdir}/python3.5/sqlite3/dump.* ${libdir}/python3.5/sqlite3/__pycache__/dump.* "
+FILES_${PN}-sqlite3="\
+  ${libdir}/python3.5/lib-dynload/_sqlite3.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_sqlite3.*.so \
+  ${libdir}/python3.5/sqlite3/dbapi2.* \
+  ${libdir}/python3.5/sqlite3/__pycache__/dbapi2.* \
+  ${libdir}/python3.5/sqlite3/__init__.* \
+  ${libdir}/python3.5/sqlite3/__pycache__/__init__.* \
+  ${libdir}/python3.5/sqlite3/dump.* \
+  ${libdir}/python3.5/sqlite3/__pycache__/dump.* \
+"
 
 SUMMARY_${PN}-sqlite3-tests="Python Sqlite3 database support tests"
 RDEPENDS_${PN}-sqlite3-tests="${PN}-core ${PN}-sqlite3"
-FILES_${PN}-sqlite3-tests="${libdir}/python3.5/sqlite3/test ${libdir}/python3.5/sqlite3/test/__pycache__ "
+FILES_${PN}-sqlite3-tests="\
+  ${libdir}/python3.5/sqlite3/test \
+  ${libdir}/python3.5/sqlite3/test/__pycache__ \
+"
 
 SUMMARY_${PN}-stringold="Python string APIs [deprecated]"
 RDEPENDS_${PN}-stringold="${PN}-core ${PN}-re"
-FILES_${PN}-stringold="${libdir}/python3.5/lib-dynload/strop.*.so ${libdir}/python3.5/lib-dynload/__pycache__/strop.*.so ${libdir}/python3.5/string.* ${libdir}/python3.5/__pycache__/string.* ${libdir}/python3.5/stringold.* ${libdir}/python3.5/__pycache__/stringold.* "
+FILES_${PN}-stringold="\
+  ${libdir}/python3.5/lib-dynload/strop.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/strop.*.so \
+  ${libdir}/python3.5/string.* \
+  ${libdir}/python3.5/__pycache__/string.* \
+  ${libdir}/python3.5/stringold.* \
+  ${libdir}/python3.5/__pycache__/stringold.* \
+"
 
 SUMMARY_${PN}-subprocess="Python subprocess support"
 RDEPENDS_${PN}-subprocess="${PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle ${PN}-threading ${PN}-signal ${PN}-selectors"
-FILES_${PN}-subprocess="${libdir}/python3.5/subprocess.* ${libdir}/python3.5/__pycache__/subprocess.* ${libdir}/python3.5/lib-dynload/_posixsubprocess.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_posixsubprocess.*.so "
+FILES_${PN}-subprocess="\
+  ${libdir}/python3.5/subprocess.* \
+  ${libdir}/python3.5/__pycache__/subprocess.* \
+  ${libdir}/python3.5/lib-dynload/_posixsubprocess.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_posixsubprocess.*.so \
+"
 
 SUMMARY_${PN}-syslog="Python syslog interface"
 RDEPENDS_${PN}-syslog="${PN}-core"
-FILES_${PN}-syslog="${libdir}/python3.5/lib-dynload/syslog.*.so ${libdir}/python3.5/lib-dynload/__pycache__/syslog.*.so "
+FILES_${PN}-syslog="\
+  ${libdir}/python3.5/lib-dynload/syslog.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/syslog.*.so \
+"
 
 SUMMARY_${PN}-terminal="Python terminal controlling support"
 RDEPENDS_${PN}-terminal="${PN}-core ${PN}-io"
-FILES_${PN}-terminal="${libdir}/python3.5/pty.* ${libdir}/python3.5/__pycache__/pty.* ${libdir}/python3.5/tty.* ${libdir}/python3.5/__pycache__/tty.* "
+FILES_${PN}-terminal="\
+  ${libdir}/python3.5/pty.* \
+  ${libdir}/python3.5/__pycache__/pty.* \
+  ${libdir}/python3.5/tty.* \
+  ${libdir}/python3.5/__pycache__/tty.* \
+"
 
 SUMMARY_${PN}-tests="Python tests"
 RDEPENDS_${PN}-tests="${PN}-core ${PN}-compression"
-FILES_${PN}-tests="${libdir}/python3.5/test ${libdir}/python3.5/test/__pycache__ "
+FILES_${PN}-tests="\
+  ${libdir}/python3.5/test \
+  ${libdir}/python3.5/test/__pycache__ \
+"
 
 SUMMARY_${PN}-textutils="Python option parsing, text wrapping and CSV support"
 RDEPENDS_${PN}-textutils="${PN}-core ${PN}-io ${PN}-re ${PN}-stringold"
-FILES_${PN}-textutils="${libdir}/python3.5/lib-dynload/_csv.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_csv.*.so ${libdir}/python3.5/csv.* ${libdir}/python3.5/__pycache__/csv.* ${libdir}/python3.5/optparse.* ${libdir}/python3.5/__pycache__/optparse.* ${libdir}/python3.5/textwrap.* ${libdir}/python3.5/__pycache__/textwrap.* "
+FILES_${PN}-textutils="\
+  ${libdir}/python3.5/lib-dynload/_csv.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_csv.*.so \
+  ${libdir}/python3.5/csv.* \
+  ${libdir}/python3.5/__pycache__/csv.* \
+  ${libdir}/python3.5/optparse.* \
+  ${libdir}/python3.5/__pycache__/optparse.* \
+  ${libdir}/python3.5/textwrap.* \
+  ${libdir}/python3.5/__pycache__/textwrap.* \
+"
 
 SUMMARY_${PN}-threading="Python threading & synchronization support"
 RDEPENDS_${PN}-threading="${PN}-core ${PN}-lang"
-FILES_${PN}-threading="${libdir}/python3.5/_threading_local.* ${libdir}/python3.5/__pycache__/_threading_local.* ${libdir}/python3.5/dummy_thread.* ${libdir}/python3.5/__pycache__/dummy_thread.* ${libdir}/python3.5/dummy_threading.* ${libdir}/python3.5/__pycache__/dummy_threading.* ${libdir}/python3.5/mutex.* ${libdir}/python3.5/__pycache__/mutex.* ${libdir}/python3.5/threading.* ${libdir}/python3.5/__pycache__/threading.* ${libdir}/python3.5/queue.* ${libdir}/python3.5/__pycache__/queue.* "
+FILES_${PN}-threading="\
+  ${libdir}/python3.5/_threading_local.* \
+  ${libdir}/python3.5/__pycache__/_threading_local.* \
+  ${libdir}/python3.5/dummy_thread.* \
+  ${libdir}/python3.5/__pycache__/dummy_thread.* \
+  ${libdir}/python3.5/dummy_threading.* \
+  ${libdir}/python3.5/__pycache__/dummy_threading.* \
+  ${libdir}/python3.5/mutex.* \
+  ${libdir}/python3.5/__pycache__/mutex.* \
+  ${libdir}/python3.5/threading.* \
+  ${libdir}/python3.5/__pycache__/threading.* \
+  ${libdir}/python3.5/queue.* \
+  ${libdir}/python3.5/__pycache__/queue.* \
+"
 
 SUMMARY_${PN}-tkinter="Python Tcl/Tk bindings"
 RDEPENDS_${PN}-tkinter="${PN}-core"
-FILES_${PN}-tkinter="${libdir}/python3.5/lib-dynload/_tkinter.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_tkinter.*.so ${libdir}/python3.5/lib-tk ${libdir}/python3.5/lib-tk/__pycache__ ${libdir}/python3.5/tkinter ${libdir}/python3.5/tkinter/__pycache__ "
+FILES_${PN}-tkinter="\
+  ${libdir}/python3.5/lib-dynload/_tkinter.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_tkinter.*.so \
+  ${libdir}/python3.5/lib-tk \
+  ${libdir}/python3.5/lib-tk/__pycache__ \
+  ${libdir}/python3.5/tkinter \
+  ${libdir}/python3.5/tkinter/__pycache__ \
+"
 
 SUMMARY_${PN}-typing="Python typing support"
 RDEPENDS_${PN}-typing="${PN}-core"
-FILES_${PN}-typing="${libdir}/python3.5/typing.* ${libdir}/python3.5/__pycache__/typing.* "
+FILES_${PN}-typing="\
+  ${libdir}/python3.5/typing.* \
+  ${libdir}/python3.5/__pycache__/typing.* \
+"
 
 SUMMARY_${PN}-unittest="Python unit testing framework"
 RDEPENDS_${PN}-unittest="${PN}-core ${PN}-stringold ${PN}-lang ${PN}-io ${PN}-difflib ${PN}-pprint ${PN}-shell"
-FILES_${PN}-unittest="${libdir}/python3.5/unittest/ ${libdir}/python3.5/unittest/__pycache__ "
+FILES_${PN}-unittest="\
+  ${libdir}/python3.5/unittest/ \
+  ${libdir}/python3.5/unittest/__pycache__ \
+"
 
 SUMMARY_${PN}-unixadmin="Python Unix administration support"
 RDEPENDS_${PN}-unixadmin="${PN}-core"
-FILES_${PN}-unixadmin="${libdir}/python3.5/lib-dynload/nis.*.so ${libdir}/python3.5/lib-dynload/__pycache__/nis.*.so ${libdir}/python3.5/lib-dynload/grp.*.so ${libdir}/python3.5/lib-dynload/__pycache__/grp.*.so ${libdir}/python3.5/lib-dynload/pwd.*.so ${libdir}/python3.5/lib-dynload/__pycache__/pwd.*.so ${libdir}/python3.5/getpass.* ${libdir}/python3.5/__pycache__/getpass.* "
+FILES_${PN}-unixadmin="\
+  ${libdir}/python3.5/lib-dynload/nis.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/nis.*.so \
+  ${libdir}/python3.5/lib-dynload/grp.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/grp.*.so \
+  ${libdir}/python3.5/lib-dynload/pwd.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/pwd.*.so \
+  ${libdir}/python3.5/getpass.* \
+  ${libdir}/python3.5/__pycache__/getpass.* \
+"
 
 SUMMARY_${PN}-xml="Python basic XML support"
 RDEPENDS_${PN}-xml="${PN}-core ${PN}-re"
-FILES_${PN}-xml="${libdir}/python3.5/lib-dynload/_elementtree.*.so ${libdir}/python3.5/lib-dynload/__pycache__/_elementtree.*.so ${libdir}/python3.5/lib-dynload/pyexpat.*.so ${libdir}/python3.5/lib-dynload/__pycache__/pyexpat.*.so ${libdir}/python3.5/xml ${libdir}/python3.5/xml/__pycache__ ${libdir}/python3.5/xmllib.* ${libdir}/python3.5/__pycache__/xmllib.* "
+FILES_${PN}-xml="\
+  ${libdir}/python3.5/lib-dynload/_elementtree.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/_elementtree.*.so \
+  ${libdir}/python3.5/lib-dynload/pyexpat.*.so \
+  ${libdir}/python3.5/lib-dynload/__pycache__/pyexpat.*.so \
+  ${libdir}/python3.5/xml \
+  ${libdir}/python3.5/xml/__pycache__ \
+  ${libdir}/python3.5/xmllib.* \
+  ${libdir}/python3.5/__pycache__/xmllib.* \
+"
 
 SUMMARY_${PN}-xmlrpc="Python XML-RPC support"
 RDEPENDS_${PN}-xmlrpc="${PN}-core ${PN}-xml ${PN}-netserver ${PN}-lang ${PN}-pydoc"
-FILES_${PN}-xmlrpc="${libdir}/python3.5/xmlrpclib.* ${libdir}/python3.5/__pycache__/xmlrpclib.* ${libdir}/python3.5/SimpleXMLRPCServer.* ${libdir}/python3.5/__pycache__/SimpleXMLRPCServer.* ${libdir}/python3.5/DocXMLRPCServer.* ${libdir}/python3.5/__pycache__/DocXMLRPCServer.* ${libdir}/python3.5/xmlrpc ${libdir}/python3.5/xmlrpc/__pycache__ "
+FILES_${PN}-xmlrpc="\
+  ${libdir}/python3.5/xmlrpclib.* \
+  ${libdir}/python3.5/__pycache__/xmlrpclib.* \
+  ${libdir}/python3.5/SimpleXMLRPCServer.* \
+  ${libdir}/python3.5/__pycache__/SimpleXMLRPCServer.* \
+  ${libdir}/python3.5/DocXMLRPCServer.* \
+  ${libdir}/python3.5/__pycache__/DocXMLRPCServer.* \
+  ${libdir}/python3.5/xmlrpc \
+  ${libdir}/python3.5/xmlrpc/__pycache__ \
+"
 
 SUMMARY_${PN}-modules="All Python modules"
-RDEPENDS_${PN}-modules="${PN}-2to3 ${PN}-argparse ${PN}-asyncio ${PN}-audio ${PN}-codecs ${PN}-compile ${PN}-compression ${PN}-core ${PN}-crypt ${PN}-ctypes ${PN}-curses ${PN}-datetime ${PN}-db ${PN}-debugger ${PN}-difflib ${PN}-distutils ${PN}-doctest ${PN}-email ${PN}-enum ${PN}-fcntl ${PN}-gdbm ${PN}-html ${PN}-idle ${PN}-image ${PN}-importlib ${PN}-io ${PN}-json ${PN}-lang ${PN}-logging ${PN}-mailbox ${PN}-math ${PN}-mime ${PN}-mmap ${PN}-multiprocessing ${PN}-netclient ${PN}-netserver ${PN}-numbers ${PN}-pickle ${PN}-pkgutil ${PN}-pprint ${PN}-profile ${PN}-pydoc ${PN}-re ${PN}-readline ${PN}-reprlib ${PN}-resource ${PN}-selectors ${PN}-shell ${PN}-signal ${PN}-smtpd ${PN}-sqlite3 ${PN}-sqlite3-tests ${PN}-stringold ${PN}-subprocess ${PN}-syslog ${PN}-terminal ${PN}-textutils ${PN}-threading ${PN}-tkinter ${PN}-typing ${PN}-unittest ${PN}-unixadmin ${PN}-xml ${PN}-xmlrpc  "
+RDEPENDS_${PN}-modules=" \
+  ${PN}-2to3 \
+  ${PN}-argparse \
+  ${PN}-asyncio \
+  ${PN}-audio \
+  ${PN}-codecs \
+  ${PN}-compile \
+  ${PN}-compression \
+  ${PN}-core \
+  ${PN}-crypt \
+  ${PN}-ctypes \
+  ${PN}-curses \
+  ${PN}-datetime \
+  ${PN}-db \
+  ${PN}-debugger \
+  ${PN}-difflib \
+  ${PN}-distutils \
+  ${PN}-doctest \
+  ${PN}-email \
+  ${PN}-enum \
+  ${PN}-fcntl \
+  ${PN}-gdbm \
+  ${PN}-html \
+  ${PN}-idle \
+  ${PN}-image \
+  ${PN}-importlib \
+  ${PN}-io \
+  ${PN}-json \
+  ${PN}-lang \
+  ${PN}-logging \
+  ${PN}-mailbox \
+  ${PN}-math \
+  ${PN}-mime \
+  ${PN}-mmap \
+  ${PN}-multiprocessing \
+  ${PN}-netclient \
+  ${PN}-netserver \
+  ${PN}-numbers \
+  ${PN}-pickle \
+  ${PN}-pkgutil \
+  ${PN}-pprint \
+  ${PN}-profile \
+  ${PN}-pydoc \
+  ${PN}-re \
+  ${PN}-readline \
+  ${PN}-reprlib \
+  ${PN}-resource \
+  ${PN}-selectors \
+  ${PN}-shell \
+  ${PN}-signal \
+  ${PN}-smtpd \
+  ${PN}-sqlite3 \
+  ${PN}-sqlite3-tests \
+  ${PN}-stringold \
+  ${PN}-subprocess \
+  ${PN}-syslog \
+  ${PN}-terminal \
+  ${PN}-textutils \
+  ${PN}-threading \
+  ${PN}-tkinter \
+  ${PN}-typing \
+  ${PN}-unittest \
+  ${PN}-unixadmin \
+  ${PN}-xml \
+  ${PN}-xmlrpc \
+"
 ALLOW_EMPTY_${PN}-modules = "1"
 
 
diff --git a/scripts/contrib/python/generate-manifest-2.7.py b/scripts/contrib/python/generate-manifest-2.7.py
index 586b329c19..2491bd0bc4 100755
--- a/scripts/contrib/python/generate-manifest-2.7.py
+++ b/scripts/contrib/python/generate-manifest-2.7.py
@@ -88,9 +88,9 @@ class MakefileMaker:
         # generate provides line
         #
 
-        provideLine = 'PROVIDES+="'
+        provideLine = 'PROVIDES+=" \\\n'
         for name in sorted(self.packages):
-            provideLine += "%s " % name
+            provideLine += "  %s \\\n" % name
         provideLine += '"'
 
         self.out( provideLine )
@@ -100,14 +100,15 @@ class MakefileMaker:
         # generate package line
         #
 
-        packageLine = 'PACKAGES="${PN}-dbg '
+        packageLine = 'PACKAGES=" \\\n'
+        packageLine += '  ${PN}-dbg \\\n'
         for name in sorted(self.packages):
             if name.startswith("${PN}-distutils"):
                 if name == "${PN}-distutils":
-                    packageLine += "%s-staticdev %s " % (name, name)
+                    packageLine += "  %s-staticdev %s \\\n" % (name, name)
             elif name != '${PN}-dbg':
-                packageLine += "%s " % name
-        packageLine += '${PN}-modules"'
+                packageLine += "  %s \\\n" % name
+        packageLine += '  ${PN}-modules\\\n"'
 
         self.out( packageLine )
         self.out( "" )
@@ -125,7 +126,7 @@ class MakefileMaker:
             self.out( 'SUMMARY_%s="%s"' % ( name, desc ) )
             self.out( 'RDEPENDS_%s="%s"' % ( name, deps ) )
 
-            line = 'FILES_%s="' % name
+            line = 'FILES_%s=" \\\n' % name
 
             #
             # check which directories to make in the temporary directory
@@ -140,20 +141,21 @@ class MakefileMaker:
             #
 
             for target in files:
-                line += "%s " % target
+                line += "    %s \\\n" % target
 
             line += '"'
             self.out( line )
             self.out( "" )
 
         self.out( 'SUMMARY_${PN}-modules="All Python modules"' )
-        line = 'RDEPENDS_${PN}-modules="'
+        line = 'RDEPENDS_${PN}-modules=" \\\n'
 
         for name, data in sorted(self.packages.items()):
             if name not in ['${PN}-dev', '${PN}-distutils-staticdev'] and name not in self.excluded_pkgs:
-                line += "%s " % name
+                line += "  %s \\\n" % name
 
-        self.out( "%s \"" % line )
+        line += '"'
+        self.out( line )
         self.out( 'ALLOW_EMPTY_${PN}-modules = "1"' )
 
     def doEpilog( self ):
diff --git a/scripts/contrib/python/generate-manifest-3.5.py b/scripts/contrib/python/generate-manifest-3.5.py
index 6352f8f120..33779cffab 100755
--- a/scripts/contrib/python/generate-manifest-3.5.py
+++ b/scripts/contrib/python/generate-manifest-3.5.py
@@ -101,9 +101,9 @@ class MakefileMaker:
         # generate provides line
         #
 
-        provideLine = 'PROVIDES+="'
+        provideLine = 'PROVIDES+="\\\n'
         for name in sorted(self.packages):
-            provideLine += "%s " % name
+            provideLine += "  %s \\\n" % name
         provideLine += '"'
 
         self.out( provideLine )
@@ -113,14 +113,15 @@ class MakefileMaker:
         # generate package line
         #
 
-        packageLine = 'PACKAGES="${PN}-dbg '
+        packageLine = 'PACKAGES="\\\n'
+        packageLine += '  ${PN}-dbg \\\n'
         for name in sorted(self.packages):
             if name.startswith("${PN}-distutils"):
                 if name == "${PN}-distutils":
-                    packageLine += "%s-staticdev %s " % (name, name)
+                    packageLine += "%s \\\n %s-staticdev \\\n" % (name, name)
             elif name != '${PN}-dbg':
-                packageLine += "%s " % name
-        packageLine += '${PN}-modules"'
+                packageLine += "  %s \\\n" % name
+        packageLine += '  ${PN}-modules \\\n"'
 
         self.out( packageLine )
         self.out( "" )
@@ -138,7 +139,7 @@ class MakefileMaker:
             self.out( 'SUMMARY_%s="%s"' % ( name, desc ) )
             self.out( 'RDEPENDS_%s="%s"' % ( name, deps ) )
 
-            line = 'FILES_%s="' % name
+            line = 'FILES_%s="\\\n' % name
 
             #
             # check which directories to make in the temporary directory
@@ -153,20 +154,21 @@ class MakefileMaker:
             #
 
             for target in files:
-                line += "%s " % target
+                line += "  %s \\\n" % target
 
             line += '"'
             self.out( line )
             self.out( "" )
 
         self.out( 'SUMMARY_${PN}-modules="All Python modules"' )
-        line = 'RDEPENDS_${PN}-modules="'
+        line = 'RDEPENDS_${PN}-modules=" \\\n'
 
         for name, data in sorted(self.packages.items()):
             if name not in ['${PN}-dev', '${PN}-distutils-staticdev'] and name not in self.excluded_pkgs:
-                line += "%s " % name
+                line += "  %s \\\n" % name
 
-        self.out( "%s \"" % line )
+        line += '"'
+        self.out( line )
         self.out( 'ALLOW_EMPTY_${PN}-modules = "1"' )
 
     def doEpilog( self ):
-- 
2.14.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v3 03/14] python-*-manifest/generators: add runpy; python3-plistlib
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
  2017-12-12  5:04 ` [PATCH v3 01/14] pypi.bbclass: bring in from meta-python Tim Orling
  2017-12-12  5:04 ` [PATCH v3 02/14] python-*-manifest/generators: fix long line lengths Tim Orling
@ 2017-12-12  5:04 ` Tim Orling
  2017-12-12  5:04 ` [PATCH v3 04/14] python-setuptools: upgrade to 38.2.4; use pypi.bbclass; improvements Tim Orling
                   ` (11 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

* runpy allows running modules/scripts with 'python -m foo'
* python3-setuptools RDEPENDS on plistlib (present in python2)
* pip3 RDEPENDS on _markupbase (add to python3-core)

Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
---
 .../recipes-devtools/python/python-2.7-manifest.inc |  9 +++++++++
 .../recipes-devtools/python/python-3.5-manifest.inc | 21 +++++++++++++++++++++
 scripts/contrib/python/generate-manifest-2.7.py     |  3 +++
 scripts/contrib/python/generate-manifest-3.5.py     |  7 +++++++
 4 files changed, 40 insertions(+)

diff --git a/meta/recipes-devtools/python/python-2.7-manifest.inc b/meta/recipes-devtools/python/python-2.7-manifest.inc
index 6198e2d1c3..7c3fc1b73a 100644
--- a/meta/recipes-devtools/python/python-2.7-manifest.inc
+++ b/meta/recipes-devtools/python/python-2.7-manifest.inc
@@ -56,6 +56,7 @@ PROVIDES+=" \
   ${PN}-readline \
   ${PN}-resource \
   ${PN}-robotparser \
+  ${PN}-runpy \
   ${PN}-shell \
   ${PN}-smtpd \
   ${PN}-sqlite3 \
@@ -127,6 +128,7 @@ PACKAGES=" \
   ${PN}-readline \
   ${PN}-resource \
   ${PN}-robotparser \
+  ${PN}-runpy \
   ${PN}-shell \
   ${PN}-smtpd \
   ${PN}-sqlite3 \
@@ -625,6 +627,12 @@ FILES_${PN}-robotparser=" \
     ${libdir}/python2.7/robotparser.* \
 "
 
+SUMMARY_${PN}-runpy="Python script for locating/executing scripts in module namespace"
+RDEPENDS_${PN}-runpy="${PN}-core ${PN}-pkgutil"
+FILES_${PN}-runpy=" \
+    ${libdir}/python2.7/runpy.* \
+"
+
 SUMMARY_${PN}-shell="Python shell-like functionality"
 RDEPENDS_${PN}-shell="${PN}-core ${PN}-re"
 FILES_${PN}-shell=" \
@@ -809,6 +817,7 @@ RDEPENDS_${PN}-modules=" \
   ${PN}-readline \
   ${PN}-resource \
   ${PN}-robotparser \
+  ${PN}-runpy \
   ${PN}-shell \
   ${PN}-smtpd \
   ${PN}-sqlite3 \
diff --git a/meta/recipes-devtools/python/python-3.5-manifest.inc b/meta/recipes-devtools/python/python-3.5-manifest.inc
index 686b5f9842..1fce070290 100644
--- a/meta/recipes-devtools/python/python-3.5-manifest.inc
+++ b/meta/recipes-devtools/python/python-3.5-manifest.inc
@@ -46,6 +46,7 @@ PROVIDES+="\
   ${PN}-numbers \
   ${PN}-pickle \
   ${PN}-pkgutil \
+  ${PN}-plistlib \
   ${PN}-pprint \
   ${PN}-profile \
   ${PN}-pydoc \
@@ -53,6 +54,7 @@ PROVIDES+="\
   ${PN}-readline \
   ${PN}-reprlib \
   ${PN}-resource \
+  ${PN}-runpy \
   ${PN}-selectors \
   ${PN}-shell \
   ${PN}-signal \
@@ -117,6 +119,7 @@ ${PN}-distutils \
   ${PN}-numbers \
   ${PN}-pickle \
   ${PN}-pkgutil \
+  ${PN}-plistlib \
   ${PN}-pprint \
   ${PN}-profile \
   ${PN}-pydoc \
@@ -124,6 +127,7 @@ ${PN}-distutils \
   ${PN}-readline \
   ${PN}-reprlib \
   ${PN}-resource \
+  ${PN}-runpy \
   ${PN}-selectors \
   ${PN}-shell \
   ${PN}-signal \
@@ -310,6 +314,7 @@ FILES_${PN}-core="\
   ${includedir}/python${PYTHON_BINABI}/pyconfig*.h \
   ${libdir}/python${PYTHON_MAJMIN}/collections \
   ${libdir}/python${PYTHON_MAJMIN}/_collections_abc.* \
+  ${libdir}/python${PYTHON_MAJMIN}/_markupbase.* \
   ${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.* \
   ${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py \
 "
@@ -768,6 +773,13 @@ FILES_${PN}-pkgutil="\
   ${libdir}/python3.5/__pycache__/pkgutil.* \
 "
 
+SUMMARY_${PN}-plistlib="Generate and parse Mac OS X .plist files"
+RDEPENDS_${PN}-plistlib="${PN}-core ${PN}-datetime ${PN}-io"
+FILES_${PN}-plistlib="\
+  ${libdir}/python3.5/plistlib.* \
+  ${libdir}/python3.5/__pycache__/plistlib.* \
+"
+
 SUMMARY_${PN}-pprint="Python pretty-print support"
 RDEPENDS_${PN}-pprint="${PN}-core ${PN}-io"
 FILES_${PN}-pprint="\
@@ -836,6 +848,13 @@ FILES_${PN}-resource="\
   ${libdir}/python3.5/lib-dynload/__pycache__/resource.*.so \
 "
 
+SUMMARY_${PN}-runpy="Python script for locating/executing scripts in module namespace"
+RDEPENDS_${PN}-runpy="${PN}-core ${PN}-pkgutil"
+FILES_${PN}-runpy="\
+  ${libdir}/python3.5/runpy.* \
+  ${libdir}/python3.5/__pycache__/runpy.* \
+"
+
 SUMMARY_${PN}-selectors="Python High-level I/O multiplexing"
 RDEPENDS_${PN}-selectors="${PN}-core"
 FILES_${PN}-selectors="\
@@ -1077,6 +1096,7 @@ RDEPENDS_${PN}-modules=" \
   ${PN}-numbers \
   ${PN}-pickle \
   ${PN}-pkgutil \
+  ${PN}-plistlib \
   ${PN}-pprint \
   ${PN}-profile \
   ${PN}-pydoc \
@@ -1084,6 +1104,7 @@ RDEPENDS_${PN}-modules=" \
   ${PN}-readline \
   ${PN}-reprlib \
   ${PN}-resource \
+  ${PN}-runpy \
   ${PN}-selectors \
   ${PN}-shell \
   ${PN}-signal \
diff --git a/scripts/contrib/python/generate-manifest-2.7.py b/scripts/contrib/python/generate-manifest-2.7.py
index 2491bd0bc4..ee7540399f 100755
--- a/scripts/contrib/python/generate-manifest-2.7.py
+++ b/scripts/contrib/python/generate-manifest-2.7.py
@@ -368,6 +368,9 @@ if __name__ == "__main__":
     m.addPackage( "${PN}-robotparser", "Python robots.txt parser", "${PN}-core ${PN}-netclient",
     "robotparser.*")
 
+    m.addPackage( "${PN}-runpy", "Python script for locating/executing scripts in module namespace", "${PN}-core ${PN}-pkgutil",
+    "runpy.*")
+
     m.addPackage( "${PN}-subprocess", "Python subprocess support", "${PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle",
     "subprocess.*" )
 
diff --git a/scripts/contrib/python/generate-manifest-3.5.py b/scripts/contrib/python/generate-manifest-3.5.py
index 33779cffab..7dfae46992 100755
--- a/scripts/contrib/python/generate-manifest-3.5.py
+++ b/scripts/contrib/python/generate-manifest-3.5.py
@@ -213,6 +213,7 @@ if __name__ == "__main__":
     "${includedir}/python${PYTHON_BINABI}/pyconfig*.h " +
     "${libdir}/python${PYTHON_MAJMIN}/collections " +
     "${libdir}/python${PYTHON_MAJMIN}/_collections_abc.* " +
+    "${libdir}/python${PYTHON_MAJMIN}/_markupbase.* " +
     "${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.* " +
     "${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py ")
 
@@ -360,6 +361,9 @@ if __name__ == "__main__":
     m.addPackage( "${PN}-pkgutil", "Python package extension utility support", "${PN}-core",
     "pkgutil.*")
 
+    m.addPackage( "${PN}-plistlib", "Generate and parse Mac OS X .plist files", "${PN}-core ${PN}-datetime ${PN}-io",
+    "plistlib.*")
+
     m.addPackage( "${PN}-pprint", "Python pretty-print support", "${PN}-core ${PN}-io",
     "pprint.*" )
 
@@ -378,6 +382,9 @@ if __name__ == "__main__":
     m.addPackage( "${PN}-resource", "Python resource control interface", "${PN}-core",
     "lib-dynload/resource.*.so" )
 
+    m.addPackage( "${PN}-runpy", "Python script for locating/executing scripts in module namespace", "${PN}-core ${PN}-pkgutil",
+    "runpy.*" )
+
     m.addPackage( "${PN}-selectors", "Python High-level I/O multiplexing", "${PN}-core",
     "selectors.*" )
 
-- 
2.14.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v3 04/14] python-setuptools: upgrade to 38.2.4; use pypi.bbclass; improvements
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
                   ` (2 preceding siblings ...)
  2017-12-12  5:04 ` [PATCH v3 03/14] python-*-manifest/generators: add runpy; python3-plistlib Tim Orling
@ 2017-12-12  5:04 ` Tim Orling
  2017-12-12  5:04 ` [PATCH v3 05/14] python3-pip: use pypi.bbclass Tim Orling
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

* Simplify python- and python3-setuptools with pypi.bbclass
* inherit setuptools rather than distutils
* Consolidate common settings in python-setuptools.inc
  - use PYTHON_PN variable to eliminate duplication
  - python3-setuptools had missing RDEPENDS (e.g., plistlib)
  - installer no longer creates setuptools.pth, drop fixes

Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
---
 meta/recipes-devtools/python/python-setuptools.inc | 42 ++++++++++++++++++----
 .../python/python-setuptools_36.5.0.bb             | 38 --------------------
 .../python/python-setuptools_38.2.4.bb             |  9 +++++
 .../python/python3-setuptools_36.5.0.bb            | 38 --------------------
 .../python/python3-setuptools_38.2.4.bb            |  6 ++++
 5 files changed, 51 insertions(+), 82 deletions(-)
 delete mode 100644 meta/recipes-devtools/python/python-setuptools_36.5.0.bb
 create mode 100644 meta/recipes-devtools/python/python-setuptools_38.2.4.bb
 delete mode 100644 meta/recipes-devtools/python/python3-setuptools_36.5.0.bb
 create mode 100644 meta/recipes-devtools/python/python3-setuptools_38.2.4.bb

diff --git a/meta/recipes-devtools/python/python-setuptools.inc b/meta/recipes-devtools/python/python-setuptools.inc
index 1eae0b6174..d28a60c456 100644
--- a/meta/recipes-devtools/python/python-setuptools.inc
+++ b/meta/recipes-devtools/python/python-setuptools.inc
@@ -5,17 +5,47 @@ LICENSE = "MIT"
 
 LIC_FILES_CHKSUM = "file://LICENSE;beginline=1;endline=19;md5=9a33897f1bca1160d7aad3835152e158"
 
-SRCNAME = "setuptools"
+PYPI_PACKAGE_EXT = "zip"
 
-SRC_URI = "https://files.pythonhosted.org/packages/source/s/${SRCNAME}/${SRCNAME}-${PV}.zip"
+inherit pypi
 
-SRC_URI[md5sum] = "704f500dd55f4bd0be905444f3ba892c"
-SRC_URI[sha256sum] = "ce2007c1cea3359870b80657d634253a0765b0c7dc5a988d77ba803fc86f2c64"
+SRC_URI[md5sum] = "e8e05d4f8162c9341e1089c80f742f64"
+SRC_URI[sha256sum] = "9c671a6291a5b1171fb9da81665eb4f9625c7dbddc613d82abdc6002a4bce896"
 
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/setuptools"
+DEPENDS += "${PYTHON_PN}"
+DEPENDS_class-native += "${PYTHON_PN}-native"
+DEPENDS_class-nativesdk += "nativesdk-${PYTHON_PN}"
 
-S = "${WORKDIR}/${SRCNAME}-${PV}"
+DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${PYTHON_SITEPACKAGES_DIR} \
+                           --script-dir=${bindir}"
+
+RDEPENDS_${PN}_class-native = "\
+  ${PYTHON_PN}-distutils \
+  ${PYTHON_PN}-compression \
+"
+RDEPENDS_${PN} = "\
+  ${PYTHON_PN}-compile \
+  ${PYTHON_PN}-compression \
+  ${PYTHON_PN}-ctypes \
+  ${PYTHON_PN}-distutils \
+  ${PYTHON_PN}-email \
+  ${PYTHON_PN}-html \
+  ${PYTHON_PN}-importlib \
+  ${PYTHON_PN}-netserver \
+  ${PYTHON_PN}-numbers \
+  ${PYTHON_PN}-pkgutil \
+  ${PYTHON_PN}-plistlib \
+  ${PYTHON_PN}-shell \
+  ${PYTHON_PN}-subprocess \
+  ${PYTHON_PN}-stringold \
+  ${PYTHON_PN}-textutils \
+  ${PYTHON_PN}-threading \
+  ${PYTHON_PN}-unittest \
+  ${PYTHON_PN}-xml \
+"
 
 do_install_prepend() {
     install -d ${D}${PYTHON_SITEPACKAGES_DIR}
 }
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-setuptools_36.5.0.bb b/meta/recipes-devtools/python/python-setuptools_36.5.0.bb
deleted file mode 100644
index 526474c7ea..0000000000
--- a/meta/recipes-devtools/python/python-setuptools_36.5.0.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-require python-setuptools.inc
-
-PROVIDES = "python-distribute"
-
-DEPENDS += "python"
-DEPENDS_class-native += "python-native"
-
-inherit distutils
-
-DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${PYTHON_SITEPACKAGES_DIR}"
-
-RDEPENDS_${PN} = "\
-  python-stringold \
-  python-email \
-  python-shell \
-  python-distutils \
-  python-compression \
-  python-pkgutil \
-  python-plistlib \
-  python-numbers \
-  python-html \
-  python-netserver \
-  python-ctypes \
-  python-subprocess \
-  python-unittest \
-  python-compile \
-"
-
-RDEPENDS_${PN}_class-native = "\
-  python-distutils \
-  python-compression \
-"
-
-RREPLACES_${PN} = "python-distribute"
-RPROVIDES_${PN} = "python-distribute"
-RCONFLICTS_${PN} = "python-distribute"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-setuptools_38.2.4.bb b/meta/recipes-devtools/python/python-setuptools_38.2.4.bb
new file mode 100644
index 0000000000..cf9440495b
--- /dev/null
+++ b/meta/recipes-devtools/python/python-setuptools_38.2.4.bb
@@ -0,0 +1,9 @@
+require python-setuptools.inc
+
+PROVIDES = "python-distribute"
+
+inherit setuptools
+
+RREPLACES_${PN} = "python-distribute"
+RPROVIDES_${PN} = "python-distribute"
+RCONFLICTS_${PN} = "python-distribute"
diff --git a/meta/recipes-devtools/python/python3-setuptools_36.5.0.bb b/meta/recipes-devtools/python/python3-setuptools_36.5.0.bb
deleted file mode 100644
index 63f241809e..0000000000
--- a/meta/recipes-devtools/python/python3-setuptools_36.5.0.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-require python-setuptools.inc
-
-DEPENDS += "python3"
-DEPENDS_class-native += "python3-native"
-DEPENDS_class-nativesdk += "nativesdk-python3"
-
-inherit distutils3
-
-DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${PYTHON_SITEPACKAGES_DIR}"
-
-# The installer puts the wrong path in the setuptools.pth file.  Correct it.
-do_install_append() {
-    rm ${D}${PYTHON_SITEPACKAGES_DIR}/setuptools.pth
-    mv ${D}${bindir}/easy_install ${D}${bindir}/easy3_install
-    echo "./${SRCNAME}-${PV}-py${PYTHON_BASEVERSION}.egg" > ${D}${PYTHON_SITEPACKAGES_DIR}/setuptools.pth
-}
-
-RDEPENDS_${PN}_class-native = "\
-  python3-distutils \
-  python3-compression \
-"
-RDEPENDS_${PN} = "\
-  python3-ctypes \
-  python3-distutils \
-  python3-email \
-  python3-importlib \
-  python3-numbers \
-  python3-compression \
-  python3-shell \
-  python3-subprocess \
-  python3-textutils \
-  python3-pkgutil \
-  python3-threading \
-  python3-misc \
-  python3-unittest \
-  python3-xml \
-"
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-setuptools_38.2.4.bb b/meta/recipes-devtools/python/python3-setuptools_38.2.4.bb
new file mode 100644
index 0000000000..0dc1ed8622
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools_38.2.4.bb
@@ -0,0 +1,6 @@
+require python-setuptools.inc
+inherit setuptools3
+
+do_install_append() {
+    mv ${D}${bindir}/easy_install ${D}${bindir}/easy3_install
+}
-- 
2.14.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v3 05/14] python3-pip: use pypi.bbclass
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
                   ` (3 preceding siblings ...)
  2017-12-12  5:04 ` [PATCH v3 04/14] python-setuptools: upgrade to 38.2.4; use pypi.bbclass; improvements Tim Orling
@ 2017-12-12  5:04 ` Tim Orling
  2017-12-12  5:04 ` [PATCH v3 06/14] python-nose: " Tim Orling
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

* Simplify recipe by using pypi.bbclass

Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
---
 meta/recipes-devtools/python/python3-pip_9.0.1.bb | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

diff --git a/meta/recipes-devtools/python/python3-pip_9.0.1.bb b/meta/recipes-devtools/python/python3-pip_9.0.1.bb
index 9b907a2631..4ce13da410 100644
--- a/meta/recipes-devtools/python/python3-pip_9.0.1.bb
+++ b/meta/recipes-devtools/python/python3-pip_9.0.1.bb
@@ -1,22 +1,15 @@
 SUMMARY = "The PyPA recommended tool for installing Python packages"
-sHOMEPAGEsss = "https://pypi.python.org/pypi/pip"
+HOMEPAGE = "https://pypi.python.org/pypi/pip"
 SECTION = "devel/python"
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=25fba45109565f87de20bae85bc39452"
 
-SRCNAME = "pip"
 DEPENDS += "python3 python3-setuptools-native"
 
-SRC_URI = "https://files.pythonhosted.org/packages/source/p/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
-
 SRC_URI[md5sum] = "35f01da33009719497f01a4ba69d63c9"
 SRC_URI[sha256sum] = "09f243e1a7b461f654c26a725fa373211bb7ff17a9300058b205c61658ca940d"
 
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/pip"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit distutils3
+inherit pypi distutils3
 
 DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${PYTHON_SITEPACKAGES_DIR}"
 
@@ -33,7 +26,7 @@ do_install_append() {
     rm ${D}/${bindir}/pip
 
     # Installed eggs need to be passed directly to the interpreter via a pth file
-    echo "./${SRCNAME}-${PV}-py${PYTHON_BASEVERSION}.egg" > ${D}${PYTHON_SITEPACKAGES_DIR}/${SRCNAME}-${PV}.pth
+    echo "./${PYPI_PACKAGE}-${PV}-py${PYTHON_BASEVERSION}.egg" > ${D}${PYTHON_SITEPACKAGES_DIR}/${PYPI_PACKAGE}-${PV}.pth
 
     # Make sure we use /usr/bin/env python3
     for PYTHSCRIPT in `grep -rIl ${bindir} ${D}${bindir}/pip3*`; do
-- 
2.14.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v3 06/14] python-nose: use pypi.bbclass
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
                   ` (4 preceding siblings ...)
  2017-12-12  5:04 ` [PATCH v3 05/14] python3-pip: use pypi.bbclass Tim Orling
@ 2017-12-12  5:04 ` Tim Orling
  2017-12-12  5:04 ` [PATCH v3 07/14] python-six: " Tim Orling
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

* Simplify python- and python3-nose by using pypi.bbclass
* Consolidate common content in python-nose.inc
  - Avoid duplication by using PYTHON_PN variable

Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
---
 meta/recipes-devtools/python/python-nose.inc       | 18 ++++++++++++++++
 meta/recipes-devtools/python/python-nose_1.3.7.bb  | 25 +---------------------
 meta/recipes-devtools/python/python3-nose_1.3.7.bb | 24 +--------------------
 3 files changed, 20 insertions(+), 47 deletions(-)
 create mode 100644 meta/recipes-devtools/python/python-nose.inc

diff --git a/meta/recipes-devtools/python/python-nose.inc b/meta/recipes-devtools/python/python-nose.inc
new file mode 100644
index 0000000000..ccec68a0e1
--- /dev/null
+++ b/meta/recipes-devtools/python/python-nose.inc
@@ -0,0 +1,18 @@
+SUMMARY = "Extends Python unittest to make testing easier"
+HOMEPAGE = "http://readthedocs.org/docs/nose/"
+DESCRIPTION = "nose extends the test loading and running features of unittest, \
+making it easier to write, find and run tests."
+SECTION = "devel/python"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://lgpl.txt;md5=a6f89e2100d9b6cdffcea4f398e37343"
+
+SRC_URI[md5sum] = "4d3ad0ff07b61373d2cefc89c5d0b20b"
+SRC_URI[sha256sum] = "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"
+
+inherit pypi
+
+RDEPENDS_${PN} = "\
+  ${PYTHON_PN}-unittest \
+  "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-nose_1.3.7.bb b/meta/recipes-devtools/python/python-nose_1.3.7.bb
index 9b3509cafb..6d69d2d62e 100644
--- a/meta/recipes-devtools/python/python-nose_1.3.7.bb
+++ b/meta/recipes-devtools/python/python-nose_1.3.7.bb
@@ -1,25 +1,2 @@
-SUMMARY = "Extends Python unittest to make testing easier"
-HOMEPAGE = "http://readthedocs.org/docs/nose/"
-DESCRIPTION = "nose extends the test loading and running features of unittest, \
-making it easier to write, find and run tests."
-SECTION = "devel/python"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://lgpl.txt;md5=a6f89e2100d9b6cdffcea4f398e37343"
-
-SRC_URI = "https://files.pythonhosted.org/packages/source/n/nose/nose-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "4d3ad0ff07b61373d2cefc89c5d0b20b"
-SRC_URI[sha256sum] = "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"
-
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/nose/"
-UPSTREAM_CHECK_REGEX = "/nose/(?P<pver>(\d+[\.\-_]*)+)"
-
-S = "${WORKDIR}/nose-${PV}"
-
 inherit setuptools
-
-RDEPENDS_${PN} = "\
-  python-unittest \
-  "
-
-BBCLASSEXTEND = "native nativesdk"
+require python-nose.inc
diff --git a/meta/recipes-devtools/python/python3-nose_1.3.7.bb b/meta/recipes-devtools/python/python3-nose_1.3.7.bb
index 1e2ff74f57..8bc1f49835 100644
--- a/meta/recipes-devtools/python/python3-nose_1.3.7.bb
+++ b/meta/recipes-devtools/python/python3-nose_1.3.7.bb
@@ -1,28 +1,6 @@
-SUMMARY = "Extends Python unittest to make testing easier"
-DESCRIPTION = "nose extends the test loading and running features of unittest, \
-making it easier to write, find and run tests."
-SECTION = "devel/python"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://lgpl.txt;md5=a6f89e2100d9b6cdffcea4f398e37343"
-
-SRC_URI = "https://files.pythonhosted.org/packages/source/n/nose/nose-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "4d3ad0ff07b61373d2cefc89c5d0b20b"
-SRC_URI[sha256sum] = "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"
-
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/nose/"
-UPSTREAM_CHECK_REGEX = "/nose/(?P<pver>(\d+[\.\-_]*)+)"
-
-S = "${WORKDIR}/nose-${PV}"
-
 inherit setuptools3
+require python-nose.inc
 
 do_install_append() {
     mv ${D}${bindir}/nosetests ${D}${bindir}/nosetests3
 }
-
-RDEPENDS_${PN}_class-target = "\
-  python3-unittest \
-  "
-
-BBCLASSEXTEND = "native nativesdk"
-- 
2.14.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v3 07/14] python-six: use pypi.bbclass
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
                   ` (5 preceding siblings ...)
  2017-12-12  5:04 ` [PATCH v3 06/14] python-nose: " Tim Orling
@ 2017-12-12  5:04 ` Tim Orling
  2017-12-12  5:04 ` [PATCH v3 08/14] python-async: " Tim Orling
                   ` (7 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

* Simplify python3-six by using pypi.bbclass
  - Use PYTHON_PN in .inc to avoid duplication in RDEPENDS

Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
---
 meta/recipes-devtools/python/python-six.inc        | 8 +++-----
 meta/recipes-devtools/python/python3-six_1.11.0.bb | 2 --
 2 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/meta/recipes-devtools/python/python-six.inc b/meta/recipes-devtools/python/python-six.inc
index f9e7d6429d..c77498457d 100644
--- a/meta/recipes-devtools/python/python-six.inc
+++ b/meta/recipes-devtools/python/python-six.inc
@@ -4,13 +4,11 @@ SECTION = "devel/python"
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=35cec5bf04dd0820d0a18533ea7c774a"
 
-SRC_URI = "https://files.pythonhosted.org/packages/source/s/six/six-${PV}.tar.gz"
 SRC_URI[md5sum] = "d12789f9baf7e9fb2524c0c64f1773f8"
 SRC_URI[sha256sum] = "70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9"
 
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/six/"
-UPSTREAM_CHECK_REGEX = "/six/(?P<pver>(\d+[\.\-_]*)+)"
+inherit pypi
 
-BBCLASSEXTEND = "native nativesdk"
+RDEPENDS_${PN} = "${PYTHON_PN}-io"
 
-S = "${WORKDIR}/six-${PV}"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-six_1.11.0.bb b/meta/recipes-devtools/python/python3-six_1.11.0.bb
index 38a47b77dd..8795313bec 100644
--- a/meta/recipes-devtools/python/python3-six_1.11.0.bb
+++ b/meta/recipes-devtools/python/python3-six_1.11.0.bb
@@ -1,4 +1,2 @@
 inherit setuptools3
 require python-six.inc
-
-RDEPENDS_${PN} += "python3-io"
-- 
2.14.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v3 08/14] python-async: use pypi.bbclass
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
                   ` (6 preceding siblings ...)
  2017-12-12  5:04 ` [PATCH v3 07/14] python-six: " Tim Orling
@ 2017-12-12  5:04 ` Tim Orling
  2017-12-12  5:04 ` [PATCH v3 09/14] python-mako: " Tim Orling
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

* Simplify by using pypi.bbclass
* Use PYTHON_PN for RDEPENDS in .inc to avoid duplication

Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
---
 meta/recipes-devtools/python/python-async.inc       | 7 +++----
 meta/recipes-devtools/python/python3-async_0.6.2.bb | 6 +-----
 2 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/meta/recipes-devtools/python/python-async.inc b/meta/recipes-devtools/python/python-async.inc
index 2c5cb4d191..0874667e0c 100644
--- a/meta/recipes-devtools/python/python-async.inc
+++ b/meta/recipes-devtools/python/python-async.inc
@@ -4,12 +4,11 @@ SECTION = "devel/python"
 LICENSE = "BSD"
 LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=88df8e78b9edfd744953862179f2d14e"
 
-SRC_URI = "https://files.pythonhosted.org/packages/source/a/async/async-${PV}.tar.gz"
+inherit pypi
+
 SRC_URI[md5sum] = "9b06b5997de2154f3bc0273f80bcef6b"
 SRC_URI[sha256sum] = "ac6894d876e45878faae493b0cf61d0e28ec417334448ac0a6ea2229d8343051"
 
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/async/"
-
-S = "${WORKDIR}/async-${PV}"
+RDEPENDS_${PN} += "${PYTHON_PN}-threading ${PYTHON_PN}-lang"
 
 BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/python/python3-async_0.6.2.bb b/meta/recipes-devtools/python/python3-async_0.6.2.bb
index 54a30f5498..0da5fdecdc 100644
--- a/meta/recipes-devtools/python/python3-async_0.6.2.bb
+++ b/meta/recipes-devtools/python/python3-async_0.6.2.bb
@@ -1,6 +1,2 @@
-require python-async.inc
-
 inherit setuptools3
-
-RDEPENDS_${PN} += "python3-threading python3-lang"
-
+require python-async.inc
-- 
2.14.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v3 09/14] python-mako: use pypi.bbclass
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
                   ` (7 preceding siblings ...)
  2017-12-12  5:04 ` [PATCH v3 08/14] python-async: " Tim Orling
@ 2017-12-12  5:04 ` Tim Orling
  2017-12-12  5:04 ` [PATCH v3 10/14] python-smmap: " Tim Orling
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

* Simpify python3-mako by using pypi.bbclass
* Consolidate common content in .inc

Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
---
 meta/recipes-devtools/python/python-mako.inc       | 13 +++++++++----
 meta/recipes-devtools/python/python3-mako_1.0.7.bb | 11 +----------
 2 files changed, 10 insertions(+), 14 deletions(-)

diff --git a/meta/recipes-devtools/python/python-mako.inc b/meta/recipes-devtools/python/python-mako.inc
index 1c83af6a23..e265bde85f 100644
--- a/meta/recipes-devtools/python/python-mako.inc
+++ b/meta/recipes-devtools/python/python-mako.inc
@@ -4,13 +4,18 @@ SECTION = "devel/python"
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1bb21fa2d2f7a534c884b990430a6863"
 
-SRC_URI = "https://files.pythonhosted.org/packages/source/M/Mako/Mako-${PV}.tar.gz"
+PYPI_PACKAGE = "Mako"
+
+inherit pypi
 
 SRC_URI[md5sum] = "5836cc997b1b773ef389bf6629c30e65"
 SRC_URI[sha256sum] = "4e02fde57bd4abb5ec400181e4c314f56ac3e49ba4fb8b0d50bba18cb27d25ae"
 
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/mako/"
-UPSTREAM_CHECK_REGEX = "/Mako/(?P<pver>(\d+[\.\-_]*)+)"
+RDEPENDS_${PN} = "${PYTHON_PN}-html \
+                  ${PYTHON_PN}-netclient \
+                  ${PYTHON_PN}-threading \
+"
 
-S = "${WORKDIR}/Mako-${PV}"
+RDEPENDS_${PN}_class-native = ""
 
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-mako_1.0.7.bb b/meta/recipes-devtools/python/python3-mako_1.0.7.bb
index 2b50ffd08a..22ceeeb395 100644
--- a/meta/recipes-devtools/python/python3-mako_1.0.7.bb
+++ b/meta/recipes-devtools/python/python3-mako_1.0.7.bb
@@ -1,11 +1,2 @@
-require python-mako.inc
-
 inherit setuptools3
-
-RDEPENDS_${PN} = "python3-threading \
-                  python3-netclient \
-                  python3-html \
-"
-RDEPENDS_${PN}_class-native = ""
-
-BBCLASSEXTEND = "native nativesdk"
+require python-mako.inc
-- 
2.14.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v3 10/14] python-smmap: use pypi.bbclass
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
                   ` (8 preceding siblings ...)
  2017-12-12  5:04 ` [PATCH v3 09/14] python-mako: " Tim Orling
@ 2017-12-12  5:04 ` Tim Orling
  2017-12-12  5:04 ` [PATCH v3 11/14] python-gitdb: " Tim Orling
                   ` (4 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

* Simpify python3-smmap using pypi.bbclass
* Consolidate common content in .inc

Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
---
 meta/recipes-devtools/python/python-smmap.inc       | 12 ++++++------
 meta/recipes-devtools/python/python3-smmap_0.9.0.bb |  5 +----
 2 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/meta/recipes-devtools/python/python-smmap.inc b/meta/recipes-devtools/python/python-smmap.inc
index d67e6b5412..32438350c1 100644
--- a/meta/recipes-devtools/python/python-smmap.inc
+++ b/meta/recipes-devtools/python/python-smmap.inc
@@ -7,13 +7,13 @@ SECTION = "devel/python"
 LICENSE = "BSD"
 LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709"
 
-SRC_URI = "https://files.pythonhosted.org/packages/source/s/smmap/smmap-${PV}.tar.gz"
+inherit pypi
+
 SRC_URI[md5sum] = "d7932d5ace206bf4ae15198cf36fb6ab"
 SRC_URI[sha256sum] = "0e2b62b497bd5f0afebc002eda4d90df9d209c30ef257e8673c90a6b5c119d62"
 
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/smmap/"
-UPSTREAM_CHECK_REGEX = "/smmap/(?P<pver>(\d+[\.\-_]*)+)"
-
-S = "${WORKDIR}/smmap-${PV}"
-
+RDEPENDS_${PN} += "${PYTHON_PN}-codecs \
+                   ${PYTHON_PN}-lang \
+                   ${PYTHON_PN}-mmap \
+"
 BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/python/python3-smmap_0.9.0.bb b/meta/recipes-devtools/python/python3-smmap_0.9.0.bb
index 9f8a26d79e..e87b8df8c5 100644
--- a/meta/recipes-devtools/python/python3-smmap_0.9.0.bb
+++ b/meta/recipes-devtools/python/python3-smmap_0.9.0.bb
@@ -1,5 +1,2 @@
-require python-smmap.inc
-
 inherit setuptools3
-
-RDEPENDS_${PN} += "python3-codecs python3-mmap python3-lang"
+require python-smmap.inc
-- 
2.14.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v3 11/14] python-gitdb: use pypi.bbclass
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
                   ` (9 preceding siblings ...)
  2017-12-12  5:04 ` [PATCH v3 10/14] python-smmap: " Tim Orling
@ 2017-12-12  5:04 ` Tim Orling
  2017-12-12  5:04 ` [PATCH v3 12/14] python-git: " Tim Orling
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

* Simplify python3-gitdb using pypi.bbclass
* Consolidate common content in .inc

Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
---
 meta/recipes-devtools/python/python-gitdb.inc       | 15 +++++++++++----
 meta/recipes-devtools/python/python3-gitdb_0.6.4.bb |  7 +------
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/meta/recipes-devtools/python/python-gitdb.inc b/meta/recipes-devtools/python/python-gitdb.inc
index 08193fbf25..5fa8885eb9 100644
--- a/meta/recipes-devtools/python/python-gitdb.inc
+++ b/meta/recipes-devtools/python/python-gitdb.inc
@@ -4,13 +4,20 @@ SECTION = "devel/python"
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=59e5ecb13339a936eedf83282eaf4528"
 
-SRC_URI = "https://files.pythonhosted.org/packages/source/g/gitdb/gitdb-${PV}.tar.gz"
+inherit pypi
 
 SRC_URI[md5sum] = "44e4366b8bdfd306b075c3a52c96ae1a"
 SRC_URI[sha256sum] = "a3ebbc27be035a2e874ed904df516e35f4a29a778a764385de09de9e0f139658"
 
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/gitdb/"
-
-S = "${WORKDIR}/gitdb-${PV}"
+DEPENDS = "${PYTHON_PN}-async ${PYTHON_PN}-smmap"
 
+RDEPENDS_${PN} += "${PYTHON_PN}-async \
+                   ${PYTHON_PN}-compression \
+                   ${PYTHON_PN}-crypt \
+                   ${PYTHON_PN}-io \
+                   ${PYTHON_PN}-lang \
+                   ${PYTHON_PN}-mmap \
+                   ${PYTHON_PN}-shell \
+                   ${PYTHON_PN}-smmap \
+"
 BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/python/python3-gitdb_0.6.4.bb b/meta/recipes-devtools/python/python3-gitdb_0.6.4.bb
index 80d9d469af..e46a438757 100644
--- a/meta/recipes-devtools/python/python3-gitdb_0.6.4.bb
+++ b/meta/recipes-devtools/python/python3-gitdb_0.6.4.bb
@@ -1,7 +1,2 @@
-require python-gitdb.inc
-
-DEPENDS = "python3-async python3-smmap"
-
 inherit distutils3
-
-RDEPENDS_${PN} += "python3-smmap python3-async python3-mmap python3-lang python3-io python3-shell python3-crypt python3-compression"
+require python-gitdb.inc
-- 
2.14.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v3 12/14] python-git: use pypi.bbclass
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
                   ` (10 preceding siblings ...)
  2017-12-12  5:04 ` [PATCH v3 11/14] python-gitdb: " Tim Orling
@ 2017-12-12  5:04 ` Tim Orling
  2017-12-12  5:04 ` [PATCH v3 13/14] python3-iniparse: " Tim Orling
                   ` (2 subsequent siblings)
  14 siblings, 0 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

* Simplify python3-git by using pypi.bbclass
* Consolidate common content in .inc

Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
---
 meta/recipes-devtools/python/python-git.inc       | 26 ++++++++++++++++++-----
 meta/recipes-devtools/python/python3-git_2.1.7.bb |  5 -----
 2 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/meta/recipes-devtools/python/python-git.inc b/meta/recipes-devtools/python/python-git.inc
index 0b7e44ac0c..7b0707e008 100644
--- a/meta/recipes-devtools/python/python-git.inc
+++ b/meta/recipes-devtools/python/python-git.inc
@@ -8,14 +8,30 @@ SECTION = "devel/python"
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=8b8d26c37c1d5a04f9b0186edbebc183"
 
-SRC_URI = "https://files.pythonhosted.org/packages/source/G/GitPython/GitPython-${PV}.tar.gz"
+PYPI_PACKAGE = "GitPython"
+
+inherit pypi
 
 SRC_URI[md5sum] = "a63fdd2a650694ea23e268fd0c952034"
 SRC_URI[sha256sum] = "13c7cd99c2bf277fc99accfc25148752fa90e7cc6c6d08a3f01d229dacb461d9"
 
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/GitPython/"
-UPSTREAM_CHECK_REGEX = "/GitPython/(?P<pver>(\d+[\.\-_]*)+)"
-
-S = "${WORKDIR}/GitPython-${PV}"
+DEPENDS = "${PYTHON_PN}-gitdb"
 
+RDEPENDS_${PN} += "${PYTHON_PN}-argparse \
+                   ${PYTHON_PN}-datetime \
+                   ${PYTHON_PN}-enum \
+                   ${PYTHON_PN}-gitdb \
+                   ${PYTHON_PN}-io \
+                   ${PYTHON_PN}-lang \
+                   ${PYTHON_PN}-logging \
+                   ${PYTHON_PN}-math \
+                   ${PYTHON_PN}-netclient \
+                   ${PYTHON_PN}-re \
+                   ${PYTHON_PN}-shell \
+                   ${PYTHON_PN}-stringold \
+                   ${PYTHON_PN}-subprocess \
+                   ${PYTHON_PN}-unittest \
+                   ${PYTHON_PN}-unixadmin \
+                   git \
+"
 BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/python/python3-git_2.1.7.bb b/meta/recipes-devtools/python/python3-git_2.1.7.bb
index 4ac2a0ec79..ac320fa56b 100644
--- a/meta/recipes-devtools/python/python3-git_2.1.7.bb
+++ b/meta/recipes-devtools/python/python3-git_2.1.7.bb
@@ -1,7 +1,2 @@
 require python-git.inc
-
-DEPENDS = "python3-gitdb"
-
 inherit setuptools3
-
-RDEPENDS_${PN} += "python3-gitdb python3-lang python3-io python3-shell python3-math python3-re python3-subprocess python3-stringold python3-unixadmin python3-enum python3-logging python3-datetime python3-netclient python3-unittest python3-argparse git"
-- 
2.14.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v3 13/14] python3-iniparse: use pypi.bbclass
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
                   ` (11 preceding siblings ...)
  2017-12-12  5:04 ` [PATCH v3 12/14] python-git: " Tim Orling
@ 2017-12-12  5:04 ` Tim Orling
  2017-12-12  5:04 ` [PATCH v3 14/14] python-scons: upgrade to v3.0.1; " Tim Orling
  2017-12-12  5:32 ` ✗ patchtest: failure for python improvements (rev2) Patchwork
  14 siblings, 0 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

* Simplify recipe by using pypi.bbclass

Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
---
 meta/recipes-devtools/python/python3-iniparse_0.4.bb | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/meta/recipes-devtools/python/python3-iniparse_0.4.bb b/meta/recipes-devtools/python/python3-iniparse_0.4.bb
index f51ce647c9..4eba9ecd34 100644
--- a/meta/recipes-devtools/python/python3-iniparse_0.4.bb
+++ b/meta/recipes-devtools/python/python3-iniparse_0.4.bb
@@ -4,17 +4,14 @@ LICENSE = "MIT & PSF"
 LIC_FILES_CHKSUM = "file://LICENSE-PSF;md5=1c78a5bb3584b353496d5f6f34edb4b2 \
                     file://LICENSE;md5=52f28065af11d69382693b45b5a8eb54"
 
-SRC_URI = "https://files.pythonhosted.org/packages/source/i/iniparse/iniparse-${PV}.tar.gz \
-           file://0001-Add-python-3-compatibility.patch "
+SRC_URI = "file://0001-Add-python-3-compatibility.patch "
+
 SRC_URI[md5sum] = "5e573e9e9733d97623881ce9bbe5eca6"
 SRC_URI[sha256sum] = "abc1ee12d2cfb2506109072d6c21e40b6c75a3fe90a9c924327d80bc0d99c054"
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/iniparse/"
 
-inherit distutils3
+inherit pypi distutils3
 
 RDEPENDS_${PN} += "python3-core python3-six"
 DEPENDS += "python3-six"
 
 BBCLASSEXTEND = "native nativesdk"
-
-S = "${WORKDIR}/iniparse-${PV}"
-- 
2.14.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v3 14/14] python-scons: upgrade to v3.0.1; use pypi.bbclass
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
                   ` (12 preceding siblings ...)
  2017-12-12  5:04 ` [PATCH v3 13/14] python3-iniparse: " Tim Orling
@ 2017-12-12  5:04 ` Tim Orling
  2017-12-12  5:32 ` ✗ patchtest: failure for python improvements (rev2) Patchwork
  14 siblings, 0 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:04 UTC (permalink / raw)
  To: openembedded-core

* Simplify recipe by using pypi.bbclass
* Drop patch for __future__ print_function
  - fixed upstream:
https://github.com/SConsProject/scons/pull/1/commits/4c199d06e76afb9379e76942d0f68caa57f42509

Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
---
 ...ative_3.0.0.bb => python-scons-native_3.0.1.bb} |  0
 ...onscript-Support-python2-print-statements.patch | 38 ----------------------
 ...python-scons_3.0.0.bb => python-scons_3.0.1.bb} | 12 ++-----
 3 files changed, 3 insertions(+), 47 deletions(-)
 rename meta/recipes-devtools/python/{python-scons-native_3.0.0.bb => python-scons-native_3.0.1.bb} (100%)
 delete mode 100644 meta/recipes-devtools/python/python-scons/SConscript-Support-python2-print-statements.patch
 rename meta/recipes-devtools/python/{python-scons_3.0.0.bb => python-scons_3.0.1.bb} (54%)

diff --git a/meta/recipes-devtools/python/python-scons-native_3.0.0.bb b/meta/recipes-devtools/python/python-scons-native_3.0.1.bb
similarity index 100%
rename from meta/recipes-devtools/python/python-scons-native_3.0.0.bb
rename to meta/recipes-devtools/python/python-scons-native_3.0.1.bb
diff --git a/meta/recipes-devtools/python/python-scons/SConscript-Support-python2-print-statements.patch b/meta/recipes-devtools/python/python-scons/SConscript-Support-python2-print-statements.patch
deleted file mode 100644
index b1a790219e..0000000000
--- a/meta/recipes-devtools/python/python-scons/SConscript-Support-python2-print-statements.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 885aabdb313685405737112dcb7d7774eee6d879 Mon Sep 17 00:00:00 2001
-From: Thomas Berg <merlin66b@gmail.com>
-Date: Thu, 19 Oct 2017 14:02:21 -0500
-Subject: [PATCH] SConscript: Support python2 print statements
-
-This fixes a regression introduced in scons-3.0.0, where
-SConscripts containing python 2 print statements would cause
-syntax errors even when executing scons with python 2.7.
-
-This ensures backward compatibility, allowing users to build
-legacy code with scons-3.0.0 without having to patch it.
-
-Taken from
-https://github.com/SConsProject/scons/commit/2e0de3c55f22b3eaa7767b69740b898f3d2f46bf
-
-Upstream-Status: Accepted
-
-Signed-off-by: Jose Lamego <jose.a.lamego@linux.intel.com>
----
- engine/SCons/Script/SConscript.py | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/engine/SCons/Script/SConscript.py b/engine/SCons/Script/SConscript.py
-index bc05540..332d1fa 100644
---- a/engine/SCons/Script/SConscript.py
-+++ b/engine/SCons/Script/SConscript.py
-@@ -5,8 +5,6 @@ files.
- 
- """
- 
--from __future__ import print_function
--
- #
- # Copyright (c) 2001 - 2017 The SCons Foundation
- #
--- 
-2.7.4
-
diff --git a/meta/recipes-devtools/python/python-scons_3.0.0.bb b/meta/recipes-devtools/python/python-scons_3.0.1.bb
similarity index 54%
rename from meta/recipes-devtools/python/python-scons_3.0.0.bb
rename to meta/recipes-devtools/python/python-scons_3.0.1.bb
index 8fe74f4b3c..2f75b08d25 100644
--- a/meta/recipes-devtools/python/python-scons_3.0.0.bb
+++ b/meta/recipes-devtools/python/python-scons_3.0.1.bb
@@ -2,20 +2,14 @@ SUMMARY = "Software Construction tool (make/autotools replacement)"
 SECTION = "devel/python"
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=46ddf66004e5be5566367cb525a66fc6"
-SRCNAME = "scons"
 
-SRC_URI = "https://files.pythonhosted.org/packages/source/s/${SRCNAME}/${SRCNAME}-${PV}.tar.gz \
-           file://SConscript-Support-python2-print-statements.patch"
-
-SRC_URI[md5sum] = "7ca558edaaa1942fe38f3105ca2400fb"
-SRC_URI[sha256sum] = "aa5afb33c2bbd33c311e47e912412195739e9ffb2e933534a31f85fba8f3470e"
+SRC_URI[md5sum] = "b6a292e251b34b82c203b56cfa3968b3"
+SRC_URI[sha256sum] = "24475e38d39c19683bc88054524df018fe6949d70fbd4c69e298d39a0269f173"
 
 UPSTREAM_CHECK_URI = "http://scons.org/pages/download.html"
 UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
 
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit setuptools
+inherit pypi setuptools
 
 RDEPENDS_${PN} = "\
   python-fcntl \
-- 
2.14.3



^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH v3 01/14] pypi.bbclass: bring in from meta-python
  2017-12-12  5:04 ` [PATCH v3 01/14] pypi.bbclass: bring in from meta-python Tim Orling
@ 2017-12-12  5:18   ` Tim Orling
  0 siblings, 0 replies; 17+ messages in thread
From: Tim Orling @ 2017-12-12  5:18 UTC (permalink / raw)
  To: Tim Orling; +Cc: openembedded-core

Moments after hitting send, I realized this was missing the documentation strings
from v1. I have added that change in the contrib git repo, but will not bother resending
the patch via email. This series must be applied from git regardless, due to the long
lines in the old manifest files which break git send-email.

> On Dec 11, 2017, at 9:04 PM, Tim Orling <timothy.t.orling@linux.intel.com> wrote:
> 
> The pypi.bbclass has usefullness in many meta layers, not
> just meta-python. Add it to oe-core for the benefit of
> everyone.
> 
> Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
> ---
> meta/classes/pypi.bbclass | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
> create mode 100644 meta/classes/pypi.bbclass
> 
> diff --git a/meta/classes/pypi.bbclass b/meta/classes/pypi.bbclass
> new file mode 100644
> index 0000000000..e5d7ab3ce1
> --- /dev/null
> +++ b/meta/classes/pypi.bbclass
> @@ -0,0 +1,26 @@
> +def pypi_package(d):
> +    bpn = d.getVar('BPN')
> +    if bpn.startswith('python-'):
> +        return bpn[7:]
> +    elif bpn.startswith('python3-'):
> +        return bpn[8:]
> +    return bpn
> +
> +PYPI_PACKAGE ?= "${@pypi_package(d)}"
> +PYPI_PACKAGE_EXT ?= "tar.gz"
> +
> +def pypi_src_uri(d):
> +    package = d.getVar('PYPI_PACKAGE')
> +    package_ext = d.getVar('PYPI_PACKAGE_EXT')
> +    pv = d.getVar('PV')
> +    return 'https://files.pythonhosted.org/packages/source/%s/%s/%s-%s.%s' % (package[0], package, package, pv, package_ext)
> +
> +PYPI_SRC_URI ?= "${@pypi_src_uri(d)}"
> +
> +HOMEPAGE ?= "https://pypi.python.org/pypi/${PYPI_PACKAGE}/"
> +SECTION = "devel/python"
> +SRC_URI += "${PYPI_SRC_URI}"
> +S = "${WORKDIR}/${PYPI_PACKAGE}-${PV}"
> +
> +UPSTREAM_CHECK_URI ?= "https://pypi.python.org/pypi/${PYPI_PACKAGE}/"
> +UPSTREAM_CHECK_REGEX ?= "/${PYPI_PACKAGE}/(?P<pver>(\d+[\.\-_]*)+)"
> -- 
> 2.14.3
> 
> -- 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



^ permalink raw reply	[flat|nested] 17+ messages in thread

* ✗ patchtest: failure for python improvements (rev2)
  2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
                   ` (13 preceding siblings ...)
  2017-12-12  5:04 ` [PATCH v3 14/14] python-scons: upgrade to v3.0.1; " Tim Orling
@ 2017-12-12  5:32 ` Patchwork
  14 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2017-12-12  5:32 UTC (permalink / raw)
  To: Tim Orling; +Cc: openembedded-core

== Series Details ==

Series: python improvements (rev2)
Revision: 2
URL   : https://patchwork.openembedded.org/series/10133/
State : failure

== Summary ==


Thank you for submitting this patch series to OpenEmbedded Core. This is
an automated response. Several tests have been executed on the proposed
series by patchtest resulting in the following failures:



* Issue             Series cannot be parsed correctly due to malformed diff lines [test_mbox_format] 
  Suggested fix    Create the series again using git-format-patch and ensure it can be applied using git am
  Diff line        diff --git a/scripts/contrib/python/generate-manifest-2.7.py b/scripts/contrib/python/generate-manifest-2.7.py


* Issue             Series does not apply on top of target branch [test_series_merge_on_head] 
  Suggested fix    Rebase your series on top of targeted branch
  Targeted branch  master (currently at a24c10b7bd)



If you believe any of these test results are incorrect, please reply to the
mailing list (openembedded-core@lists.openembedded.org) raising your concerns.
Otherwise we would appreciate you correcting the issues and submitting a new
version of the patchset if applicable. Please ensure you add/increment the
version number when sending the new version (i.e. [PATCH] -> [PATCH v2] ->
[PATCH v3] -> ...).

---
Guidelines:     https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines
Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest
Test suite:     http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe



^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2017-12-12  5:32 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-12  5:04 [PATCH v3 00/14] python improvements Tim Orling
2017-12-12  5:04 ` [PATCH v3 01/14] pypi.bbclass: bring in from meta-python Tim Orling
2017-12-12  5:18   ` Tim Orling
2017-12-12  5:04 ` [PATCH v3 02/14] python-*-manifest/generators: fix long line lengths Tim Orling
2017-12-12  5:04 ` [PATCH v3 03/14] python-*-manifest/generators: add runpy; python3-plistlib Tim Orling
2017-12-12  5:04 ` [PATCH v3 04/14] python-setuptools: upgrade to 38.2.4; use pypi.bbclass; improvements Tim Orling
2017-12-12  5:04 ` [PATCH v3 05/14] python3-pip: use pypi.bbclass Tim Orling
2017-12-12  5:04 ` [PATCH v3 06/14] python-nose: " Tim Orling
2017-12-12  5:04 ` [PATCH v3 07/14] python-six: " Tim Orling
2017-12-12  5:04 ` [PATCH v3 08/14] python-async: " Tim Orling
2017-12-12  5:04 ` [PATCH v3 09/14] python-mako: " Tim Orling
2017-12-12  5:04 ` [PATCH v3 10/14] python-smmap: " Tim Orling
2017-12-12  5:04 ` [PATCH v3 11/14] python-gitdb: " Tim Orling
2017-12-12  5:04 ` [PATCH v3 12/14] python-git: " Tim Orling
2017-12-12  5:04 ` [PATCH v3 13/14] python3-iniparse: " Tim Orling
2017-12-12  5:04 ` [PATCH v3 14/14] python-scons: upgrade to v3.0.1; " Tim Orling
2017-12-12  5:32 ` ✗ patchtest: failure for python improvements (rev2) Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.