mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
This consists of (1) adding the necessary args to the qemu commandline netdev option, and (2) starting a passt process prior to starting qemu, and making sure that it is terminated when it's no longer needed. Under normal circumstances, passt will terminate itself as soon as qemu closes its socket, but in case of some error where qemu is never started, or fails to startup completely, we need to terminate passt manually. Signed-off-by: Laine Stump <laine@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
225 lines
5.4 KiB
Meson
225 lines
5.4 KiB
Meson
qemu_driver_sources = [
|
|
'qemu_agent.c',
|
|
'qemu_alias.c',
|
|
'qemu_backup.c',
|
|
'qemu_block.c',
|
|
'qemu_blockjob.c',
|
|
'qemu_capabilities.c',
|
|
'qemu_cgroup.c',
|
|
'qemu_checkpoint.c',
|
|
'qemu_command.c',
|
|
'qemu_conf.c',
|
|
'qemu_dbus.c',
|
|
'qemu_domain.c',
|
|
'qemu_domain_address.c',
|
|
'qemu_domainjob.c',
|
|
'qemu_driver.c',
|
|
'qemu_extdevice.c',
|
|
'qemu_fd.c',
|
|
'qemu_firmware.c',
|
|
'qemu_hostdev.c',
|
|
'qemu_hotplug.c',
|
|
'qemu_interface.c',
|
|
'qemu_interop_config.c',
|
|
'qemu_migration.c',
|
|
'qemu_migration_cookie.c',
|
|
'qemu_migration_params.c',
|
|
'qemu_monitor.c',
|
|
'qemu_monitor_json.c',
|
|
'qemu_monitor_text.c',
|
|
'qemu_namespace.c',
|
|
'qemu_passt.c',
|
|
'qemu_process.c',
|
|
'qemu_qapi.c',
|
|
'qemu_saveimage.c',
|
|
'qemu_security.c',
|
|
'qemu_snapshot.c',
|
|
'qemu_slirp.c',
|
|
'qemu_tpm.c',
|
|
'qemu_validate.c',
|
|
'qemu_vhost_user.c',
|
|
'qemu_vhost_user_gpu.c',
|
|
'qemu_virtiofs.c',
|
|
]
|
|
|
|
driver_source_files += files(qemu_driver_sources)
|
|
stateful_driver_source_files += files(qemu_driver_sources)
|
|
|
|
qemu_dtrace_gen_headers = []
|
|
qemu_dtrace_gen_objects = []
|
|
|
|
if conf.has('WITH_DTRACE_PROBES')
|
|
infile = 'libvirt_qemu_probes.d'
|
|
out_h = 'libvirt_qemu_probes.h'
|
|
out_o = 'libvirt_qemu_probes.o'
|
|
out_stp = 'libvirt_qemu_probes.stp'
|
|
|
|
qemu_dtrace_gen_headers += custom_target(
|
|
out_h,
|
|
input: infile,
|
|
output: out_h,
|
|
command: dtrace_command + [ '-o', '@OUTPUT@', '-h', '-s', '@INPUT@' ],
|
|
)
|
|
|
|
qemu_dtrace_gen_objects += custom_target(
|
|
out_o,
|
|
input: infile,
|
|
output: out_o,
|
|
command: dtrace_command + [ '-o', '@OUTPUT@', '-G', '-s', '@INPUT@' ],
|
|
)
|
|
|
|
qemu_dtrace_gen_stp = custom_target(
|
|
out_stp,
|
|
input: infile,
|
|
output: out_stp,
|
|
command: [
|
|
meson_python_prog, python3_prog, dtrace2systemtap_prog,
|
|
bindir, sbindir, libdir, '@INPUT@',
|
|
],
|
|
capture: true,
|
|
install: conf.has('WITH_QEMU'),
|
|
install_dir: systemtap_dir,
|
|
)
|
|
endif
|
|
|
|
qemu_shim_sources = files(
|
|
'qemu_shim.c',
|
|
)
|
|
|
|
if conf.has('WITH_QEMU')
|
|
qemu_driver_impl = static_library(
|
|
'virt_driver_qemu_impl',
|
|
[
|
|
qemu_driver_sources,
|
|
qemu_dtrace_gen_headers,
|
|
],
|
|
dependencies: [
|
|
access_dep,
|
|
capng_dep,
|
|
gnutls_dep,
|
|
libnl_dep,
|
|
log_dep,
|
|
selinux_dep,
|
|
src_dep,
|
|
xdr_dep,
|
|
],
|
|
include_directories: [
|
|
conf_inc_dir,
|
|
hypervisor_inc_dir,
|
|
storage_file_inc_dir,
|
|
],
|
|
)
|
|
|
|
virt_modules += {
|
|
'name': 'virt_driver_qemu',
|
|
'sources': [
|
|
qemu_dtrace_gen_objects,
|
|
],
|
|
'link_whole': [
|
|
qemu_driver_impl,
|
|
],
|
|
'link_args': [
|
|
libvirt_no_undefined,
|
|
],
|
|
}
|
|
|
|
virt_daemons += {
|
|
'name': 'virtqemud',
|
|
'c_args': [
|
|
'-DDAEMON_NAME="virtqemud"',
|
|
'-DMODULE_NAME="qemu"',
|
|
],
|
|
}
|
|
|
|
qemu_user_group_conf = configuration_data({
|
|
'QEMU_USER': qemu_user,
|
|
'QEMU_GROUP': qemu_group,
|
|
})
|
|
qemu_conf = configure_file(
|
|
input: 'qemu.conf.in',
|
|
output: 'qemu.conf',
|
|
configuration: qemu_user_group_conf,
|
|
)
|
|
|
|
qemu_user_group_hack_conf = configuration_data({
|
|
'QEMU_USER': qemu_user,
|
|
'QEMU_GROUP': qemu_group,
|
|
# This hack is necessary because the output file is going to be
|
|
# used as input for another configure_file() call later, which
|
|
# will take care of substituting @CONFIG@ with useful data
|
|
'CONFIG': '@CONFIG@',
|
|
})
|
|
test_libvirtd_qemu_aug_tmp = configure_file(
|
|
input: 'test_libvirtd_qemu.aug.in',
|
|
output: 'test_libvirtd_qemu.aug.tmp',
|
|
configuration: qemu_user_group_hack_conf,
|
|
)
|
|
|
|
virt_conf_files += qemu_conf
|
|
virt_aug_files += files('libvirtd_qemu.aug')
|
|
virt_test_aug_files += {
|
|
'name': 'test_libvirtd_qemu.aug',
|
|
'aug': test_libvirtd_qemu_aug_tmp,
|
|
'conf': qemu_conf,
|
|
'test_name': 'libvirtd_qemu',
|
|
'test_srcdir': meson.current_source_dir(),
|
|
'test_builddir': meson.current_build_dir(),
|
|
}
|
|
|
|
virt_helpers += {
|
|
'name': 'virt-qemu-run',
|
|
'sources': [
|
|
qemu_shim_sources
|
|
],
|
|
'install_dir': bindir,
|
|
}
|
|
|
|
virt_daemon_confs += {
|
|
'name': 'virtqemud',
|
|
}
|
|
|
|
virt_daemon_units += {
|
|
'service': 'virtqemud',
|
|
'service_in': files('virtqemud.service.in'),
|
|
'name': 'Libvirt qemu',
|
|
'sockprefix': 'virtqemud',
|
|
'sockets': [ 'main', 'ro', 'admin' ],
|
|
}
|
|
|
|
openrc_init_files += {
|
|
'name': 'virtqemud',
|
|
'in_file': files('virtqemud.init.in'),
|
|
}
|
|
|
|
if conf.has('WITH_SYSCTL')
|
|
install_data(
|
|
'postcopy-migration.sysctl',
|
|
install_dir: prefix / 'lib' / 'sysctl.d',
|
|
rename: [ '60-qemu-postcopy-migration.conf' ],
|
|
)
|
|
endif
|
|
|
|
virt_install_dirs += [
|
|
confdir / 'qemu',
|
|
confdir / 'qemu' / 'autostart',
|
|
localstatedir / 'cache' / 'libvirt' / 'qemu',
|
|
localstatedir / 'lib' / 'libvirt' / 'qemu',
|
|
localstatedir / 'lib' / 'libvirt' / 'qemu' / 'channel',
|
|
localstatedir / 'lib' / 'libvirt' / 'qemu' / 'channel' / 'target',
|
|
localstatedir / 'lib' / 'libvirt' / 'qemu' / 'checkpoint',
|
|
localstatedir / 'lib' / 'libvirt' / 'qemu' / 'dump',
|
|
localstatedir / 'lib' / 'libvirt' / 'qemu' / 'nvram',
|
|
localstatedir / 'lib' / 'libvirt' / 'qemu' / 'ram',
|
|
localstatedir / 'lib' / 'libvirt' / 'qemu' / 'save',
|
|
localstatedir / 'lib' / 'libvirt' / 'qemu' / 'snapshot',
|
|
localstatedir / 'lib' / 'libvirt' / 'swtpm',
|
|
localstatedir / 'log' / 'libvirt' / 'qemu',
|
|
localstatedir / 'log' / 'swtpm' / 'libvirt' / 'qemu',
|
|
runstatedir / 'libvirt' / 'qemu',
|
|
runstatedir / 'libvirt' / 'qemu' / 'dbus',
|
|
runstatedir / 'libvirt' / 'qemu' / 'passt',
|
|
runstatedir / 'libvirt' / 'qemu' / 'slirp',
|
|
runstatedir / 'libvirt' / 'qemu' / 'swtpm',
|
|
]
|
|
endif
|