[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 22/27] configure: add --enable-pypi and --disable-pypi
|
From: |
John Snow |
|
Subject: |
[PATCH 22/27] configure: add --enable-pypi and --disable-pypi |
|
Date: |
Wed, 10 May 2023 23:54:30 -0400 |
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
- [PATCH 11/27] tests/docker: add python3-venv dependency, (continued)
- [PATCH 11/27] tests/docker: add python3-venv dependency, John Snow, 2023/05/10
- [PATCH 14/27] python: add vendor.py utility, John Snow, 2023/05/10
- [PATCH 15/27] configure: create a python venv unconditionally, John Snow, 2023/05/10
- [PATCH 17/27] configure: use 'mkvenv ensure meson' to bootstrap meson, John Snow, 2023/05/10
- [PATCH 19/27] tests: Use configure-provided pyvenv for tests, John Snow, 2023/05/10
- [PATCH 20/27] configure: move --enable-docs and --disable-docs back to configure, John Snow, 2023/05/10
- [PATCH 10/27] mkvenv: work around broken pip installations on Debian 10, John Snow, 2023/05/10
- [PATCH 18/27] qemu.git: drop meson git submodule, John Snow, 2023/05/10
- [PATCH 21/27] configure: bootstrap sphinx with mkvenv, John Snow, 2023/05/10
- [PATCH 23/27] Python: Drop support for Python 3.6, John Snow, 2023/05/10
- [PATCH 22/27] configure: add --enable-pypi and --disable-pypi,
John Snow <=
- [PATCH 25/27] mkvenv: mark command as required, John Snow, 2023/05/10
- [PATCH 24/27] configure: Add courtesy hint to Python version failure message, John Snow, 2023/05/10
- [PATCH 26/27] python: bump some of the dependencies, John Snow, 2023/05/10
- [PATCH 27/27] mkvenv.py: experiment; use distlib to generate script entry points, John Snow, 2023/05/10
[PATCH 16/27] python/wheels: add vendored meson package, John Snow, 2023/05/10