[PATCH] configure: allow PyPI access for python 'tooling' dependencies

John Snow posted 1 patch 1 month, 2 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260225191255.955585-1-jsnow@redhat.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, "Alex Bennée" <alex.bennee@linaro.org>, Thomas Huth <thuth@redhat.com>
configure | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
[PATCH] configure: allow PyPI access for python 'tooling' dependencies
Posted by John Snow 1 month, 2 weeks ago
We actually do not allow our meson requirements to be fetched online
because we strictly prefer the vendored version. Move the tooling group
installation to a different invocation that does allow PyPI to be
accessed when configure is run without explicitly disabling PyPI access.

This will allow QEMU to download and install python3-wheel for you if
you don't have it in your host environment.

Reported-by: Kevin Wolf <kwolf@redhat.com>
Reported-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
---
 configure | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/configure b/configure
index c4837eba2b1..090579bf236 100755
--- a/configure
+++ b/configure
@@ -963,10 +963,12 @@ fi
 python="$python -B"
 mkvenv="$python ${source_path}/python/scripts/mkvenv.py"
 
-# Finish preparing the virtual environment using vendored .whl files
+# Finish preparing the virtual environment using vendored .whl files.
+# Even if PyPI is allowed, we disallow it here to force installation
+# from our preferred vendored versions.
 
 $mkvenv ensuregroup --dir "${source_path}/python/wheels" \
-     ${source_path}/pythondeps.toml meson tooling || exit 1
+     ${source_path}/pythondeps.toml meson || exit 1
 
 # At this point, we expect Meson to be installed and available.
 # We expect mkvenv or pip to have created pyvenv/bin/meson for us.
@@ -993,13 +995,19 @@ if test "$host_os" = "haiku" && test ! -e "$meson" ; then
     meson="$(cd pyvenv/non-packaged/bin; get_pwd)/meson"
 fi
 
-# Conditionally ensure Sphinx is installed.
-
 mkvenv_online_flag=""
 if test "$download" = "enabled" ; then
     mkvenv_online_flag=" --online"
 fi
 
+# Unconditionally install our tooling group. PyPI is allowed if enabled here.
+
+$mkvenv ensuregroup $mkvenv_online_flag \
+        --dir "${source_path}/python/wheels" \
+        ${source_path}/pythondeps.toml tooling || exit 1
+
+# Conditionally ensure Sphinx is installed.
+
 if test "$docs" != "disabled" ; then
     if ! $mkvenv ensuregroup \
          $(test "$docs" = "enabled" && echo "$mkvenv_online_flag") \
-- 
2.53.0
Re: [PATCH] configure: allow PyPI access for python 'tooling' dependencies
Posted by Daniel P. Berrangé 1 month, 2 weeks ago
On Wed, Feb 25, 2026 at 02:12:55PM -0500, John Snow wrote:
> We actually do not allow our meson requirements to be fetched online
> because we strictly prefer the vendored version. Move the tooling group
> installation to a different invocation that does allow PyPI to be
> accessed when configure is run without explicitly disabling PyPI access.
> 
> This will allow QEMU to download and install python3-wheel for you if
> you don't have it in your host environment.

IOW, with this patch the behaviour is now:

  * Host  python3-wheel -> already works
  * No python3-wheel -> auto downloads
  * No python3-wheel && --disable-downloads -> fail

previously the 2nd case there was behaving the same as the
3rd  which was wrong.

> 
> Reported-by: Kevin Wolf <kwolf@redhat.com>
> Reported-by: Thomas Huth <thuth@redhat.com>
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
>  configure | 16 ++++++++++++----
>  1 file changed, 12 insertions(+), 4 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|


Re: [PATCH] configure: allow PyPI access for python 'tooling' dependencies
Posted by Peter Maydell 1 month, 2 weeks ago
On Thu, 26 Feb 2026 at 13:47, Daniel P. Berrangé <berrange@redhat.com> wrote:
>
> On Wed, Feb 25, 2026 at 02:12:55PM -0500, John Snow wrote:
> > We actually do not allow our meson requirements to be fetched online
> > because we strictly prefer the vendored version. Move the tooling group
> > installation to a different invocation that does allow PyPI to be
> > accessed when configure is run without explicitly disabling PyPI access.
> >
> > This will allow QEMU to download and install python3-wheel for you if
> > you don't have it in your host environment.
>
> IOW, with this patch the behaviour is now:
>
>   * Host  python3-wheel -> already works
>   * No python3-wheel -> auto downloads
>   * No python3-wheel && --disable-downloads -> fail
>
> previously the 2nd case there was behaving the same as the
> 3rd  which was wrong.

Thanks; I've applied this patch at John's request to git to unbreak
builds for people who happen not to have their distro's python3-wheel
installed.

-- PMM
Re: [PATCH] configure: allow PyPI access for python 'tooling' dependencies
Posted by John Snow 1 month, 2 weeks ago
On Thu, Feb 26, 2026 at 12:52 PM Peter Maydell <peter.maydell@linaro.org> wrote:
>
> On Thu, 26 Feb 2026 at 13:47, Daniel P. Berrangé <berrange@redhat.com> wrote:
> >
> > On Wed, Feb 25, 2026 at 02:12:55PM -0500, John Snow wrote:
> > > We actually do not allow our meson requirements to be fetched online
> > > because we strictly prefer the vendored version. Move the tooling group
> > > installation to a different invocation that does allow PyPI to be
> > > accessed when configure is run without explicitly disabling PyPI access.
> > >
> > > This will allow QEMU to download and install python3-wheel for you if
> > > you don't have it in your host environment.
> >
> > IOW, with this patch the behaviour is now:
> >
> >   * Host  python3-wheel -> already works
> >   * No python3-wheel -> auto downloads
> >   * No python3-wheel && --disable-downloads -> fail
> >
> > previously the 2nd case there was behaving the same as the
> > 3rd  which was wrong.
>
> Thanks; I've applied this patch at John's request to git to unbreak
> builds for people who happen not to have their distro's python3-wheel
> installed.
>
> -- PMM

Thank you, and apologies for the minor fuss.

I've updated the changelog to reflect this new requirement:
https://wiki.qemu.org/ChangeLog/11.0#Dependencies
Re: [PATCH] configure: allow PyPI access for python 'tooling' dependencies
Posted by Thomas Huth 1 month, 2 weeks ago
On 25/02/2026 20.12, John Snow wrote:
> We actually do not allow our meson requirements to be fetched online
> because we strictly prefer the vendored version. Move the tooling group
> installation to a different invocation that does allow PyPI to be
> accessed when configure is run without explicitly disabling PyPI access.
> 
> This will allow QEMU to download and install python3-wheel for you if
> you don't have it in your host environment.
> 
> Reported-by: Kevin Wolf <kwolf@redhat.com>
> Reported-by: Thomas Huth <thuth@redhat.com>
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
>   configure | 16 ++++++++++++----
>   1 file changed, 12 insertions(+), 4 deletions(-)

Thanks, this fixes the issue, indeed!

Reviewed-by: Thomas Huth <thuth@redhat.com>
Tested-by: Thomas Huth <thuth@redhat.com>