From 2d1a8b1c56a41b6b0b38b547950d1fe877779938eb39401ded13c15749a07a7a Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Mon, 28 Jun 2021 07:10:05 +0000 Subject: [PATCH] Accepting request 901768 from home:frispete:15.2 Hi, here's an attempt to build the current bind with SLES/LEAP. I tried to come up with something mode decent (replacement of sphinx.util.docutils.ReferenceRole), but run out of time. With these admittedly ugly fixes, bind does build at least, including the ARM, but that is missing the clickable issues in the version specific notes and being redirected to GitLab. - Add patch bind-fix-build-with-older-sphinx.patch and sed fix in order to build with older distributions. OBS-URL: https://build.opensuse.org/request/show/901768 OBS-URL: https://build.opensuse.org/package/show/network/bind?expand=0&rev=324 --- bind-fix-build-with-older-sphinx.patch | 108 +++++++++++++++++++++++++ bind.changes | 6 ++ bind.spec | 8 ++ 3 files changed, 122 insertions(+) create mode 100644 bind-fix-build-with-older-sphinx.patch 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"