On 2/28/19 3:56 PM, Peter Maydell wrote:
> Don't hard-code the QEMU version number into conf.py. Instead
> we either pass it to sphinx-build on the command line, or
> (if doing a standalone Sphinx run in a readthedocs.org setup)
> extract it from the VERSION file.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> Makefile | 2 +-
> docs/conf.py | 21 ++++++++++++++++-----
> 2 files changed, 17 insertions(+), 6 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 46cb8e62571..526bac7f516 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -865,7 +865,7 @@ docs/version.texi: $(SRC_PATH)/VERSION
> sphinxdocs: docs/devel/index.html docs/interop/index.html
>
> # Canned command to build a single manual
> -build-manual = $(call quiet-command,sphinx-build $(if $(V),,-q) -b html -d .doctrees/$1 $(SRC_PATH)/docs/$1 docs/$1 ,"SPHINX","docs/$1")
> +build-manual = $(call quiet-command,sphinx-build $(if $(V),,-q) -b html -D version=$(VERSION) -D release="$(FULL_VERSION)" -d .doctrees/$1 $(SRC_PATH)/docs/$1 docs/$1 ,"SPHINX","docs/$1")
> # We assume all RST files in the manual's directory are used in it
> manual-deps = $(wildcard $(SRC_PATH)/docs/$1/*.rst) $(SRC_PATH)/docs/$1/conf.py $(SRC_PATH)/docs/conf.py
>
> diff --git a/docs/conf.py b/docs/conf.py
> index 6a334f545ec..0842d44e930 100644
> --- a/docs/conf.py
> +++ b/docs/conf.py
> @@ -75,11 +75,22 @@ author = u'The QEMU Project Developers'
> # The version info for the project you're documenting, acts as replacement for
> # |version| and |release|, also used in various other places throughout the
> # built documents.
> -#
> -# The short X.Y version.
> -version = u'4.0'
> -# The full version, including alpha/beta/rc tags.
> -release = u'4.0'
> +
> +# Extract this information from the VERSION file, for the benefit of
> +# standalone Sphinx runs as used by readthedocs.org. Builds run from
> +# the Makefile will pass version and release on the sphinx-build
> +# command line, which override this.
> +try:
> + extracted_version = None
> + with open(os.path.join(qemu_docdir, '../VERSION')) as f:
> + extracted_version = f.readline().strip()
> +except:
> + pass
> +finally:
> + if extracted_version:
> + version = release = extracted_version
> + else:
> + version = release = "unknown version"
>
> # The language for content autogenerated by Sphinx. Refer to documentation
> # for a list of supported languages.
>