diff --git a/bind-fix-build-with-older-sphinx.patch b/bind-fix-build-with-older-sphinx.patch new file mode 100644 index 0000000..1df9bb8 --- /dev/null +++ b/bind-fix-build-with-older-sphinx.patch @@ -0,0 +1,108 @@ +Index: b/doc/arm/conf.py +=================================================================== +--- a/doc/arm/conf.py ++++ b/doc/arm/conf.py +@@ -18,54 +18,58 @@ from docutils.nodes import Node, system_ + from docutils.parsers.rst import roles + + from sphinx import addnodes +-from sphinx.util.docutils import ReferenceRole ++try: ++ from sphinx.util.docutils import ReferenceRole + ++ GITLAB_BASE_URL = 'https://gitlab.isc.org/isc-projects/bind9/-/' + +-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 +- +- +-def setup(_): +- roles.register_local_role('gl', GitLabRefRole(GITLAB_BASE_URL)) ++ # 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 ++ ++ ++ def setup(_): ++ roles.register_local_role('gl', GitLabRefRole(GITLAB_BASE_URL)) ++ ++except ImportError: ++ # better loose this feature, than failing the build ++ pass + + # + # Configuration file for the Sphinx documentation builder. diff --git a/bind.changes b/bind.changes index 818db74..fef4432 100644 --- a/bind.changes +++ b/bind.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Jun 24 15:02:14 UTC 2021 - Hans-Peter Jansen + +- Add patch bind-fix-build-with-older-sphinx.patch and sed fix + in order to build with older distributions. + ------------------------------------------------------------------- Wed Jun 23 06:46:55 UTC 2021 - Josef Möllers diff --git a/bind.spec b/bind.spec index f324cde..431cc48 100644 --- a/bind.spec +++ b/bind.spec @@ -65,6 +65,7 @@ Source70: bind.conf Source72: named.conf Patch52: named-bootconf.diff Patch56: bind-ldapdump-use-valid-host.patch +Patch68: bind-fix-build-with-older-sphinx.patch BuildRequires: libcap-devel BuildRequires: libmysqlclient-devel BuildRequires: libopenssl-devel @@ -167,6 +168,13 @@ for file in docu/README* config/{README,named.conf} sysconfig/named-named; do done popd +%if 0%{?sle_version} >= 150000 && 0%{?sle_version} <= 150300 +# the Administration Reference Manual doesn't build with Leap/SLES due to an way too old Sphinx package +# that is missing sphinx.util.docutils.ReferenceRole. +# patch68 disables this extension, and here, we're removing the :gl: tags in the notes +sed -i 's|:gl:||g' doc/notes/notes*.rst +%endif + %build autoreconf -fvi export CFLAGS="%{optflags} -fPIE -DNO_VERSION_DATE"