<div dir="ltr">Hello,<div><br></div><div>The last paragraph in commit message looks like it should be backwards compatible right?</div><div><br></div><div>Then there might be some bug somewhere, because in my builds (which use only very few python packages) there are few runtime dependencies which cannot be satisfied anymore:</div><div>python-man</div><div>python-readline</div><div>python3-textutils</div><div><br></div><div>Also probably related to this I&#39;ve seen python(3)-smbus recipes failing to build now with:</div><div>smbusmodule.c:192:48: error: &#39;I2C_SMBUS_WRITE&#39; undeclared (first use in this function); did you mean &#39;I2C_SMBUS&#39;?<br></div><div><br></div><div>Regards,</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jan 20, 2018 at 11:32 PM,  <span dir="ltr">&lt;<a href="mailto:git@git.openembedded.org" target="_blank">git@git.openembedded.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This is an automated email from the git hooks/post-receive script.<br>
<br>
rpurdie pushed a commit to branch master<br>
in repository openembedded-core.<br>
<br>
commit 6959e2e4dba5bbfa6ffd49c44e738c<wbr>c1c38bc280<br>
Author: Alejandro Hernandez &lt;<a href="mailto:alejandro.hernandez@linux.intel.com">alejandro.hernandez@linux.<wbr>intel.com</a>&gt;<br>
AuthorDate: Tue Jun 20 14:11:44 2017 -0700<br>
<br>
    python: Restructure python packaging and replace it with autopackaging<br>
<br>
    The reason we have a manifest file for python is that our goal is to<br>
    keep python-core as small as posible and add other python packages only<br>
    when the user needs them, hence why we split upstream python into several<br>
    packages.<br>
<br>
    Although our manifest file has several issues:<br>
     - Its unorganized and hard to read and understand it for an average<br>
       human being.<br>
     - When a new package needs to be added, the user actually has to modify<br>
       the script that creates the manifest, then call the script to create<br>
       a new manifest, and then submit a patch for both the script and the<br>
       manifest, so its a little convoluted.<br>
     - Git complains every single time a patch is submitted to the manifest,<br>
       since it violates some of its guidelines.<br>
     - It changes or may change with every release of python, its impossible<br>
       to know if the required files for a certain package have changed<br>
       (it could have more or less dependencies), the only way of doing so<br>
       would be to install and test them all one by one on separate individual<br>
       images, and even then we wouldnt know if they require less dependencies,<br>
       we would just know if an extra dependency is required since it would<br>
       complain, lets face it, this isnt feasible.<br>
     - The same thing happens for new packages, if someone wants to add a<br>
       new package, its dependencies need to be checked manually one by one.<br>
<br>
    This patch fixes those issues, while adding some additional features.<br>
<br>
    Features/Fixes:<br>
<br>
     - A new manifest format is used (JSON), easy to read and understand.<br>
       This file is parsed by the python recipe and python packages read<br>
       from here are passed directly to bitbake during parsing time.<br>
     - It provides an automatic manifest creation task (explained below),<br>
       which automagically checks for every package dependencies and adds<br>
       them to the new manifest, hence we will have on each package exactly<br>
       what that package needs to be run, providing finer granularity.<br>
     - Dependencies are also checked automagically for new packages (explained below).<br>
     - Fixes the manifest in the following ways:<br>
       * python-core should be base and all packages should depend on it,<br>
         fixes lang, string, codecs, etc.<br>
       * Fixes packages with repeated files (e.g. bssdb and db, or<br>
         netclient and mime, and many others).<br>
     - Sitecustomize was fixed since encoding was deprecated.<br>
     - The JSON manifest file invalidates bitbake&#39;s cache, so if it changes<br>
       the python package will be rebuilt.<br>
     - It creates a solution for users that want precompiled bytecode files<br>
       (*.pyc) INCLUDE_PYCS = &quot;1&quot; can be set by the user on their local.conf to<br>
       include such files, some argument they get faster boot time, even when the<br>
       files would be created on their first run?, but they also sometimes give a<br>
       magic number error and take up space, so we leave it to the user to<br>
       decide if they want them or not.<br>
     - Fixes python-core dependencies, e.g.<br>
       When python is run on an image, it TRIES to import everything it needs,<br>
       but it doesnt necessarily fails when it doesnt find something, so even if<br>
       we didnt know, we had errors like (trimmed on purpose):<br>
       # trying /usr/lib/python2.7/_locale.so<br>
       # trying /usr/lib/python2.7/lib-<wbr>dynload/_locale.so<br>
       # trying /usr/lib/python2.7/_<wbr>sysconfigdata.so<br>
<br>
       while it didnt complain about _locale it should have imported it,<br>
       after creating a new manifest with the automated script we get:<br>
<br>
       # trying /usr/lib/python2.7/lib-<wbr>dynload/_locale.so<br>
       dlopen(&quot;/usr/lib/python2.7/<wbr>lib-dynload/_locale.so&quot;, 2);<br>
       import _locale # dynamically loaded from /usr/lib/python2.7/lib-<wbr>dynload/_locale.so<br>
<br>
    How to use (after a new release of python, or maybe before every OE<br>
    release):<br>
     - A new task called create_manifest was added to the python package,<br>
       which may be invoked via:<br>
<br>
     $ bitbake python -c create_manifest<br>
<br>
     This task runs a script on native python on our HOST system, and since<br>
     the python and python-native packages come from the same source, we can<br>
     use it to know the dependencies of each module as if we were doing it<br>
     on an image, this script is called create_manifest.py and in a very<br>
     simplistic way it does the following:<br>
<br>
     1. Reads the JSON manifest file and creates a dictionary data structure<br>
        with all of our python packages, their FILES, RDEPENDS and SUMMARY.<br>
     2. Loops through all of them and runs every module listed on them<br>
        asynchronously, determining every dependency that they have.<br>
     3. These module dependencies are then handled, to be able to know which<br>
        packages contain those files and which should RDEPEND on one another.<br>
     4. The data structure that comes out of this, is then used to create a<br>
        new manifest file which is automatically copied onto the user&#39;s python<br>
        directory replacing the old one.<br>
<br>
     Create_manifest script features:<br>
     - Handles modules which dont exist anymore (new release for example).<br>
     - Handles modules that are builtin.<br>
     - Deals with modules which were not compiled (e.g. bsddb or ossaudiodev)<br>
     - Deals with packages which include folders.<br>
     - Deals with packages which include FILES with a wildcard.<br>
     - The manifest can be constructed on a multilib environment as well.<br>
     - This method works for both python modules and shared libraries used<br>
       by python.<br>
<br>
    How to add a new package:<br>
     - If a user wants to add a new package all that has to be done is<br>
       modify the python2-manifest.json file, and add the required file(s)<br>
       to the FILES list, the script should handle all the rest.<br>
       Real example:<br>
       We want to add a web browser package, including the file webbrowser.py<br>
       which at the moment is on python-misc.<br>
       &quot;webbrowser&quot;: {<br>
           &quot;files&quot;: [&quot;${libdir}/python2.7/lib-<wbr>dynload/webbrowser.py&quot;],<br>
           &quot;rdepends&quot;: [],<br>
           &quot;summary&quot;: &quot;Python Web Browser support&quot;}<br>
<br>
     Run bitbake python -c create_manifest and the resulting manifest<br>
     should  be completed after a few seconds, showing something like:<br>
       &quot;webbrowser&quot;: {<br>
          &quot;files&quot;: [&quot;${libdir}/python2.7/<wbr>webbrowser.py&quot;],<br>
          &quot;rdepends&quot;: [&quot;core&quot;,&quot;fcntl&quot;,&quot;io&quot;,&quot;pickle&quot;,<wbr>&quot;shell&quot;,&quot;subprocess&quot;],<br>
          &quot;summary&quot;: &quot;Python Web Browser support&quot;}<br>
<br>
    Known errors/issues:<br>
     - Some special packages are handled differently: core, misc,<br>
       modules,dev, staticdev.<br>
       All these should be handled manually, because they either include<br>
       binaries, static libraries, include files, etc. (something that we<br>
       cant import).<br>
       Specifically static libraries are not not supported by this method<br>
       and have to be handled by the user.<br>
     - The change should be transparent to the user, other than the fact<br>
       that now we CANT build python-foo (it was pretty dumb anyway, since<br>
       what building python-foo actually did was building the whole python<br>
       package anyway), but doing IMAGE_INSTALL_append = &quot; python-foo&quot;<br>
       would create an image with the requested package with no issues.<br>
