mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-26 15:45:28 +00:00
98ffd82060
Historically we had two top level XSL files for top level and nested documents which only differ in what they pass for 'href_base' to the main 'page.xsl' file. We can instead pass the variable as argument from the build system so that we have just one XSL file and also allow for more nested document trees in the future. The '404' page is special even with the current XSL way so we add a special case for it. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
171 lines
5.9 KiB
Meson
171 lines
5.9 KiB
Meson
html_xslt_gen_install_dir = docs_html_dir / 'manpages'
|
|
html_xslt_gen = []
|
|
|
|
# docs_man_files
|
|
# each entry is a dictionary with following items:
|
|
# name - man page name (required)
|
|
# section - man page section (required)
|
|
# install - whether to build and install the man page (required)
|
|
# file - generated RST file (optional, default none)
|
|
|
|
docs_man_files = [
|
|
{ 'name': 'index', 'section': '', 'install': false },
|
|
|
|
{ 'name': 'virsh', 'section': '1', 'install': true },
|
|
{ 'name': 'virt-admin', 'section': '1', 'install': true },
|
|
{ 'name': 'virt-host-validate', 'section': '1', 'install': conf.has('WITH_HOST_VALIDATE') },
|
|
{ 'name': 'virt-login-shell', 'section': '1', 'install': conf.has('WITH_LOGIN_SHELL') },
|
|
{ 'name': 'virt-pki-query-dn', 'section': '1', 'install': true },
|
|
{ 'name': 'virt-pki-validate', 'section': '1', 'install': true },
|
|
{ 'name': 'virt-qemu-run', 'section': '1', 'install': conf.has('WITH_QEMU') },
|
|
{ 'name': 'virt-xml-validate', 'section': '1', 'install': true },
|
|
|
|
{ 'name': 'libvirt-guests', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') },
|
|
{ 'name': 'libvirtd', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') },
|
|
{ 'name': 'virt-sanlock-cleanup', 'section': '8', 'install': conf.has('WITH_SANLOCK') },
|
|
{ 'name': 'virt-ssh-helper', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') },
|
|
{ 'name': 'virtbhyved', 'section': '8', 'install': conf.has('WITH_BHYVE') },
|
|
{ 'name': 'virtinterfaced', 'section': '8', 'install': conf.has('WITH_INTERFACE') },
|
|
{ 'name': 'virtlockd', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') },
|
|
{ 'name': 'virtlogd', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') },
|
|
{ 'name': 'virtlxcd', 'section': '8', 'install': conf.has('WITH_LXC') },
|
|
{ 'name': 'virtnetworkd', 'section': '8', 'install': conf.has('WITH_NETWORK') },
|
|
{ 'name': 'virtnodedevd', 'section': '8', 'install': conf.has('WITH_NODE_DEVICES') },
|
|
{ 'name': 'virtnwfilterd', 'section': '8', 'install': conf.has('WITH_NWFILTER') },
|
|
{ 'name': 'virtproxyd', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') },
|
|
{ 'name': 'virtqemud', 'section': '8', 'install': conf.has('WITH_QEMU') },
|
|
{ 'name': 'virtsecretd', 'section': '8', 'install': conf.has('WITH_SECRETS') },
|
|
{ 'name': 'virtstoraged', 'section': '8', 'install': conf.has('WITH_STORAGE') },
|
|
{ 'name': 'virtvboxd', 'section': '8', 'install': conf.has('WITH_VBOX') },
|
|
{ 'name': 'virtvzd', 'section': '8', 'install': conf.has('WITH_VZ') },
|
|
{ 'name': 'virtxend', 'section': '8', 'install': conf.has('WITH_LIBXL') },
|
|
]
|
|
|
|
foreach name : keycode_list
|
|
rst_file = custom_target(
|
|
'virkeycode-@0@.rst'.format(name),
|
|
input: keymap_src_file,
|
|
output: 'virkeycode-@0@.rst'.format(name),
|
|
command: [
|
|
meson_python_prog, python3_prog, keymap_gen_prog, 'code-docs',
|
|
'--lang', 'rst',
|
|
'--title', 'virkeycode-@0@'.format(name),
|
|
'--subtitle', 'Key code values for @0@'.format(name),
|
|
'@INPUT@', name,
|
|
],
|
|
capture: true,
|
|
build_by_default: true,
|
|
)
|
|
|
|
docs_man_files += {
|
|
'name': 'virkeycode-@0@'.format(name), 'section': '7', 'install': true, 'file': rst_file,
|
|
}
|
|
endforeach
|
|
|
|
foreach name : keyname_list
|
|
rst_file = custom_target(
|
|
'virkeyname-@0@.rst'.format(name),
|
|
input: keymap_src_file,
|
|
output: 'virkeyname-@0@.rst'.format(name),
|
|
command: [
|
|
meson_python_prog, python3_prog, keymap_gen_prog, 'name-docs',
|
|
'--lang', 'rst',
|
|
'--title', 'virkeyname-@0@'.format(name),
|
|
'--subtitle', 'Key name values for @0@'.format(name),
|
|
'@INPUT@', name,
|
|
],
|
|
capture: true,
|
|
build_by_default: true,
|
|
)
|
|
|
|
docs_man_files += {
|
|
'name': 'virkeyname-@0@'.format(name), 'section': '7', 'install': true, 'file': rst_file,
|
|
}
|
|
endforeach
|
|
|
|
docs_man_conf = configuration_data({
|
|
'SYSCONFDIR': sysconfdir,
|
|
'RUNSTATEDIR': runstatedir,
|
|
'VERSION': meson.project_version(),
|
|
})
|
|
|
|
foreach data : docs_man_files
|
|
rst_in_file = '@0@.rst'.format(data['name'])
|
|
html_in_file = '@0@.html.in'.format(data['name'])
|
|
html_file = '@0@.html'.format(data['name'])
|
|
|
|
if data.has_key('file')
|
|
rst_file = data['file']
|
|
else
|
|
rst_file = configure_file(
|
|
input: rst_in_file,
|
|
output: '@0@.rst'.format(data['name']),
|
|
configuration: docs_man_conf,
|
|
)
|
|
endif
|
|
|
|
if data['install']
|
|
man_file = '@0@.@1@'.format(data['name'], data['section'])
|
|
man_page = custom_target(
|
|
man_file,
|
|
input: rst_file,
|
|
output: man_file,
|
|
# 'contents' element is the table of contents which is undesired in manpage
|
|
command: [ rst2man_prog, '--strip-elements-with-class', 'contents', '--strict', '@INPUT@', '@OUTPUT@' ],
|
|
install: true,
|
|
install_dir: mandir / 'man@0@'.format(data['section']),
|
|
)
|
|
endif
|
|
|
|
html_in = custom_target(
|
|
html_in_file,
|
|
input: rst_file,
|
|
output: html_in_file,
|
|
command: [ rst2html5_prog, '--stylesheet=', '--strict', '@INPUT@' ],
|
|
capture: true,
|
|
)
|
|
|
|
html_xslt_gen += {
|
|
'name': data['name'],
|
|
'file': html_in,
|
|
'source': 'docs' / 'manpages' / rst_in_file,
|
|
'href_base': '../',
|
|
}
|
|
endforeach
|
|
|
|
# keep the XSLT processing code block in sync with docs/meson.build
|
|
|
|
# --- 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.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 ---
|