Hey Mingly Yu, On 5/19/20 12:43 AM, Yu, Mingli wrote: > Hi Alejandro, > > > On 2020/5/19 下午3:22, Alejandro Hernandez Samaniego wrote: >> Hello, >> >> The more I look into this, the more I realize its incorrect. > > Understood your concern. > >> >> >> On 5/18/20 8:36 AM, Alejandro Hernandez wrote: >>> >>> Hello Mingli, >>> >>> Did you happen to run the create_manifest task after modifying the >>> manifest to make sure that runtime dependencies are still valid? >>> >>> >>> Thanks >>> >>> Alejandro >>> >>> On 5/18/20 12:32 AM, Yu, Mingli wrote: >>>> From: Mingli Yu >>>> >>>> Add pydoc and urllib to core to fix below error: >>>>   # python3 >>>>   >>> help() >>>>   Traceback (most recent call last): >>>>   File "", line 1, in >>>>   File "/usr/lib64/python3.8/sitebuiltins.py", line 102, in __call_ >>>>   import pydoc >>>>   ModuleNotFoundError: No module named 'pydoc' >>>>   File "/usr/lib64/python3.8/pydoc.py", line 72, in >>>>   import urllib.parse >>>>   ModuleNotFoundError: No module named 'urllib' >> >> Why would pydoc be required to run python? or urllib in any case? > > > It's better make the python3-core more lightweight. > > But in a system which didn't install other python modules but just > python3-core, then we type help() as below and the help cannot show > normally. So add the needed pydoc and urllib file to make the help() > works. > >  # python3 >  >>> help() >  Traceback (most recent call last): >  File "", line 1, in >  File "/usr/lib64/python3.8/sitebuiltins.py", line 102, in __call_ >  import pydoc >  ModuleNotFoundError: No module named 'pydoc' >  File "/usr/lib64/python3.8/pydoc.py", line 72, in >  import urllib.parse >  ModuleNotFoundError: No module named 'urllib' > > > After pydoc and urllib added and also just install python3-core and no > additional python3 modules installed. > > # python3 > Python 3.8.2 (default, May 18 2020, 07:15:10) > [GCC 9.3.0] on linux > Type "help", "copyright", "credits" or "license" for more information. > >>> help() > Welcome to Python 3.8's help utility! > > If this is your first time using Python, you should definitely check out > the tutorial on the Internet at https://docs.python.org/3.8/tutorial/. > > Enter the name of any module, keyword, or topic to get help on writing > Python programs and using Python modules.  To quit this help utility and > return to the interpreter, just type "quit". > > To get a list of available modules, keywords, symbols, or topics, type > "modules", "keywords", "symbols", or "topics".  Each module also comes > with a one-line summary of what it does; to list the modules whose name > or summary contain a given string such as "spam", type "modules spam". > help> > > > Thanks, > I still believe python3-core should be left as small as possible, the use case of an embedded device calling help() is probably seldom, IMO that fits more in the workflow of installing the netlib and pydoc modules for that specific usecase. It also looks like simply installing python3-pydoc would do what you want, since the error to load urllib is coming out of loading pydoc itself and the manifest does specify the dependency from pydoc to netclient. Cheers, Alejandro >> >> I believe there is a discrepancy between what python3-core does and >> what you believe it should do. >> python3-core is the smallest possible package to get a working >> python3 interpreter, if you install python3-core >> thats what you get, if you need more modules then you install more >> modules, e.g. python3-pydoc, python3-netlib, >> this way it allows us to keep installation size at minimum. >> >> If what you want is to get a fully working python3 interpreter, >> without adding any new packages to the installation, >> then you need to install the python3 package (no core), this will in >> fact install python3-modules which contains >> all the modules, including python3-pydoc and python3-neclient which >> is the one that provides urllib. >> >> Cheers, >> >> Alejandro >> >>>> Signed-off-by: Mingli Yu >>>> --- >>>>   .../python/python3/python3-manifest.json      | 24 >>>> +++++-------------- >>>>   meta/recipes-devtools/python/python3_3.8.2.bb |  3 +-- >>>>   2 files changed, 7 insertions(+), 20 deletions(-) >>>> >>>> diff --git >>>> a/meta/recipes-devtools/python/python3/python3-manifest.json >>>> b/meta/recipes-devtools/python/python3/python3-manifest.json >>>> index 3bcc9b8662..808eadb8f6 100644 >>>> --- a/meta/recipes-devtools/python/python3/python3-manifest.json >>>> +++ b/meta/recipes-devtools/python/python3/python3-manifest.json >>>> @@ -203,6 +203,7 @@ >>>>               "${bindir}/python${PYTHON_MAJMIN}", >>>>               "${bindir}/python${PYTHON_MAJMIN}.real", >>>>               "${bindir}/python3", >>>> +            "${bindir}/pydoc*", >>>> "${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h", >>>> "${libdir}/python${PYTHON_MAJMIN}/UserDict.py", >>>> "${libdir}/python${PYTHON_MAJMIN}/UserList.py", >>>> @@ -289,6 +290,7 @@ >>>>               "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py", >>>> "${libdir}/python${PYTHON_MAJMIN}/platform.py", >>>> "${libdir}/python${PYTHON_MAJMIN}/posixpath.py", >>>> +            "${libdir}/python${PYTHON_MAJMIN}/pydoc.py", >>>>               "${libdir}/python${PYTHON_MAJMIN}/re.py", >>>>               "${libdir}/python${PYTHON_MAJMIN}/reprlib.py", >>>> "${libdir}/python${PYTHON_MAJMIN}/rlcompleter.py", >>>> @@ -313,8 +315,11 @@ >>>> "${libdir}/python${PYTHON_MAJMIN}/tokenize.py", >>>> "${libdir}/python${PYTHON_MAJMIN}/traceback.py", >>>>               "${libdir}/python${PYTHON_MAJMIN}/types.py", >>>> +            "${libdir}/python${PYTHON_MAJMIN}/urllib", >>>> + "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__", >>>> "${libdir}/python${PYTHON_MAJMIN}/warnings.py", >>>>               "${libdir}/python${PYTHON_MAJMIN}/weakref.py", >>>> +            "${libdir}/python${PYTHON_MAJMIN}/pydoc_data", >>>> "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]" >>>>           ], >>>>           "cached": [ >>>> @@ -363,6 +368,7 @@ >>>> "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pkgutil.*.pyc", >>>> "${libdir}/python${PYTHON_MAJMIN}/__pycache__/platform.*.pyc", >>>> "${libdir}/python${PYTHON_MAJMIN}/__pycache__/posixpath.*.pyc", >>>> + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pydoc.*.pyc", >>>> "${libdir}/python${PYTHON_MAJMIN}/__pycache__/re.*.pyc", >>>> "${libdir}/python${PYTHON_MAJMIN}/__pycache__/reprlib.*.pyc", >>>> "${libdir}/python${PYTHON_MAJMIN}/__pycache__/rlcompleter.*.pyc", >>>> @@ -798,7 +804,6 @@ >>>>               "plistlib", >>>>               "pprint", >>>>               "profile", >>>> -            "pydoc", >>>>               "resource", >>>>               "shell", >>>>               "smtpd", >>>> @@ -857,8 +862,6 @@ >>>>               "${libdir}/python${PYTHON_MAJMIN}/poplib.py", >>>>               "${libdir}/python${PYTHON_MAJMIN}/smtplib.py", >>>> "${libdir}/python${PYTHON_MAJMIN}/telnetlib.py", >>>> -            "${libdir}/python${PYTHON_MAJMIN}/urllib", >>>> - "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__", >>>>               "${libdir}/python${PYTHON_MAJMIN}/uuid.py" >>>>           ], >>>>           "cached": [ >>>> @@ -989,21 +992,6 @@ >>>> "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pstats.*.pyc" >>>>           ] >>>>       }, >>>> -    "pydoc": { >>>> -        "summary": "Python interactive help support", >>>> -        "rdepends": [ >>>> -            "core", >>>> -            "netclient" >>>> -        ], >>>> -        "files": [ >>>> -            "${bindir}/pydoc*", >>>> -            "${libdir}/python${PYTHON_MAJMIN}/pydoc.py", >>>> -            "${libdir}/python${PYTHON_MAJMIN}/pydoc_data" >>>> -        ], >>>> -        "cached": [ >>>> - "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pydoc.*.pyc" >>>> -        ] >>>> -    }, >>>>       "resource": { >>>>           "summary": "Python resource control interface", >>>>           "rdepends": [ >>>> diff --git a/meta/recipes-devtools/python/python3_3.8.2.bb >>>> b/meta/recipes-devtools/python/python3_3.8.2.bb >>>> index a4a16fd495..36aa54ba6c 100644 >>>> --- a/meta/recipes-devtools/python/python3_3.8.2.bb >>>> +++ b/meta/recipes-devtools/python/python3_3.8.2.bb >>>> @@ -318,7 +318,6 @@ RRECOMMENDS_${PN}-crypt_append_class-nativesdk >>>> = " openssl ca-certificates" >>>>   FILES_${PN} = "" >>>>   RPROVIDES_${PN}-modules = "${PN}" >>>>   -FILES_${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} >>>> ${bindir}/pydoc3" >>>>   FILES_${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}" >>>>     # provide python-pyvenv from python3-venv >>>> @@ -332,7 +331,7 @@ INSANE_SKIP_${PN}-dev += "dev-elf" >>>>     # catch all the rest (unsorted) >>>>   PACKAGES += "${PN}-misc" >>>> -RDEPENDS_${PN}-misc += "python3-core python3-email python3-codecs >>>> python3-pydoc python3-pickle python3-audio" >>>> +RDEPENDS_${PN}-misc += "python3-core python3-email python3-codecs >>>> python3-pickle python3-audio" >>>>   RDEPENDS_${PN}-modules_append_class-target = " python3-misc" >>>>   RDEPENDS_${PN}-modules_append_class-nativesdk = " python3-misc" >>>>   FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN} >>>> ${libdir}/python${PYTHON_MAJMIN}/lib-dynload" >>>> >>> >>> > >