[PATCH 4/6] docs/html: Properly generate ACL permissions into API reference
Daniel P. Berrangé
berrange at redhat.com
Mon Feb 20 17:01:51 UTC 2023
On Mon, Feb 20, 2023 at 11:47:07AM +0100, Peter Krempa wrote:
> 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 at redhat.com>
> ---
> docs/html/meson.build | 32 +++++++++++++++++++++++++++++++-
> docs/newapi.xsl | 12 +++++-------
> src/access/meson.build | 4 ++++
> 3 files changed, 40 insertions(+), 8 deletions(-)
Reviewed-by: Daniel P. Berrangé <berrange at redhat.com>
>
> diff --git a/docs/html/meson.build b/docs/html/meson.build
> index b18a8ccb5f..4e818f9142 100644
> --- a/docs/html/meson.build
> +++ b/docs/html/meson.build
> @@ -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- at 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_ at 0@_xml'.format(name)).full_path(),
> '--stringparam', 'timestamp', docs_timestamp,
> '@INPUT@',
> ],
> install: true,
> install_dir: docs_html_dir / 'html',
> + depends: get_variable('docs_acl_ at 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
> diff --git a/docs/newapi.xsl b/docs/newapi.xsl
> index 3de603bb00..cc3ec681b7 100644
> --- a/docs/newapi.xsl
> +++ b/docs/newapi.xsl
> @@ -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">
> diff --git a/src/access/meson.build b/src/access/meson.build
> index 07fd7d372e..0b12581dc1 100644
> --- a/src/access/meson.build
> +++ b/src/access/meson.build
> @@ -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
>
> --
> 2.39.2
>
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
More information about the libvir-list
mailing list