qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[RFC PATCH v2 03/10] mkvenv: Add better error message for missing pyexap


From: John Snow
Subject: [RFC PATCH v2 03/10] mkvenv: Add better error message for missing pyexapt module
Date: Fri, 14 Apr 2023 01:54:42 -0400

NetBSD debundles pyexpat from python, but ensurepip needs pyexpat. Try
our best to offer a helpful error message instead of just failing
catastrophically.

Signed-off-by: John Snow <jsnow@redhat.com>
---
 python/scripts/mkvenv.py | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/python/scripts/mkvenv.py b/python/scripts/mkvenv.py
index 6df95382f3..a3284e9ef1 100644
--- a/python/scripts/mkvenv.py
+++ b/python/scripts/mkvenv.py
@@ -98,7 +98,10 @@ def check_ensurepip(with_pip: bool) -> None:
 
     Raise a fatal exception with a helpful hint if it isn't available.
     """
-    if with_pip and not find_spec("ensurepip"):
+    if not with_pip:
+        return
+
+    if not find_spec("ensurepip"):
         msg = ("Python's ensurepip module is not found.\n"
 
                "It's normally part of the Python standard library, "
@@ -111,6 +114,20 @@ def check_ensurepip(with_pip: bool) -> None:
                "(Hint: Debian puts ensurepip in its python3-venv package.)")
         raise Ouch(msg)
 
+    # ensurepip uses pyexpat, which can also go missing on us:
+    if not find_spec("pyexpat"):
+        msg = ("Python's pyexpat module is not found.\n"
+
+               "It's normally part of the Python standard library, "
+               "maybe your distribution packages it separately?\n"
+
+               "Either install pyexpat, or alleviate the need for it in the "
+               "first place by installing pip and setuptools for "
+               f"'{sys.executable}'.\n\n"
+
+               "(Hint: NetBSD's pkgsrc debundles this to e.g. 'py310-expat'.)")
+        raise Ouch(msg)
+
 
 def make_venv(  # pylint: disable=too-many-arguments
         venv_path: Union[str, Path],
-- 
2.39.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]