mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-09-08 16:54:49 +00:00
The virt-qemu-sev-validate program will compare a reported SEV/SEV-ES domain launch measurement, to a computed launch measurement. This determines whether the domain has been tampered with during launch. This initial implementation requires all inputs to be provided explicitly, and as such can run completely offline, without any connection to libvirt. The tool is placed in the libvirt-client-qemu sub-RPM since it is specific to the QEMU driver. Reviewed-by: Cole Robinson <crobinso@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
173 lines
6.1 KiB
Meson
173 lines
6.1 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-qemu-qmp-proxy', 'section': '1', 'install': conf.has('WITH_QEMU') },
|
|
{ 'name': 'virt-xml-validate', 'section': '1', 'install': true },
|
|
{ 'name': 'virt-qemu-sev-validate', 'section': '1', 'install': conf.has('WITH_QEMU') },
|
|
|
|
{ '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.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 ---
|