[libvirt PATCH 321/351] meson: docs: introduce meson-html-gen.py helper
Peter Krempa
pkrempa at redhat.com
Tue Jul 28 13:18:23 UTC 2020
On Thu, Jul 16, 2020 at 11:59:17 +0200, Pavel Hrdina wrote:
> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> ---
> docs/Makefile.am | 26 ---------------------
> scripts/meson-html-gen.py | 49 +++++++++++++++++++++++++++++++++++++++
> scripts/meson.build | 1 +
> 3 files changed, 50 insertions(+), 26 deletions(-)
> create mode 100755 scripts/meson-html-gen.py
>
> diff --git a/docs/Makefile.am b/docs/Makefile.am
> index a2fe2fbdc75..0c42db2badb 100644
> --- a/docs/Makefile.am
> +++ b/docs/Makefile.am
> @@ -320,32 +320,6 @@ news.html.in: $(top_srcdir)/NEWS.rst
> $(AM_V_GEN)$(MKDIR_P) `dirname $@` && \
> $(RST2HTML) --strict $< > $@ || { rm $@ && exit 1; }
>
> -%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl \
> - $(acl_generated)
> - $(AM_V_GEN)name=`echo $@ | sed -e 's/.tmp//'`; \
> - genhtmlin=`echo $@ | sed -e 's/.tmp/.in/'`; \
> - rst=`echo $@ | sed -e 's/.html.tmp/.rst/'`; \
> - src="$$genhtmlin"; \
> - test -f "$$genhtmlin" && src="$$rst"; \
> - dir=`dirname $@` ; \
> - if test "$$dir" = "."; \
> - then \
> - style=site.xsl; \
> - else \
> - $(MKDIR_P) $$dir; \
> - style=subsite.xsl; \
> - fi; \
> - $(XSLTPROC) --stringparam pagename $$name \
> - --stringparam pagesrc $$src \
> - --stringparam builddir '$(abs_top_builddir)' \
> - --stringparam timestamp $(timestamp) --nonet \
> - $(top_srcdir)/docs/$$style $< > $@ \
> - || { rm $@ && exit 1; }
> -
> -%.html: %.html.tmp
> - $(AM_V_GEN)$(XMLLINT) --nonet --format $< > $@ \
> - || { rm $@ && exit 1; }
> -
> $(apihtml_generated): html/index.html
> $(apiadminhtml_generated): html/index-admin.html
> $(apiqemuhtml_generated): html/index-qemu.html
> diff --git a/scripts/meson-html-gen.py b/scripts/meson-html-gen.py
> new file mode 100755
> index 00000000000..9ac649a9ef7
> --- /dev/null
> +++ b/scripts/meson-html-gen.py
> @@ -0,0 +1,49 @@
> +#!/usr/bin/env python3
> +
> +import argparse
> +import os
> +import subprocess
> +
> +parser = argparse.ArgumentParser()
> +parser.add_argument("xsltproc", type=str, help="path to xsltproc bin")
> +parser.add_argument("xmllint", type=str, help="path to xmllint bin")
> +parser.add_argument("builddir", type=str, help="build root dir path")
> +parser.add_argument("timestamp", type=str, help="docs timestamp")
> +parser.add_argument("style", type=str, help="XSL stile file")
> +parser.add_argument("infile", type=str, help="path to source HTML file")
> +parser.add_argument("htmlfile", type=str, help="path to generated HTML file")
> +args = parser.parse_args()
> +
> +name = os.path.basename(args.htmlfile).replace('.html', '')
> +
> +pagesrc = args.infile
> +rstfile = pagesrc.replace('.html.in', '.rst')
> +if os.path.exists(rstfile):
> + pagesrc = rstfile
> +
> +with open(args.infile, 'rb') as infile:
> + html_in_data = infile.read()
> +
> +html_tmp = subprocess.run(
> + [
> + args.xsltproc,
> + '--stringparam', 'pagename', name,
> + '--stringparam', 'pagesrc', pagesrc,
> + '--stringparam', 'builddir', args.builddir,
> + '--stringparam', 'timestamp', args.timestamp,
> + '--nonet', args.style, '-',
> + ],
> + input=html_in_data,
> + stdout=subprocess.PIPE,
> + stderr=subprocess.PIPE,
xsltproc can take an input file as argument so if all of this is just
for feeding it the input, it's not necessary to do it so.
> +)
> +
> +html = subprocess.run(
> + [args.xmllint, '--nonet', '--format', '-'],
> + input=html_tmp.stdout,
> + stdout=subprocess.PIPE,
> + stderr=subprocess.PIPE,
We can then do this as separate stage.
More information about the libvir-list
mailing list