Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
configure: add --enable-pypi and --disable-pypi
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>
  • Loading branch information
jnsnow authored and bonzini committed May 17, 2023
1 parent dfe5b11 commit 0511a2a
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion configure
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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.

Expand All @@ -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" ;
Expand All @@ -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
Expand Down

0 comments on commit 0511a2a

Please sign in to comment.