<br>
    [YOCTO #11510] [YOCTO #11694] [YOCTO #11695]<br>
<br>
    Signed-off-by: Alejandro Hernandez &lt;<a href="mailto:alejandro.hernandez@linux.intel.com">alejandro.hernandez@linux.<wbr>intel.com</a>&gt;<br>
    Signed-off-by: Ross Burton &lt;<a href="mailto:ross.burton@intel.com">ross.burton@intel.com</a>&gt;<br>
---<br>
 .../python/python-2.7-<wbr>manifest.inc                 |  840 ----------------<br>
 .../python/python-native-2.7-<wbr>manifest.inc          |    9 -<br>
 .../python/<a href="http://python-native_2.7.13.bb" rel="noreferrer" target="_blank">python-native_2.7.<wbr>13.bb</a>                 |   24 +-<br>
 .../python/python/create_<wbr>manifest2.py              |  277 ++++++<br>
 .../python/python/get_module_<wbr>deps2.py              |  112 +++<br>
 .../python/python/python2-<wbr>manifest.json            | 1032 ++++++++++++++++++++<br>
 .../python/python/<wbr>sitecustomize.py                 |    8 -<br>
 meta/recipes-devtools/python/<a href="http://python_2.7.13.bb" rel="noreferrer" target="_blank">p<wbr>ython_2.7.13.bb</a>      |   88 +-<br>
 scripts/contrib/python/<a href="http://generate-manifest-2.7.py" rel="noreferrer" target="_blank">generat<wbr>e-manifest-2.7.py</a>    |  426 --------<br>
 9 files changed, 1528 insertions(+), 1288 deletions(-)<br>
<br>
diff --git a/meta/recipes-devtools/<wbr>python/python-2.7-manifest.inc b/meta/recipes-devtools/<wbr>python/python-2.7-manifest.inc<br>
deleted file mode 100644<br>
index 7c3fc1b..0000000<br>
--- a/meta/recipes-devtools/<wbr>python/python-2.7-manifest.inc<br>
+++ /dev/null<br>
@@ -1,840 +0,0 @@<br>
-<br>
-# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file.<br>
-# Generator: &#39;./scripts/contrib/python/<a href="http://generate-manifest-2.7.py" rel="noreferrer" target="_blank">gene<wbr>rate-manifest-2.7.py</a>&#39; Version 20110222.2 (C) 2002-2010 Michael &#39;Mickey&#39; Lauer &lt;<a href="mailto:mlauer@vanille-media.de">mlauer@vanille-media.de</a>&gt;<br>
-<br>
-<br>
-<br>
-PROVIDES+=&quot; \<br>
-  ${PN}-2to3 \<br>
-  ${PN}-argparse \<br>
-  ${PN}-audio \<br>
-  ${PN}-bsddb \<br>
-  ${PN}-codecs \<br>
-  ${PN}-compile \<br>
-  ${PN}-compiler \<br>
-  ${PN}-compression \<br>
-  ${PN}-contextlib \<br>
-  ${PN}-core \<br>
-  ${PN}-crypt \<br>
-  ${PN}-ctypes \<br>
-  ${PN}-curses \<br>
-  ${PN}-datetime \<br>
-  ${PN}-db \<br>
-  ${PN}-debugger \<br>
-  ${PN}-dev \<br>
-  ${PN}-difflib \<br>
-  ${PN}-distutils \<br>
-  ${PN}-distutils-staticdev \<br>
-  ${PN}-doctest \<br>
-  ${PN}-email \<br>
-  ${PN}-fcntl \<br>
-  ${PN}-gdbm \<br>
-  ${PN}-hotshot \<br>
-  ${PN}-html \<br>
-  ${PN}-idle \<br>
-  ${PN}-image \<br>
-  ${PN}-importlib \<br>
-  ${PN}-io \<br>
-  ${PN}-json \<br>
-  ${PN}-lang \<br>
-  ${PN}-logging \<br>
-  ${PN}-mailbox \<br>
-  ${PN}-math \<br>
-  ${PN}-mime \<br>
-  ${PN}-mmap \<br>
-  ${PN}-multiprocessing \<br>
-  ${PN}-netclient \<br>
-  ${PN}-netserver \<br>
-  ${PN}-numbers \<br>
-  ${PN}-pickle \<br>
-  ${PN}-pkgutil \<br>
-  ${PN}-plistlib \<br>
-  ${PN}-pprint \<br>
-  ${PN}-profile \<br>
-  ${PN}-pydoc \<br>
-  ${PN}-re \<br>
-  ${PN}-readline \<br>
-  ${PN}-resource \<br>
-  ${PN}-robotparser \<br>
-  ${PN}-runpy \<br>
-  ${PN}-shell \<br>
-  ${PN}-smtpd \<br>
-  ${PN}-sqlite3 \<br>
-  ${PN}-sqlite3-tests \<br>
-  ${PN}-stringold \<br>
-  ${PN}-subprocess \<br>
-  ${PN}-syslog \<br>
-  ${PN}-terminal \<br>
-  ${PN}-tests \<br>
-  ${PN}-textutils \<br>
-  ${PN}-threading \<br>
-  ${PN}-tkinter \<br>
-  ${PN}-unittest \<br>
-  ${PN}-unixadmin \<br>
-  ${PN}-xml \<br>
-  ${PN}-xmlrpc \<br>
-  ${PN}-zlib \<br>
-&quot;<br>
-<br>
-PACKAGES=&quot; \<br>
-  ${PN}-dbg \<br>
-  ${PN}-2to3 \<br>
-  ${PN}-argparse \<br>
-  ${PN}-audio \<br>
-  ${PN}-bsddb \<br>
-  ${PN}-codecs \<br>
-  ${PN}-compile \<br>
-  ${PN}-compiler \<br>
-  ${PN}-compression \<br>
-  ${PN}-contextlib \<br>
-  ${PN}-core \<br>
-  ${PN}-crypt \<br>
-  ${PN}-ctypes \<br>
-  ${PN}-curses \<br>
-  ${PN}-datetime \<br>
-  ${PN}-db \<br>
-  ${PN}-debugger \<br>
-  ${PN}-dev \<br>
-  ${PN}-difflib \<br>
-  ${PN}-distutils-staticdev ${PN}-distutils \<br>
-  ${PN}-doctest \<br>
-  ${PN}-email \<br>
-  ${PN}-fcntl \<br>
-  ${PN}-gdbm \<br>
-  ${PN}-hotshot \<br>
-  ${PN}-html \<br>
-  ${PN}-idle \<br>
-  ${PN}-image \<br>
-  ${PN}-importlib \<br>
-  ${PN}-io \<br>
-  ${PN}-json \<br>
-  ${PN}-lang \<br>
-  ${PN}-logging \<br>
-  ${PN}-mailbox \<br>
-  ${PN}-math \<br>
-  ${PN}-mime \<br>
-  ${PN}-mmap \<br>
-  ${PN}-multiprocessing \<br>
-  ${PN}-netclient \<br>
-  ${PN}-netserver \<br>
-  ${PN}-numbers \<br>
-  ${PN}-pickle \<br>
-  ${PN}-pkgutil \<br>
-  ${PN}-plistlib \<br>
-  ${PN}-pprint \<br>
-  ${PN}-profile \<br>
-  ${PN}-pydoc \<br>
-  ${PN}-re \<br>
-  ${PN}-readline \<br>
-  ${PN}-resource \<br>
-  ${PN}-robotparser \<br>
-  ${PN}-runpy \<br>
-  ${PN}-shell \<br>
-  ${PN}-smtpd \<br>
-  ${PN}-sqlite3 \<br>
-  ${PN}-sqlite3-tests \<br>
-  ${PN}-stringold \<br>
-  ${PN}-subprocess \<br>
-  ${PN}-syslog \<br>
-  ${PN}-terminal \<br>
-  ${PN}-tests \<br>
-  ${PN}-textutils \<br>
-  ${PN}-threading \<br>
-  ${PN}-tkinter \<br>
-  ${PN}-unittest \<br>
-  ${PN}-unixadmin \<br>
-  ${PN}-xml \<br>
-  ${PN}-xmlrpc \<br>
-  ${PN}-zlib \<br>
-  ${PN}-modules\<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-2to3=&quot;Python automated Python 2 to 3 code translator&quot;<br>
-RDEPENDS_${PN}-2to3=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-2to3=&quot; \<br>
-    ${bindir}/2to3 \<br>
-    ${libdir}/python2.7/lib2to3 \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-argparse=&quot;<wbr>Python command line argument parser&quot;<br>
-RDEPENDS_${PN}-argparse=&quot;${<wbr>PN}-core ${PN}-codecs ${PN}-textutils&quot;<br>
-FILES_${PN}-argparse=&quot; \<br>
-    ${libdir}/python2.7/argparse.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-audio=&quot;Python Audio Handling&quot;<br>
-RDEPENDS_${PN}-audio=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-audio=&quot; \<br>
-    ${libdir}/python2.7/wave.* \<br>
-    ${libdir}/python2.7/chunk.* \<br>
-    ${libdir}/python2.7/sndhdr.* \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/ossaudiodev.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/audioop.so \<br>
-    ${libdir}/python2.7/audiodev.* \<br>
-    ${libdir}/python2.7/sunaudio.* \<br>
-    ${libdir}/python2.7/sunau.* \<br>
-    ${libdir}/python2.7/toaiff.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-bsddb=&quot;Python bindings for the Berkeley Database&quot;<br>
-RDEPENDS_${PN}-bsddb=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-bsddb=&quot; \<br>
-    ${libdir}/python2.7/bsddb \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_bsddb.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-codecs=&quot;Python codecs, encodings &amp; i18n support&quot;<br>
-RDEPENDS_${PN}-codecs=&quot;${PN}-<wbr>core ${PN}-lang&quot;<br>
-FILES_${PN}-codecs=&quot; \<br>
-    ${libdir}/python2.7/codecs.* \<br>
-    ${libdir}/python2.7/encodings \<br>
-    ${libdir}/python2.7/gettext.* \<br>
-    ${libdir}/python2.7/locale.* \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_locale.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_codecs* \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_multibytecodec.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/unicodedata.so \<br>
-    ${libdir}/python2.7/<wbr>stringprep.* \<br>
-    ${libdir}/python2.7/xdrlib.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-compile=&quot;Python bytecode compilation support&quot;<br>
-RDEPENDS_${PN}-compile=&quot;${PN}<wbr>-core&quot;<br>
-FILES_${PN}-compile=&quot; \<br>
-    ${libdir}/python2.7/py_<wbr>compile.* \<br>
-    ${libdir}/python2.7/<wbr>compileall.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-compiler=&quot;<wbr>Python compiler support&quot;<br>
-RDEPENDS_${PN}-compiler=&quot;${<wbr>PN}-core&quot;<br>
-FILES_${PN}-compiler=&quot; \<br>
-    ${libdir}/python2.7/compiler \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-compression=&quot;<wbr>Python high-level compression support&quot;<br>
-RDEPENDS_${PN}-compression=&quot;$<wbr>{PN}-core ${PN}-zlib&quot;<br>
-FILES_${PN}-compression=&quot; \<br>
-    ${libdir}/python2.7/gzip.* \<br>
-    ${libdir}/python2.7/zipfile.* \<br>
-    ${libdir}/python2.7/tarfile.* \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/bz2.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-contextlib=&quot;<wbr>Python utilities for with-statementcontexts.&quot;<br>
-RDEPENDS_${PN}-contextlib=&quot;${<wbr>PN}-core&quot;<br>
-FILES_${PN}-contextlib=&quot; \<br>
-    ${libdir}/python${PYTHON_<wbr>MAJMIN}/contextlib.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-core=&quot;Python interpreter and core modules&quot;<br>
-RDEPENDS_${PN}-core=&quot;${PN}-<wbr>lang ${PN}-re&quot;<br>
-FILES_${PN}-core=&quot; \<br>
-    ${libdir}/python2.7/__future__<wbr>.* \<br>
-    ${libdir}/python2.7/_abcoll.* \<br>
-    ${libdir}/python2.7/abc.* \<br>
-    ${libdir}/python2.7/ast.* \<br>
-    ${libdir}/python2.7/copy.* \<br>
-    ${libdir}/python2.7/copy_reg.* \<br>
-    ${libdir}/python2.7/<wbr>ConfigParser.* \<br>
-    ${libdir}/python2.7/<wbr>genericpath.* \<br>
-    ${libdir}/python2.7/getopt.* \<br>
-    ${libdir}/python2.7/linecache.<wbr>* \<br>
-    ${libdir}/python2.7/new.* \<br>
-    ${libdir}/python2.7/os.* \<br>
-    ${libdir}/python2.7/posixpath.<wbr>* \<br>
-    ${libdir}/python2.7/struct.* \<br>
-    ${libdir}/python2.7/warnings.* \<br>
-    ${libdir}/python2.7/site.* \<br>
-    ${libdir}/python2.7/stat.* \<br>
-    ${libdir}/python2.7/UserDict.* \<br>
-    ${libdir}/python2.7/UserList.* \<br>
-    ${libdir}/python2.7/<wbr>UserString.* \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/binascii.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_struct.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/time.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/xreadlines.so \<br>
-    ${libdir}/python2.7/types.* \<br>
-    ${libdir}/python2.7/platform.* \<br>
-    ${bindir}/python* \<br>
-    ${libdir}/python2.7/_<wbr>weakrefset.* \<br>
-    ${libdir}/python2.7/sysconfig.<wbr>* \<br>
-    ${libdir}/python2.7/_<wbr>sysconfigdata.* \<br>
-    ${includedir}/python${PYTHON_<wbr>MAJMIN}/pyconfig*.h \<br>
-    ${libdir}/python${PYTHON_<wbr>MAJMIN}/sitecustomize.py \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-crypt=&quot;Python basic cryptographic and hashing support&quot;<br>
-RDEPENDS_${PN}-crypt=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-crypt=&quot; \<br>
-    ${libdir}/python2.7/hashlib.* \<br>
-    ${libdir}/python2.7/md5.* \<br>
-    ${libdir}/python2.7/sha.* \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/crypt.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_hashlib.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_sha256.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_sha512.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-ctypes=&quot;Python C types support&quot;<br>
-RDEPENDS_${PN}-ctypes=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-ctypes=&quot; \<br>
-    ${libdir}/python2.7/ctypes \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_ctypes.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_ctypes_test.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-curses=&quot;Python curses support&quot;<br>
-RDEPENDS_${PN}-curses=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-curses=&quot; \<br>
-    ${libdir}/python2.7/curses \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_curses.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_curses_panel.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-datetime=&quot;<wbr>Python calendar and time support&quot;<br>
-RDEPENDS_${PN}-datetime=&quot;${<wbr>PN}-core ${PN}-codecs&quot;<br>
-FILES_${PN}-datetime=&quot; \<br>
-    ${libdir}/python2.7/_strptime.<wbr>* \<br>
-    ${libdir}/python2.7/calendar.* \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/datetime.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-db=&quot;Python file-based database support&quot;<br>
-RDEPENDS_${PN}-db=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-db=&quot; \<br>
-    ${libdir}/python2.7/anydbm.* \<br>
-    ${libdir}/python2.7/dumbdbm.* \<br>
-    ${libdir}/python2.7/whichdb.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-debugger=&quot;<wbr>Python debugger&quot;<br>
-RDEPENDS_${PN}-debugger=&quot;${<wbr>PN}-core ${PN}-io ${PN}-lang ${PN}-re ${PN}-stringold ${PN}-shell ${PN}-pprint&quot;<br>
-FILES_${PN}-debugger=&quot; \<br>
-    ${libdir}/python2.7/bdb.* \<br>
-    ${libdir}/python2.7/pdb.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-dev=&quot;Python development package&quot;<br>
-RDEPENDS_${PN}-dev=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-dev=&quot; \<br>
-    ${includedir} \<br>
-    ${libdir}/lib*${SOLIBSDEV} \<br>
-    ${libdir}/*.la \<br>
-    ${libdir}/*.a \<br>
-    ${libdir}/*.o \<br>
-    ${libdir}/pkgconfig \<br>
-    ${base_libdir}/*.a \<br>
-    ${base_libdir}/*.o \<br>
-    ${datadir}/aclocal \<br>
-    ${datadir}/pkgconfig \<br>
-    ${libdir}/python2.7/config/<wbr>Makefile \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-difflib=&quot;Python helpers for computing deltas between objects&quot;<br>
-RDEPENDS_${PN}-difflib=&quot;${PN}<wbr>-lang ${PN}-re&quot;<br>
-FILES_${PN}-difflib=&quot; \<br>
-    ${libdir}/python2.7/difflib.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-distutils=&quot;<wbr>Python Distribution Utilities&quot;<br>
-RDEPENDS_${PN}-distutils=&quot;${<wbr>PN}-core ${PN}-email&quot;<br>
-FILES_${PN}-distutils=&quot; \<br>
-    ${libdir}/python2.7/config \<br>
-    ${libdir}/python2.7/distutils \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-distutils-<wbr>staticdev=&quot;Python distribution utilities (static libraries)&quot;<br>
-RDEPENDS_${PN}-distutils-<wbr>staticdev=&quot;${PN}-distutils&quot;<br>
-FILES_${PN}-distutils-<wbr>staticdev=&quot; \<br>
-    ${libdir}/python2.7/config/<wbr>lib*.a \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-doctest=&quot;Python framework for running examples in docstrings&quot;<br>
-RDEPENDS_${PN}-doctest=&quot;${PN}<wbr>-core ${PN}-lang ${PN}-io ${PN}-re ${PN}-unittest ${PN}-debugger ${PN}-difflib&quot;<br>
-FILES_${PN}-doctest=&quot; \<br>
-    ${libdir}/python2.7/doctest.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-email=&quot;Python email support&quot;<br>
-RDEPENDS_${PN}-email=&quot;${PN}-<wbr>core ${PN}-io ${PN}-re ${PN}-mime ${PN}-audio ${PN}-image ${PN}-netclient&quot;<br>
-FILES_${PN}-email=&quot; \<br>
-    ${libdir}/python2.7/imaplib.* \<br>
-    ${libdir}/python2.7/email \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-fcntl=&quot;Python&#39;s fcntl interface&quot;<br>
-RDEPENDS_${PN}-fcntl=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-fcntl=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/fcntl.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-gdbm=&quot;Python GNU database support&quot;<br>
-RDEPENDS_${PN}-gdbm=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-gdbm=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/gdbm.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-hotshot=&quot;Python hotshot performance profiler&quot;<br>
-RDEPENDS_${PN}-hotshot=&quot;${PN}<wbr>-core&quot;<br>
-FILES_${PN}-hotshot=&quot; \<br>
-    ${libdir}/python2.7/hotshot \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_hotshot.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-html=&quot;Python HTML processing support&quot;<br>
-RDEPENDS_${PN}-html=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-html=&quot; \<br>
-    ${libdir}/python2.7/formatter.<wbr>* \<br>
-    ${libdir}/python2.7/<wbr>htmlentitydefs.* \<br>
-    ${libdir}/python2.7/htmllib.* \<br>
-    ${libdir}/python2.7/<wbr>markupbase.* \<br>
-    ${libdir}/python2.7/sgmllib.* \<br>
-    ${libdir}/python2.7/<wbr>HTMLParser.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-idle=&quot;Python Integrated Development Environment&quot;<br>
-RDEPENDS_${PN}-idle=&quot;${PN}-<wbr>core ${PN}-tkinter&quot;<br>
-FILES_${PN}-idle=&quot; \<br>
-    ${bindir}/idle \<br>
-    ${libdir}/python2.7/idlelib \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-image=&quot;Python graphical image handling&quot;<br>
-RDEPENDS_${PN}-image=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-image=&quot; \<br>
-    ${libdir}/python2.7/colorsys.* \<br>
-    ${libdir}/python2.7/imghdr.* \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/imageop.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/rgbimg.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-importlib=&quot;<wbr>Python import implementation library&quot;<br>
-RDEPENDS_${PN}-importlib=&quot;${<wbr>PN}-core&quot;<br>
-FILES_${PN}-importlib=&quot; \<br>
-    ${libdir}/python2.7/importlib \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-io=&quot;Python low-level I/O&quot;<br>
-RDEPENDS_${PN}-io=&quot;${PN}-core ${PN}-math ${PN}-textutils ${PN}-netclient ${PN}-contextlib&quot;<br>
-FILES_${PN}-io=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_socket.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_io.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_ssl.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/select.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/termios.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/cStringIO.so \<br>
-    ${libdir}/python2.7/pipes.* \<br>
-    ${libdir}/python2.7/socket.* \<br>
-    ${libdir}/python2.7/ssl.* \<br>
-    ${libdir}/python2.7/tempfile.* \<br>
-    ${libdir}/python2.7/StringIO.* \<br>
-    ${libdir}/python2.7/io.* \<br>
-    ${libdir}/python2.7/_pyio.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-json=&quot;Python JSON support&quot;<br>
-RDEPENDS_${PN}-json=&quot;${PN}-<wbr>core ${PN}-math ${PN}-re ${PN}-codecs&quot;<br>
-FILES_${PN}-json=&quot; \<br>
-    ${libdir}/python2.7/json \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_json.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-lang=&quot;Python low-level language support&quot;<br>
-RDEPENDS_${PN}-lang=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-lang=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_bisect.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_collections.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_heapq.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_weakref.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_functools.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/array.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/itertools.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/operator.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/parser.so \<br>
-    ${libdir}/python2.7/atexit.* \<br>
-    ${libdir}/python2.7/bisect.* \<br>
-    ${libdir}/python2.7/code.* \<br>
-    ${libdir}/python2.7/codeop.* \<br>
-    ${libdir}/python2.7/<wbr>collections.* \<br>
-    ${libdir}/python2.7/dis.* \<br>
-    ${libdir}/python2.7/functools.<wbr>* \<br>
-    ${libdir}/python2.7/heapq.* \<br>
-    ${libdir}/python2.7/inspect.* \<br>
-    ${libdir}/python2.7/keyword.* \<br>
-    ${libdir}/python2.7/opcode.* \<br>
-    ${libdir}/python2.7/symbol.* \<br>
-    ${libdir}/python2.7/repr.* \<br>
-    ${libdir}/python2.7/token.* \<br>
-    ${libdir}/python2.7/tokenize.* \<br>
-    ${libdir}/python2.7/traceback.<wbr>* \<br>
-    ${libdir}/python2.7/weakref.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-logging=&quot;Python logging support&quot;<br>
-RDEPENDS_${PN}-logging=&quot;${PN}<wbr>-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-stringold&quot;<br>
-FILES_${PN}-logging=&quot; \<br>
-    ${libdir}/python2.7/logging \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-mailbox=&quot;Python mailbox format support&quot;<br>
-RDEPENDS_${PN}-mailbox=&quot;${PN}<wbr>-core ${PN}-mime&quot;<br>
-FILES_${PN}-mailbox=&quot; \<br>
-    ${libdir}/python2.7/mailbox.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-math=&quot;Python math support&quot;<br>
-RDEPENDS_${PN}-math=&quot;${PN}-<wbr>core ${PN}-crypt&quot;<br>
-FILES_${PN}-math=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/cmath.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/math.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_random.so \<br>
-    ${libdir}/python2.7/random.* \<br>
-    ${libdir}/python2.7/sets.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-mime=&quot;Python MIME handling APIs&quot;<br>
-RDEPENDS_${PN}-mime=&quot;${PN}-<wbr>core ${PN}-io&quot;<br>
-FILES_${PN}-mime=&quot; \<br>
-    ${libdir}/python2.7/mimetools.<wbr>* \<br>
-    ${libdir}/python2.7/uu.* \<br>
-    ${libdir}/python2.7/quopri.* \<br>
-    ${libdir}/python2.7/rfc822.* \<br>
-    ${libdir}/python2.7/<wbr>MimeWriter.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-mmap=&quot;Python memory-mapped file support&quot;<br>
-RDEPENDS_${PN}-mmap=&quot;${PN}-<wbr>core ${PN}-io&quot;<br>
-FILES_${PN}-mmap=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/mmap.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-<wbr>multiprocessing=&quot;Python multiprocessing support&quot;<br>
-RDEPENDS_${PN}-<wbr>multiprocessing=&quot;${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-threading ${PN}-ctypes ${PN}-mmap&quot;<br>
-FILES_${PN}-multiprocessing=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_multiprocessing.so \<br>
-    ${libdir}/python2.7/<wbr>multiprocessing \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-netclient=&quot;<wbr>Python Internet Protocol clients&quot;<br>
-RDEPENDS_${PN}-netclient=&quot;${<wbr>PN}-core ${PN}-crypt ${PN}-datetime ${PN}-io ${PN}-lang ${PN}-logging ${PN}-mime&quot;<br>
-FILES_${PN}-netclient=&quot; \<br>
-    ${libdir}/python2.7/*Cookie*.* \<br>
-    ${libdir}/python2.7/base64.* \<br>
-    ${libdir}/python2.7/cookielib.<wbr>* \<br>
-    ${libdir}/python2.7/ftplib.* \<br>
-    ${libdir}/python2.7/gopherlib.<wbr>* \<br>
-    ${libdir}/python2.7/hmac.* \<br>
-    ${libdir}/python2.7/httplib.* \<br>
-    ${libdir}/python2.7/mimetypes.<wbr>* \<br>
-    ${libdir}/python2.7/nntplib.* \<br>
-    ${libdir}/python2.7/poplib.* \<br>
-    ${libdir}/python2.7/smtplib.* \<br>
-    ${libdir}/python2.7/telnetlib.<wbr>* \<br>
-    ${libdir}/python2.7/urllib.* \<br>
-    ${libdir}/python2.7/urllib2.* \<br>
-    ${libdir}/python2.7/urlparse.* \<br>
-    ${libdir}/python2.7/uuid.* \<br>
-    ${libdir}/python2.7/rfc822.* \<br>
-    ${libdir}/python2.7/mimetools.<wbr>* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-netserver=&quot;<wbr>Python Internet Protocol servers&quot;<br>
-RDEPENDS_${PN}-netserver=&quot;${<wbr>PN}-core ${PN}-netclient ${PN}-shell ${PN}-threading&quot;<br>
-FILES_${PN}-netserver=&quot; \<br>
-    ${libdir}/python2.7/cgi.* \<br>
-    ${libdir}/python2.7/*<wbr>HTTPServer.* \<br>
-    ${libdir}/python2.7/<wbr>SocketServer.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-numbers=&quot;Python number APIs&quot;<br>
-RDEPENDS_${PN}-numbers=&quot;${PN}<wbr>-core ${PN}-lang ${PN}-re&quot;<br>
-FILES_${PN}-numbers=&quot; \<br>
-    ${libdir}/python2.7/decimal.* \<br>
-    ${libdir}/python2.7/fractions.<wbr>* \<br>
-    ${libdir}/python2.7/numbers.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-pickle=&quot;Python serialisation/persistence support&quot;<br>
-RDEPENDS_${PN}-pickle=&quot;${PN}-<wbr>core ${PN}-codecs ${PN}-io ${PN}-re&quot;<br>
-FILES_${PN}-pickle=&quot; \<br>
-    ${libdir}/python2.7/pickle.* \<br>
-    ${libdir}/python2.7/shelve.* \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/cPickle.so \<br>
-    ${libdir}/python2.7/<wbr>pickletools.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-pkgutil=&quot;Python package extension utility support&quot;<br>
-RDEPENDS_${PN}-pkgutil=&quot;${PN}<wbr>-core&quot;<br>
-FILES_${PN}-pkgutil=&quot; \<br>
-    ${libdir}/python2.7/pkgutil.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-plistlib=&quot;<wbr>Generate and parse Mac OS X .plist files&quot;<br>
-RDEPENDS_${PN}-plistlib=&quot;${<wbr>PN}-core ${PN}-datetime ${PN}-io&quot;<br>
-FILES_${PN}-plistlib=&quot; \<br>
-    ${libdir}/python2.7/plistlib.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-pprint=&quot;Python pretty-print support&quot;<br>
-RDEPENDS_${PN}-pprint=&quot;${PN}-<wbr>core ${PN}-io&quot;<br>
-FILES_${PN}-pprint=&quot; \<br>
-    ${libdir}/python2.7/pprint.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-profile=&quot;Python basic performance profiling support&quot;<br>
-RDEPENDS_${PN}-profile=&quot;${PN}<wbr>-core ${PN}-textutils&quot;<br>
-FILES_${PN}-profile=&quot; \<br>
-    ${libdir}/python2.7/profile.* \<br>
-    ${libdir}/python2.7/pstats.* \<br>
-    ${libdir}/python2.7/cProfile.* \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_lsprof.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-pydoc=&quot;Python interactive help support&quot;<br>
-RDEPENDS_${PN}-pydoc=&quot;${PN}-<wbr>core ${PN}-lang ${PN}-stringold ${PN}-re&quot;<br>
-FILES_${PN}-pydoc=&quot; \<br>
-    ${bindir}/pydoc \<br>
-    ${libdir}/python2.7/pydoc.* \<br>
-    ${libdir}/python2.7/pydoc_data \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-re=&quot;Python Regular Expression APIs&quot;<br>
-RDEPENDS_${PN}-re=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-re=&quot; \<br>
-    ${libdir}/python2.7/re.* \<br>
-    ${libdir}/python2.7/sre.* \<br>
-    ${libdir}/python2.7/sre_<wbr>compile.* \<br>
-    ${libdir}/python2.7/sre_<wbr>constants* \<br>
-    ${libdir}/python2.7/sre_parse.<wbr>* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-readline=&quot;<wbr>Python readline support&quot;<br>
-RDEPENDS_${PN}-readline=&quot;${<wbr>PN}-core&quot;<br>
-FILES_${PN}-readline=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/readline.so \<br>
-    ${libdir}/python2.7/<wbr>rlcompleter.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-resource=&quot;<wbr>Python resource control interface&quot;<br>
-RDEPENDS_${PN}-resource=&quot;${<wbr>PN}-core&quot;<br>
-FILES_${PN}-resource=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/resource.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-robotparser=&quot;<wbr>Python robots.txt parser&quot;<br>
-RDEPENDS_${PN}-robotparser=&quot;$<wbr>{PN}-core ${PN}-netclient&quot;<br>
-FILES_${PN}-robotparser=&quot; \<br>
-    ${libdir}/python2.7/<wbr>robotparser.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-runpy=&quot;Python script for locating/executing scripts in module namespace&quot;<br>
-RDEPENDS_${PN}-runpy=&quot;${PN}-<wbr>core ${PN}-pkgutil&quot;<br>
-FILES_${PN}-runpy=&quot; \<br>
-    ${libdir}/python2.7/runpy.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-shell=&quot;Python shell-like functionality&quot;<br>
-RDEPENDS_${PN}-shell=&quot;${PN}-<wbr>core ${PN}-re&quot;<br>
-FILES_${PN}-shell=&quot; \<br>
-    ${libdir}/python2.7/cmd.* \<br>
-    ${libdir}/python2.7/commands.* \<br>
-    ${libdir}/python2.7/dircache.* \<br>
-    ${libdir}/python2.7/fnmatch.* \<br>
-    ${libdir}/python2.7/glob.* \<br>
-    ${libdir}/python2.7/popen2.* \<br>
-    ${libdir}/python2.7/shlex.* \<br>
-    ${libdir}/python2.7/shutil.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-smtpd=&quot;Python Simple Mail Transport Daemon&quot;<br>
-RDEPENDS_${PN}-smtpd=&quot;${PN}-<wbr>core ${PN}-netserver ${PN}-email ${PN}-mime&quot;<br>
-FILES_${PN}-smtpd=&quot; \<br>
-    ${bindir}/smtpd.* \<br>
-    ${libdir}/python2.7/smtpd.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-sqlite3=&quot;Python Sqlite3 database support&quot;<br>
-RDEPENDS_${PN}-sqlite3=&quot;${PN}<wbr>-core ${PN}-datetime ${PN}-lang ${PN}-crypt ${PN}-io ${PN}-threading ${PN}-zlib&quot;<br>
-FILES_${PN}-sqlite3=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_sqlite3.so \<br>
-    ${libdir}/python2.7/sqlite3/<wbr>dbapi2.* \<br>
-    ${libdir}/python2.7/sqlite3/__<wbr>init__.* \<br>
-    ${libdir}/python2.7/sqlite3/<wbr>dump.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-sqlite3-tests=&quot;<wbr>Python Sqlite3 database support tests&quot;<br>
-RDEPENDS_${PN}-sqlite3-tests=<wbr>&quot;${PN}-core ${PN}-sqlite3&quot;<br>
-FILES_${PN}-sqlite3-tests=&quot; \<br>
-    ${libdir}/python2.7/sqlite3/<wbr>test \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-stringold=&quot;<wbr>Python string APIs [deprecated]&quot;<br>
-RDEPENDS_${PN}-stringold=&quot;${<wbr>PN}-core ${PN}-re&quot;<br>
-FILES_${PN}-stringold=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/strop.so \<br>
-    ${libdir}/python2.7/string.* \<br>
-    ${libdir}/python2.7/stringold.<wbr>* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-subprocess=&quot;<wbr>Python subprocess support&quot;<br>
-RDEPENDS_${PN}-subprocess=&quot;${<wbr>PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle&quot;<br>
-FILES_${PN}-subprocess=&quot; \<br>
-    ${libdir}/python2.7/<wbr>subprocess.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-syslog=&quot;Python syslog interface&quot;<br>
-RDEPENDS_${PN}-syslog=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-syslog=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/syslog.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-terminal=&quot;<wbr>Python terminal controlling support&quot;<br>
-RDEPENDS_${PN}-terminal=&quot;${<wbr>PN}-core ${PN}-io&quot;<br>
-FILES_${PN}-terminal=&quot; \<br>
-    ${libdir}/python2.7/pty.* \<br>
-    ${libdir}/python2.7/tty.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-tests=&quot;Python tests&quot;<br>
-RDEPENDS_${PN}-tests=&quot;${PN}-<wbr>core ${PN}-modules&quot;<br>
-FILES_${PN}-tests=&quot; \<br>
-    ${libdir}/python2.7/test \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-textutils=&quot;<wbr>Python option parsing, text wrapping and CSV support&quot;<br>
-RDEPENDS_${PN}-textutils=&quot;${<wbr>PN}-core ${PN}-io ${PN}-re ${PN}-stringold&quot;<br>
-FILES_${PN}-textutils=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_csv.so \<br>
-    ${libdir}/python2.7/csv.* \<br>
-    ${libdir}/python2.7/optparse.* \<br>
-    ${libdir}/python2.7/textwrap.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-threading=&quot;<wbr>Python threading &amp; synchronization support&quot;<br>
-RDEPENDS_${PN}-threading=&quot;${<wbr>PN}-core ${PN}-lang&quot;<br>
-FILES_${PN}-threading=&quot; \<br>
-    ${libdir}/python2.7/_<wbr>threading_local.* \<br>
-    ${libdir}/python2.7/dummy_<wbr>thread.* \<br>
-    ${libdir}/python2.7/dummy_<wbr>threading.* \<br>
-    ${libdir}/python2.7/mutex.* \<br>
-    ${libdir}/python2.7/threading.<wbr>* \<br>
-    ${libdir}/python2.7/Queue.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-tkinter=&quot;Python Tcl/Tk bindings&quot;<br>
-RDEPENDS_${PN}-tkinter=&quot;${PN}<wbr>-core&quot;<br>
-FILES_${PN}-tkinter=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_tkinter.so \<br>
-    ${libdir}/python2.7/lib-tk \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-unittest=&quot;<wbr>Python unit testing framework&quot;<br>
-RDEPENDS_${PN}-unittest=&quot;${<wbr>PN}-core ${PN}-stringold ${PN}-lang ${PN}-io ${PN}-difflib ${PN}-pprint ${PN}-shell&quot;<br>
-FILES_${PN}-unittest=&quot; \<br>
-    ${libdir}/python2.7/unittest/ \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-unixadmin=&quot;<wbr>Python Unix administration support&quot;<br>
-RDEPENDS_${PN}-unixadmin=&quot;${<wbr>PN}-core&quot;<br>
-FILES_${PN}-unixadmin=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/nis.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/grp.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/pwd.so \<br>
-    ${libdir}/python2.7/getpass.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-xml=&quot;Python basic XML support&quot;<br>
-RDEPENDS_${PN}-xml=&quot;${PN}-<wbr>core ${PN}-re&quot;<br>
-FILES_${PN}-xml=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/_elementtree.so \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/pyexpat.so \<br>
-    ${libdir}/python2.7/xml \<br>
-    ${libdir}/python2.7/xmllib.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-xmlrpc=&quot;Python XML-RPC support&quot;<br>
-RDEPENDS_${PN}-xmlrpc=&quot;${PN}-<wbr>core ${PN}-xml ${PN}-netserver ${PN}-lang&quot;<br>
-FILES_${PN}-xmlrpc=&quot; \<br>
-    ${libdir}/python2.7/xmlrpclib.<wbr>* \<br>
-    ${libdir}/python2.7/<wbr>SimpleXMLRPCServer.* \<br>
-    ${libdir}/python2.7/<wbr>DocXMLRPCServer.* \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-zlib=&quot;Python zlib compression support&quot;<br>
-RDEPENDS_${PN}-zlib=&quot;${PN}-<wbr>core&quot;<br>
-FILES_${PN}-zlib=&quot; \<br>
-    ${libdir}/python2.7/lib-<wbr>dynload/zlib.so \<br>
-&quot;<br>
-<br>
-SUMMARY_${PN}-modules=&quot;All Python modules&quot;<br>
-RDEPENDS_${PN}-modules=&quot; \<br>
-  ${PN}-2to3 \<br>
-  ${PN}-argparse \<br>
-  ${PN}-audio \<br>
-  ${PN}-bsddb \<br>
-  ${PN}-codecs \<br>
-  ${PN}-compile \<br>
-  ${PN}-compiler \<br>
-  ${PN}-compression \<br>
-  ${PN}-contextlib \<br>
-  ${PN}-core \<br>
-  ${PN}-crypt \<br>
-  ${PN}-ctypes \<br>
-  ${PN}-curses \<br>
-  ${PN}-datetime \<br>
-  ${PN}-db \<br>
-  ${PN}-debugger \<br>
-  ${PN}-difflib \<br>
-  ${PN}-distutils \<br>
-  ${PN}-doctest \<br>
-  ${PN}-email \<br>
-  ${PN}-fcntl \<br>
-  ${PN}-gdbm \<br>
-  ${PN}-hotshot \<br>
-  ${PN}-html \<br>
-  ${PN}-idle \<br>
-  ${PN}-image \<br>
-  ${PN}-importlib \<br>
-  ${PN}-io \<br>
-  ${PN}-json \<br>
-  ${PN}-lang \<br>
-  ${PN}-logging \<br>
-  ${PN}-mailbox \<br>
-  ${PN}-math \<br>
-  ${PN}-mime \<br>
-  ${PN}-mmap \<br>
-  ${PN}-multiprocessing \<br>
-  ${PN}-netclient \<br>
-  ${PN}-netserver \<br>
-  ${PN}-numbers \<br>
-  ${PN}-pickle \<br>
-  ${PN}-pkgutil \<br>
-  ${PN}-plistlib \<br>
-  ${PN}-pprint \<br>
-  ${PN}-profile \<br>
-  ${PN}-pydoc \<br>
-  ${PN}-re \<br>
-  ${PN}-readline \<br>
-  ${PN}-resource \<br>
-  ${PN}-robotparser \<br>
-  ${PN}-runpy \<br>
-  ${PN}-shell \<br>
-  ${PN}-smtpd \<br>
-  ${PN}-sqlite3 \<br>
-  ${PN}-sqlite3-tests \<br>
-  ${PN}-stringold \<br>
-  ${PN}-subprocess \<br>
-  ${PN}-syslog \<br>
-  ${PN}-terminal \<br>
-  ${PN}-textutils \<br>
-  ${PN}-threading \<br>
-  ${PN}-tkinter \<br>
-  ${PN}-unittest \<br>
-  ${PN}-unixadmin \<br>
-  ${PN}-xml \<br>
-  ${PN}-xmlrpc \<br>
-  ${PN}-zlib \<br>
-&quot;<br>
-ALLOW_EMPTY_${PN}-modules = &quot;1&quot;<br>
-<br>
-<br>
diff --git a/meta/recipes-devtools/<wbr>python/python-native-2.7-<wbr>manifest.inc b/meta/recipes-devtools/<wbr>python/python-native-2.7-<wbr>manifest.inc<br>
deleted file mode 100644<br>
index b05aae0..0000000<br>
--- a/meta/recipes-devtools/<wbr>python/python-native-2.7-<wbr>manifest.inc<br>
+++ /dev/null<br>
@@ -1,9 +0,0 @@<br>
-<br>
-# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file.<br>
-# Generator: &#39;../scripts/contrib/python/<a href="http://generate-manifest-2.7.py" rel="noreferrer" target="_blank">gen<wbr>erate-manifest-2.7.py</a> --native&#39; Version 20110222.2 (C) 2002-2010 Michael &#39;Mickey&#39; Lauer &lt;<a href="mailto:mlauer@vanille-media.de">mlauer@vanille-media.de</a>&gt;<br>
-<br>
-<br>
-<br>
-RPROVIDES += &quot;python-modules-native python-2to3-native python-argparse-native python-audio-native python-bsddb-native python-codecs-native python-compile-native python-compiler-native python-compression-native python-contextlib-native python-core-native python-crypt-native python-ctypes-native python-curses-native python-datetime-native python-db-native python-debugger-native python-dev-native python-difflib-native python-distutils-native python-distutils-staticdev-<wbr>native python-doctest- [...]<br>
-<br>
-<br>
diff --git a/meta/recipes-devtools/<wbr>python/<a href="http://python-native_2.7.13.bb" rel="noreferrer" target="_blank">python-native_2.7.13.bb</a> b/meta/recipes-devtools/<wbr>python/<a href="http://python-native_2.7.13.bb" rel="noreferrer" target="_blank">python-native_2.7.13.bb</a><br>
index 7edf153..2b74003 100644<br>
--- a/meta/recipes-devtools/<wbr>python/<a href="http://python-native_2.7.13.bb" rel="noreferrer" target="_blank">python-native_2.7.13.bb</a><br>
+++ b/meta/recipes-devtools/<wbr>python/<a href="http://python-native_2.7.13.bb" rel="noreferrer" target="_blank">python-native_2.7.13.bb</a><br>
@@ -1,5 +1,4 @@<br>
 require python.inc<br>
-<br>
 EXTRANATIVEPATH += &quot;bzip2-native&quot;<br>
 DEPENDS = &quot;openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native expat-native&quot;<br>
 PR = &quot;${INC_PR}.1&quot;<br>
@@ -25,8 +24,6 @@ FILESEXTRAPATHS =. &quot;${FILE_DIRNAME}/${PN}:&quot;<br>
<br>
 inherit native<br>
<br>
-require python-native-${PYTHON_MAJMIN}<wbr>-manifest.inc<br>
-<br>
 EXTRA_OECONF_append = &quot; --bindir=${bindir}/${PN} --with-system-expat=${STAGING_<wbr>DIR_HOST}&quot;<br>
<br>
 EXTRA_OEMAKE = &#39;\<br>
@@ -59,3 +56,24 @@ do_install() {<br>
        # installed in the native sysroot, so disable user site support.<br>
        sed -i -e &#39;s,^\(ENABLE_USER_SITE = \).*,\1False,&#39; ${D}${libdir}/python${PYTHON_<wbr>MAJMIN}/site.py<br>
 }<br>
+<br>
+python(){<br>
+<br>
+    # Read JSON manifest<br>
+    import json<br>
+    pythondir = d.getVar(&#39;THISDIR&#39;,True)<br>
+    with open(pythondir+&#39;/python/<wbr>python2-manifest.json&#39;) as manifest_file:<br>
+        python_manifest=json.load(<wbr>manifest_file)<br>
+<br>
+    rprovides = d.getVar(&#39;RPROVIDES&#39;).split()<br>
+<br>
+    # Hardcoded since it cant be python-native-foo, should be python-foo-native<br>
+    pn = &#39;python&#39;<br>
+<br>
+    for key in python_manifest:<br>
+        pypackage = pn + &#39;-&#39; + key + &#39;-native&#39;<br>
+        if pypackage not in rprovides:<br>
+              rprovides.append(pypackage)<br>
+<br>
+    d.setVar(&#39;RPROVIDES&#39;, &#39; &#39;.join(rprovides))<br>
+}<br>
diff --git a/meta/recipes-devtools/<wbr>python/python/create_<wbr>manifest2.py b/meta/recipes-devtools/<wbr>python/python/create_<wbr>manifest2.py<br>
new file mode 100644<br>
index 0000000..bd64ec3<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/<wbr>python/python/create_<wbr>manifest2.py<br>
@@ -0,0 +1,277 @@<br>
+# This script is used as a bitbake task to create a new python manifest<br>
+# $ bitbake python -c create_manifest<br>
+#<br>
+# Our goal is to keep python-core as small as posible and add other python<br>
+# packages only when the user needs them, hence why we split upstream python<br>
+# into several packages.<br>
+#<br>
+# In a very simplistic way what this does is:<br>
+# Launch python and see specifically what is required for it to run at a minimum<br>
+#<br>
+# Go through the python-manifest file and launch a separate task for every single<br>
+# one of the files on each package, this task will check what was required for that<br>
+# specific module to run, these modules will be called dependencies.<br>
+# The output of such task will be a list of the modules or dependencies that were<br>
+# found for that file.<br>
+#<br>
+# Such output will be parsed by this script, we will look for each dependency on the<br>
+# manifest and if we find that another package already includes it, then we will add<br>
+# that package as an RDEPENDS to the package we are currently checking; in case we dont<br>
+# find the current dependency on any other package we will add it to the current package<br>
+# as part of FILES.<br>
+#<br>
+#<br>
+# This way we will create a new manifest from the data structure that was built during<br>
+# this process, ont this new manifest each package will contain specifically only<br>
+# what it needs to run.<br>
+#<br>
+# There are some caveats which we try to deal with, such as repeated files on different<br>
+# packages, packages that include folders, wildcards, and special packages.<br>
+# Its also important to note that this method only works for python files, and shared<br>
+# libraries. Static libraries, header files and binaries need to be dealt with manually.<br>
+#<br>
+# Author: Alejandro Enedino Hernandez Samaniego &quot;aehs29&quot; &lt;<a href="mailto:aehs29@gmail.com">aehs29@gmail.com</a>&gt;<br>
+<br>
+<br>
+import sys<br>
+import subprocess<br>
+import json<br>
+import os<br>
+<br>
+# Hack to get native python search path (for folders), not fond of it but it works for now<br>
+pivot=&#39;recipe-sysroot-native&#39;<br>
+for p in sys.path:<br>
+  if pivot in p:<br>
+    nativelibfolder=p[:p.find(<wbr>pivot)+len(pivot)]<br>
+<br>
+# Empty dict to hold the whole manifest<br>
+new_manifest = {}<br>
+<br>
+# Check for repeated files, folders and wildcards<br>
+allfiles=[]<br>
+repeated=[]<br>
+wildcards=[]<br>
+<br>
+hasfolders=[]<br>
+allfolders=[]<br>
+<br>
+def isFolder(value):<br>
+  if os.path.isdir(value.replace(&#39;$<wbr>{libdir}&#39;,nativelibfolder+&#39;/<wbr>usr/lib&#39;)) or os.path.isdir(value.replace(&#39;$<wbr>{libdir}&#39;,nativelibfolder+&#39;/<wbr>usr/lib64&#39;)) or os.path.isdir(value.replace(&#39;$<wbr>{libdir}&#39;,nativelibfolder+&#39;/<wbr>usr/lib32&#39;)):<br>
+    return True<br>
+  else:<br>
+    return False<br>
+<br>
+# Read existing JSON manifest<br>
+with open(&#39;python2-manifest.json&#39;) as manifest:<br>
+  old_manifest=json.load(<wbr>manifest)<br>
+<br>
+<br>
+# First pass to get core-package functionality, because we base everything on the fact that core is actually working<br>
+# Not exactly the same so it should not be a function<br>
+print (&quot;Getting dependencies for core package:&quot;)<br>
+<br>
+# Special call to check for core package<br>
+output = subprocess.check_output([sys.<wbr>executable, &#39;get_module_deps2.py&#39;, &#39;python-core-package&#39;])<br>
+for item in output.split():<br>
+    # We append it so it doesnt hurt what we currently have:<br>
+    if item not in old_manifest[&#39;core&#39;][&#39;files&#39;]:<br>
+        # We use the same data structure since its the one which will be used to check<br>
+        # dependencies for other packages<br>
+        old_manifest[&#39;core&#39;][&#39;files&#39;].<wbr>append(item)<br>
+<br>
+for value in old_manifest[&#39;core&#39;][&#39;files&#39;]:<br>
+  # Ignore folders, since we don&#39;t import those, difficult to handle multilib<br>
+  if isFolder(value):<br>
+    # Pass it directly<br>
+    if value not in old_manifest[&#39;core&#39;][&#39;files&#39;]:<br>
+      old_manifest[&#39;core&#39;][&#39;files&#39;].<wbr>append(value)<br>
+  # Ignore binaries, since we don&#39;t import those, assume it was added correctly (manually)<br>
+  if &#39;${bindir}&#39; in value:<br>
+    # Pass it directly<br>
+    if value not in old_manifest[&#39;core&#39;][&#39;files&#39;]:<br>
+      old_manifest[&#39;core&#39;][&#39;files&#39;].<wbr>append(value)<br>
+    continue<br>
+  # Ignore empty values<br>
+  if value == &#39;&#39;:<br>
+    continue<br>
+  if &#39;${includedir}&#39; in value:<br>
+    if value not in old_manifest[&#39;core&#39;][&#39;files&#39;]:<br>
+      old_manifest[&#39;core&#39;][&#39;files&#39;].<wbr>append(value)<br>
+    continue<br>
+  # Get module name , shouldnt be affected by libdir/bindir<br>
+  value = os.path.splitext(os.path.<wbr>basename(os.path.normpath(<wbr>value)))[0]<br>
+<br>
+<br>
+  # Launch separate task for each module for deterministic behavior<br>
+  # Each module will only import what is necessary for it to work in specific<br>
+  print (&#39;Getting dependencies for module: %s&#39; % value)<br>
+  output = subprocess.check_output([sys.<wbr>executable, &#39;get_module_deps2.py&#39;, &#39;%s&#39; % value])<br>
+  for item in output.split():<br>
+    # We append it so it doesnt hurt what we currently have:<br>
+    if item not in old_manifest[&#39;core&#39;][&#39;files&#39;]:<br>
+      old_manifest[&#39;core&#39;][&#39;files&#39;].<wbr>append(item)<br>
+<br>
+# We check which packages include folders<br>
+for key in old_manifest:<br>
+    for value in old_manifest[key][&#39;files&#39;]:<br>
+        # Ignore folders, since we don&#39;t import those, difficult to handle multilib<br>
+        if isFolder(value):<br>
+            print (&#39;%s is a folder&#39; % value)<br>
+            if key not in hasfolders:<br>
+                hasfolders.append(key)<br>
+            if value not in allfolders:<br>
+                allfolders.append(value)<br>
+<br>
+for key in old_manifest:<br>
+    # Use an empty dict as data structure to hold data for each package and fill it up<br>
+    new_manifest[key]={}<br>
+    new_manifest[key][&#39;files&#39;]=[]<br>
+    new_manifest[key][&#39;rdepends&#39;]=<wbr>[]<br>
+    # All packages should depend on core<br>
+    if key != &#39;core&#39;:<br>
+         new_manifest[key][&#39;rdepends&#39;].<wbr>append(&#39;core&#39;)<br>
+    new_manifest[key][&#39;summary&#39;]=<wbr>old_manifest[key][&#39;summary&#39;]<br>
+<br>
+    # Handle special cases, we assume that when they were manually added<br>
+    # to the manifest we knew what we were doing.<br>
+    print (&#39;Handling package %s&#39; % key)<br>
+    special_packages=[&#39;misc&#39;, &#39;modules&#39;, &#39;dev&#39;]<br>
+    if key in special_packages or &#39;staticdev&#39; in key:<br>
+        print(&#39;Passing %s package directly&#39; % key)<br>
+        new_manifest[key]=old_<wbr>manifest[key]<br>
+        continue<br>
+<br>
+    for value in old_manifest[key][&#39;files&#39;]:<br>
+        # We already handled core on the first pass<br>
+        if key == &#39;core&#39;:<br>
+            new_manifest[key][&#39;files&#39;].<wbr>append(value)<br>
+            continue<br>
+        # Ignore folders, since we don&#39;t import those, difficult to handle multilib<br>
+        if isFolder(value):<br>
+            # Pass folders directly<br>
+            new_manifest[key][&#39;files&#39;].<wbr>append(value)<br>
+        # Ignore binaries, since we don&#39;t import those<br>
+        if &#39;${bindir}&#39; in value:<br>
+            # Pass it directly to the new manifest data structure<br>
+            if value not in new_manifest[key][&#39;files&#39;]:<br>
+                new_manifest[key][&#39;files&#39;].<wbr>append(value)<br>
+            continue<br>
+        # Ignore empty values<br>
+        if value == &#39;&#39;:<br>
+            continue<br>
+        if &#39;${includedir}&#39; in value:<br>
+            if value not in new_manifest[key][&#39;files&#39;]:<br>
+                new_manifest[key][&#39;files&#39;].<wbr>append(value)<br>
+            continue<br>
+        # Get module name , shouldnt be affected by libdir/bindir<br>
+        value = os.path.splitext(os.path.<wbr>basename(os.path.normpath(<wbr>value)))[0]<br>
+<br>
+        # Launch separate task for each module for deterministic behavior<br>
+        # Each module will only import what is necessary for it to work in specific<br>
+        print (&#39;Getting dependencies for module: %s&#39; % value)<br>
+        output = subprocess.check_output([sys.<wbr>executable, &#39;get_module_deps2.py&#39;, &#39;%s&#39; % value])<br>
+<br>
+        # We can print dependencies for debugging purposes<br>
+        #print (output)<br>
+        # Output will have all dependencies<br>
+        for item in output.split():<br>
+<br>
+            # Warning: This first part is ugly<br>
+            # One of the dependencies that was found, could be inside of one of the folders included by another package<br>
+            # We need to check if this happens so we can add the package containing the folder as an RDEPENDS<br>
+            # e.g. Folder encodings contained in codecs<br>
+            # This would be solved if no packages included any folders<br>
+<br>
+            # This can be done in two ways:<br>
+            # 1 - We assume that if we take out the filename from the path we would get<br>
+            #   the folder string, then we would check if folder string is in the list of folders<br>
+            #   This would not work if a package contains a folder which contains another folder<br>
+            #   e.g. path/folder1/folder2/filename  folder_string= path/folder1/folder2<br>
+            #   folder_string would not match any value contained in the list of folders<br>
+            #<br>
+            # 2 - We do it the other way around, checking if the folder is contained in the path<br>
+            #   e.g. path/folder1/folder2/filename  folder_string= path/folder1/folder2<br>
+            #   is folder_string inside path/folder1/folder2/filename?<wbr>,<br>
+            #   Yes, it works, but we waste a couple of milliseconds.<br>
+<br>
+            inFolders=False<br>
+            for folder in allfolders:<br>
+                if folder in item:<br>
+                    inFolders = True # Did we find a folder?<br>
+                    folderFound = False # Second flag to break inner for<br>
+                    # Loop only through packages which contain folders<br>
+                    for keyfolder in hasfolders:<br>
+                        if (folderFound == False):<br>
+                            #print(&quot;Checking folder %s on package %s&quot; % (item,keyfolder))<br>
+                            for file_folder in old_manifest[keyfolder][&#39;<wbr>files&#39;]:<br>
+                                if file_folder==folder:<br>
+                                    print (&#39;%s found in %s&#39; % (folder, keyfolder))<br>
+                                    folderFound = True<br>
+                                    if keyfolder not in new_manifest[key][&#39;rdepends&#39;] and keyfolder != key:<br>
+                                        new_manifest[key][&#39;rdepends&#39;].<wbr>append(keyfolder)<br>
+                        else:<br>
+                            break<br>
+<br>
+            # A folder was found so we&#39;re done with this item, we can go on<br>
+            if inFolders:<br>
+                continue<br>
+<br>
+            # We might already have it on the dictionary since it could depend on a (previously checked) module<br>
+            if item not in new_manifest[key][&#39;files&#39;]:<br>
+                # Handle core as a special package, we already did it so we pass it to NEW data structure directly<br>
+                if key==&#39;core&#39;:<br>
+                  print(&#39;Adding %s to %s FILES&#39; % (item, key))<br>
+                  if item.endswith(&#39;*&#39;):<br>
+                      wildcards.append(item)<br>
+                  new_manifest[key][&#39;files&#39;].<wbr>append(item)<br>
+<br>
+                  # Check for repeated files<br>
+                  if item not in allfiles:<br>
+                      allfiles.append(item)<br>
+                  else:<br>
+                      repeated.append(item)<br>
+<br>
+                else:<br>
+<br>
+                    # Check if this dependency is already contained on another package, so we add it<br>
+                    # as an RDEPENDS, or if its not, it means it should be contained on the current<br>
+                    # package, so we should add it to FILES<br>
+                    for newkey in old_manifest:<br>
+                        # Debug<br>
+                        #print(&quot;Checking %s &quot; % item + &quot; in %s&quot; % newkey)<br>
+                        if item in old_manifest[newkey][&#39;files&#39;]:<br>
+                                # Since were nesting, we need to check its not the same key<br>
+                                if(newkey!=key):<br>
+                                    if newkey not in new_manifest[key][&#39;rdepends&#39;]:<br>
+                                       # Add it to the new manifest data struct<br>
+                                       # Debug<br>
+                                       print(&#39;Adding %s to %s RDEPENDS, because it contains %s&#39; % (newkey, key, item))<br>
+                                       new_manifest[key][&#39;rdepends&#39;].<wbr>append(newkey)<br>
+                                    break<br>
+                    else:<br>
+                      # Debug<br>
+                      print(&#39;Adding %s to %s FILES&#39; % (item, key))<br>
+                      # Since it wasnt found on another package, its not an RDEP, so add it to FILES for this package<br>
+                      new_manifest[key][&#39;files&#39;].<wbr>append(item)<br>
+                      if item.endswith(&#39;*&#39;):<br>
+                          wildcards.append(item)<br>
+                      if item not in allfiles:<br>
+                          allfiles.append(item)<br>
+                      else:<br>
+                          repeated.append(item)<br>
+<br>
+print (&#39;The following files are repeated (contained in more than one package), please check which package should get it:&#39;)<br>
+print (repeated)<br>
+print(&#39;The following files contain wildcards, please check they are necessary&#39;)<br>
+print(wildcards)<br>
+print(&#39;The following files contain folders, please check they are necessary&#39;)<br>
+print(hasfolders)<br>
+<br>
+# Sort it just so it looks nice<br>
+for key in new_manifest:<br>
+    new_manifest[key][&#39;files&#39;].<wbr>sort()<br>
+    new_manifest[key][&#39;rdepends&#39;].<wbr>sort()<br>
+<br>
+# Create the manifest from the data structure that was built<br>
+with open(&#39;python2-manifest.json.<wbr>new&#39;,&#39;w&#39;) as outfile:<br>
+    json.dump(new_manifest,<wbr>outfile,sort_keys=True, indent=4)<br>
diff --git a/meta/recipes-devtools/<wbr>python/python/get_module_<wbr>deps2.py b/meta/recipes-devtools/<wbr>python/python/get_module_<wbr>deps2.py<br>
new file mode 100644<br>
index 0000000..73e7c6f<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/<wbr>python/python/get_module_<wbr>deps2.py<br>
@@ -0,0 +1,112 @@<br>
+# This script is launched on separate task for each python module<br>
+# It checks for dependencies for that specific module and prints<br>
+# them out, the output of this execution will have all dependencies<br>
+# for a specific module, which will be parsed an dealt on create_manifest.py<br>
+#<br>
+# Author: Alejandro Enedino Hernandez Samaniego &quot;aehs29&quot; &lt;<a href="mailto:aehs29@gmail.com">aehs29@gmail.com</a>&gt;<br>
+<br>
+<br>
+# We can get a log per module, for all the dependencies that were found, but its messy.<br>
+debug=False<br>
+<br>
+import sys<br>
+<br>
+# We can get a list of the modules which are currently required to run python<br>
+# so we run python-core and get its modules, we then import what we need<br>
+# and check what modules are currently running, if we substract them from the<br>
+# modules we had initially, we get the dependencies for the module we imported.<br>
+<br>
+# We use importlib to achieve this, so we also need to know what modules importlib needs<br>
+import importlib<br>
+<br>
+core_deps=set(sys.modules)<br>
+<br>
+def fix_path(dep_path):<br>
+    import os<br>
+    # We DONT want the path on our HOST system<br>
+    pivot=&#39;recipe-sysroot-native&#39;<br>
+    dep_path=dep_path[dep_path.<wbr>find(pivot)+len(pivot):]<br>
+<br>
+    if &#39;/usr/bin&#39; in dep_path:<br>
+        dep_path = dep_path.replace(&#39;/usr/bin&#39;&#39;${<wbr>bindir}&#39;)<br>
+<br>
+    # Handle multilib, is there a better way?<br>
+    if &#39;/usr/lib32&#39; in dep_path:<br>
+        dep_path = dep_path.replace(&#39;/usr/lib32&#39;,<wbr>&#39;${libdir}&#39;)<br>
+    if &#39;/usr/lib64&#39; in dep_path:<br>
+        dep_path = dep_path.replace(&#39;/usr/lib64&#39;,<wbr>&#39;${libdir}&#39;)<br>
+    if &#39;/usr/lib&#39; in dep_path:<br>
+        dep_path = dep_path.replace(&#39;/usr/lib&#39;,&#39;$<wbr>{libdir}&#39;)<br>
+    if &#39;/usr/include&#39; in dep_path:<br>
+        dep_path = dep_path.replace(&#39;/usr/<wbr>include&#39;,&#39;${includedir}&#39;)<br>
+    if &#39;__init__.&#39; in dep_path:<br>
+        dep_path =  os.path.split(dep_path)[0]<br>
+<br>
+    # If a *.pyc file was imported, we replace it with *.py (since we deal with PYCs on create_manifest)<br>
+    if &#39;.pyc&#39; in dep_path:<br>
+        dep_path = dep_path.replace(&#39;.pyc&#39;,&#39;.py&#39;)<br>
+<br>
+    return dep_path<br>
+<br>
+# Module to import was passed as an argument<br>
+current_module =  str(sys.argv[1]).rstrip()<br>
+if(debug==True):<br>
+       log = open(&#39;log_%s&#39; % current_module,&#39;w&#39;)<br>
+        log.write(&#39;Module %s generated the following dependencies:\n&#39; % current_module)<br>
+try:<br>
+    importlib.import_module(&#39;%s&#39; % current_module)<br>
+except ImportError as e:<br>
+    if (debug==True):<br>
+        log.write(&#39;Module was not found&#39;)<br>
+    pass<br>
+<br>
+<br>
+# Get current module dependencies, dif will contain a list of specific deps for this module<br>
+module_deps=set(sys.modules)<br>
+<br>
+# We handle the core package (1st pass on create_manifest.py) as a special case<br>
+if current_module == &#39;python-core-package&#39;:<br>
+    dif = core_deps<br>
+else:<br>
+    dif = module_deps-core_deps<br>
+<br>
+<br>
+# Check where each dependency came from<br>
+for item in dif:<br>
+    dep_path=&#39;&#39;<br>
+    try:<br>
+        if (debug==True):<br>
+            log.write(&#39;Calling: sys.modules[&#39; + &#39;%s&#39; % item + &#39;].__file__\n&#39;)<br>
+        dep_path = sys.modules[&#39;%s&#39; % item].__file__<br>
+    except AttributeError as e:<br>
+        # Deals with thread (builtin module) not having __file__ attribute<br>
+       if debug==True:<br>
+            log.write(item + &#39; &#39;)<br>
+            log.write(str(e))<br>
+           log.write(&#39;\n&#39;)<br>
+            pass<br>
+    except NameError as e:<br>
+        # Deals with NameError: name &#39;dep_path&#39; is not defined<br>
+        # because module is not found (wasn&#39;t compiled?), e.g. bddsm<br>
+        if (debug==True):<br>
+            log.write(item+&#39; &#39;)<br>
+            log.write(str(e))<br>
+        pass<br>
+<br>
+    # Site-customize is a special case since we (OpenEmbedded) put it there manually<br>
+    if &#39;sitecustomize&#39; in dep_path:<br>
+        dep_path = &#39;${libdir}/python2.7/<wbr>sitecustomize.py&#39;<br>
+        # Prints out result, which is what will be used by create_manifest<br>
+        print (dep_path)<br>
+        continue<br>
+<br>
+    dep_path = fix_path(dep_path)<br>
+<br>
+    if (debug==True):<br>
+        log.write(dep_path+&#39;\n&#39;)<br>
+<br>
+    # Prints out result, which is what will be used by create_manifest<br>
+    print (dep_path)<br>
+<br>
+if debug==True:<br>
+    log.close()<br>
diff --git a/meta/recipes-devtools/<wbr>python/python/python2-<wbr>manifest.json b/meta/recipes-devtools/<wbr>python/python/python2-<wbr>manifest.json<br>
new file mode 100644<br>
index 0000000..8ebc715<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/<wbr>python/python/python2-<wbr>manifest.json<br>
@@ -0,0 +1,1032 @@<br>
+{<br>
+    &quot;2to3&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${bindir}/2to3&quot;,<br>
+            &quot;${libdir}/python2.7/lib2to3&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python automated Python 2 to 3 code translator&quot;<br>
+    },<br>
+    &quot;argparse&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/argparse.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;codecs&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;textutils&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python command line argument parser&quot;<br>
+    },<br>
+    &quot;audio&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/audiodev.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/chunk.py&quot;<wbr>,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/audioop.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/ossaudiodev.so&quot;,<br>
+            &quot;${libdir}/python2.7/sndhdr.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/sunau.py&quot;<wbr>,<br>
+            &quot;${libdir}/python2.7/sunaudio.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/toaiff.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/wave.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;crypt&quot;,<br>
+            &quot;fcntl&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;math&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python Audio Handling&quot;<br>
+    },<br>
+    &quot;bsddb&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/bsddb&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_bsddb.so&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python bindings for the Berkeley Database&quot;<br>
+    },<br>
+    &quot;codecs&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/gettext.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_codecs_cn.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_codecs_hk.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_codecs_iso2022.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_codecs_jp.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_codecs_kr.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_codecs_tw.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_multibytecodec.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/unicodedata.so&quot;,<br>
+            &quot;${libdir}/python2.7/locale.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>stringprep.py&quot;,<br>
+            &quot;${libdir}/python2.7/xdrlib.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;lang&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python codec&quot;<br>
+    },<br>
+    &quot;compile&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/<wbr>compileall.py&quot;,<br>
+            &quot;${libdir}/python2.7/py_<wbr>compile.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python bytecode compilation support&quot;<br>
+    },<br>
+    &quot;compiler&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/compiler&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;lang&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python compiler support&quot;<br>
+    },<br>
+    &quot;compression&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/gzip.py&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/bz2.so&quot;,<br>
+            &quot;${libdir}/python2.7/tarfile.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/zipfile.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;shell&quot;,<br>
+            &quot;unixadmin&quot;,<br>
+            &quot;zlib&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python high-level compression support&quot;<br>
+    },<br>
+    &quot;contextlib&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/<wbr>contextlib.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;lang&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python utilities for with-statementcontexts.&quot;<br>
+    },<br>
+    &quot;core&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${bindir}/python*&quot;,<br>
+            &quot;${includedir}/python2.7/<wbr>pyconfig*.h&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>ConfigParser.py&quot;,<br>
+            &quot;${libdir}/python2.7/UserDict.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/UserList.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>UserString.py&quot;,<br>
+            &quot;${libdir}/python2.7/__future_<wbr>_.py&quot;,<br>
+            &quot;${libdir}/python2.7/_abcoll.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/_<wbr>sysconfigdata.py&quot;,<br>
+            &quot;${libdir}/python2.7/_<wbr>weakrefset.py&quot;,<br>
+            &quot;${libdir}/python2.7/abc.py&quot;,<br>
+            &quot;${libdir}/python2.7/ast.py&quot;,<br>
+            &quot;${libdir}/python2.7/atexit.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/codecs.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>collections.py&quot;,<br>
+            &quot;${libdir}/python2.7/copy.py&quot;,<br>
+            &quot;${libdir}/python2.7/copy_reg.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>encodings&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>encodings/aliases.py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>encodings/utf_8.py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>genericpath.py&quot;,<br>
+            &quot;${libdir}/python2.7/getopt.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/heapq.py&quot;<wbr>,<br>
+            &quot;${libdir}/python2.7/<wbr>importlib&quot;,<br>
+            &quot;${libdir}/python2.7/keyword.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_collections.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_heapq.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_locale.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_struct.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/binascii.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/itertools.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/operator.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/readline.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/strop.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/time.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/xreadlines.so&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>linecache.py&quot;,<br>
+            &quot;${libdir}/python2.7/new.py&quot;,<br>
+            &quot;${libdir}/python2.7/os.py&quot;,<br>
+            &quot;${libdir}/python2.7/platform.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>posixpath.py&quot;,<br>
+            &quot;${libdir}/python2.7/re.py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>rlcompleter.py&quot;,<br>
+            &quot;${libdir}/python2.7/site.py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>sitecustomize.py&quot;,<br>
+            &quot;${libdir}/python2.7/sre_<wbr>compile.py&quot;,<br>
+            &quot;${libdir}/python2.7/sre_<wbr>constants.py&quot;,<br>
+            &quot;${libdir}/python2.7/sre_<wbr>parse.py&quot;,<br>
+            &quot;${libdir}/python2.7/stat.py&quot;,<br>
+            &quot;${libdir}/python2.7/string.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/struct.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>sysconfig.py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>traceback.py&quot;,<br>
+            &quot;${libdir}/python2.7/types.py&quot;<wbr>,<br>
+            &quot;${libdir}/python2.7/warnings.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/weakref.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [],<br>
+        &quot;summary&quot;: &quot;Python interpreter and core modules&quot;<br>
+    },<br>
+    &quot;crypt&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/hashlib.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_hashlib.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/crypt.so&quot;,<br>
+            &quot;${libdir}/python2.7/md5.py&quot;,<br>
+            &quot;${libdir}/python2.7/sha.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python basic cryptographic and hashing support&quot;<br>
+    },<br>
+    &quot;ctypes&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/ctypes&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_ctypes.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_ctypes_test.so&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python C types support&quot;<br>
+    },<br>
+    &quot;curses&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/curses&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_curses.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_curses_panel.so&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python curses support&quot;<br>
+    },<br>
+    &quot;datetime&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/_<wbr>strptime.py&quot;,<br>
+            &quot;${libdir}/python2.7/calendar.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/datetime.so&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;codecs&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;lang&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python calendar and time support&quot;<br>
+    },<br>
+    &quot;db&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/anydbm.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/dbhash.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/dumbdbm.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/dbm.so&quot;,<br>
+            &quot;${libdir}/python2.7/whichdb.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;bsddb&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;gdbm&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python file-based database support&quot;<br>
+    },<br>
+    &quot;debugger&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/bdb.py&quot;,<br>
+            &quot;${libdir}/python2.7/pdb.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;pprint&quot;,<br>
+            &quot;shell&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python debugger&quot;<br>
+    },<br>
+    &quot;dev&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${base_libdir}/*.a&quot;,<br>
+            &quot;${base_libdir}/*.o&quot;,<br>
+            &quot;${datadir}/aclocal&quot;,<br>
+            &quot;${datadir}/pkgconfig&quot;,<br>
+            &quot;${includedir}&quot;,<br>
+            &quot;${libdir}/*.a&quot;,<br>
+            &quot;${libdir}/*.la&quot;,<br>
+            &quot;${libdir}/*.o&quot;,<br>
+            &quot;${libdir}/lib*${SOLIBSDEV}&quot;,<br>
+            &quot;${libdir}/pkgconfig&quot;,<br>
+            &quot;${libdir}/python2.7/config/<wbr>Makefile&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python development package&quot;<br>
+    },<br>
+    &quot;difflib&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/difflib.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;lang&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python helpers for computing deltas between objects&quot;<br>
+    },<br>
+    &quot;distutils&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/config&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>distutils&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python Distribution Utilities&quot;<br>
+    },<br>
+    &quot;distutils-staticdev&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/config/<wbr>lib*.a&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;distutils&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python distribution utilities (static libraries)&quot;<br>
+    },<br>
+    &quot;doctest&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/doctest.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;crypt&quot;,<br>
+            &quot;debugger&quot;,<br>
+            &quot;difflib&quot;,<br>
+            &quot;fcntl&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;math&quot;,<br>
+            &quot;pprint&quot;,<br>
+            &quot;shell&quot;,<br>
+            &quot;unittest&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python framework for running examples in docstrings&quot;<br>
+    },<br>
+    &quot;email&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/email&quot;,<br>
+            &quot;${libdir}/python2.7/imaplib.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;contextlib&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;crypt&quot;,<br>
+            &quot;fcntl&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;math&quot;,<br>
+            &quot;netclient&quot;,<br>
+            &quot;pickle&quot;,<br>
+            &quot;subprocess&quot;,<br>
+            &quot;textutils&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python email support&quot;<br>
+    },<br>
+    &quot;fcntl&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/fcntl.so&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python&#39;s fcntl interface&quot;<br>
+    },<br>
+    &quot;gdbm&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/gdbm.so&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python GNU database support&quot;<br>
+    },<br>
+    &quot;hotshot&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/hotshot&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_hotshot.so&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python hotshot performance profiler&quot;<br>
+    },<br>
+    &quot;html&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/<wbr>HTMLParser.py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>formatter.py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>htmlentitydefs.py&quot;,<br>
+            &quot;${libdir}/python2.7/htmllib.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>markupbase.py&quot;,<br>
+            &quot;${libdir}/python2.7/sgmllib.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python HTML processing support&quot;<br>
+    },<br>
+    &quot;idle&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${bindir}/idle&quot;,<br>
+            &quot;${libdir}/python2.7/idlelib&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python Integrated Development Environment&quot;<br>
+    },<br>
+    &quot;image&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/colorsys.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/imghdr.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python graphical image handling&quot;<br>
+    },<br>
+    &quot;io&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/StringIO.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/_pyio.py&quot;<wbr>,<br>
+            &quot;${libdir}/python2.7/io.py&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_io.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_socket.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_ssl.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/cStringIO.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/select.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/termios.so&quot;,<br>
+            &quot;${libdir}/python2.7/pipes.py&quot;<wbr>,<br>
+            &quot;${libdir}/python2.7/socket.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/ssl.py&quot;,<br>
+            &quot;${libdir}/python2.7/tempfile.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;contextlib&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;crypt&quot;,<br>
+            &quot;fcntl&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;math&quot;,<br>
+            &quot;netclient&quot;,<br>
+            &quot;textutils&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python low-level I/O&quot;<br>
+    },<br>
+    &quot;json&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/json&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_json.so&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python JSON support&quot;<br>
+    },<br>
+    &quot;lang&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/bisect.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/code.py&quot;,<br>
+            &quot;${libdir}/python2.7/codeop.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/dis.py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>functools.py&quot;,<br>
+            &quot;${libdir}/python2.7/inspect.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_bisect.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_functools.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/array.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/parser.so&quot;,<br>
+            &quot;${libdir}/python2.7/opcode.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/repr.py&quot;,<br>
+            &quot;${libdir}/python2.7/symbol.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/token.py&quot;<wbr>,<br>
+            &quot;${libdir}/python2.7/tokenize.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python low-level language support&quot;<br>
+    },<br>
+    &quot;logging&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/logging&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;threading&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python logging support&quot;<br>
+    },<br>
+    &quot;mailbox&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/mailbox.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;codecs&quot;,<br>
+            &quot;contextlib&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;crypt&quot;,<br>
+            &quot;datetime&quot;,<br>
+            &quot;email&quot;,<br>
+            &quot;fcntl&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;math&quot;,<br>
+            &quot;mime&quot;,<br>
+            &quot;netclient&quot;,<br>
+            &quot;textutils&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python mailbox format support&quot;<br>
+    },<br>
+    &quot;math&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_random.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/cmath.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/math.so&quot;,<br>
+            &quot;${libdir}/python2.7/random.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/sets.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;crypt&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python math support&quot;<br>
+    },<br>
+    &quot;mime&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/<wbr>MimeWriter.py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>mimetools.py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>mimetypes.py&quot;,<br>
+            &quot;${libdir}/python2.7/quopri.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/rfc822.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/uu.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;contextlib&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;crypt&quot;,<br>
+            &quot;fcntl&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;math&quot;,<br>
+            &quot;netclient&quot;,<br>
+            &quot;textutils&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python MIME handling APIs&quot;<br>
+    },<br>
+    &quot;mmap&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/mmap.so&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python memory-mapped file support&quot;<br>
+    },<br>
+    &quot;modules&quot;: {<br>
+        &quot;files&quot;: [],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;2to3&quot;,<br>
+            &quot;argparse&quot;,<br>
+            &quot;audio&quot;,<br>
+            &quot;bsddb&quot;,<br>
+            &quot;codecs&quot;,<br>
+            &quot;compile&quot;,<br>
+            &quot;compiler&quot;,<br>
+            &quot;compression&quot;,<br>
+            &quot;contextlib&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;crypt&quot;,<br>
+            &quot;ctypes&quot;,<br>
+            &quot;curses&quot;,<br>
+            &quot;datetime&quot;,<br>
+            &quot;db&quot;,<br>
+            &quot;debugger&quot;,<br>
+            &quot;difflib&quot;,<br>
+            &quot;distutils&quot;,<br>
+            &quot;doctest&quot;,<br>
+            &quot;email&quot;,<br>
+            &quot;fcntl&quot;,<br>
+            &quot;gdbm&quot;,<br>
+            &quot;hotshot&quot;,<br>
+            &quot;html&quot;,<br>
+            &quot;idle&quot;,<br>
+            &quot;image&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;json&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;logging&quot;,<br>
+            &quot;mailbox&quot;,<br>
+            &quot;math&quot;,<br>
+            &quot;mime&quot;,<br>
+            &quot;mmap&quot;,<br>
+            &quot;multiprocessing&quot;,<br>
+            &quot;netclient&quot;,<br>
+            &quot;netserver&quot;,<br>
+            &quot;numbers&quot;,<br>
+            &quot;pickle&quot;,<br>
+            &quot;pkgutil&quot;,<br>
+            &quot;plistlib&quot;,<br>
+            &quot;pprint&quot;,<br>
+            &quot;profile&quot;,<br>
+            &quot;pydoc&quot;,<br>
+            &quot;re&quot;,<br>
+            &quot;resource&quot;,<br>
+            &quot;robotparser&quot;,<br>
+            &quot;shell&quot;,<br>
+            &quot;smtpd&quot;,<br>
+            &quot;sqlite3&quot;,<br>
+            &quot;sqlite3&quot;,<br>
+            &quot;stringold&quot;,<br>
+            &quot;subprocess&quot;,<br>
+            &quot;syslog&quot;,<br>
+            &quot;terminal&quot;,<br>
+            &quot;textutils&quot;,<br>
+            &quot;threading&quot;,<br>
+            &quot;tkinter&quot;,<br>
+            &quot;unittest&quot;,<br>
+            &quot;unixadmin&quot;,<br>
+            &quot;xml&quot;,<br>
+            &quot;xmlrpc&quot;,<br>
+            &quot;zlib&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;All Python modules&quot;<br>
+    },<br>
+    &quot;multiprocessing&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_multiprocessing.so&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>multiprocessing&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;fcntl&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;pickle&quot;,<br>
+            &quot;subprocess&quot;,<br>
+            &quot;threading&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python multiprocessing support&quot;<br>
+    },<br>
+    &quot;netclient&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/Cookie.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/_<wbr>LWPCookieJar.py&quot;,<br>
+            &quot;${libdir}/python2.7/_<wbr>MozillaCookieJar.py&quot;,<br>
+            &quot;${libdir}/python2.7/base64.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>cookielib.py&quot;,<br>
+            &quot;${libdir}/python2.7/ftplib.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/hmac.py&quot;,<br>
+            &quot;${libdir}/python2.7/httplib.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/nntplib.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/poplib.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/smtplib.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>telnetlib.py&quot;,<br>
+            &quot;${libdir}/python2.7/urllib.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/urllib2.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/urlparse.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/uuid.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;codecs&quot;,<br>
+            &quot;contextlib&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;crypt&quot;,<br>
+            &quot;ctypes&quot;,<br>
+            &quot;datetime&quot;,<br>
+            &quot;email&quot;,<br>
+            &quot;fcntl&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;math&quot;,<br>
+            &quot;mime&quot;,<br>
+            &quot;pickle&quot;,<br>
+            &quot;subprocess&quot;,<br>
+            &quot;textutils&quot;,<br>
+            &quot;threading&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python Internet Protocol clients&quot;<br>
+    },<br>
+    &quot;netserver&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/<wbr>BaseHTTPServer.py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>CGIHTTPServer.py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>SimpleHTTPServer.py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>SocketServer.py&quot;,<br>
+            &quot;${libdir}/python2.7/cgi.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;contextlib&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;crypt&quot;,<br>
+            &quot;fcntl&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;math&quot;,<br>
+            &quot;mime&quot;,<br>
+            &quot;netclient&quot;,<br>
+            &quot;shell&quot;,<br>
+            &quot;textutils&quot;,<br>
+            &quot;threading&quot;,<br>
+            &quot;unixadmin&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python Internet Protocol servers&quot;<br>
+    },<br>
+    &quot;numbers&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/decimal.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>fractions.py&quot;,<br>
+            &quot;${libdir}/python2.7/numbers.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;codecs&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;math&quot;,<br>
+            &quot;threading&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python number APIs&quot;<br>
+    },<br>
+    &quot;pickle&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/cPickle.so&quot;,<br>
+            &quot;${libdir}/python2.7/pickle.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>pickletools.py&quot;,<br>
+            &quot;${libdir}/python2.7/shelve.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;io&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python serialisation/persistence support&quot;<br>
+    },<br>
+    &quot;pkgutil&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/pkgutil.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python package extension utility support&quot;<br>
+    },<br>
+    &quot;plistlib&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/plistlib.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;datetime&quot;,<br>
+            &quot;io&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Generate and parse Mac OS X .plist files&quot;<br>
+    },<br>
+    &quot;pprint&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/pprint.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;io&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python pretty-print support&quot;<br>
+    },<br>
+    &quot;profile&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/cProfile.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_lsprof.so&quot;,<br>
+            &quot;${libdir}/python2.7/profile.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/pstats.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;codecs&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;resource&quot;,<br>
+            &quot;textutils&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python basic performance profiling support&quot;<br>
+    },<br>
+    &quot;pydoc&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${bindir}/pydoc&quot;,<br>
+            &quot;${libdir}/python2.7/pydoc.py&quot;<wbr>,<br>
+            &quot;${libdir}/python2.7/pydoc_<wbr>data&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;codecs&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;pkgutil&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python interactive help support&quot;<br>
+    },<br>
+    &quot;re&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/sre.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python Regular Expression APIs&quot;<br>
+    },<br>
+    &quot;resource&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/resource.so&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python resource control interface&quot;<br>
+    },<br>
+    &quot;robotparser&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/<wbr>robotparser.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;contextlib&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;netclient&quot;,<br>
+            &quot;textutils&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python robots.txt parser&quot;<br>
+    },<br>
+    &quot;shell&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/cmd.py&quot;,<br>
+            &quot;${libdir}/python2.7/commands.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/dircache.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/fnmatch.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/glob.py&quot;,<br>
+            &quot;${libdir}/python2.7/popen2.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/shlex.py&quot;<wbr>,<br>
+            &quot;${libdir}/python2.7/shutil.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;unixadmin&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python shell-like functionality&quot;<br>
+    },<br>
+    &quot;smtpd&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${bindir}/smtpd.py&quot;,<br>
+            &quot;${libdir}/python2.7/asynchat.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/asyncore.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/smtpd.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;fcntl&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;lang&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python Simple Mail Transport Daemon&quot;<br>
+    },<br>
+    &quot;sqlite3&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_sqlite3.so&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python Sqlite3 database support&quot;<br>
+    },<br>
+    &quot;sqlite3-tests&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/sqlite3/<wbr>test&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;tests&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python Sqlite3 database support tests&quot;<br>
+    },<br>
+    &quot;stringold&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/<wbr>stringold.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python string APIs [deprecated]&quot;<br>
+    },<br>
+    &quot;subprocess&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/<wbr>subprocess.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;fcntl&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;pickle&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python subprocess support&quot;<br>
+    },<br>
+    &quot;syslog&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/syslog.so&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python syslog interface&quot;<br>
+    },<br>
+    &quot;terminal&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/pty.py&quot;,<br>
+            &quot;${libdir}/python2.7/tty.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;io&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python terminal controlling support&quot;<br>
+    },<br>
+    &quot;tests&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/test&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python tests&quot;<br>
+    },<br>
+    &quot;textutils&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/csv.py&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_csv.so&quot;,<br>
+            &quot;${libdir}/python2.7/optparse.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/textwrap.<wbr>py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;codecs&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;lang&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python option parsin&quot;<br>
+    },<br>
+    &quot;threading&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/Queue.py&quot;<wbr>,<br>
+            &quot;${libdir}/python2.7/_<wbr>threading_local.py&quot;,<br>
+            &quot;${libdir}/python2.7/dummy_<wbr>thread.py&quot;,<br>
+            &quot;${libdir}/python2.7/dummy_<wbr>threading.py&quot;,<br>
+            &quot;${libdir}/python2.7/mutex.py&quot;<wbr>,<br>
+            &quot;${libdir}/python2.7/<wbr>threading.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python threading &amp; synchronization support&quot;<br>
+    },<br>
+    &quot;tkinter&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/lib-tk&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python Tcl/Tk bindings&quot;<br>
+    },<br>
+    &quot;unittest&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/unittest&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;difflib&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;pprint&quot;,<br>
+            &quot;shell&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python unit testing framework&quot;<br>
+    },<br>
+    &quot;unixadmin&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/getpass.<wbr>py&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/grp.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/nis.so&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;,<br>
+            &quot;io&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python Unix administration support&quot;<br>
+    },<br>
+    &quot;xml&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/_elementtree.so&quot;,<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/pyexpat.so&quot;,<br>
+            &quot;${libdir}/python2.7/xml&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python basic XML support&quot;<br>
+    },<br>
+    &quot;xmlrpc&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/<wbr>DocXMLRPCServer.py&quot;,<br>
+            &quot;${libdir}/python2.7/<wbr>SimpleXMLRPCServer.py&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;codecs&quot;,<br>
+            &quot;compression&quot;,<br>
+            &quot;contextlib&quot;,<br>
+            &quot;core&quot;,<br>
+            &quot;crypt&quot;,<br>
+            &quot;datetime&quot;,<br>
+            &quot;fcntl&quot;,<br>
+            &quot;io&quot;,<br>
+            &quot;lang&quot;,<br>
+            &quot;math&quot;,<br>
+            &quot;mime&quot;,<br>
+            &quot;netclient&quot;,<br>
+            &quot;netserver&quot;,<br>
+            &quot;pkgutil&quot;,<br>
+            &quot;pydoc&quot;,<br>
+            &quot;textutils&quot;,<br>
+            &quot;threading&quot;,<br>
+            &quot;xml&quot;,<br>
+            &quot;zlib&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python XML-RPC support&quot;<br>
+    },<br>
+    &quot;zlib&quot;: {<br>
+        &quot;files&quot;: [<br>
+            &quot;${libdir}/python2.7/lib-<wbr>dynload/zlib.so&quot;<br>
+        ],<br>
+        &quot;rdepends&quot;: [<br>
+            &quot;core&quot;<br>
+        ],<br>
+        &quot;summary&quot;: &quot;Python zlib compression support&quot;<br>
+    }<br>
+}<br>
\ No newline at end of file<br>
diff --git a/meta/recipes-devtools/<wbr>python/python/sitecustomize.py b/meta/recipes-devtools/<wbr>python/python/sitecustomize.py<br>
index 2739018..4c8b5e2 100644<br>
--- a/meta/recipes-devtools/<wbr>python/python/sitecustomize.py<br>
+++ b/meta/recipes-devtools/<wbr>python/python/sitecustomize.py<br>
@@ -27,19 +27,11 @@ def __enableReadlineSupport():<br>
     except IOError:<br>
         pass<br>
<br>
-def __enableDefaultEncoding():<br>
-    import sys<br>
-    try:<br>
-        sys.setdefaultencoding( &quot;utf8&quot; )<br>
-    except LookupError:<br>
-        pass<br>
-<br>
 import sys<br>
 try:<br>
     import rlcompleter, readline<br>
 except ImportError:<br>
     pass<br>
 else:<br>
-    __enableDefaultEncoding()<br>
     __registerExitHandler()<br>
     __enableReadlineSupport()<br>
diff --git a/meta/recipes-devtools/<wbr>python/<a href="http://python_2.7.13.bb" rel="noreferrer" target="_blank">python_2.7.13.bb</a> b/meta/recipes-devtools/<wbr>python/<a href="http://python_2.7.13.bb" rel="noreferrer" target="_blank">python_2.7.13.bb</a><br>
index 754c029..dbafb95 100644<br>
--- a/meta/recipes-devtools/<wbr>python/<a href="http://python_2.7.13.bb" rel="noreferrer" target="_blank">python_2.7.13.bb</a><br>
+++ b/meta/recipes-devtools/<wbr>python/<a href="http://python_2.7.13.bb" rel="noreferrer" target="_blank">python_2.7.13.bb</a><br>
@@ -1,5 +1,7 @@<br>
 require python.inc<br>
+<br>
 DEPENDS = &quot;python-native libffi bzip2 gdbm openssl readline sqlite3 zlib&quot;<br>
+<br>
 PR = &quot;${INC_PR}&quot;<br>
<br>
 DISTRO_SRC_URI ?= &quot;file://sitecustomize.py&quot;<br>
@@ -145,11 +147,9 @@ py_package_preprocess () {<br>
     python -m py_compile ${PKGD}/${libdir}/python${<wbr>PYTHON_MAJMIN}/_sysconfigdata.<wbr>py<br>
 }<br>
<br>
-require python-${PYTHON_MAJMIN}-<wbr>manifest.inc<br>
<br>
 # manual dependency additions<br>
 RPROVIDES_${PN}-core = &quot;${PN}&quot;<br>
-RRECOMMENDS_${PN}-core = &quot;${PN}-readline&quot;<br>
 RRECOMMENDS_${PN}-core_append_<wbr>class-nativesdk = &quot; nativesdk-python-modules&quot;<br>
 RRECOMMENDS_${PN}-crypt = &quot;openssl&quot;<br>
<br>
@@ -193,3 +193,87 @@ FILES_${PN}-man = &quot;${datadir}/man&quot;<br>
 RDEPENDS_${PN}-modules_remove = &quot;${@bb.utils.contains(&#39;<wbr>PACKAGECONFIG&#39;, &#39;bdb&#39;, &#39;&#39;, &#39;${PN}-bsddb&#39;, d)}&quot;<br>
<br>
 BBCLASSEXTEND = &quot;nativesdk&quot;<br>
+<br>
+RPROVIDES_${PN} += &quot;${PN}-modules&quot;<br>
+<br>
+# We want bytecode precompiled .py files (.pyc&#39;s) by default<br>
+# but the user may set it on their own conf<br>
+<br>
+INCLUDE_PYCS ?= &quot;1&quot;<br>
+<br>
+python(){<br>
+<br>
+    pythondir = d.getVar(&#39;THISDIR&#39;,True)<br>
+<br>
+    # Read JSON manifest<br>
+    import json<br>
+    with open(pythondir+&#39;/python/<wbr>python2-manifest.json&#39;) as manifest_file:<br>
+        python_manifest=json.load(<wbr>manifest_file)<br>
+<br>
+    include_pycs = d.getVar(&#39;INCLUDE_PYCS&#39;)<br>
+<br>
+    packages = d.getVar(&#39;PACKAGES&#39;).split()<br>
+    pn = d.getVar(&#39;PN&#39;)<br>
+<br>
+<br>
+    newpackages=[]<br>
+<br>
+    for key in python_manifest:<br>
+        pypackage= pn + &#39;-&#39; + key<br>
+<br>
+        if pypackage not in packages:<br>
+            # We need to prepend, otherwise python-misc gets everything<br>
+            # so we use a new variable<br>
+            newpackages.append(pypackage)<br>
+<br>
+        # &quot;Build&quot; python&#39;s manifest FILES, RDEPENDS and SUMMARY<br>
+        d.setVar(&#39;FILES_&#39; + pypackage, &#39;&#39;)<br>
+        for value in python_manifest[key][&#39;files&#39;]:<br>
+            d.appendVar(&#39;FILES_&#39; + pypackage, &#39; &#39; + value)<br>
+            if include_pycs == &#39;1&#39;:<br>
+                if value.endswith(&#39;.py&#39;):<br>
+                    d.appendVar(&#39;FILES_&#39; + pypackage, &#39; &#39; + value + &#39;c&#39;)<br>
+<br>
+        d.setVar(&#39;RDEPENDS_&#39; + pypackage, &#39;&#39;)<br>
+        for value in python_manifest[key][&#39;<wbr>rdepends&#39;]:<br>
+            # Make it work with or without $PN<br>
+            if &#39;${PN}&#39; in value:<br>
+                value=value.split(&#39;-&#39;)[1]<br>
+            d.appendVar(&#39;RDEPENDS_&#39; + pypackage, &#39; &#39; + pn + &#39;-&#39; + value)<br>
+        d.setVar(&#39;SUMMARY_&#39; + pypackage, python_manifest[key][&#39;summary&#39;<wbr>])<br>
+<br>
+    # We need to ensure staticdev packages match for files first so we sort in reverse<br>
+    newpackages.sort(reverse=True)<br>
+    # Prepending so to avoid python-misc getting everything<br>
+    packages = newpackages + packages<br>
+    d.setVar(&#39;PACKAGES&#39;, &#39; &#39;.join(packages))<br>
+    d.setVar(&#39;ALLOW_EMPTY_${PN}-<wbr>modules&#39;, &#39;1&#39;)<br>
+}<br>
+<br>
+do_split_packages[file-<wbr>checksums] += &quot;${THISDIR}/python/python2-<wbr>manifest.json:True&quot;<br>
+<br>
+# Files needed to create a new manifest<br>
+SRC_URI += &quot;file://create_manifest2.py file://get_module_deps2.py file://python2-manifest.json&quot;<br>
+<br>
+do_create_manifest() {<br>
+<br>
+# This task should be run with every new release of Python.<br>
+# We must ensure that PACKAGECONFIG enables everything when creating<br>
+# a new manifest, this is to base our new manifest on a complete<br>
+# native python build, containing all dependencies, otherwise the task<br>
+# wont be able to find the required files.<br>
+# e.g. BerkeleyDB is an optional build dependency so it may or may not<br>
+# be present, we must ensure it is.<br>
+<br>
+cd ${WORKDIR}<br>
+# This needs to be executed by python-native and NOT by HOST&#39;s python<br>
+nativepython create_manifest2.py<br>
+cp python2-manifest.json.new ${THISDIR}/python/python2-<wbr>manifest.json<br>
+}<br>
+<br>
+# bitbake python -c create_manifest<br>
+addtask do_create_manifest<br>
+<br>
+# Make sure we have native python ready when we create a new manifest<br>
+do_create_manifest[depends] += &quot;python:do_prepare_recipe_<wbr>sysroot&quot;<br>
+do_create_manifest[depends] += &quot;python:do_patch&quot;<br>
diff --git a/scripts/contrib/python/<a href="http://generate-manifest-2.7.py" rel="noreferrer" target="_blank">gener<wbr>ate-manifest-2.7.py</a> b/scripts/contrib/python/<a href="http://generate-manifest-2.7.py" rel="noreferrer" target="_blank">gener<wbr>ate-manifest-2.7.py</a><br>
deleted file mode 100755<br>
index ee75403..0000000<br>
--- a/scripts/contrib/python/<a href="http://generate-manifest-2.7.py" rel="noreferrer" target="_blank">gener<wbr>ate-manifest-2.7.py</a><br>
+++ /dev/null<br>
@@ -1,426 +0,0 @@<br>
-#!/usr/bin/env python<br>
-<br>
-# generate Python Manifest for the OpenEmbedded build system<br>
-# (C) 2002-2010 Michael &#39;Mickey&#39; Lauer &lt;<a href="mailto:mlauer@vanille-media.de">mlauer@vanille-media.de</a>&gt;<br>
-# (C) 2007 Jeremy Laine<br>
-# licensed under MIT, see COPYING.MIT<br>
-#<br>
-# June 22, 2011 -- Mark Hatle &lt;<a href="mailto:mark.hatle@windriver.com">mark.hatle@windriver.com</a>&gt;<br>
-#  * Updated to no longer generate special -dbg package, instead use the<br>
-#    single system -dbg<br>
-#  * Update version with &quot;.1&quot; to indicate this change<br>
-#<br>
-# February 26, 2017 -- Ming Liu &lt;<a href="mailto:peter.x.liu@external.atlascopco.com">peter.x.liu@external.<wbr>atlascopco.com</a>&gt;<br>
-#  * Updated to support generating manifest for native python<br>
-<br>
-import os<br>
-import sys<br>
-import time<br>
-import argparse<br>
-<br>
-VERSION = &quot;2.7.2&quot;<br>
-<br>
-__author__ = &quot;Michael &#39;Mickey&#39; Lauer &lt;<a href="mailto:mlauer@vanille-media.de">mlauer@vanille-media.de</a>&gt;&quot;<br>
-__version__ = &quot;20110222.2&quot;<br>
-<br>
-class MakefileMaker:<br>
-<br>
-    def __init__( self, outfile, isNative ):<br>
-        &quot;&quot;&quot;initialize&quot;&quot;&quot;<br>
-        self.packages = {}<br>
-        self.excluded_pkgs = []<br>
-        self.targetPrefix = &quot;${libdir}/python%s/&quot; % VERSION[:3]<br>
-        self.isNative = isNative<br>
-        self.output = outfile<br>
-        self.out( &quot;&quot;&quot;<br>
-# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file.<br>
-# Generator: &#39;%s%s&#39; Version %s (C) 2002-2010 Michael &#39;Mickey&#39; Lauer &lt;<a href="mailto:mlauer@vanille-media.de">mlauer@vanille-media.de</a>&gt;<br>
-&quot;&quot;&quot; % ( sys.argv[0], &#39; --native&#39; if isNative else &#39;&#39;, __version__ ) )<br>
-<br>
-    #<br>
-    # helper functions<br>
-    #<br>
-<br>
-    def out( self, data ):<br>
-        &quot;&quot;&quot;print a line to the output file&quot;&quot;&quot;<br>
-        self.output.write( &quot;%s\n&quot; % data )<br>
-<br>
-    def setPrefix( self, targetPrefix ):<br>
-        &quot;&quot;&quot;set a file prefix for addPackage files&quot;&quot;&quot;<br>
-        self.targetPrefix = targetPrefix<br>
-<br>
-    def doProlog( self ):<br>
-        self.out( &quot;&quot;&quot; &quot;&quot;&quot; )<br>
-        self.out( &quot;&quot; )<br>
-<br>
-    def addPackage( self, name, description, dependencies, filenames, mod_exclude = False ):<br>
-        &quot;&quot;&quot;add a package to the Makefile&quot;&quot;&quot;<br>
-        if type( filenames ) == type( &quot;&quot; ):<br>
-            filenames = filenames.split()<br>
-        fullFilenames = []<br>
-        for filename in filenames:<br>
-            if filename[0] != &quot;$&quot;:<br>
-                fullFilenames.append( &quot;%s%s&quot; % ( self.targetPrefix, filename ) )<br>
-            else:<br>
-                fullFilenames.append( filename )<br>
-        if mod_exclude:<br>
-            self.excluded_pkgs.append( name )<br>
-        self.packages[name] = description, dependencies, fullFilenames<br>
-<br>
-    def doBody( self ):<br>
-        &quot;&quot;&quot;generate body of Makefile&quot;&quot;&quot;<br>
-<br>
-        global VERSION<br>
-<br>
-        #<br>
-        # generate rprovides line for native<br>
-        #<br>
-<br>
-        if self.isNative:<br>
-            pkglist = []<br>
-            for name in [&#39;${PN}-modules&#39;] + sorted(self.packages):<br>
-                pkglist.append(&#39;%s-native&#39; % name.replace(&#39;${PN}&#39;, &#39;python&#39;))<br>
-<br>
-            self.out(&#39;RPROVIDES += &quot;%s&quot;&#39; % &quot; &quot;.join(pkglist))<br>
-            return<br>
-<br>
-        #<br>
-        # generate provides line<br>
-        #<br>
-<br>
-        provideLine = &#39;PROVIDES+=&quot; \\\n&#39;<br>
-        for name in sorted(self.packages):<br>
-            provideLine += &quot;  %s \\\n&quot; % name<br>
-        provideLine += &#39;&quot;&#39;<br>
-<br>
-        self.out( provideLine )<br>
-        self.out( &quot;&quot; )<br>
-<br>
-        #<br>
-        # generate package line<br>
-        #<br>
-<br>
-        packageLine = &#39;PACKAGES=&quot; \\\n&#39;<br>
-        packageLine += &#39;  ${PN}-dbg \\\n&#39;<br>
-        for name in sorted(self.packages):<br>
-            if name.startswith(&quot;${PN}-<wbr>distutils&quot;):<br>
-                if name == &quot;${PN}-distutils&quot;:<br>
-                    packageLine += &quot;  %s-staticdev %s \\\n&quot; % (name, name)<br>
-            elif name != &#39;${PN}-dbg&#39;:<br>
-                packageLine += &quot;  %s \\\n&quot; % name<br>
-        packageLine += &#39;  ${PN}-modules\\\n&quot;&#39;<br>
-<br>
-        self.out( packageLine )<br>
-        self.out( &quot;&quot; )<br>
-<br>
-        #<br>
-        # generate package variables<br>
-        #<br>
-<br>
-        for name, data in sorted(self.packages.items()):<br>
-            desc, deps, files = data<br>
-<br>
-            #<br>
-            # write out the description, revision and dependencies<br>
-            #<br>
-            self.out( &#39;SUMMARY_%s=&quot;%s&quot;&#39; % ( name, desc ) )<br>
-            self.out( &#39;RDEPENDS_%s=&quot;%s&quot;&#39; % ( name, deps ) )<br>
-<br>
-            line = &#39;FILES_%s=&quot; \\\n&#39; % name<br>
-<br>
-            #<br>
-            # check which directories to make in the temporary directory<br>
-            #<br>
-<br>
-            dirset = {} # if python had a set-datatype this would be sufficient. for now, we&#39;re using a dict instead.<br>
-            for target in files:<br>
-                dirset[os.path.dirname( target )] = True<br>
-<br>
-            #<br>
-            # generate which files to copy for the target (-dfR because whole directories are also allowed)<br>
-            #<br>
-<br>
-            for target in files:<br>
-                line += &quot;    %s \\\n&quot; % target<br>
-<br>
-            line += &#39;&quot;&#39;<br>
-            self.out( line )<br>
-            self.out( &quot;&quot; )<br>
-<br>
-        self.out( &#39;SUMMARY_${PN}-modules=&quot;All Python modules&quot;&#39; )<br>
-        line = &#39;RDEPENDS_${PN}-modules=&quot; \\\n&#39;<br>
-<br>
-        for name, data in sorted(self.packages.items()):<br>
-            if name not in [&#39;${PN}-dev&#39;, &#39;${PN}-distutils-staticdev&#39;] and name not in self.excluded_pkgs:<br>
-                line += &quot;  %s \\\n&quot; % name<br>
-<br>
-        line += &#39;&quot;&#39;<br>
-        self.out( line )<br>
-        self.out( &#39;ALLOW_EMPTY_${PN}-modules = &quot;1&quot;&#39; )<br>
-<br>
-    def doEpilog( self ):<br>
-        self.out( &quot;&quot;&quot;&quot;&quot;&quot; )<br>
-        self.out( &quot;&quot; )<br>
-<br>
-    def make( self ):<br>
-        self.doProlog()<br>
-        self.doBody()<br>
-        self.doEpilog()<br>
-<br>
-if __name__ == &quot;__main__&quot;:<br>
-    parser = argparse.ArgumentParser( description=&#39;generate python manifest&#39; )<br>
-    parser.add_argument( &#39;-n&#39;, &#39;--native&#39;, help=&#39;generate manifest for native python&#39;, action=&#39;store_true&#39; )<br>
-    parser.add_argument( &#39;outfile&#39;, metavar=&#39;OUTPUT_FILE&#39;, nargs=&#39;?&#39;, default=&#39;&#39;, help=&#39;Output file (defaults to stdout)&#39; )<br>
-    args = parser.parse_args()<br>
-<br>
-    if args.outfile:<br>
-        try:<br>
-            os.unlink( args.outfile )<br>
-        except Exception:<br>
-            sys.exc_clear()<br>
-        outfile = open( args.outfile, &quot;w&quot; )<br>
-    else:<br>
-        outfile = sys.stdout<br>
-<br>
-    m = MakefileMaker( outfile, args.native )<br>
-<br>
-    # Add packages here. Only specify dlopen-style library dependencies here, no ldd-style dependencies!<br>
-    # Parameters: revision, name, description, dependencies, filenames<br>
-    #<br>
-<br>
-    m.addPackage( &quot;${PN}-core&quot;, &quot;Python interpreter and core modules&quot;, &quot;${PN}-lang ${PN}-re&quot;,<br>
-    &quot;__future__.* _abcoll.* abc.* ast.* copy.* copy_reg.* ConfigParser.* &quot; +<br>
-    &quot;genericpath.* getopt.* linecache.* new.* &quot; +<br>
-    &quot;os.* posixpath.* struct.* &quot; +<br>
-    &quot;warnings.* site.* stat.* &quot; +<br>
-    &quot;UserDict.* UserList.* UserString.* &quot; +<br>
-    &quot;lib-dynload/binascii.so lib-dynload/_struct.so lib-dynload/time.so &quot; +<br>
-    &quot;lib-dynload/xreadlines.so types.* platform.* ${bindir}/python* &quot;  +<br>
-    &quot;_weakrefset.* sysconfig.* _sysconfigdata.* &quot; +<br>
-    &quot;${includedir}/python${PYTHON_<wbr>MAJMIN}/pyconfig*.h &quot; +<br>
-    &quot;${libdir}/python${PYTHON_<wbr>MAJMIN}/sitecustomize.py &quot;)<br>
-<br>
-    m.addPackage( &quot;${PN}-dev&quot;, &quot;Python development package&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;${includedir} &quot; +<br>
-    &quot;${libdir}/lib*${SOLIBSDEV} &quot; +<br>
-    &quot;${libdir}/*.la &quot; +<br>
-    &quot;${libdir}/*.a &quot; +<br>
-    &quot;${libdir}/*.o &quot; +<br>
-    &quot;${libdir}/pkgconfig &quot; +<br>
-    &quot;${base_libdir}/*.a &quot; +<br>
-    &quot;${base_libdir}/*.o &quot; +<br>
-    &quot;${datadir}/aclocal &quot; +<br>
-    &quot;${datadir}/pkgconfig &quot; +<br>
-    &quot;config/Makefile &quot;)<br>
-<br>
-    m.addPackage( &quot;${PN}-2to3&quot;, &quot;Python automated Python 2 to 3 code translator&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;${bindir}/2to3 lib2to3&quot; ) # package<br>
-<br>
-    m.addPackage( &quot;${PN}-idle&quot;, &quot;Python Integrated Development Environment&quot;, &quot;${PN}-core ${PN}-tkinter&quot;,<br>
-    &quot;${bindir}/idle idlelib&quot; ) # package<br>
-<br>
-    m.addPackage( &quot;${PN}-pydoc&quot;, &quot;Python interactive help support&quot;, &quot;${PN}-core ${PN}-lang ${PN}-stringold ${PN}-re&quot;,<br>
-    &quot;${bindir}/pydoc pydoc.* pydoc_data&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-smtpd&quot;, &quot;Python Simple Mail Transport Daemon&quot;, &quot;${PN}-core ${PN}-netserver ${PN}-email ${PN}-mime&quot;,<br>
-    &quot;${bindir}/smtpd.* smtpd.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-audio&quot;, &quot;Python Audio Handling&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;wave.* chunk.* sndhdr.* lib-dynload/ossaudiodev.so lib-dynload/audioop.so audiodev.* sunaudio.* sunau.* toaiff.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-bsddb&quot;, &quot;Python bindings for the Berkeley Database&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;bsddb lib-dynload/_bsddb.so&quot; ) # package<br>
-<br>
-    m.addPackage( &quot;${PN}-codecs&quot;, &quot;Python codecs, encodings &amp; i18n support&quot;, &quot;${PN}-core ${PN}-lang&quot;,<br>
-    &quot;codecs.* encodings gettext.* locale.* lib-dynload/_locale.so lib-dynload/_codecs* lib-dynload/_multibytecodec.so lib-dynload/unicodedata.so stringprep.* xdrlib.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-compile&quot;, &quot;Python bytecode compilation support&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;py_compile.* compileall.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-compiler&quot;, &quot;Python compiler support&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;compiler&quot; ) # package<br>
-<br>
-    m.addPackage( &quot;${PN}-compression&quot;, &quot;Python high-level compression support&quot;, &quot;${PN}-core ${PN}-zlib&quot;,<br>
-    &quot;gzip.* zipfile.* tarfile.* lib-dynload/bz2.so&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-crypt&quot;, &quot;Python basic cryptographic and hashing support&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;hashlib.* md5.* sha.* lib-dynload/crypt.so lib-dynload/_hashlib.so lib-dynload/_sha256.so lib-dynload/_sha512.so&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-textutils&quot;, &quot;Python option parsing, text wrapping and CSV support&quot;, &quot;${PN}-core ${PN}-io ${PN}-re ${PN}-stringold&quot;,<br>
-    &quot;lib-dynload/_csv.so csv.* optparse.* textwrap.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-curses&quot;, &quot;Python curses support&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;curses lib-dynload/_curses.so lib-dynload/_curses_panel.so&quot; ) # directory + low level module<br>
-<br>
-    m.addPackage( &quot;${PN}-ctypes&quot;, &quot;Python C types support&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;ctypes lib-dynload/_ctypes.so lib-dynload/_ctypes_test.so&quot; ) # directory + low level module<br>
-<br>
-    m.addPackage( &quot;${PN}-datetime&quot;, &quot;Python calendar and time support&quot;, &quot;${PN}-core ${PN}-codecs&quot;,<br>
-    &quot;_strptime.* calendar.* lib-dynload/datetime.so&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-db&quot;, &quot;Python file-based database support&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;anydbm.* dumbdbm.* whichdb.* &quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-debugger&quot;, &quot;Python debugger&quot;, &quot;${PN}-core ${PN}-io ${PN}-lang ${PN}-re ${PN}-stringold ${PN}-shell ${PN}-pprint&quot;,<br>
-    &quot;bdb.* pdb.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-difflib&quot;, &quot;Python helpers for computing deltas between objects&quot;, &quot;${PN}-lang ${PN}-re&quot;,<br>
-    &quot;difflib.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-distutils-staticdev&quot;, &quot;Python distribution utilities (static libraries)&quot;, &quot;${PN}-distutils&quot;,<br>
-    &quot;config/lib*.a&quot; ) # package<br>
-<br>
-    m.addPackage( &quot;${PN}-distutils&quot;, &quot;Python Distribution Utilities&quot;, &quot;${PN}-core ${PN}-email&quot;,<br>
-    &quot;config distutils&quot; ) # package<br>
-<br>
-    m.addPackage( &quot;${PN}-doctest&quot;, &quot;Python framework for running examples in docstrings&quot;, &quot;${PN}-core ${PN}-lang ${PN}-io ${PN}-re ${PN}-unittest ${PN}-debugger ${PN}-difflib&quot;,<br>
-    &quot;doctest.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-email&quot;, &quot;Python email support&quot;, &quot;${PN}-core ${PN}-io ${PN}-re ${PN}-mime ${PN}-audio ${PN}-image ${PN}-netclient&quot;,<br>
-    &quot;imaplib.* email&quot; ) # package<br>
-<br>
-    m.addPackage( &quot;${PN}-fcntl&quot;, &quot;Python&#39;s fcntl interface&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;lib-dynload/fcntl.so&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-hotshot&quot;, &quot;Python hotshot performance profiler&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;hotshot lib-dynload/_hotshot.so&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-html&quot;, &quot;Python HTML processing support&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;formatter.* htmlentitydefs.* htmllib.* markupbase.* sgmllib.* HTMLParser.* &quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-importlib&quot;, &quot;Python import implementation library&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;importlib&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-gdbm&quot;, &quot;Python GNU database support&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;lib-dynload/gdbm.so&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-image&quot;, &quot;Python graphical image handling&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;colorsys.* imghdr.* lib-dynload/imageop.so lib-dynload/rgbimg.so&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-io&quot;, &quot;Python low-level I/O&quot;, &quot;${PN}-core ${PN}-math ${PN}-textutils ${PN}-netclient ${PN}-contextlib&quot;,<br>
-    &quot;lib-dynload/_socket.so lib-dynload/_io.so lib-dynload/_ssl.so lib-dynload/select.so lib-dynload/termios.so lib-dynload/cStringIO.so &quot; +<br>
-    &quot;pipes.* socket.* ssl.* tempfile.* StringIO.* io.* _pyio.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-json&quot;, &quot;Python JSON support&quot;, &quot;${PN}-core ${PN}-math ${PN}-re ${PN}-codecs&quot;,<br>
-    &quot;json lib-dynload/_json.so&quot; ) # package<br>
-<br>
-    m.addPackage( &quot;${PN}-lang&quot;, &quot;Python low-level language support&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;lib-dynload/_bisect.so lib-dynload/_collections.so lib-dynload/_heapq.so lib-dynload/_weakref.so lib-dynload/_functools.so &quot; +<br>
-    &quot;lib-dynload/array.so lib-dynload/itertools.so lib-dynload/operator.so lib-dynload/parser.so &quot; +<br>
-    &quot;atexit.* bisect.* code.* codeop.* collections.* dis.* functools.* heapq.* inspect.* keyword.* opcode.* symbol.* repr.* token.* &quot; +<br>
-    &quot;tokenize.* traceback.* weakref.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-logging&quot;, &quot;Python logging support&quot;, &quot;${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-stringold&quot;,<br>
-    &quot;logging&quot; ) # package<br>
-<br>
-    m.addPackage( &quot;${PN}-mailbox&quot;, &quot;Python mailbox format support&quot;, &quot;${PN}-core ${PN}-mime&quot;,<br>
-    &quot;mailbox.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-math&quot;, &quot;Python math support&quot;, &quot;${PN}-core ${PN}-crypt&quot;,<br>
-    &quot;lib-dynload/cmath.so lib-dynload/math.so lib-dynload/_random.so random.* sets.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-mime&quot;, &quot;Python MIME handling APIs&quot;, &quot;${PN}-core ${PN}-io&quot;,<br>
-    &quot;mimetools.* uu.* quopri.* rfc822.* MimeWriter.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-mmap&quot;, &quot;Python memory-mapped file support&quot;, &quot;${PN}-core ${PN}-io&quot;,<br>
-    &quot;lib-dynload/mmap.so &quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-multiprocessing&quot;, &quot;Python multiprocessing support&quot;, &quot;${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-threading ${PN}-ctypes ${PN}-mmap&quot;,<br>
-    &quot;lib-dynload/_multiprocessing.<wbr>so multiprocessing&quot; ) # package<br>
-<br>
-    m.addPackage( &quot;${PN}-netclient&quot;, &quot;Python Internet Protocol clients&quot;, &quot;${PN}-core ${PN}-crypt ${PN}-datetime ${PN}-io ${PN}-lang ${PN}-logging ${PN}-mime&quot;,<br>
-    &quot;*Cookie*.* &quot; +<br>
-    &quot;base64.* cookielib.* ftplib.* gopherlib.* hmac.* httplib.* mimetypes.* nntplib.* poplib.* smtplib.* telnetlib.* urllib.* urllib2.* urlparse.* uuid.* rfc822.* mimetools.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-netserver&quot;, &quot;Python Internet Protocol servers&quot;, &quot;${PN}-core ${PN}-netclient ${PN}-shell ${PN}-threading&quot;,<br>
-    &quot;cgi.* *HTTPServer.* SocketServer.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-numbers&quot;, &quot;Python number APIs&quot;, &quot;${PN}-core ${PN}-lang ${PN}-re&quot;,<br>
-    &quot;decimal.* fractions.* numbers.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-pickle&quot;, &quot;Python serialisation/persistence support&quot;, &quot;${PN}-core ${PN}-codecs ${PN}-io ${PN}-re&quot;,<br>
-    &quot;pickle.* shelve.* lib-dynload/cPickle.so pickletools.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-pkgutil&quot;, &quot;Python package extension utility support&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;pkgutil.*&quot;)<br>
-<br>
-    m.addPackage( &quot;${PN}-plistlib&quot;, &quot;Generate and parse Mac OS X .plist files&quot;, &quot;${PN}-core ${PN}-datetime ${PN}-io&quot;,<br>
-    &quot;plistlib.*&quot;)<br>
-<br>
-    m.addPackage( &quot;${PN}-pprint&quot;, &quot;Python pretty-print support&quot;, &quot;${PN}-core ${PN}-io&quot;,<br>
-    &quot;pprint.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-profile&quot;, &quot;Python basic performance profiling support&quot;, &quot;${PN}-core ${PN}-textutils&quot;,<br>
-    &quot;profile.* pstats.* cProfile.* lib-dynload/_lsprof.so&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-re&quot;, &quot;Python Regular Expression APIs&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;re.* sre.* sre_compile.* sre_constants* sre_parse.*&quot; ) # _sre is builtin<br>
-<br>
-    m.addPackage( &quot;${PN}-readline&quot;, &quot;Python readline support&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;lib-dynload/readline.so rlcompleter.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-resource&quot;, &quot;Python resource control interface&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;lib-dynload/resource.so&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-shell&quot;, &quot;Python shell-like functionality&quot;, &quot;${PN}-core ${PN}-re&quot;,<br>
-    &quot;cmd.* commands.* dircache.* fnmatch.* glob.* popen2.* shlex.* shutil.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-robotparser&quot;, &quot;Python robots.txt parser&quot;, &quot;${PN}-core ${PN}-netclient&quot;,<br>
-    &quot;robotparser.*&quot;)<br>
-<br>
-    m.addPackage( &quot;${PN}-runpy&quot;, &quot;Python script for locating/executing scripts in module namespace&quot;, &quot;${PN}-core ${PN}-pkgutil&quot;,<br>
-    &quot;runpy.*&quot;)<br>
-<br>
-    m.addPackage( &quot;${PN}-subprocess&quot;, &quot;Python subprocess support&quot;, &quot;${PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle&quot;,<br>
-    &quot;subprocess.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-sqlite3&quot;, &quot;Python Sqlite3 database support&quot;, &quot;${PN}-core ${PN}-datetime ${PN}-lang ${PN}-crypt ${PN}-io ${PN}-threading ${PN}-zlib&quot;,<br>
-    &quot;lib-dynload/_sqlite3.so sqlite3/dbapi2.* sqlite3/__init__.* sqlite3/dump.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-sqlite3-tests&quot;, &quot;Python Sqlite3 database support tests&quot;, &quot;${PN}-core ${PN}-sqlite3&quot;,<br>
-    &quot;sqlite3/test&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-stringold&quot;, &quot;Python string APIs [deprecated]&quot;, &quot;${PN}-core ${PN}-re&quot;,<br>
-    &quot;lib-dynload/strop.so string.* stringold.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-syslog&quot;, &quot;Python syslog interface&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;lib-dynload/syslog.so&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-terminal&quot;, &quot;Python terminal controlling support&quot;, &quot;${PN}-core ${PN}-io&quot;,<br>
-    &quot;pty.* tty.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-tests&quot;, &quot;Python tests&quot;, &quot;${PN}-core ${PN}-modules&quot;,<br>
-    &quot;test&quot;, True ) # package<br>
-<br>
-    m.addPackage( &quot;${PN}-threading&quot;, &quot;Python threading &amp; synchronization support&quot;, &quot;${PN}-core ${PN}-lang&quot;,<br>
-    &quot;_threading_local.* dummy_thread.* dummy_threading.* mutex.* threading.* Queue.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-tkinter&quot;, &quot;Python Tcl/Tk bindings&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;lib-dynload/_tkinter.so lib-tk&quot; ) # package<br>
-<br>
-    m.addPackage( &quot;${PN}-unittest&quot;, &quot;Python unit testing framework&quot;, &quot;${PN}-core ${PN}-stringold ${PN}-lang ${PN}-io ${PN}-difflib ${PN}-pprint ${PN}-shell&quot;,<br>
-    &quot;unittest/&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-unixadmin&quot;, &quot;Python Unix administration support&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;lib-dynload/nis.so lib-dynload/grp.so lib-dynload/pwd.so getpass.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-xml&quot;, &quot;Python basic XML support&quot;, &quot;${PN}-core ${PN}-re&quot;,<br>
-    &quot;lib-dynload/_elementtree.so lib-dynload/pyexpat.so xml xmllib.*&quot; ) # package<br>
-<br>
-    m.addPackage( &quot;${PN}-xmlrpc&quot;, &quot;Python XML-RPC support&quot;, &quot;${PN}-core ${PN}-xml ${PN}-netserver ${PN}-lang&quot;,<br>
-    &quot;xmlrpclib.* SimpleXMLRPCServer.* DocXMLRPCServer.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-zlib&quot;, &quot;Python zlib compression support&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;lib-dynload/zlib.so&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-mailbox&quot;, &quot;Python mailbox format support&quot;, &quot;${PN}-core ${PN}-mime&quot;,<br>
-    &quot;mailbox.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-argparse&quot;, &quot;Python command line argument parser&quot;, &quot;${PN}-core ${PN}-codecs ${PN}-textutils&quot;,<br>
-    &quot;argparse.*&quot; )<br>
-<br>
-    m.addPackage( &quot;${PN}-contextlib&quot;, &quot;Python utilities for with-statement&quot; +<br>
-    &quot;contexts.&quot;, &quot;${PN}-core&quot;,<br>
-    &quot;${libdir}/python${PYTHON_<wbr>MAJMIN}/contextlib.*&quot; )<br>
-<br>
-    m.make()<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
To stop receiving notification emails like this one, please contact<br>
the administrator of this repository.<br>
--<br>
______________________________<wbr>_________________<br>
Openembedded-commits mailing list<br>
<a href="mailto:Openembedded-commits@lists.openembedded.org">Openembedded-commits@lists.<wbr>openembedded.org</a><br>
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-commits" rel="noreferrer" target="_blank">http://lists.openembedded.org/<wbr>mailman/listinfo/openembedded-<wbr>commits</a><br>
</font></span></blockquote></div><br></div>