qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Warner Losh" <imp@bsdimp.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Ani Sinha" <anisinha@redhat.com>,
	"Beraldo Leal" <bleal@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"Ryo ONODERA" <ryoon@netbsd.org>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Kyle Evans" <kevans@freebsd.org>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Michael Roth" <michael.roth@amd.com>,
	"Reinoud Zandijk" <reinoud@netbsd.org>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Cleber Rosa" <crosa@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"John Snow" <jsnow@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Wainer dos Santos Moschetta" <wainersm@redhat.com>
Subject: [PATCH 22/27] configure: add --enable-pypi and --disable-pypi
Date: Wed, 10 May 2023 23:54:30 -0400	[thread overview]
Message-ID: <20230511035435.734312-23-jsnow@redhat.com> (raw)
In-Reply-To: <20230511035435.734312-1-jsnow@redhat.com>

In the event that there's no vendored source present and no sufficient
version of $package can be found, we will attempt to connect to PyPI to
install the package if '--disable-pypi' was not passed.

This means that PyPI access is "enabled by default", but there are some
subtleties that make this action occur much less frequently than you
might imagine:

(1) While --enable-pypi is the default, vendored source will always be
    preferred when found, making PyPI a fallback. This should ensure
    that configure-time venv building "just works" for almost everyone
    in almost every circumstance.

(2) Because meson source is, at time of writing, vendored directly into
    qemu.git, PyPI will never be used for sourcing meson.

(3) Because Sphinx is an optional dependency, if docs are set to "auto",
    PyPI will not be used to obtain Sphinx source as a fallback and
    instead docs will be disabled. If PyPI sourcing of sphinx is
    desired, --enable-docs should be passed to force the lookup. I chose
    this as the default behavior to avoid adding new internet lookups to
    a "default" invocation of configure.

Signed-off-by: John Snow <jsnow@redhat.com>
---
 configure | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/configure b/configure
index 77d632e10d..590a1a3323 100755
--- a/configure
+++ b/configure
@@ -624,6 +624,7 @@ check_py_version() {
 }
 
 python=
+pypi="enabled"
 first_python=
 if test -z "${PYTHON}"; then
     # A bare 'python' is traditionally python 2.x, but some distros
@@ -889,6 +890,10 @@ for opt do
   --with-git-submodules=*)
       git_submodules_action="$optarg"
   ;;
+  --disable-pypi) pypi="disabled"
+  ;;
+  --enable-pypi) pypi="enabled"
+  ;;
   --enable-plugins) if test "$mingw32" = "yes"; then
                         error_exit "TCG plugins not currently supported on Windows platforms"
                     else
@@ -1102,7 +1107,9 @@ python="$(command -v "$python")"
 # Defaults assumed for now:
 # - venv is cleared if it exists already;
 # - venv is allowed to use system packages;
-# - all setup is performed **offline**;
+# - all setup can be performed offline;
+# - missing packages may be fetched from PyPI,
+#   unless --disable-pypi is passed.
 # - pip is not installed into the venv when possible,
 #   but ensurepip is called as a fallback when necessary.
 
@@ -1118,7 +1125,13 @@ fi
 python="$python -B"
 mkvenv="$python ${source_path}/python/scripts/mkvenv.py"
 
+mkvenv_flags=""
+if test "$pypi" = "enabled" ; then
+    mkvenv_flags="--online"
+fi
+
 if ! $mkvenv ensure \
+     $mkvenv_flags \
      --dir "${source_path}/python/wheels" \
      --diagnose "meson" \
      "meson>=0.61.5" ;
@@ -1149,8 +1162,14 @@ fi
 
 # Conditionally ensure Sphinx is installed.
 
+mkvenv_flags=""
+if test "$pypi" = "enabled" -a "$docs" = "enabled" ; then
+    mkvenv_flags="--online"
+fi
+
 if test "$docs" != "disabled" ; then
     if ! $mkvenv ensure \
+         $mkvenv_flags \
          --diagnose "sphinx-build" \
          "sphinx>=1.6.0" sphinx_rtd_theme;
     then
