2019-03-31 12:49:47 +02:00
|
|
|
############################################################################
|
|
|
|
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
|
|
|
#
|
2021-06-03 08:37:05 +02:00
|
|
|
# SPDX-License-Identifier: MPL-2.0
|
|
|
|
#
|
2019-03-31 12:49:47 +02:00
|
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
2020-09-14 16:20:40 -07:00
|
|
|
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
2019-03-31 12:49:47 +02:00
|
|
|
#
|
|
|
|
# See the COPYRIGHT file distributed with this work for additional
|
|
|
|
# information regarding copyright ownership.
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
# flake8: noqa: E501
|
|
|
|
|
2021-12-29 09:58:48 +01:00
|
|
|
import re
|
|
|
|
|
2021-04-29 13:24:21 +02:00
|
|
|
from typing import List, Tuple
|
|
|
|
|
|
|
|
from docutils import nodes
|
|
|
|
from docutils.nodes import Node, system_message
|
|
|
|
from docutils.parsers.rst import roles
|
|
|
|
|
|
|
|
from sphinx import addnodes
|
2021-10-15 22:07:53 +02:00
|
|
|
|
|
|
|
try:
|
|
|
|
from sphinx.util.docutils import ReferenceRole
|
|
|
|
except ImportError:
|
|
|
|
# pylint: disable=too-few-public-methods
|
|
|
|
class ReferenceRole(roles.GenericRole):
|
|
|
|
'''
|
|
|
|
The ReferenceRole class (used as a base class by GitLabRefRole
|
|
|
|
below) is only defined in Sphinx >= 2.0.0. For older Sphinx
|
|
|
|
versions, this stub version of the ReferenceRole class is used
|
|
|
|
instead.
|
|
|
|
'''
|
|
|
|
def __init__(self):
|
|
|
|
super().__init__('', nodes.strong)
|
2021-04-29 13:24:21 +02:00
|
|
|
|
|
|
|
|
|
|
|
GITLAB_BASE_URL = 'https://gitlab.isc.org/isc-projects/bind9/-/'
|
|
|
|
|
|
|
|
|
|
|
|
# Custom Sphinx role enabling automatic hyperlinking to GitLab issues/MRs.
|
|
|
|
class GitLabRefRole(ReferenceRole):
|
|
|
|
def __init__(self, base_url: str) -> None:
|
|
|
|
self.base_url = base_url
|
|
|
|
super().__init__()
|
|
|
|
|
|
|
|
def run(self) -> Tuple[List[Node], List[system_message]]:
|
|
|
|
gl_identifier = '[GL %s]' % self.target
|
|
|
|
|
|
|
|
target_id = 'index-%s' % self.env.new_serialno('index')
|
|
|
|
entries = [('single', 'GitLab; ' + gl_identifier, target_id, '', None)]
|
|
|
|
|
|
|
|
index = addnodes.index(entries=entries)
|
|
|
|
target = nodes.target('', '', ids=[target_id])
|
|
|
|
self.inliner.document.note_explicit_target(target)
|
|
|
|
|
|
|
|
try:
|
|
|
|
refuri = self.build_uri()
|
|
|
|
reference = nodes.reference('', '', internal=False, refuri=refuri,
|
|
|
|
classes=['gl'])
|
|
|
|
if self.has_explicit_title:
|
|
|
|
reference += nodes.strong(self.title, self.title)
|
|
|
|
else:
|
|
|
|
reference += nodes.strong(gl_identifier, gl_identifier)
|
|
|
|
except ValueError:
|
|
|
|
error_text = 'invalid GitLab identifier %s' % self.target
|
|
|
|
msg = self.inliner.reporter.error(error_text, line=self.lineno)
|
|
|
|
prb = self.inliner.problematic(self.rawtext, self.rawtext, msg)
|
|
|
|
return [prb], [msg]
|
|
|
|
|
|
|
|
return [index, target, reference], []
|
|
|
|
|
|
|
|
def build_uri(self):
|
|
|
|
if self.target[0] == '#':
|
|
|
|
return self.base_url + 'issues/%d' % int(self.target[1:])
|
|
|
|
if self.target[0] == '!':
|
|
|
|
return self.base_url + 'merge_requests/%d' % int(self.target[1:])
|
|
|
|
raise ValueError
|
|
|
|
|
|
|
|
|
2022-03-03 15:32:35 +01:00
|
|
|
def setup(app):
|
2021-04-29 13:24:21 +02:00
|
|
|
roles.register_local_role('gl', GitLabRefRole(GITLAB_BASE_URL))
|
2022-03-03 15:32:35 +01:00
|
|
|
app.add_crossref_type('iscman', 'iscman', 'pair: %s; manual page')
|
2021-04-29 13:24:21 +02:00
|
|
|
|
2019-03-31 12:49:47 +02:00
|
|
|
#
|
|
|
|
# Configuration file for the Sphinx documentation builder.
|
|
|
|
#
|
|
|
|
# This file only contains a selection of the most common options. For a full
|
|
|
|
# list see the documentation:
|
|
|
|
# http://www.sphinx-doc.org/en/master/config
|
|
|
|
|
|
|
|
# -- Path setup --------------------------------------------------------------
|
|
|
|
|
|
|
|
# If extensions (or modules to document with autodoc) are in another directory,
|
|
|
|
# add these directories to sys.path here. If the directory is relative to the
|
|
|
|
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
|
|
|
#
|
|
|
|
# import os
|
|
|
|
# import sys
|
|
|
|
# sys.path.insert(0, os.path.abspath('.'))
|
|
|
|
|
|
|
|
|
|
|
|
# -- Project information -----------------------------------------------------
|
|
|
|
|
2021-09-16 08:22:01 +02:00
|
|
|
project = 'BIND 9'
|
2019-03-31 12:49:47 +02:00
|
|
|
# pylint: disable=redefined-builtin
|
2022-01-03 10:29:49 +01:00
|
|
|
copyright = '2022, Internet Systems Consortium'
|
2021-09-16 08:22:01 +02:00
|
|
|
author = 'Internet Systems Consortium'
|
2019-03-31 12:49:47 +02:00
|
|
|
|
2021-12-29 09:58:48 +01:00
|
|
|
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
|
|
|
|
|
2019-03-31 12:49:47 +02:00
|
|
|
# -- General configuration ---------------------------------------------------
|
|
|
|
|
|
|
|
# Add any Sphinx extension module names here, as strings. They can be
|
|
|
|
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
|
|
|
# ones.
|
|
|
|
extensions = []
|
|
|
|
|
|
|
|
# Add any paths that contain templates here, relative to this directory.
|
|
|
|
templates_path = ['_templates']
|
|
|
|
|
|
|
|
# List of patterns, relative to source directory, that match files and
|
|
|
|
# directories to ignore when looking for source files.
|
|
|
|
# This pattern also affects html_static_path and html_extra_path.
|
|
|
|
exclude_patterns = [
|
|
|
|
'_build',
|
|
|
|
'Thumbs.db',
|
|
|
|
'.DS_Store',
|
|
|
|
'*.grammar.rst',
|
|
|
|
'*.zoneopts.rst',
|
2022-01-20 10:24:38 +01:00
|
|
|
'build.rst',
|
2019-03-31 12:49:47 +02:00
|
|
|
'catz.rst',
|
|
|
|
'dlz.rst',
|
|
|
|
'dnssec.rst',
|
|
|
|
'dyndb.rst',
|
2022-02-24 17:56:52 +11:00
|
|
|
'logging-categories.rst',
|
2019-03-31 12:49:47 +02:00
|
|
|
'managed-keys.rst',
|
|
|
|
'pkcs11.rst',
|
2022-01-19 16:30:18 +01:00
|
|
|
'platforms.rst',
|
2019-03-31 12:49:47 +02:00
|
|
|
'plugins.rst'
|
|
|
|
]
|
|
|
|
|
|
|
|
# The master toctree document.
|
|
|
|
master_doc = 'index'
|
|
|
|
|
|
|
|
# -- Options for HTML output -------------------------------------------------
|
|
|
|
|
|
|
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
|
|
|
# a list of builtin themes.
|
|
|
|
#
|
|
|
|
html_theme = 'sphinx_rtd_theme'
|
|
|
|
|
2020-06-09 14:47:06 +02:00
|
|
|
# -- Options for EPUB output -------------------------------------------------
|
|
|
|
|
|
|
|
epub_basename = 'Bv9ARM'
|
|
|
|
|
2019-03-31 12:49:47 +02:00
|
|
|
# -- Options for LaTeX output ------------------------------------------------
|
|
|
|
latex_engine = 'xelatex'
|
|
|
|
|
|
|
|
# pylint disable=line-too-long
|
|
|
|
latex_documents = [
|
2021-09-16 08:22:01 +02:00
|
|
|
(master_doc, 'Bv9ARM.tex', 'BIND 9 Administrator Reference Manual', author, 'manual'),
|
2019-03-31 12:49:47 +02:00
|
|
|
]
|
|
|
|
|
|
|
|
latex_logo = "isc-logo.pdf"
|
2022-01-24 12:13:24 +01:00
|
|
|
|
|
|
|
#
|
|
|
|
# The rst_epilog will be completely overwritten from the Makefile,
|
|
|
|
# the definition here is provided purely for situations when
|
|
|
|
# sphinx-build is run by hand.
|
|
|
|
#
|
|
|
|
rst_epilog = """
|
2022-04-26 18:23:38 +02:00
|
|
|
.. |rndc_conf| replace:: ``/etc/rndc.conf``
|
|
|
|
.. |rndc_key| replace:: ``/etc/rndc.key``
|
|
|
|
.. |named_conf| replace:: ``/etc/named.conf``
|
|
|
|
.. |bind_keys| replace:: ``/etc/bind.keys``
|
|
|
|
.. |named_pid| replace:: ``/run/named.pid``
|
|
|
|
.. |session_key| replace:: ``/run/session.key``
|
2022-01-24 12:13:24 +01:00
|
|
|
"""
|