2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 14:07:59 +00:00

Set version and release variables in conf.py

Some Sphinx variables used in the ARM are only set in Makefile.docs.
This works fine when building the ARM using "make", but does not work
with Read the Docs, which only looks at conf.py files.

Since Read the Docs does not run ./configure, renaming conf.py to
conf.py.in and using Autoconf output variables is not a feasible
solution.

Instead, extend doc/arm/conf.py with some Python code which processes
configure.ac using regular expressions and sets the relevant Sphinx
variables accordingly.  As this solution also works fine when building
the ARM using "make", drop the relevant -D options from the list of
sphinx-build options used for building the ARM in Makefile.docs.

Note that the man_SPHINXOPTS counterparts of the removed -D switches are
left intact because doc/man/conf.py is a separate Sphinx project which
is only processed using "make" and duplicating the Python code added to
doc/arm/conf.py by this commit would be inelegant.
This commit is contained in:
Michał Kępień 2021-12-29 09:58:48 +01:00
parent 3addc36533
commit 38d251e11b
2 changed files with 17 additions and 2 deletions

View File

@ -17,9 +17,7 @@ common_SPHINXOPTS = \
ALLSPHINXOPTS = \
$(common_SPHINXOPTS) \
-D version="$(PACKAGE_VERSION)" \
-D today="$(RELEASE_DATE)" \
-D release="$(PACKAGE_VERSION)" \
$(SPHINXOPTS) \
$(srcdir)

View File

@ -11,6 +11,8 @@
# flake8: noqa: E501
import re
from typing import List, Tuple
from docutils import nodes
@ -105,6 +107,21 @@ project = 'BIND 9'
copyright = '2021, Internet Systems Consortium'
author = 'Internet Systems Consortium'
m4_vars = {}
with open('../../configure.ac', encoding='utf-8') as configure_ac:
for line in configure_ac:
match = re.match(r'm4_define\(\[(?P<key>bind_VERSION_[A-Z]+)\], (?P<val>[^)]*)\)dnl', line)
if match:
m4_vars[match.group('key')] = match.group('val')
version = '%s.%s.%s%s' % (
m4_vars['bind_VERSION_MAJOR'],
m4_vars['bind_VERSION_MINOR'],
m4_vars['bind_VERSION_PATCH'],
m4_vars['bind_VERSION_EXTRA'],
)
release = version
# -- General configuration ---------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be