-- 
2.40.0



  parent reply	other threads:[~2023-05-11  3:59 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-11  3:54 [PATCH 00/27] configure: create a python venv and ensure meson, sphinx John Snow
2023-05-11  3:54 ` [PATCH 01/27] python: shut up "pip install" during "make check-minreqs" John Snow
2023-05-11  3:54 ` [PATCH 02/27] python: update pylint configuration John Snow
2023-05-11  3:54 ` [PATCH 03/27] python: add mkvenv.py John Snow
2023-05-11  3:54 ` [PATCH 04/27] mkvenv: add better error message for missing pyexpat module John Snow
2023-05-11  3:54 ` [PATCH 05/27] mkvenv: add nested venv workaround John Snow
2023-05-11  3:54 ` [PATCH 06/27] mkvenv: add ensure subcommand John Snow
2023-05-11  3:54 ` [PATCH 07/27] mkvenv: add diagnose() method for ensure() failures John Snow
2023-05-11  6:53   ` Paolo Bonzini
2023-05-11 15:53     ` John Snow
2023-05-11 15:56       ` Paolo Bonzini
2023-05-11 15:59         ` John Snow
2023-05-11  3:54 ` [PATCH 08/27] mkvenv: add console script entry point generation John Snow
2023-05-11  3:54 ` [PATCH 09/27] mkvenv: create pip binary in virtual environment John Snow
2023-05-11  3:54 ` [PATCH 10/27] mkvenv: work around broken pip installations on Debian 10 John Snow
2023-05-11  3:54 ` [PATCH 11/27] tests/docker: add python3-venv dependency John Snow
2023-05-11  3:54 ` [PATCH 12/27] tests/vm: Configure netbsd to use Python 3.10 John Snow
2023-05-11  3:54 ` [PATCH 13/27] tests/vm: add py310-expat to NetBSD John Snow
2023-05-11  3:54 ` [PATCH 14/27] python: add vendor.py utility John Snow
2023-05-11  3:54 ` [PATCH 15/27] configure: create a python venv unconditionally John Snow
2023-05-11  3:54 ` [PATCH 16/27] python/wheels: add vendored meson package John Snow
2023-05-11  3:54 ` [PATCH 17/27] configure: use 'mkvenv ensure meson' to bootstrap meson John Snow
2023-05-11  3:54 ` [PATCH 18/27] qemu.git: drop meson git submodule John Snow
2023-05-11  3:54 ` [PATCH 19/27] tests: Use configure-provided pyvenv for tests John Snow
2023-05-11  3:54 ` [PATCH 20/27] configure: move --enable-docs and --disable-docs back to configure John Snow
2023-05-11  3:54 ` [PATCH 21/27] configure: bootstrap sphinx with mkvenv John Snow
2023-05-11  3:54 ` John Snow [this message]
2023-05-11  3:54 ` [PATCH 23/27] Python: Drop support for Python 3.6 John Snow
2023-05-11  3:54 ` [PATCH 24/27] configure: Add courtesy hint to Python version failure message John Snow
2023-05-11  3:54 ` [PATCH 25/27] mkvenv: mark command as required John Snow
2023-05-11  3:54 ` [PATCH 26/27] python: bump some of the dependencies John Snow
2023-05-11  3:54 ` [PATCH 27/27] mkvenv.py: experiment; use distlib to generate script entry points John Snow
2023-05-11  6:57   ` Paolo Bonzini
2023-05-11  7:02   ` Paolo Bonzini
2023-05-11 15:58     ` John Snow
2023-05-11 16:14       ` Paolo Bonzini
2023-05-11 16:16         ` John Snow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230511035435.734312-23-jsnow@redhat.com \
    --to=jsnow@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=anisinha@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=bleal@redhat.com \
    --cc=crosa@redhat.com \
    --cc=imp@bsdimp.com \
    --cc=kevans@freebsd.org \
    --cc=marcandre.lureau@redhat.com \
    --cc=michael.roth@amd.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=reinoud@netbsd.org \
    --cc=ryoon@netbsd.org \
    --cc=thuth@redhat.com \
    --cc=wainersm@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).