diff options
author | Stephen Arnold <nerdboy@gentoo.org> | 2020-03-13 20:24:07 -0700 |
---|---|---|
committer | Stephen Arnold <nerdboy@gentoo.org> | 2020-03-13 20:24:07 -0700 |
commit | ff1d3efe61ef0acd2803c72d4c84722a627c0166 (patch) | |
tree | e0b983a8a13bcaae03c801a646400367fdc91670 /net-misc/ntpsec | |
parent | dev-python/ldap3-2.7: Version bump, add py38 (diff) | |
download | gentoo-ff1d3efe61ef0acd2803c72d4c84722a627c0166.tar.gz gentoo-ff1d3efe61ef0acd2803c72d4c84722a627c0166.tar.bz2 gentoo-ff1d3efe61ef0acd2803c72d4c84722a627c0166.zip |
net-misc/ntpsec: add missing asciidoc patch, force docs to behave
Bug: https://bugs.gentoo.org/710414
Package-Manager: Portage-2.3.67, Repoman-2.3.17
Signed-off-by: Steve Arnold <nerdboy@gentoo.org>
Diffstat (limited to 'net-misc/ntpsec')
-rw-r--r-- | net-misc/ntpsec/files/ntpsec-1.1.8-fix-asciidoc-version-detect.patch | 372 | ||||
-rw-r--r-- | net-misc/ntpsec/ntpsec-1.1.8.ebuild | 10 |
2 files changed, 380 insertions, 2 deletions
diff --git a/net-misc/ntpsec/files/ntpsec-1.1.8-fix-asciidoc-version-detect.patch b/net-misc/ntpsec/files/ntpsec-1.1.8-fix-asciidoc-version-detect.patch new file mode 100644 index 000000000000..aabd83654334 --- /dev/null +++ b/net-misc/ntpsec/files/ntpsec-1.1.8-fix-asciidoc-version-detect.patch @@ -0,0 +1,372 @@ +diff --git a/wafhelpers/asciidoc.py b/wafhelpers/asciidoc.py +index b6aa1f116..a2218bb69 100644 +--- a/wafhelpers/asciidoc.py ++++ b/wafhelpers/asciidoc.py +@@ -1,73 +1,173 @@ +-import re +- +-from waflib import Task +-from waflib.TaskGen import extension +- +-# asciidoc -b html5 -a linkcss -a stylesdir=/mnt/devel/ntp/commit/docs \ +-# -o asd driver32.adoc +- +-# Borrowed from waf/docs/book/wscript in the Waf Project. +-re_xi = re.compile('''^(include|image)::(.*?.(adoc|\\{PIC\\}))\[''', re.M) +- +- +-def ascii_doc_scan(self): +- p = self.inputs[0].parent +- node_lst = [self.inputs[0]] +- seen = [] +- depnodes = [] +- +- while node_lst: +- nd = node_lst.pop(0) +- if nd in seen: +- continue +- seen.append(nd) +- +- code = nd.read() +- for m in re_xi.finditer(code): +- name = m.group(2) +- if m.group(3) == '{PIC}': +- +- ext = '.eps' +- if self.generator.rule.rfind('A2X') > 0: +- ext = '.png' +- +- k = p.find_resource(name.replace('{PIC}', ext)) +- if k: +- depnodes.append(k) +- else: +- k = self.inputs[0].find_resource(name) +- if k: +- depnodes.append(k) +- node_lst.append(k) +- return [depnodes, ()] ++'''Most of the functionality for building HTML and man pages from AsciiDoc.''' + ++import re + +-# ASCIIDOC_FLAGS are almost always needed and need to be set by the user. +-class asciidoc(Task.Task): +- color = "BLUE" +- run_str = '${BIN_ASCIIDOC} -b html5 -a linkcss ${ASCIIDOC_FLAGS} ' \ +- '-o ${TGT[0].name} ${SRC[0].abspath()}' +- ext_out = ".html" ++from waflib import Task # pylint: disable=import-error ++from waflib.TaskGen import extension # pylint: disable=import-error ++ ++ ++def options(opt): ++ 'Add command line options for AsciiDoc processing.' ++ grp = opt.add_option_group('NTP documentation configure options') ++ grp.add_option('--disable-doc', action='store_true', ++ default=False, help='Disable HTML document building.') ++ grp.add_option('--enable-doc', action='store_true', ++ default=False, help='Enable HTML document building.') ++ grp.add_option('--disable-manpage', action='store_true', ++ default=False, help='Disable manpage building.') ++ grp.add_option('--enable-manpage', action='store_true', ++ default=False, help='Enable manpage building.') ++ ++ ++def configure(ctx): ++ 'Set options from the extended environment and command line arguments.' ++ ++ if ctx.options.disable_doc and ctx.options.enable_doc: ++ ctx.fatal('--disable-doc and --enable-doc conflict.') ++ if ctx.options.disable_manpage and ctx.options.enable_manpage: ++ ctx.fatal('--disable-manpage and --enable-manpage conflict.') ++ ++ ctx.env.BUILD_DOC = False ++ ctx.env.BUILD_MAN = False ++ if ctx.options.disable_doc and ctx.options.disable_manpage: ++ ctx.msg('AsciiDoc processor', 'unnecessary') ++ return ++ ++ # asciidoctor versions < 1.5.8 throw warnings for manpages and driver_shm. ++ # asciidoc versions 8.6.5-8.6.7 throw warnings for warp.adoc and versions ++ # < 8.6.4 have no HTML5 backend. ++ # asciidoc3 versions < 3.0.2 throw errors. ++ adoc_list = [['asciidoctor', (1, 5, 8)], ++ ['asciidoc', (8, 6, 8)], ++ ['asciidoc3', (3, 0, 2)], ++ ] ++ for progname, asciidocminver in adoc_list: ++ if 'BIN_ASCIIDOC' not in ctx.env or ctx.env.BIN_ASCIIDOC == []: ++ # used to make man and HTML pages ++ ctx.find_program(progname, var='BIN_ASCIIDOC', mandatory=False) ++ # make sure asciidoc is new enough. ++ # based on check_python_version() from waf ++ ++ if ctx.env.BIN_ASCIIDOC: ++ # https://lists.ntpsec.org/pipermail/devel/2016-July/001778.html ++ # Get asciidoc version string ++ cmd = ctx.env.BIN_ASCIIDOC + ['--version'] ++ # example output: asciidoc 8.6.9 ++ version_string = ctx.cmd_and_log(cmd).split()[1] ++ match = re.match(r'^(\d+)\.(\d+)\.(\d+)', version_string) ++ if match: ++ version_tuple = tuple(map(int, match.groups())) ++ if version_tuple >= asciidocminver: ++ if progname == 'asciidoc': ++ ctx.find_program('a2x', var='BIN_A2X', mandatory=False) ++ ctx.find_program('xsltproc', var='BIN_XSLTPROC', ++ mandatory=False) ++ elif progname == 'asciidoc3': ++ ctx.find_program('a2x3', var='BIN_A2X', mandatory=False) ++ ctx.find_program('xsltproc', var='BIN_XSLTPROC', ++ mandatory=False) ++ ++ if version_tuple >= asciidocminver: ++ color = 'GREEN' ++ else: ++ color = 'YELLOW' ++ ctx.env.BIN_ASCIIDOC = [] ++ ctx.msg('Checking for %s version >= %s' % ++ (progname, '%d.%d.%d' % asciidocminver), ++ version_string, color=color) ++ ++ if not ctx.env.BIN_ASCIIDOC: ++ if not (ctx.options.enable_doc or ctx.options.enable_manpage): ++ # The user did not require either, so this is fine. ++ return ++ ++ error = 'no AsciiDoc processor qualified' ++ if ctx.options.enable_doc: ++ error += ', remove --enable-doc' ++ if ctx.options.enable_manpage: ++ error += ', remove --enable-manpage' ++ ctx.fatal(error) ++ ++ ctx.env.BUILD_DOC = not ctx.options.disable_doc ++ ctx.env.BUILD_MAN = not ctx.options.disable_manpage ++ ++ if 'asciidoctor' in ctx.env.BIN_ASCIIDOC[0]: ++ ctx.env.ARGS_DOC = [ ++ ctx.env.BIN_ASCIIDOC[0], ++ '-a', 'attribute-missing=warn', ++ # To eliminate compat-mode: ++ # 'italics' needs to be changed to _italics_ ++ # +monospace+ needs to be changed to `monospace` ++ # https://asciidoctor.org/docs/migration/#migration-cheatsheet ++ '-a', 'compat-mode', ++ ] ++ ctx.env.ARGS_MAN = ctx.env.ARGS_DOC + [ ++ '-b', 'manpage', ++ ] ++ ctx.env.ARGS_DOC += [ ++ '-b', 'xhtml5', '-a', 'linkcss', ++ '-a', 'stylesheet=asciidoc.css', ++ ] ++ elif 'asciidoc' in ctx.env.BIN_ASCIIDOC[0]: ++ ctx.env.ARGS_DOC = [ ++ ctx.env.BIN_ASCIIDOC[0], ++ '-a', 'attribute-missing=warn', ++ '-b', 'html5', '-a', 'linkcss', ++ '-a', 'stylesheet=asciidoc.css', ++ ] ++ if ctx.env.BIN_A2X and ctx.env.BIN_XSLTPROC: ++ ctx.env.ARGS_MAN = [ ++ ctx.env.BIN_A2X[0], ++ '-a', 'attribute-missing=warn', ++ '-f', 'manpage', '--no-xmllint', ++ ] ++ else: ++ if ctx.options.enable_manpage: ++ ctx.fatal('a2x/xsltproc not found, remove --enable-manpage') ++ ctx.env.BUILD_MAN = False ++ ++ ++def build(ctx): ++ 'Set processor noise level and set HTML pages to build.' ++ from waflib.Logs import verbose # pylint: disable=import-error ++ if verbose > 1: # Pass verbosity to AsciiDoc toolchain ++ if ctx.env.ARGS_DOC: ++ ctx.env.ARGS_DOC += ['-v'] ++ if ctx.env.ARGS_MAN: ++ ctx.env.ARGS_MAN += ['-v'] ++ if ctx.env.BUILD_DOC and ctx.variant == 'main': ++ ctx.recurse('docs') ++ ++ ++class html(Task.Task): ++ 'Define HTML build process.' ++ # Optional weight to tune the priority for task instances. ++ # The higher, the earlier. The weight only applies to single task objects. ++ weight = 3 # set arbitrarily high to be first as to not slow down later tasks ++ run_str = '${ARGS_DOC} -o ${TGT[0].name} ${SRC[0].abspath()}' ++ ext_out = '.html' ++ ++ ++class man(Task.Task): ++ 'Define manpage build process.' ++ weight = 2 # set arbitrarily high to be second as to not slow down later tasks (Failed) ++ run_str = '${ARGS_MAN} ${SRC[0].abspath()}' + + + @extension('.adoc') +-def run_asciidoc(self, node): +- out = node.change_ext(".html") +- tsk = self.create_task("asciidoc", node, [out]) ++def run_html(self, node): ++ 'Add HTML build caller function.' ++ out = node.change_ext('.html') ++ tsk = self.create_task('html', node, [out]) + tsk.cwd = node.parent.get_bld().abspath() + + +-class a2x(Task.Task): +- color = "YELLOW" +- shell = True +- run_str = '${BIN_A2X} ${A2X_FLAGS} ${SRC[0].abspath()}' +- scan = ascii_doc_scan +- +- + @extension('.man-tmp') +-def run_a2x(self, node): ++def run_manpage(self, node): ++ 'Add manpage build caller function.' + n_file = node.path_from(self.bld.bldnode) +- out = "%s.%s" % (n_file.replace("-man.adoc.man-tmp", ""), self.section) ++ out = '%s.%s' % (n_file.replace('-man.adoc.man-tmp', ''), self.section) + out_n = self.bld.path.find_or_declare(out) +- self.create_task('a2x', node, out_n) +- self.bld.install_files("${MANDIR}/man%s/" % self.section, out_n) ++ self.create_task('man', node, out_n) ++ self.bld.install_files('${MANDIR}/man%s/' % self.section, out_n) ++ weight = 3 +diff --git a/wafhelpers/waf.py b/wafhelpers/waf.py +index 96f753ecb..4f2d562a4 100644 +--- a/wafhelpers/waf.py ++++ b/wafhelpers/waf.py +@@ -41,10 +41,7 @@ def manpage_subst_fun(self, code): + @conf + def manpage(ctx, section, source): + +- # ctx.install_files('${MANDIR}' + "/man%s/" % section, +- # source.replace("-man.adoc", ".%s" % section)) +- +- if not ctx.env.ENABLE_DOC or ctx.env.DISABLE_MANPAGE: ++ if not ctx.env.BUILD_MAN: + return + + ctx(features="subst", +diff --git a/wscript b/wscript +index c7c5468b1..601edaacd 100644 +--- a/wscript ++++ b/wscript +@@ -55,10 +55,12 @@ Usage: waf <command> + + def options(ctx): + options_cmd(ctx, config) ++ ctx.load('asciidoc', tooldir='wafhelpers/') + ctx.recurse("pylib") + + + def configure(ctx): ++ ctx.load('asciidoc', tooldir='wafhelpers/') + class oc(Build.BuildContext): + cmd = 'oc' + +@@ -93,7 +95,6 @@ def configure(ctx): + ctx.run_build_cls = 'check' + ctx.load('waf', tooldir='wafhelpers/') + ctx.load('waf_unit_test') +- ctx.load('pytest') + ctx.load('gnu_dirs') + + with open("VERSION", "r") as f: +@@ -148,55 +149,6 @@ def configure(ctx): + ctx.find_program("awk", var="BIN_AWK", mandatory=False) + ctx.find_program("sh", var="BIN_SH", mandatory=False) + +- # used to make man and html pages +- ctx.find_program("asciidoc", var="BIN_ASCIIDOC", mandatory=False) +- # make sure asciidoc is new enough. +- # based on check_python_version() from waf +- if ctx.env.BIN_ASCIIDOC: +- # https://lists.ntpsec.org/pipermail/devel/2016-July/001778.html +- asciidocminver = (8, 6, 0) +- # Get asciidoc version string +- cmd = ctx.env.BIN_ASCIIDOC + ['--version'] +- # example output: asciidoc 8.6.9 +- lines = ctx.cmd_and_log(cmd).split()[1].split(".") +- assert len(lines) == 3, "found %r lines, expected 3: %r" \ +- % (len(lines), lines) +- asciidocver_tuple = (int(lines[0]), int(lines[1]), int(lines[2])) +- +- # Compare asciidoc version with the minimum required +- result = (asciidocver_tuple >= asciidocminver) +- +- asciidocver_full = '.'.join(map(str, asciidocver_tuple[:3])) +- asciidocminver_str = '.'.join(map(str, asciidocminver)) +- ctx.msg('Checking for asciidoc version >= %s' % (asciidocminver_str,), +- asciidocver_full, color=result and 'GREEN' or 'YELLOW') +- +- if not result: +- del ctx.env.BIN_ASCIIDOC +- ctx.find_program("a2x", var="BIN_A2X", mandatory=False) +- ctx.find_program("xsltproc", var="BIN_XSLTPROC", mandatory=False) +- +- ctx.env.ENABLE_DOC = False +- if ctx.env.BIN_ASCIIDOC and ctx.env.BIN_XSLTPROC and ctx.env.BIN_A2X: +- ctx.env.ENABLE_DOC = True +- +- if ctx.options.enable_doc and not ctx.env.ENABLE_DOC: +- ctx.fatal("asciidoc and xsltproc are required in order " +- "to build documentation") +- elif ctx.options.enable_doc: +- ctx.env.ASCIIDOC_FLAGS = [] +- ctx.env.ENABLE_DOC_USER = ctx.options.enable_doc +- +- # XXX: conditionally build this with --disable-man? +- # Should it build without docs enabled? +- ctx.env.A2X_FLAGS = ["--format", "manpage"] +- if not ctx.options.enable_a2x_xmllint: +- ctx.env.A2X_FLAGS += ["--no-xmllint"] +- +- # Disable manpages within build() +- if ctx.options.disable_manpage: +- ctx.env.DISABLE_MANPAGE = True +- + ctx.check_cfg( + package='systemd', variables=['systemdsystemunitdir'], + uselib_store='SYSTEMD', mandatory=False, +@@ -662,7 +614,7 @@ int main(int argc, char **argv) { + ('strlcat', ["string.h"]) + ) + for ft in optional_functions: +- probe_function(ctx, function=ft[0], prerequisites=ft[1]) ++ probe_function(ctx, function=ft[0], prerequisites=ft[1]) + + # This area is still work in progress + # Need to disable making symbols +@@ -897,8 +848,8 @@ int main(int argc, char **argv) { + msg_setting("Droproot Support", droproot_type) + msg_setting("Debug Support", yesno(ctx.options.enable_debug)) + msg_setting("Refclocks", ", ".join(sorted(ctx.env.REFCLOCK_LIST))) +- msg_setting("Build Manpages", +- yesno(ctx.env.ENABLE_DOC and not ctx.env.DISABLE_MANPAGE)) ++ msg_setting("Build Docs", yesno(ctx.env.BUILD_DOC)) ++ msg_setting("Build Manpages", yesno(ctx.env.BUILD_MAN)) + + ctx.recurse("pylib") + # Convert the Python directories to absolute paths. +@@ -1035,14 +986,6 @@ def build(ctx): + # the build directory never happens. This is how we foil that. + ctx.add_pre_fun(lambda ctx: ctx.exec_command("rm -f pylib/*.py[co]")) + +- if verbose > 0: # Pass Verbosity to asciidoc and a2x +- ctx.env.A2X_FLAGS += ["-v"] +- ctx.env.ASCIIDOC_FLAGS += ["-v"] +- +- if ctx.env.ENABLE_DOC_USER: +- if ctx.variant != "main": +- ctx.recurse("docs") +- + if ctx.variant == "host": + ctx.recurse("ntpd") + return diff --git a/net-misc/ntpsec/ntpsec-1.1.8.ebuild b/net-misc/ntpsec/ntpsec-1.1.8.ebuild index d0003067a4f7..22989ca4d482 100644 --- a/net-misc/ntpsec/ntpsec-1.1.8.ebuild +++ b/net-misc/ntpsec/ntpsec-1.1.8.ebuild @@ -63,7 +63,8 @@ DEPEND="${CDEPEND} WAF_BINARY="${S}/waf" PATCHES=( "${FILESDIR}/${P}-externalize-sys_maxclock-fix-for-bug-708522.patch" - "${FILESDIR}/${P}-fix-missing-scmp_sys-on-aarch64.patch" ) + "${FILESDIR}/${P}-fix-missing-scmp_sys-on-aarch64.patch" + "${FILESDIR}/${P}-fix-asciidoc-version-detect.patch") src_prepare() { default @@ -150,7 +151,12 @@ src_install() { cp -Rv "${S}"/etc/ntp.d/ "${ED}"/etc/ # move doc files to /usr/share/doc/"${P}" - use doc && mv -v "${ED}"/usr/share/doc/"${PN}" "${ED}"/usr/share/doc/"${P}"/html + if use doc; then + mv -v "${ED}"/usr/share/doc/"${PN}" \ + "${ED}"/usr/share/doc/"${PF}"/html + else + rm -rf "${ED}"/usr/share/doc/"${PN}" + fi } pkg_postinst() { |