[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 21/27] configure: bootstrap sphinx with mkvenv
|
From: |
John Snow |
|
Subject: |
[PATCH 21/27] configure: bootstrap sphinx with mkvenv |
|
Date: |
Wed, 10 May 2023 23:54:29 -0400 |
When docs are explicitly requested, require Sphinx>=1.6.0. When docs are
explicitly disabled, don't bother to check for Sphinx at all. If docs
are set to "auto", attempt to locate Sphinx, but continue onward if it
wasn't located.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
---
docs/conf.py | 9 ---------
docs/meson.build | 2 +-
configure | 21 +++++++++++++++++++--
meson_options.txt | 2 --
scripts/meson-buildoptions.sh | 3 ---
5 files changed, 20 insertions(+), 17 deletions(-)
diff --git a/docs/conf.py b/docs/conf.py
index 00767b0e24..c687ff2663 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -32,15 +32,6 @@
from distutils.version import LooseVersion
from sphinx.errors import ConfigError
-# Make Sphinx fail cleanly if using an old Python, rather than obscurely
-# failing because some code in one of our extensions doesn't work there.
-# In newer versions of Sphinx this will display nicely; in older versions
-# Sphinx will also produce a Python backtrace but at least the information
-# gets printed...
-if sys.version_info < (3,6):
- raise ConfigError(
- "QEMU requires a Sphinx that uses Python 3.6 or better\n")
-
# The per-manual conf.py will set qemu_docdir for a single-manual build;
# otherwise set it here if this is an entire-manual-set build.
# This is always the absolute path of the docs/ directory in the source tree.
diff --git a/docs/meson.build b/docs/meson.build
index f220800e3e..e4301703b4 100644
--- a/docs/meson.build
+++ b/docs/meson.build
@@ -1,4 +1,4 @@
-sphinx_build = find_program(get_option('sphinx_build'),
+sphinx_build = find_program(fs.parent(python.full_path()) / 'sphinx-build',
required: get_option('docs'))
# Check if tools are available to build documentation.
diff --git a/configure b/configure
index 3e74c54f29..77d632e10d 100755
--- a/configure
+++ b/configure
@@ -1116,9 +1116,9 @@ fi
# Suppress writing compiled files
python="$python -B"
+mkvenv="$python ${source_path}/python/scripts/mkvenv.py"
-
-if ! $python "${source_path}/python/scripts/mkvenv.py" ensure \
+if ! $mkvenv ensure \
--dir "${source_path}/python/wheels" \
--diagnose "meson" \
"meson>=0.61.5" ;
@@ -1147,6 +1147,23 @@ else
meson="$(cd pyvenv/bin; pwd)/meson"
fi
+# Conditionally ensure Sphinx is installed.
+
+if test "$docs" != "disabled" ; then
+ if ! $mkvenv ensure \
+ --diagnose "sphinx-build" \
+ "sphinx>=1.6.0" sphinx_rtd_theme;
+ then
+ if test "$docs" = "enabled" ; then
+ exit 1
+ fi
+ echo "Sphinx not found/usable, disabling docs."
+ docs=disabled
+ else
+ docs=enabled
+ fi
+fi
+
# Probe for ninja
if test -z "$ninja"; then
diff --git a/meson_options.txt b/meson_options.txt
index d8330a1f71..a350520f6a 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -12,8 +12,6 @@ option('pkgversion', type : 'string', value : '',
description: 'use specified string as sub-version of the package')
option('smbd', type : 'string', value : '',
description: 'Path to smbd for slirp networking')
-option('sphinx_build', type : 'string', value : 'sphinx-build',
- description: 'Use specified sphinx-build for building document')
option('iasl', type : 'string', value : '',
description: 'Path to ACPI disassembler')
option('tls_priority', type : 'string', value : 'NORMAL',
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index 2805d1c145..fedb93ada6 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -57,8 +57,6 @@ meson_options_help() {
printf "%s\n" ' --localedir=VALUE Locale data directory
[share/locale]'
printf "%s\n" ' --localstatedir=VALUE Localstate data directory
[/var/local]'
printf "%s\n" ' --mandir=VALUE Manual page directory [share/man]'
- printf "%s\n" ' --sphinx-build=VALUE Use specified sphinx-build for
building document'
- printf "%s\n" ' [sphinx-build]'
printf "%s\n" ' --sysconfdir=VALUE Sysconf data directory [etc]'
printf "%s\n" ' --tls-priority=VALUE Default TLS protocol/cipher
priority string'
printf "%s\n" ' [NORMAL]'
@@ -425,7 +423,6 @@ _meson_option_parse() {
--disable-sndio) printf "%s" -Dsndio=disabled ;;
--enable-sparse) printf "%s" -Dsparse=enabled ;;
--disable-sparse) printf "%s" -Dsparse=disabled ;;
- --sphinx-build=*) quote_sh "-Dsphinx_build=$2" ;;
--enable-spice) printf "%s" -Dspice=enabled ;;
--disable-spice) printf "%s" -Dspice=disabled ;;
--enable-spice-protocol) printf "%s" -Dspice_protocol=enabled ;;
--
2.40.0
- [PATCH 12/27] tests/vm: Configure netbsd to use Python 3.10, (continued)
- [PATCH 12/27] tests/vm: Configure netbsd to use Python 3.10, John Snow, 2023/05/10
- [PATCH 09/27] mkvenv: create pip binary in virtual environment, John Snow, 2023/05/10
- [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 <=
- [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, 2023/05/10
- [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