From: "Alex Bennée" <alex.bennee@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org
Subject: Re: [PATCH 2/2] configure: Check that sphinx-build is using Python 3
Date: Mon, 03 Feb 2020 18:09:25 +0000 [thread overview]
Message-ID: <8736bra6ga.fsf@linaro.org> (raw)
In-Reply-To: <20200203132533.21850-3-peter.maydell@linaro.org>
Peter Maydell <peter.maydell@linaro.org> writes:
> Currently configure's has_sphinx_build() check simply runs a dummy
> sphinx-build and either passes or fails. This means that "no
> sphinx-build at all" and "sphinx-build exists but is too old" are
> both reported the same way.
>
> Further, we want to assume that all the Python we write is running
> with at least Python 3.5; configure checks that for our scripts, but
> Sphinx extensions run with whatever Python version sphinx-build
> itself is using.
>
> Add a check to our conf.py which makes sphinx-build fail if it would
> be running our extensions with an old Python, and handle this
> in configure so we can report failure helpfully to the user.
> This will mean that configure --enable-docs will fail like this
> if the sphinx-build provided is not suitable:
>
> Warning: sphinx-build exists but it is either too old or uses too old a Python version
>
> ERROR: User requested feature docs
> configure was not able to find it.
> Install texinfo, Perl/perl-podlators and a Python 3 version of python-sphinx
>
> (As usual, the default is to simply not build the docs, as we would
> if sphinx-build wasn't present at all.)
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> At the moment our Sphinx extensions all work under Python 2;
> but the one for handling parsing QAPI docs out of the JSON is going
> to want to include some of the scripts/qapi Python which is more
> complicated and definitely now 3-only. In any case it's nicer to
> fail cleanly rather than let users stumble into corner cases we don't
> test and don't want to support even if they happen to work today.
> ---
> configure | 12 ++++++++++--
> docs/conf.py | 10 ++++++++++
> 2 files changed, 20 insertions(+), 2 deletions(-)
>
> diff --git a/configure b/configure
> index 830f325822a..95055f2e9dd 100755
> --- a/configure
> +++ b/configure
> @@ -4808,11 +4808,19 @@ has_sphinx_build() {
>
> # Check if tools are available to build documentation.
> if test "$docs" != "no" ; then
> - if has makeinfo && has pod2man && has_sphinx_build; then
> + if has_sphinx_build; then
> + sphinx_ok=yes
> + else
> + sphinx_ok=no
> + fi
> + if has makeinfo && has pod2man && test "$sphinx_ok" = "yes"; then
> docs=yes
> else
> if test "$docs" = "yes" ; then
> - feature_not_found "docs" "Install texinfo, Perl/perl-podlators and python-sphinx"
> + if has $sphinx_build && test "$sphinx_ok" != "yes"; then
> + echo "Warning: $sphinx_build exists but it is either too old or uses too old a Python version" >&2
> + fi
> + feature_not_found "docs" "Install texinfo, Perl/perl-podlators and a Python 3 version of python-sphinx"
> fi
> docs=no
> fi
> diff --git a/docs/conf.py b/docs/conf.py
> index ee7faa6b4e7..7588bf192ee 100644
> --- a/docs/conf.py
> +++ b/docs/conf.py
> @@ -28,6 +28,16 @@
>
> import os
> import sys
> +import sphinx
> +from sphinx.errors import VersionRequirementError
> +
> +# 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.
> +# Unfortunately this doesn't display very neatly (there's an unavoidable
> +# Python backtrace) but at least the information gets printed...
> +if sys.version_info < (3,5):
> + raise VersionRequirementError(
> + "QEMU requires a Sphinx that uses Python 3.5 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.
--
Alex Bennée
next prev parent reply other threads:[~2020-02-03 18:11 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-03 13:25 [PATCH 0/2] configure: Check that sphinx-build is using Python 3 Peter Maydell
2020-02-03 13:25 ` [PATCH 1/2] configure: Allow user to specify sphinx-build binary Peter Maydell
2020-02-03 18:08 ` Alex Bennée
2020-02-04 10:39 ` Markus Armbruster
2020-02-04 12:37 ` Paolo Bonzini
2020-02-04 13:53 ` Wainer dos Santos Moschetta
2020-02-03 13:25 ` [PATCH 2/2] configure: Check that sphinx-build is using Python 3 Peter Maydell
2020-02-03 18:09 ` Alex Bennée [this message]
2020-02-04 13:58 ` Wainer dos Santos Moschetta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8736bra6ga.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).