Re: [PATCH v2] python-3.5-manifest.inc: the core module RDEPENDS on misc

Alejandro Hernandez
2016-08-29T16:56:27Z

Hello Ricardo,

On 08/26/2016 10:30 AM, Ricardo Ribalda Delgado wrote:
> Fixes:
>
> root@qt5022:~# python3
> Python 3.5.1 (default, Aug 5 2016, 13:25:54)
> [GCC 5.3.0] on linux
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import collections
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "/usr/lib/python3.5/collections/__init__.py", line 10, in <module>
> from operator import itemgetter as _itemgetter, eq as _eq
> ImportError: No module named 'operator'
> root@qt5022:~# dpkg -S /usr/lib/python3.5/collections/__init__.py
> python3-core: /usr/lib/python3.5/collections/__init__.py
>
> Reported-by: Dimitrios Katsaros <patcherwork@gmail.com>
> Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
> ---
>
> v2: also hack the generate file
> meta/recipes-devtools/python/python-3.5-manifest.inc | 2 +-
> scripts/contrib/python/generate-manifest-3.5.py | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/meta/recipes-devtools/python/python-3.5-manifest.inc b/meta/recipes-devtools/python/python-3.5-manifest.inc
> index 304611432e37..fb05d6d36df3 100644
> --- a/meta/recipes-devtools/python/python-3.5-manifest.inc
> +++ b/meta/recipes-devtools/python/python-3.5-manifest.inc
> @@ -38,7 +38,7 @@ RDEPENDS_${PN}-compression="${PN}-core ${PN}-codecs ${PN}-importlib ${PN}-thread
> FILES_${PN}-compression="${libdir}/python3.5/gzip.* ${libdir}/python3.5/zipfile.* ${libdir}/python3.5/tarfile.* ${libdir}/python3.5/lib-dynload/bz2.*.so ${libdir}/python3.5/lib-dynload/zlib.*.so "
>
> SUMMARY_${PN}-core="Python interpreter and core modules"
> -RDEPENDS_${PN}-core="${PN}-lang ${PN}-re ${PN}-reprlib ${PN}-codecs ${PN}-io ${PN}-math"
> +RDEPENDS_${PN}-core="${PN}-lang ${PN}-re ${PN}-reprlib ${PN}-codecs ${PN}-io ${PN}-math ${PN}-misc"
It seems that you are trying to include the python3-misc package on the
python3-core package, and while this in fact would fix the issue you are
having, it goes against the the very reason we create several python
packages, specifically the python3-core and python3-misc packages.

We create the python3-core package to include the very minimal (core)
modules needed to run python3 (since we may need to save up space on our
embedded system).

And we create lots of other packages to simulate granularity amongst the
build system, so whoever wants to use a certain python package would
just need to include that specific module on the system, again, to save
up space on the embedded device

And the python3-misc package contains everything else.

So it doesn't make any sense to include everything on the python3-core
package.

> FILES_${PN}-core="${libdir}/python3.5/__future__.* ${libdir}/python3.5/_abcoll.* ${libdir}/python3.5/abc.* ${libdir}/python3.5/ast.* ${libdir}/python3.5/copy.* ${libdir}/python3.5/copyreg.* ${libdir}/python3.5/configparser.* ${libdir}/python3.5/genericpath.* ${libdir}/python3.5/getopt.* ${libdir}/python3.5/linecache.* ${libdir}/python3.5/new.* ${libdir}/python3.5/os.* ${libdir}/python3.5/posixpath.* ${libdir}/python3.5/struct.* ${libdir}/python3.5/warnings.* ${libdir}/python3.5/site.* ${libdir}/python3.5/stat.* ${libdir}/python3.5/UserDict.* ${libdir}/python3.5/UserList.* ${libdir}/python3.5/UserString.* ${libdir}/python3.5/lib-dynload/binascii.*.so ${libdir}/python3.5/lib-dynload/_struct.*.so ${libdir}/python3.5/lib-dynload/time.*.so ${libdir}/python3.5/lib-dynload/xreadlines.*.so ${libdir}/python3.5/types.* ${libdir}/python3.5/platform.* ${bindir}/python* ${libdir}/python3.5/_weakrefset.* ${libdir}/python3.5/sysconfig.* ${libdir}/python3.5/_sysconfigdata.* ${libdir}/python
> 3.5/config/Makefile ${includedir}/python${PYTHON_BINABI}/pyconfig*.h ${libdir}/python${PYTHON_MAJMIN}/collections ${libdir}/python${PYTHON_MAJMIN}/_collections_abc.* ${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.* ${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py "
>
> SUMMARY_${PN}-crypt="Python basic cryptographic and hashing support"
> diff --git a/scripts/contrib/python/generate-manifest-3.5.py b/scripts/contrib/python/generate-manifest-3.5.py
> index 2906cc66d042..1cac9a7fe1c6 100755
> --- a/scripts/contrib/python/generate-manifest-3.5.py
> +++ b/scripts/contrib/python/generate-manifest-3.5.py
> @@ -166,7 +166,7 @@ if __name__ == "__main__":
> # Parameters: revision, name, description, dependencies, filenames
> #
>
> - m.addPackage( "${PN}-core", "Python interpreter and core modules", "${PN}-lang ${PN}-re ${PN}-reprlib ${PN}-codecs ${PN}-io ${PN}-math",
> + m.addPackage( "${PN}-core", "Python interpreter and core modules", "${PN}-lang ${PN}-re ${PN}-reprlib ${PN}-codecs ${PN}-io ${PN}-math ${PN}-misc",
> "__future__.* _abcoll.* abc.* ast.* copy.* copyreg.* configparser.* " +
> "genericpath.* getopt.* linecache.* new.* " +
> "os.* posixpath.* struct.* " +

So in this case, I believe that a patch is not needed, and what you need
to do is search for the module you are looking for (operator) within the
manifest file, and include it on your system.

by doing a quick search I believe that perhaps doing a

IMAGE_INSTALL += "python3-lang"

on your local.conf would fix the issue.