[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 40/68] configure: add --enable-pypi and --disable-pypi
|
From: |
Paolo Bonzini |
|
Subject: |
[PULL 40/68] configure: add --enable-pypi and --disable-pypi |
|
Date: |
Wed, 17 May 2023 19:44:52 +0200 |
From: John Snow <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>
Message-Id: <20230511035435.734312-23-jsnow@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/configure b/configure
index 411140a306ff..b92da9e6605b 100755
--- a/configure
+++ b/configure
@@ -623,6 +623,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
@@ -888,6 +889,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
@@ -1101,7 +1106,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.
@@ -1117,7 +1124,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" ;
@@ -1134,8 +1147,14 @@ meson="$(cd pyvenv/bin; pwd)/meson"
# 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.1
- [PULL 34/68] python/wheels: add vendored meson package, (continued)
- [PULL 34/68] python/wheels: add vendored meson package, Paolo Bonzini, 2023/05/17
- [PULL 37/68] tests: Use configure-provided pyvenv for tests, Paolo Bonzini, 2023/05/17
- [PULL 41/68] Python: Drop support for Python 3.6, Paolo Bonzini, 2023/05/17
- [PULL 45/68] meson: regenerate meson-buildoptions.sh, Paolo Bonzini, 2023/05/17
- [PULL 26/68] mkvenv: use pip's vendored distlib as a fallback, Paolo Bonzini, 2023/05/17
- [PULL 30/68] tests/vm: Configure netbsd to use Python 3.10, Paolo Bonzini, 2023/05/17
- [PULL 32/68] python: add vendor.py utility, Paolo Bonzini, 2023/05/17
- [PULL 33/68] configure: create a python venv unconditionally, Paolo Bonzini, 2023/05/17
- [PULL 38/68] configure: move --enable-docs and --disable-docs back to configure, Paolo Bonzini, 2023/05/17
- [PULL 36/68] qemu.git: drop meson git submodule, Paolo Bonzini, 2023/05/17
- [PULL 40/68] configure: add --enable-pypi and --disable-pypi,
Paolo Bonzini <=
- [PULL 42/68] configure: Add courtesy hint to Python version failure message, Paolo Bonzini, 2023/05/17
- [PULL 43/68] mkvenv: mark command as required, Paolo Bonzini, 2023/05/17
- [PULL 27/68] mkvenv: avoid ensurepip if pip is installed, Paolo Bonzini, 2023/05/17
- [PULL 57/68] build: move coroutine backend selection to meson, Paolo Bonzini, 2023/05/17
- [PULL 56/68] build: move SafeStack tests to meson, Paolo Bonzini, 2023/05/17
- [PULL 35/68] configure: use 'mkvenv ensure meson' to bootstrap meson, Paolo Bonzini, 2023/05/17
- [PULL 39/68] configure: bootstrap sphinx with mkvenv, Paolo Bonzini, 2023/05/17
- [PULL 44/68] python: bump some of the dependencies, Paolo Bonzini, 2023/05/17
- [PULL 49/68] meson: add more version numbers to the summary, Paolo Bonzini, 2023/05/17
- [PULL 53/68] configure, meson: move --enable-modules to Meson, Paolo Bonzini, 2023/05/17