[OE-core] [PATCH] python3: Build and package precompiled modules

Joshua Lock joshua.g.lock at linux.intel.com
Fri Nov 11 10:16:05 UTC 2016


On Tue, 2016-10-25 at 19:20 +0200, Dominic Sacré wrote:
> Remove the patch that was applied in the python3 and python3-native
> recipes to skip compilation of python modules.
> 
> Modify generate-manifest-3.5.py to match '__pycache__' directories in
> FILES_*.
> This is necessary because Python3 puts .pyc files in '__pycache__'
> subdirectories one level below the corresponding .py files, whereas
> in
> Python2 they used to be right next to the sources.
> 
> This change significantly reduces the startup overhead of Python3
> scripts. For example, on a Cortex-A9, "python3 -c pass" took 0.40s
> before, and 0.19s after.
> 
> Signed-off-by: Dominic Sacré <dominic.sacre at gmx.de>

This looks good, thanks. I've had a similar change queued locally and
testing for [YOCTO #10315].

Acked-by: Joshua Lock <joshua.g.lock at intel.com>

> ---
>  .../python/python-3.5-manifest.inc                 | 130 ++++++++++-
> ----------
>  .../python/python3-native_3.5.2.bb                 |   1 -
>  .../python3/020-dont-compile-python-files.patch    |  48 --------
>  meta/recipes-devtools/python/python3_3.5.2.bb      |   1 -
>  scripts/contrib/python/generate-manifest-3.5.py    |  10 ++
>  5 files changed, 75 insertions(+), 115 deletions(-)
>  delete mode 100644 meta/recipes-devtools/python/python3/020-dont-
> compile-python-files.patch
> 
> diff --git a/meta/recipes-devtools/python/python-3.5-manifest.inc
> b/meta/recipes-devtools/python/python-3.5-manifest.inc
> index 3046114..851f12e 100644
> --- a/meta/recipes-devtools/python/python-3.5-manifest.inc
> +++ b/meta/recipes-devtools/python/python-3.5-manifest.inc
> @@ -11,59 +11,59 @@ PACKAGES="${PN}-dbg ${PN}-2to3 ${PN}-argparse
> ${PN}-asyncio ${PN}-audio ${PN}-co
>  
>  SUMMARY_${PN}-2to3="Python automated Python 2 to 3 code translator"
>  RDEPENDS_${PN}-2to3="${PN}-core"
> -FILES_${PN}-2to3="${libdir}/python3.5/lib2to3 "
> +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.* "
> +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 "
> +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/chunk.* ${libdir}/python3.5/sndhdr.*
> ${libdir}/python3.5/lib-dynload/ossaudiodev.*.so
> ${libdir}/python3.5/lib-dynload/audioop.*.so
> ${libdir}/python3.5/audiodev.* ${libdir}/python3.5/sunaudio.*
> ${libdir}/python3.5/sunau.* ${libdir}/python3.5/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/encodings ${libdir}/python3.5/gettext.*
> ${libdir}/python3.5/locale.* ${libdir}/python3.5/lib-
> dynload/_locale.*.so ${libdir}/python3.5/lib-dynload/_codecs*
> ${libdir}/python3.5/lib-dynload/_multibytecodec.*.so
> ${libdir}/python3.5/lib-dynload/unicodedata.*.so
> ${libdir}/python3.5/stringprep.* ${libdir}/python3.5/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/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/zipfile.* ${libdir}/python3.5/tarfile.*
> ${libdir}/python3.5/lib-dynload/bz2.*.so ${libdir}/python3.5/lib-
> dynload/zlib.*.so "
> +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 "
>  
>  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/_abcoll.* ${libdir}/python3.5/abc.*
> ${libdir}/python3.5/ast.* ${libdir}/python3.5/copy.*
> ${libdir}/python3.5/copyreg.* ${libdir}/python3.5/configparser.*
> ${libdir}/python3.5/genericpath.* ${libdir}/python3.5/getopt.*
> ${libdir}/python3.5/linecache.* ${libdir}/python3.5/new.*
> ${libdir}/python3.5/os.* ${libdir}/python3.5/posixpath.*
> ${libdir}/python3.5/struct.* ${libdir}/python3.5/warnings.*
> ${libdir}/python3.5/site.* ${libdir}/python3.5/stat.*
> ${libdir}/python3.5/UserDict.* ${libdir}/python3.5/UserList.*
> ${libdir}/python3.5/UserString.* ${libdir}/python3.5/lib-
> dynload/binascii.*.so ${libdir}/python3.5/lib-dynload/_struct.*.so
> ${libdir}/python3.5/lib-dynload/time.*.so ${libdir}/python3.5/lib-
> dynload/xreadlines.*.so ${libdir}/python3.5/types.*
> ${libdir}/python3.5/platform.* ${bindir}/python*
> ${libdir}/python3.5/_weakrefset.* ${libdir}/python3.5/sysconfig.*
> ${libdir}/python3.5/_sysconfigdata.*
> ${libdir}/python3.5/config/Makefile
> ${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.*
> ${libdir}/python3.5/config/Makefile
> ${libdir}/python3.5/config/Makefile/__pycache__
> ${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/md5.* ${libdir}/python3.5/sha.*
> ${libdir}/python3.5/lib-dynload/crypt.*.so ${libdir}/python3.5/lib-
> dynload/_hashlib.*.so ${libdir}/python3.5/lib-dynload/_sha256.*.so
> ${libdir}/python3.5/lib-dynload/_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/lib-dynload/_ctypes.*.so ${libdir}/python3.5/lib-
> dynload/_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/lib-dynload/_curses.*.so ${libdir}/python3.5/lib-
> dynload/_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/calendar.* ${libdir}/python3.5/datetime.*
> ${libdir}/python3.5/lib-dynload/_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/dumbdbm.* ${libdir}/python3.5/whichdb.*
> ${libdir}/python3.5/dbm ${libdir}/python3.5/lib-dynload/_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/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"
> @@ -71,207 +71,207 @@ FILES_${PN}-dev="${includedir}
> ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la ${libdi
>  
>  SUMMARY_${PN}-difflib="Python helpers for computing deltas between
> objects"
>  RDEPENDS_${PN}-difflib="${PN}-lang ${PN}-re"
> -FILES_${PN}-difflib="${libdir}/python3.5/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/distutils "
> +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 "
> +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.* "
> +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/email "
> +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.* "
> +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 "
> +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 "
> +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/htmlentitydefs.* ${libdir}/python3.5/htmllib.*
> ${libdir}/python3.5/markupbase.* ${libdir}/python3.5/sgmllib.*
> ${libdir}/python3.5/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/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 "
> +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/imghdr.* ${libdir}/python3.5/lib-
> dynload/imageop.*.so ${libdir}/python3.5/lib-dynload/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 "
> +FILES_${PN}-importlib="${libdir}/python3.5/importlib
> ${libdir}/python3.5/importlib/__pycache__ "
>  
>  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/_io.*.so ${libdir}/python3.5/lib-
> dynload/_ssl.*.so ${libdir}/python3.5/lib-dynload/select.*.so
> ${libdir}/python3.5/lib-dynload/termios.*.so ${libdir}/python3.5/lib-
> dynload/cStringIO.*.so ${libdir}/python3.5/pipes.*
> ${libdir}/python3.5/socket.* ${libdir}/python3.5/ssl.*
> ${libdir}/python3.5/tempfile.* ${libdir}/python3.5/StringIO.*
> ${libdir}/python3.5/io.* ${libdir}/python3.5/_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/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/lib-
> dynload/_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/_collections.*.so
> ${libdir}/python3.5/lib-dynload/_heapq.*.so ${libdir}/python3.5/lib-
> dynload/_weakref.*.so ${libdir}/python3.5/lib-dynload/_functools.*.so 
> ${libdir}/python3.5/lib-dynload/array.*.so ${libdir}/python3.5/lib-
> dynload/itertools.*.so ${libdir}/python3.5/lib-dynload/operator.*.so
> ${libdir}/python3.5/lib-dynload/parser.*.so
> ${libdir}/python3.5/atexit.* ${libdir}/python3.5/bisect.*
> ${libdir}/python3.5/code.* ${libdir}/python3.5/codeop.*
> ${libdir}/python3.5/collections.*
> ${libdir}/python3.5/_collections_abc.*
> ${libdir}/python3.5/contextlib.* ${libdir}/python3.5/dis.*
> ${libdir}/python3.5/functools.* ${libdir}/python3.5/heapq.*
> ${libdir}/python3.5/inspect.* ${libdir}/python3.5/keyword.*
> ${libdir}/python3.5/opcode.* ${libdir}/python3.5/operator.*
> ${libdir}/python3.5/symbol.* ${libdir}/python3.5/repr.*
> ${libdir}/python3.5/token.* ${libdir}/python3.5/tokenize.*
> ${libdir}/python3.5/traceback.* ${libdir}/python3.5/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 "
> +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.* "
> +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/math.*.so ${libdir}/python3.5/lib-
> dynload/_random.*.so ${libdir}/python3.5/random.*
> ${libdir}/python3.5/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/uu.* ${libdir}/python3.5/quopri.*
> ${libdir}/python3.5/rfc822.* ${libdir}/python3.5/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 "
> +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/multiprocessing "
> +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}-core ${PN}-crypt ${PN}-datetime
> ${PN}-io ${PN}-lang ${PN}-logging ${PN}-mime"
> -FILES_${PN}-netclient="${libdir}/python3.5/*Cookie*.*
> ${libdir}/python3.5/base64.* ${libdir}/python3.5/cookielib.*
> ${libdir}/python3.5/ftplib.* ${libdir}/python3.5/gopherlib.*
> ${libdir}/python3.5/hmac.* ${libdir}/python3.5/httplib.*
> ${libdir}/python3.5/mimetypes.* ${libdir}/python3.5/nntplib.*
> ${libdir}/python3.5/poplib.* ${libdir}/python3.5/smtplib.*
> ${libdir}/python3.5/telnetlib.* ${libdir}/python3.5/urllib
> ${libdir}/python3.5/uuid.* ${libdir}/python3.5/rfc822.*
> ${libdir}/python3.5/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/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/*HTTPServer.* ${libdir}/python3.5/SocketServer.*
> "
> +FILES_${PN}-netserver="${libdir}/python3.5/cgi.*
> ${libdir}/python3.5/__pycache__/cgi.*
> ${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/fractions.* ${libdir}/python3.5/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/pickle.*
> ${libdir}/python3.5/shelve.* ${libdir}/python3.5/lib-
> dynload/cPickle.*.so ${libdir}/python3.5/pickletools.* "
> +FILES_${PN}-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.* "
> +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.* "
> +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/pstats.* ${libdir}/python3.5/cProfile.*
> ${libdir}/python3.5/lib-dynload/_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/pydoc_data "
> +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/sre.*
> ${libdir}/python3.5/sre_compile.* ${libdir}/python3.5/sre_constants*
> ${libdir}/python3.5/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/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 "
> +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
> "
> +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.* "
> +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/commands.* ${libdir}/python3.5/dircache.*
> ${libdir}/python3.5/fnmatch.* ${libdir}/python3.5/glob.*
> ${libdir}/python3.5/popen2.* ${libdir}/python3.5/shlex.*
> ${libdir}/python3.5/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.* "
> +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.* "
> +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/sqlite3/dbapi2.*
> ${libdir}/python3.5/sqlite3/__init__.*
> ${libdir}/python3.5/sqlite3/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 "
> +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/string.* ${libdir}/python3.5/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/lib-dynload/_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 "
> +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/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"
> -FILES_${PN}-tests="${libdir}/python3.5/test "
> +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/csv.* ${libdir}/python3.5/optparse.*
> ${libdir}/python3.5/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/dummy_thread.*
> ${libdir}/python3.5/dummy_threading.* ${libdir}/python3.5/mutex.*
> ${libdir}/python3.5/threading.* ${libdir}/python3.5/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-tk ${libdir}/python3.5/tkinter "
> +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}-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/ "
> +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/grp.*.so ${libdir}/python3.5/lib-
> dynload/pwd.*.so ${libdir}/python3.5/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/pyexpat.*.so ${libdir}/python3.5/xml
> ${libdir}/python3.5/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"
> -FILES_${PN}-xmlrpc="${libdir}/python3.5/xmlrpclib.*
> ${libdir}/python3.5/SimpleXMLRPCServer.*
> ${libdir}/python3.5/DocXMLRPCServer.* ${libdir}/python3.5/xmlrpc "
> +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}-tests ${PN}-textutils
> ${PN}-threading ${PN}-tkinter ${PN}-unittest ${PN}-unixadmin ${PN}-
> xml ${PN}-xmlrpc  "
> diff --git a/meta/recipes-devtools/python/python3-native_3.5.2.bb
> b/meta/recipes-devtools/python/python3-native_3.5.2.bb
> index 594f15c..4498454 100644
> --- a/meta/recipes-devtools/python/python3-native_3.5.2.bb
> +++ b/meta/recipes-devtools/python/python3-native_3.5.2.bb
> @@ -8,7 +8,6 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Pyt
> hon-${PV}.tar.xz \
>  file://12-distutils-prefix-is-inside-staging-area.patch \
>  file://python-config.patch \
>  file://000-cross-compile.patch \
> -file://020-dont-compile-python-files.patch \
>  file://030-fixup-include-dirs.patch \
>  file://070-dont-clean-ipkg-install.patch \
>  file://080-distutils-dont_adjust_files.patch \
> diff --git a/meta/recipes-devtools/python/python3/020-dont-compile-
> python-files.patch b/meta/recipes-devtools/python/python3/020-dont-
> compile-python-files.patch
> deleted file mode 100644
> index 819ba69..0000000
> --- a/meta/recipes-devtools/python/python3/020-dont-compile-python-
> files.patch
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -Dont cross compile site packages
> -
> --Khem
> -
> -Upstream-Status: Inappropriate[Embedded-Specific]
> -
> ----
> - Makefile.pre.in |   16 ----------------
> - 1 file changed, 16 deletions(-)
> -
> -Index: Python-3.5.0/Makefile.pre.in
> -===================================================================
> ---- Python-3.5.0.orig/Makefile.pre.in
> -+++ Python-3.5.0/Makefile.pre.in
> -@@ -1262,33 +1262,6 @@ libinstall:	build_all
> $(srcdir)/Lib/$(PL
> - 		$(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
> - 			$(DESTDIR)$(LIBDEST)/distutils/tests ; \
> - 	fi
> --	-PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \
> --		$(PYTHON_FOR_BUILD) -Wi
> $(DESTDIR)$(LIBDEST)/compileall.py \
> --		-d $(LIBDEST) -f \
> --		-x 'bad_coding|badsyntax|site-
> packages|lib2to3/tests/data' \
> --		$(DESTDIR)$(LIBDEST)
> --	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
> --		$(PYTHON_FOR_BUILD) -Wi -O
> $(DESTDIR)$(LIBDEST)/compileall.py \
> --		-d $(LIBDEST) -f \
> --		-x 'bad_coding|badsyntax|site-
> packages|lib2to3/tests/data' \
> --		$(DESTDIR)$(LIBDEST)
> --	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
> --		$(PYTHON_FOR_BUILD) -Wi -OO
> $(DESTDIR)$(LIBDEST)/compileall.py \
> --		-d $(LIBDEST) -f \
> --		-x 'bad_coding|badsyntax|site-
> packages|lib2to3/tests/data' \
> --		$(DESTDIR)$(LIBDEST)
> --	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
> --		$(PYTHON_FOR_BUILD) -Wi
> $(DESTDIR)$(LIBDEST)/compileall.py \
> --		-d $(LIBDEST)/site-packages -f \
> --		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
> --	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
> --		$(PYTHON_FOR_BUILD) -Wi -O
> $(DESTDIR)$(LIBDEST)/compileall.py \
> --		-d $(LIBDEST)/site-packages -f \
> --		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
> --	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
> --		$(PYTHON_FOR_BUILD) -Wi -OO
> $(DESTDIR)$(LIBDEST)/compileall.py \
> --		-d $(LIBDEST)/site-packages -f \
> --		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
> - 	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
> - 		$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver
> $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
> - 	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
> diff --git a/meta/recipes-devtools/python/python3_3.5.2.bb
> b/meta/recipes-devtools/python/python3_3.5.2.bb
> index e6cbb9c..bde9c95 100644
> --- a/meta/recipes-devtools/python/python3_3.5.2.bb
> +++ b/meta/recipes-devtools/python/python3_3.5.2.bb
> @@ -9,7 +9,6 @@ DISTRO_SRC_URI_linuxstdbase = ""
>  SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.x
> z \
>  file://python-config.patch \
>  file://000-cross-compile.patch \
> -file://020-dont-compile-python-files.patch \
>  file://030-fixup-include-dirs.patch \
>  file://070-dont-clean-ipkg-install.patch \
>  file://080-distutils-dont_adjust_files.patch \
> diff --git a/scripts/contrib/python/generate-manifest-3.5.py
> b/scripts/contrib/python/generate-manifest-3.5.py
> index 2906cc6..897768f 100755
> --- a/scripts/contrib/python/generate-manifest-3.5.py
> +++ b/scripts/contrib/python/generate-manifest-3.5.py
> @@ -59,10 +59,20 @@ class MakefileMaker:
>          for filename in filenames:
>              if filename[0] != "$":
>                  fullFilenames.append( "%s%s" % ( self.targetPrefix,
> filename ) )
> +                fullFilenames.append( "%s%s" % ( self.targetPrefix,
> +                                                 self.pycachePath(
> filename ) ) )
>              else:
>                  fullFilenames.append( filename )
>          self.packages[name] = description, dependencies,
> fullFilenames
>  
> +    def pycachePath( self, filename ):
> +        dirname = os.path.dirname( filename )
> +        basename = os.path.basename( filename )
> +        if '.' in basename:
> +            return os.path.join( dirname, '__pycache__', basename )
> +        else:
> +            return os.path.join( dirname, basename, '__pycache__' )
> +
>      def doBody( self ):
>          """generate body of Makefile"""
>  
> -- 
> 2.10.1
> 



More information about the Openembedded-core mailing list