* [PATCH] mkvenv: pass first missing package to diagnose()
@ 2023-05-19 8:24 Paolo Bonzini
2023-05-25 20:50 ` John Snow
0 siblings, 1 reply; 2+ messages in thread
From: Paolo Bonzini @ 2023-05-19 8:24 UTC (permalink / raw)
To: qemu-devel; +Cc: jsnow
If sphinx is present but the theme is not, mkvenv will print an
inaccurate diagnostic:
ERROR: Could not find a version that satisfies the requirement sphinx-rtd-theme>=0.5.0 (from versions: none)
ERROR: No matching distribution found for sphinx-rtd-theme>=0.5.0
'sphinx>=1.6.0' not found:
• Python package 'sphinx' version '5.3.0' was found, but isn't suitable.
• mkvenv was configured to operate offline and did not check PyPI.
Instead, ignore the packages that were found to be present, and report
an error based on the first absent package.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
python/scripts/mkvenv.py | 37 +++++++++++++++++++++++++------------
1 file changed, 25 insertions(+), 12 deletions(-)
diff --git a/python/scripts/mkvenv.py b/python/scripts/mkvenv.py
index 6c78a2c1120e..3a9aef46a513 100644
--- a/python/scripts/mkvenv.py
+++ b/python/scripts/mkvenv.py
@@ -722,7 +722,8 @@ def _do_ensure(
dep_specs: Sequence[str],
online: bool = False,
wheels_dir: Optional[Union[str, Path]] = None,
-) -> None:
+ prog: Optional[str] = None,
+) -> Optional[Tuple[str, bool]]:
"""
Use pip to ensure we have the package specified by @dep_specs.
@@ -752,10 +753,24 @@ def _do_ensure(
generate_console_scripts(present)
if absent:
- # Some packages are missing or aren't a suitable version,
- # install a suitable (possibly vendored) package.
- print(f"mkvenv: installing {', '.join(absent)}", file=sys.stderr)
- pip_install(args=absent, online=online, wheels_dir=wheels_dir)
+ if online or wheels_dir:
+ # Some packages are missing or aren't a suitable version,
+ # install a suitable (possibly vendored) package.
+ print(f"mkvenv: installing {', '.join(absent)}", file=sys.stderr)
+ try:
+ pip_install(args=absent, online=online, wheels_dir=wheels_dir)
+ return None
+ except subprocess.CalledProcessError:
+ pass
+
+ return diagnose(
+ absent[0],
+ online,
+ wheels_dir,
+ prog if absent[0] == dep_specs[0] else None,
+ )
+
+ return None
def ensure(
@@ -785,14 +800,12 @@ def ensure(
if not HAVE_DISTLIB:
raise Ouch("a usable distlib could not be found, please install it")
- try:
- _do_ensure(dep_specs, online, wheels_dir)
- except subprocess.CalledProcessError as exc:
+ result = _do_ensure(dep_specs, online, wheels_dir, prog)
+ if result:
# Well, that's not good.
- msg, bad = diagnose(dep_specs[0], online, wheels_dir, prog)
- if bad:
- raise Ouch(msg) from exc
- raise SystemExit(f"\n{msg}\n\n") from exc
+ if result[1]:
+ raise Ouch(result[0])
+ raise SystemExit(f"\n{result[0]}\n\n")
def post_venv_setup() -> None:
--
2.40.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] mkvenv: pass first missing package to diagnose()
2023-05-19 8:24 [PATCH] mkvenv: pass first missing package to diagnose() Paolo Bonzini
@ 2023-05-25 20:50 ` John Snow
0 siblings, 0 replies; 2+ messages in thread
From: John Snow @ 2023-05-25 20:50 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel
On Fri, May 19, 2023 at 4:25 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> If sphinx is present but the theme is not, mkvenv will print an
> inaccurate diagnostic:
>
> ERROR: Could not find a version that satisfies the requirement sphinx-rtd-theme>=0.5.0 (from versions: none)
> ERROR: No matching distribution found for sphinx-rtd-theme>=0.5.0
>
> 'sphinx>=1.6.0' not found:
> • Python package 'sphinx' version '5.3.0' was found, but isn't suitable.
> • mkvenv was configured to operate offline and did not check PyPI.
>
> Instead, ignore the packages that were found to be present, and report
> an error based on the first absent package.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Late to the party, but ACK.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-05-25 20:51 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-19 8:24 [PATCH] mkvenv: pass first missing package to diagnose() Paolo Bonzini
2023-05-25 20:50 ` John Snow
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).