docs/html: Properly generate ACL permissions into API reference

The 'newapi.xsl' stylesheet was referencing non-existing paths to the
XML files holding ACL permission flags for individual APIs. Additionally
the 'document()' XSL function doesn't even allow concatenation of the
path as it was done via '{$builddir}/src..', but requires either direct
argument or use of the 'concat()' function.

This meant that the 'acls' variable was always empty and thus none of
our API documentation was actually generated with the 'acl' section.

Fix it by passing the path to the XML via an argument to the stylesheet
as the files differ based on which document is being generated.

Since the 'admin' API does not have ACL we need to handle it separately
now in the build system.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Peter Krempa 2023-02-17 22:47:34 +01:00
parent e0def8d587
commit 91d890bdce
3 changed files with 40 additions and 8 deletions

View File

@ -27,12 +27,14 @@ index_api_gen = custom_target(
command: [
xsltproc_prog, '--nonet', '-o', docs_builddir,
'--stringparam', 'builddir', meson.project_build_root(),
'--stringparam', 'aclxmlpath', docs_acl_xml.full_path(),
'--stringparam', 'timestamp', docs_timestamp,
'--stringparam', 'indexfile', 'index.html',
'@INPUT@',
],
install: true,
install_dir: docs_html_dir / 'html',
depends: docs_acl_xml,
depend_files: [
page_xsl,
],
@ -41,7 +43,7 @@ index_api_gen = custom_target(
docs_html_gen += index_api_gen.to_list()
docs_html_dep += index_api_gen
foreach name : [ 'admin', 'lxc', 'qemu' ]
foreach name : [ 'lxc', 'qemu' ]
index_api_gen = custom_target(
'index-@0@-api'.format(name),
input: [
@ -54,11 +56,13 @@ foreach name : [ 'admin', 'lxc', 'qemu' ]
command: [
xsltproc_prog, '--nonet', '-o', docs_builddir,
'--stringparam', 'builddir', meson.project_build_root(),
'--stringparam', 'aclxmlpath', get_variable('docs_acl_@0@_xml'.format(name)).full_path(),
'--stringparam', 'timestamp', docs_timestamp,
'@INPUT@',
],
install: true,
install_dir: docs_html_dir / 'html',
depends: get_variable('docs_acl_@0@_xml'.format(name)),
depend_files: [
page_xsl,
],
@ -68,6 +72,32 @@ foreach name : [ 'admin', 'lxc', 'qemu' ]
docs_html_dep += index_api_gen
endforeach
index_api_gen = custom_target(
'index-admin-api'.format(name),
input: [
newapi_xsl,
docs_admin_api_xml,
],
output: [
'libvirt-libvirt-admin.html'
],
command: [
xsltproc_prog, '--nonet', '-o', docs_builddir,
'--stringparam', 'builddir', meson.project_build_root(),
'--stringparam', 'aclxmlpath', '',
'--stringparam', 'timestamp', docs_timestamp,
'@INPUT@',
],
install: true,
install_dir: docs_html_dir / 'html',
depend_files: [
page_xsl,
],
)
docs_html_gen += index_api_gen.to_list()
docs_html_dep += index_api_gen
docs_html_paths = []
install_web_deps += docs_html_dep

View File

@ -24,18 +24,16 @@
<xsl:param name="indexfile" select="''"/>
<xsl:param name="aclxmlpath" select="''"/>
<!-- the target directory for the HTML output -->
<xsl:variable name="htmldir">html</xsl:variable>
<xsl:variable name="href_base">../</xsl:variable>
<xsl:variable name="acls">
<xsl:copy-of select="document('{$builddir}/src/libvirt_access.xml')/aclinfo/api"/>
</xsl:variable>
<xsl:variable name="qemuacls">
<xsl:copy-of select="document('{$builddir}/src/libvirt_access_qemu.xml')/aclinfo/api"/>
</xsl:variable>
<xsl:variable name="lxcacls">
<xsl:copy-of select="document('{$builddir}/src/libvirt_access_lxc.xml')/aclinfo/api"/>
<xsl:if test="$aclxmlpath != ''">
<xsl:copy-of select="document($aclxmlpath)/aclinfo/api"/>
</xsl:if>
</xsl:variable>
<xsl:template name="aclinfo">

View File

@ -74,6 +74,10 @@ foreach name : [ 'remote', 'qemu', 'lxc' ]
)
endforeach
docs_acl_xml = access_gen_xml[0]
docs_acl_qemu_xml = access_gen_xml[1]
docs_acl_lxc_xml = access_gen_xml[2]
if conf.has('WITH_POLKIT')
access_sources += access_polkit_sources