[PATCH 0/7] docs: Cleanups of generated pages and generators

Browse the affected content at: https://pipo.sk.gitlab.io/-/libvirt/-/jobs/4302989355/artifacts/website/hvsu... https://pipo.sk.gitlab.io/-/libvirt/-/jobs/4302989355/artifacts/website/html... https://pipo.sk.gitlab.io/-/libvirt/-/jobs/4302989355/artifacts/website/html... Peter Krempa (7): docs: Remove XSLT table of contents generator scripts: hvsupport: Properly register virConnectOpenAuth/virConnectOpenReadOnly APIs hvsupport: Split out common APIs from hypervisor API section css: Remove override of width for 'hvsupport' page docs: html: Add a manually written index page docs: newapi.xsl: Remove support for generating index page docs: xsl: Simplify templating XSL docs/css/libvirt.css | 2 - docs/html/index.rst | 65 +++++++++++++++++++++++ docs/html/meson.build | 46 +++++++++++++++- docs/newapi.xsl | 119 ++++++++++++++++-------------------------- docs/page.xsl | 66 ----------------------- scripts/hvsupport.py | 71 +++++++++++++++++++------ 6 files changed, 208 insertions(+), 161 deletions(-) create mode 100644 docs/html/index.rst -- 2.40.1

The only remaining page was 'hvsupport.html' which is generated by 'scripts/hvsupport.py'. The script already has all the data to generate the table of contents internally so we can remove the whole complicated template. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- docs/page.xsl | 55 -------------------------------------------- scripts/hvsupport.py | 10 +++++++- 2 files changed, 9 insertions(+), 56 deletions(-) diff --git a/docs/page.xsl b/docs/page.xsl index 20b49d1afd..a93f24fb09 100644 --- a/docs/page.xsl +++ b/docs/page.xsl @@ -15,65 +15,10 @@ </xsl:copy> </xsl:template> - - <xsl:template match="html:ul[@id='toc']" mode="content"> - <xsl:call-template name="toc"/> - </xsl:template> - <xsl:template match="html:div[@id='include']" mode="content"> <xsl:call-template name="include"/> </xsl:template> - <xsl:template name="toc"> - <ul> - <xsl:for-each select="/html:html/html:body/html:h2[count(html:a) = 1]"> - <xsl:variable name="thish2" select="."/> - <li> - <a href="#{html:a/@id}"><xsl:value-of select="html:a/text()"/></a> - <xsl:if test="count(./following-sibling::html:h3[preceding-sibling::html:h2[1] = $thish2 and count(html:a) = 1]) > 0"> - <ul> - <xsl:for-each select="./following-sibling::html:h3[preceding-sibling::html:h2[1] = $thish2 and count(html:a) = 1]"> - <xsl:variable name="thish3" select="."/> - <li> - <a href="#{html:a/@id}"><xsl:value-of select="html:a/text()"/></a> - <xsl:if test="count(./following-sibling::html:h4[preceding-sibling::html:h3[1] = $thish3 and count(html:a) = 1]) > 0"> - <ul> - <xsl:for-each select="./following-sibling::html:h4[preceding-sibling::html:h3[1] = $thish3 and count(html:a) = 1]"> - <xsl:variable name="thish4" select="."/> - <li> - <a href="#{html:a/@id}"><xsl:value-of select="html:a/text()"/></a> - <xsl:if test="count(./following-sibling::html:h5[preceding-sibling::html:h4[1] = $thish4 and count(html:a) = 1]) > 0"> - <ul> - <xsl:for-each select="./following-sibling::html:h5[preceding-sibling::html:h4[1] = $thish4 and count(html:a) = 1]"> - <xsl:variable name="thish5" select="."/> - <li> - <a href="#{html:a/@id}"><xsl:value-of select="html:a/text()"/></a> - <xsl:if test="count(./following-sibling::html:h6[preceding-sibling::html:h5[1] = $thish5 and count(html:a) = 1]) > 0"> - <ul> - <xsl:for-each select="./following-sibling::html:h6[preceding-sibling::html:h5[1] = $thish5 and count(html:a) = 1]"> - <li> - <a href="#{html:a/@id}"><xsl:value-of select="html:a/text()"/></a> - </li> - </xsl:for-each> - </ul> - </xsl:if> - </li> - </xsl:for-each> - </ul> - </xsl:if> - </li> - </xsl:for-each> - </ul> - </xsl:if> - </li> - </xsl:for-each> - </ul> - </xsl:if> - </li> - </xsl:for-each> - </ul> - </xsl:template> - <!-- This is the master page structure --> <xsl:template match="/" mode="page"> <xsl:param name="pagesrc"/> diff --git a/scripts/hvsupport.py b/scripts/hvsupport.py index 89fd0d1d94..5ae93f66d3 100755 --- a/scripts/hvsupport.py +++ b/scripts/hvsupport.py @@ -423,7 +423,15 @@ print('''<?xml version="1.0" encoding="UTF-8"?> <body id="hvsupport"> <h1>libvirt API support matrix</h1> -<ul id="toc"></ul> +<nav class="contents" id="contents"> +<ul> +''') + +for grp in sorted(groups.keys()): + print("<li><p><a href=\"#%s\">%s</a></p></li>" % (grp, groupheaders[grp])) + +print('''</ul> +</nav> <p> This page documents which libvirt calls work on -- 2.40.1

Use the proper driver struct member names for the aforementioned APIs so that the fixup of the versions works properly. Currently we reported that no of the drivers supported the APIs despite being only shims above 'open'. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- scripts/hvsupport.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/hvsupport.py b/scripts/hvsupport.py index 5ae93f66d3..726385f78e 100755 --- a/scripts/hvsupport.py +++ b/scripts/hvsupport.py @@ -345,9 +345,9 @@ for src in srcs: # have a bit of manual fixup todo with the per-driver versioning # and support matrix -groups["virHypervisorDriver"]["apis"]["openAuth"] = \ +groups["virHypervisorDriver"]["apis"]["connectOpenAuth"] = \ "virConnectOpenAuth" -groups["virHypervisorDriver"]["apis"]["openReadOnly"] = \ +groups["virHypervisorDriver"]["apis"]["connectOpenReadOnly"] = \ "virConnectOpenReadOnly" groups["virHypervisorDriver"]["apis"]["domainMigrate"] = \ "virDomainMigrate" -- 2.40.1

Common APIs such as virConnectOpen/Close and similar which are used by the non-hypervisor drivers in libvirt are grouped together with hypervisor drivers, which makes the table very wide. Split them out into a separate group and clean up the list of hypervisor drivers. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- scripts/hvsupport.py | 56 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/scripts/hvsupport.py b/scripts/hvsupport.py index 726385f78e..df1122e123 100755 --- a/scripts/hvsupport.py +++ b/scripts/hvsupport.py @@ -49,8 +49,19 @@ groupheaders = { "virStorageDriver": "Storage Pool APIs", "virSecretDriver": "Secret APIs", "virNWFilterDriver": "Network Filter APIs", + "commonapis": "Common driver APIs", } +# List of common APIs used with all driver kinds +commonapis = [ + "virConnectOpen", + "virConnectClose", + "virConnectIsAlive", + "virConnectIsEncrypted", + "virConnectIsSecure", + "virConnectSupportsFeature", + "virConnectGetCapabilities", +] srcs = [] for root, dirs, files in os.walk(os.path.join(srcdir, "src")): @@ -222,6 +233,10 @@ apis["virDomainMigrateConfirm3Params"] = { # Group name -> hash of APIs { fields -> api name } groups = {} +groups["commonapis"] = { + "apis": {}, + "drivers": {} +} ingrp = None for drivertablefile in drivertablefiles: with open(drivertablefile) as fh: @@ -244,7 +259,10 @@ for drivertablefile in drivertablefiles: api = "vir" + name if api in apis: - groups[ingrp]["apis"][field] = api + if api in commonapis: + groups["commonapis"]["apis"][field] = api + else: + groups[ingrp]["apis"][field] = api elif re.search(r"\w+(Open|Close|URIProbe)", api) is not None: continue else: @@ -288,6 +306,9 @@ for src in srcs: "Group %s already contains %s" % (ingrp, impl)) groups[ingrp]["drivers"][impl] = {} + + if impl not in groups["commonapis"]["drivers"]: + groups["commonapis"]["drivers"][impl] = {} else: callbackmatch = re.search(r"\s*\.(\w+)\s*=\s*(\w+)\s*,?\s*" + r"(?:/\*\s*(\d+\.\d+\.\d+)\s*" + @@ -317,18 +338,23 @@ for src in srcs: "Method %s in %s is missing version" % (meth, src)) - if api not in groups[ingrp]["apis"]: + if api in groups["commonapis"]["apis"]: + groups["commonapis"]["drivers"][impl][api] = { + "vers": vers, + "deleted": deleted, + } + elif api in groups[ingrp]["apis"]: + groups[ingrp]["drivers"][impl][api] = { + "vers": vers, + "deleted": deleted, + } + else: if re.search(r"\w+(Open|Close|URIProbe)", api): continue raise Exception("Found unexpected method " + "%s in %s" % (api, ingrp)) - groups[ingrp]["drivers"][impl][api] = { - "vers": vers, - "deleted": deleted, - } - if (api == "domainMigratePrepare" or api == "domainMigratePrepare2" or api == "domainMigratePrepare3"): @@ -345,16 +371,16 @@ for src in srcs: # have a bit of manual fixup todo with the per-driver versioning # and support matrix -groups["virHypervisorDriver"]["apis"]["connectOpenAuth"] = \ +groups["commonapis"]["apis"]["connectOpenAuth"] = \ "virConnectOpenAuth" -groups["virHypervisorDriver"]["apis"]["connectOpenReadOnly"] = \ +groups["commonapis"]["apis"]["connectOpenReadOnly"] = \ "virConnectOpenReadOnly" groups["virHypervisorDriver"]["apis"]["domainMigrate"] = \ "virDomainMigrate" openAuthVers = (0 * 1000 * 1000) + (4 * 1000) + 0 -drivers = groups["virHypervisorDriver"]["drivers"] +drivers = groups["commonapis"]["drivers"] for drv in drivers.keys(): openVersStr = drivers[drv]["connectOpen"]["vers"] openVers = 0 @@ -381,7 +407,7 @@ for drv in drivers.keys(): "vers": vers, } - +drivers = groups["virHypervisorDriver"]["drivers"] # Another special case for the virDomainCreateLinux which was replaced # with virDomainCreateXML groups["virHypervisorDriver"]["apis"]["domainCreateLinux"] = \ @@ -389,7 +415,12 @@ groups["virHypervisorDriver"]["apis"]["domainCreateLinux"] = \ createAPIVers = (0 * 1000 * 1000) + (0 * 1000) + 3 -for drv in drivers.keys(): +for drv in list(drivers.keys()): + # drop drivers from the "virHypervisorDriver" group which have only common APIs + if len(drivers[drv]) == 0: + drivers.pop(drv) + continue + if "domainCreateXML" not in drivers[drv]: continue createVersStr = drivers[drv]["domainCreateXML"]["vers"] @@ -414,7 +445,6 @@ for drv in drivers.keys(): "vers": vers, } - # Finally we generate the HTML file with the tables print('''<?xml version="1.0" encoding="UTF-8"?> -- 2.40.1

Now that the table is not so wide we can treat it as any other page. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- docs/css/libvirt.css | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/css/libvirt.css b/docs/css/libvirt.css index 8dfec17047..7021d0b599 100644 --- a/docs/css/libvirt.css +++ b/docs/css/libvirt.css @@ -107,8 +107,6 @@ main, main#the-virtualization-api, #the-virtualization-api.document, -main#hvsupport, -#hvsupport.document, main#documentation, #documentation.document, main#knowledge-base, -- 2.40.1

The auto-generated index contains only references to one run of the generator but we in total run it 4 times missing the admin, lxc, and qemu specific apis. Rewrite it manually so that we can drop the generator for it. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- docs/html/index.rst | 65 +++++++++++++++++++++++++++++++++++++++++++ docs/html/meson.build | 46 ++++++++++++++++++++++++++++-- 2 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 docs/html/index.rst diff --git a/docs/html/index.rst b/docs/html/index.rst new file mode 100644 index 0000000000..7977ec1f05 --- /dev/null +++ b/docs/html/index.rst @@ -0,0 +1,65 @@ +============================ +Reference Manual for libvirt +============================ + +.. contents:: + +Main libvirt APIs +----------------- + +`libvirt-common <libvirt-libvirt-common.html>`__ + common macros and enums for the libvirt and libvirt-admin library + +`libvirt-domain-checkpoint <libvirt-libvirt-domain-checkpoint.html>`__ + APIs for management of domain checkpoints + +`libvirt-domain-snapshot <libvirt-libvirt-domain-snapshot.html>`__ + APIs for management of domain snapshots + +`libvirt-domain <libvirt-libvirt-domain.html>`__ + APIs for management of domains + +`libvirt-event <libvirt-libvirt-event.html>`__ + APIs for management of events + +`libvirt-host <libvirt-libvirt-host.html>`__ + APIs for management of hosts + +`libvirt-interface <libvirt-libvirt-interface.html>`__ + APIs for management of interfaces + +`libvirt-network <libvirt-libvirt-network.html>`__ + APIs for management of networks + +`libvirt-nodedev <libvirt-libvirt-nodedev.html>`__ + APIs for management of nodedevs + +`libvirt-nwfilter <libvirt-libvirt-nwfilter.html>`__ + APIs for management of nwfilters + +`libvirt-secret <libvirt-libvirt-secret.html>`__ + APIs for management of secrets + +`libvirt-storage <libvirt-libvirt-storage.html>`__ + APIs for management of storage pools and volumes + +`libvirt-stream <libvirt-libvirt-stream.html>`__ + APIs for management of streams + +Error handling +-------------- + +`virterror <libvirt-virterror.html>`__ + error handling interfaces for the libvirt library + +Special specific APIs +--------------------- + +`admin interface <libvirt-libvirt-admin.html>`__ + APIs for management of the libvirt daemons + +`qemu driver <libvirt-libvirt-qemu.html>`__ + qemu-driver specific APIs + +`lxc driver <libvirt-libvirt-lxc.html>`__ + lxc-driver specific APIs diff --git a/docs/html/meson.build b/docs/html/meson.build index b18a8ccb5f..4d8d44d783 100644 --- a/docs/html/meson.build +++ b/docs/html/meson.build @@ -8,7 +8,6 @@ index_api_gen = custom_target( docs_api_xml, ], output: [ - 'index.html', 'libvirt-libvirt-common.html', 'libvirt-libvirt-domain.html', 'libvirt-libvirt-domain-checkpoint.html', @@ -28,7 +27,6 @@ index_api_gen = custom_target( xsltproc_prog, '--nonet', '-o', docs_builddir, '--stringparam', 'builddir', meson.project_build_root(), '--stringparam', 'timestamp', docs_timestamp, - '--stringparam', 'indexfile', 'index.html', '@INPUT@', ], install: true, @@ -77,6 +75,50 @@ foreach file : docs_html_gen install_web_files += '@0@:@1@'.format(file.full_path(), docs_html_dir / 'html') endforeach +html_xslt_gen_install_dir = docs_html_dir / 'html' +html_xslt_gen = [] + +html_xslt_gen += { + 'name': 'index', + 'file': docs_rst2html5_gen.process('index.rst'), + 'source': 'docs' / 'html' / 'index.rst', + 'href_base': '../', + } + +# --- begin of XSLT processing --- + +foreach data : html_xslt_gen + html_filename = data['name'] + '.html' + + html_file = custom_target( + html_filename, + input: data.get('file', data['name'] + '.html.in'), + output: html_filename, + command: [ + xsltproc_prog, + '--stringparam', 'pagesrc', data.get('source', ''), + '--stringparam', 'builddir', meson.project_build_root(), + '--stringparam', 'timestamp', docs_timestamp, + '--stringparam', 'href_base', data.get('href_base', ''), + '--nonet', + site_xsl, + '@INPUT@', + ], + depends: data.get('depends', []), + depend_files: [ page_xsl ], + capture: true, + install: true, + install_dir: html_xslt_gen_install_dir, + ) + + install_web_deps += html_file + install_web_files += html_file.full_path() + ':' + html_xslt_gen_install_dir +endforeach + +html_xslt_gen = [] + +# --- end of XSLT processing --- + test( 'check-html', xmllint_prog, -- 2.40.1

Since we need to generate API docs for multiple input files the index page is not useful for us and was replaced by a manual one. Drop the XSL for generating it. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- docs/newapi.xsl | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/docs/newapi.xsl b/docs/newapi.xsl index cc08b8460a..cc683707cf 100644 --- a/docs/newapi.xsl +++ b/docs/newapi.xsl @@ -22,8 +22,6 @@ <!-- Build keys for all symbols --> <xsl:key name="symbols" match="/api/symbols/*" use="@name"/> - <xsl:param name="indexfile" select="''"/> - <!-- the target directory for the HTML output --> <xsl:variable name="htmldir">html</xsl:variable> <xsl:variable name="href_base">../</xsl:variable> @@ -796,38 +794,7 @@ </li> </xsl:template> - <xsl:template name="mainpage"> - <xsl:variable name="title">Reference Manual for <xsl:value-of select="/api/@name"/></xsl:variable> - <xsl:text disable-output-escaping="yes"><!DOCTYPE html> -</xsl:text> - <html> - <body> - <h1><xsl:value-of select="$title"/></h1> - <h2>Table of Contents</h2> - <ul> - <xsl:apply-templates select="/api/files/file" mode="toc"/> - </ul> - </body> - </html> - </xsl:template> - <xsl:template match="/"> - <!-- Save the main index.html as well as a couple of copies --> - <xsl:if test="$indexfile != ''"> - <xsl:variable name="mainpage"> - <xsl:call-template name="mainpage"/> - </xsl:variable> - <xsl:document - href="{concat($htmldir, '/', $indexfile)}" - method="xml" - indent="yes" - encoding="UTF-8"> - <xsl:apply-templates select="exsl:node-set($mainpage)" mode="page"> - <xsl:with-param name="timestamp" select="$timestamp"/> - </xsl:apply-templates> - </xsl:document> - </xsl:if> - <xsl:for-each select="/api/files/file"> <xsl:variable name="subpage"> <xsl:apply-templates select="."/> -- 2.40.1

Wrap the auto-generated pages (API ref and hvsupport.html) in the proper top level element similarly to what the pages generated from RST have to remove the extra case when templating our web. (Best viewed with 'git show -w') Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- docs/newapi.xsl | 86 ++++++++++++++++++++++---------------------- docs/page.xsl | 11 ------ scripts/hvsupport.py | 5 +-- 3 files changed, 47 insertions(+), 55 deletions(-) diff --git a/docs/newapi.xsl b/docs/newapi.xsl index cc683707cf..a8797f800d 100644 --- a/docs/newapi.xsl +++ b/docs/newapi.xsl @@ -733,54 +733,56 @@ </xsl:text> <html> <body> - <h1><xsl:value-of select="$title"/></h1> - <xsl:call-template name="description"/> - <h2>Table of Contents</h2> - <xsl:if test="count(exports[@type='macro']) > 0"> - <h3><a href="#macros">Macros</a></h3> - <pre class="api"> - <xsl:apply-templates select="exports[@type='macro']" mode="toc"> + <div class="document"> + <h1><xsl:value-of select="$title"/></h1> + <xsl:call-template name="description"/> + <h2>Table of Contents</h2> + <xsl:if test="count(exports[@type='macro']) > 0"> + <h3><a href="#macros">Macros</a></h3> + <pre class="api"> + <xsl:apply-templates select="exports[@type='macro']" mode="toc"> + <xsl:sort select='@symbol'/> + </xsl:apply-templates> + </pre> + </xsl:if> + <xsl:if test="count(exports[@type='typedef']) > 0"> + <h3><a href="#types">Types</a></h3> + <pre class="api"> + <xsl:apply-templates select="exports[@type='typedef']" mode="toc"> + <xsl:sort select='@symbol'/> + </xsl:apply-templates> + </pre> + </xsl:if> + <xsl:if test="count(exports[@type='function']) > 0"> + <h3><a href="#functions">Functions</a></h3> + <pre class="api"> + <xsl:apply-templates select="exports[@type='function']" mode="toc"> + <xsl:sort select='@symbol'/> + </xsl:apply-templates> + </pre> + </xsl:if> + + <h2>Description</h2> + + <xsl:if test="count(exports[@type='macro']) > 0"> + <h3><a id="macros">Macros</a></h3> + <xsl:apply-templates select="exports[@type='macro']"> <xsl:sort select='@symbol'/> </xsl:apply-templates> - </pre> - </xsl:if> - <xsl:if test="count(exports[@type='typedef']) > 0"> - <h3><a href="#types">Types</a></h3> - <pre class="api"> - <xsl:apply-templates select="exports[@type='typedef']" mode="toc"> + </xsl:if> + <xsl:if test="count(exports[@type='typedef']) > 0"> + <h3><a id="types">Types</a></h3> + <xsl:apply-templates select="exports[@type='typedef']"> <xsl:sort select='@symbol'/> </xsl:apply-templates> - </pre> - </xsl:if> - <xsl:if test="count(exports[@type='function']) > 0"> - <h3><a href="#functions">Functions</a></h3> - <pre class="api"> - <xsl:apply-templates select="exports[@type='function']" mode="toc"> + </xsl:if> + <xsl:if test="count(exports[@type='function']) > 0"> + <h3><a id="functions">Functions</a></h3> + <xsl:apply-templates select="exports[@type='function']"> <xsl:sort select='@symbol'/> </xsl:apply-templates> - </pre> - </xsl:if> - - <h2>Description</h2> - - <xsl:if test="count(exports[@type='macro']) > 0"> - <h3><a id="macros">Macros</a></h3> - <xsl:apply-templates select="exports[@type='macro']"> - <xsl:sort select='@symbol'/> - </xsl:apply-templates> - </xsl:if> - <xsl:if test="count(exports[@type='typedef']) > 0"> - <h3><a id="types">Types</a></h3> - <xsl:apply-templates select="exports[@type='typedef']"> - <xsl:sort select='@symbol'/> - </xsl:apply-templates> - </xsl:if> - <xsl:if test="count(exports[@type='function']) > 0"> - <h3><a id="functions">Functions</a></h3> - <xsl:apply-templates select="exports[@type='function']"> - <xsl:sort select='@symbol'/> - </xsl:apply-templates> - </xsl:if> + </xsl:if> + </div> </body> </html> </xsl:template> diff --git a/docs/page.xsl b/docs/page.xsl index a93f24fb09..c92ceffec7 100644 --- a/docs/page.xsl +++ b/docs/page.xsl @@ -73,17 +73,6 @@ <xsl:when test="html:html/html:body/html:main"> <xsl:apply-templates select="/html:html/html:body/*" mode="content"/> </xsl:when> - <!-- for our older html-only files --> - <xsl:otherwise> - <div class="document"> - <xsl:if test="html:html/html:body/@id"> - <xsl:attribute name="id"> - <xsl:value-of select="html:html/html:body/@id"/> - </xsl:attribute> - </xsl:if> - <xsl:apply-templates select="/html:html/html:body/*" mode="content"/> - </div> - </xsl:otherwise> </xsl:choose> </div> <div id="nav"> diff --git a/scripts/hvsupport.py b/scripts/hvsupport.py index df1122e123..be6bf7b0d2 100755 --- a/scripts/hvsupport.py +++ b/scripts/hvsupport.py @@ -450,7 +450,8 @@ for drv in list(drivers.keys()): print('''<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> -<body id="hvsupport"> +<body> +<div id="hvsupport" class="document"> <h1>libvirt API support matrix</h1> <nav class="contents" id="contents"> @@ -536,4 +537,4 @@ for grp in sorted(groups.keys()): print("</tbody>\n</table>") -print("</body>\n</html>") +print("</div>\n</body>\n</html>") -- 2.40.1

On a Wednesday in 2023, Peter Krempa wrote:
Browse the affected content at:
https://pipo.sk.gitlab.io/-/libvirt/-/jobs/4302989355/artifacts/website/hvsu... https://pipo.sk.gitlab.io/-/libvirt/-/jobs/4302989355/artifacts/website/html... https://pipo.sk.gitlab.io/-/libvirt/-/jobs/4302989355/artifacts/website/html...
Peter Krempa (7): docs: Remove XSLT table of contents generator scripts: hvsupport: Properly register virConnectOpenAuth/virConnectOpenReadOnly APIs hvsupport: Split out common APIs from hypervisor API section css: Remove override of width for 'hvsupport' page docs: html: Add a manually written index page docs: newapi.xsl: Remove support for generating index page docs: xsl: Simplify templating XSL
docs/css/libvirt.css | 2 - docs/html/index.rst | 65 +++++++++++++++++++++++ docs/html/meson.build | 46 +++++++++++++++- docs/newapi.xsl | 119 ++++++++++++++++-------------------------- docs/page.xsl | 66 ----------------------- scripts/hvsupport.py | 71 +++++++++++++++++++------ 6 files changed, 208 insertions(+), 161 deletions(-) create mode 100644 docs/html/index.rst
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano
participants (2)
-
Ján Tomko
-
Peter Krempa