On Sat, 27 May 2023, Paolo Bonzini wrote:
The behavior of --{enable,disable}-pypi is similar to that of
-Dwrapmode={default,nodownload} respectively.  In particular,
in both cases a feature needs to be explicitly enabled for the
dependency to be downloaded.

So, use a single option to control both cases.  Now, --enable-slirp
will trigger cloning and building of libslirp if the .pc file
is not found on the machine.

Reviewed-by: Daniel P. Berrangé <berra...@redhat.com>
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
---
configure              | 17 +++++++----------
subprojects/.gitignore |  3 +++
2 files changed, 10 insertions(+), 10 deletions(-)
create mode 100644 subprojects/.gitignore

diff --git a/configure b/configure
index 370e038e63d7..2f908660e4f1 100755
--- a/configure
+++ b/configure
@@ -266,7 +266,7 @@ bsd_user=""
plugins="$default_feature"
ninja=""
python=
-pypi="enabled"
+download="enabled"

Is this the default? Can it default to disabled so it won't download anytihng unless asked to do that? By default it should just report if something is missing and let the users decide how they want to install it.

Regards,
BALATON Zoltan

bindir="bin"
skip_meson=no
vfio_user_server="disabled"
@@ -756,9 +756,9 @@ for opt do
  --with-git-submodules=*)
      git_submodules_action="$optarg"
  ;;
-  --disable-pypi) pypi="disabled"
+  --disable-download) download="disabled"
  ;;
-  --enable-pypi) pypi="enabled"
+  --enable-download) download="enabled"
  ;;
  --enable-plugins) if test "$mingw32" = "yes"; then
                        error_exit "TCG plugins not currently supported on Windows 
platforms"
@@ -962,7 +962,7 @@ python="$(command -v "$python")"
# - venv is allowed to use system packages;
# - all setup can be performed offline;
# - missing packages may be fetched from PyPI,
-#   unless --disable-pypi is passed.
+#   unless --disable-download is passed.
# - pip is not installed into the venv when possible,
#   but ensurepip is called as a fallback when necessary.

@@ -979,7 +979,7 @@ python="$python -B"
mkvenv="$python ${source_path}/python/scripts/mkvenv.py"

mkvenv_flags=""
-if test "$pypi" = "enabled" ; then
+if test "$download" = "enabled" ; then
    mkvenv_flags="--online"
fi

@@ -1002,7 +1002,7 @@ meson="$(cd pyvenv/bin; pwd)/meson"
# Conditionally ensure Sphinx is installed.

mkvenv_flags=""
-if test "$pypi" = "enabled" -a "$docs" = "enabled" ; then
+if test "$download" = "enabled" -a "$docs" = "enabled" ; then
    mkvenv_flags="--online"
fi

@@ -1942,11 +1942,8 @@ if test "$skip_meson" = no; then

  rm -rf meson-private meson-info meson-logs

-  # Prevent meson from automatically downloading wrapped subprojects when 
missing.
-  # You can use 'meson subprojects download' before running configure.
-  meson_option_add "--wrap-mode=nodownload"
-
  # Built-in options
+  test "$download" = "disabled" && meson_option_add "--wrap-mode=nodownload"
  test "$bindir" != "bin" && meson_option_add "-Dbindir=$bindir"
  test "$default_feature" = no && meson_option_add -Dauto_features=disabled
  test "$static" = yes && meson_option_add -Dprefer_static=true
diff --git a/subprojects/.gitignore b/subprojects/.gitignore
new file mode 100644
index 000000000000..7560ebb0b1a0
--- /dev/null
+++ b/subprojects/.gitignore
@@ -0,0 +1,3 @@
+/packagecache
+
+/slirp

Reply via email to