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<mingli.yu@windriver.com>

Add pydoc and urllib to core to fix below error:
  # python3
  >>> help()
  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  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 <module>
  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 "<stdin>", line 1, in <module>
 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 <module>
 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<mingli.yu@windriver.com>
---
  .../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"