libvirt/libvirt.spec

1948 lines
66 KiB
RPMSpec

#
# spec file for package libvirt
#
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
# Stateful hypervisor drivers that run in daemons
%define with_qemu 0%{!?_without_qemu:1}
%define with_lxc 0%{!?_without_lxc:1}
%define with_libxl 0%{!?_without_libxl:1}
%define with_vbox 0%{!?_without_vbox:0}
# Stateless hypervisor drivers that run in libvirt.so
# The esx driver is built for both openSUSE and SLE, but it is not supported
%define with_esx 0%{!?_without_esx:1}
# Until we have requests for them, disable building the vmware, hyperv and
# openvz drivers
%define with_vmware 0%{!?_without_vmware:0}
%define with_hyperv 0%{!?_without_hyperv:0}
%define with_openvz 0%{!?_without_openvz:0}
# Stateful secondary host drivers that run in daemons
%define with_storage_rbd 0%{!?_without_storage_rbd:0}
# The gluster storage backend is built for both openSUSE and SLE, but it is
# not supported
%define with_storage_gluster 0%{!?_without_storage_gluster:1}
%define with_storage_iscsi_direct 0%{!?_without_storage_iscsi_direct:0}
%define with_apparmor 0%{!?_without_apparmor:1}
# The udev interface backend is the only one that works across SUSE distros.
# It supports just a handful of read-only operations, has a history of
# instability, and is insufficiently maintained. Completely disable the
# interface driver.
%define with_interface 0%{!?_without_interface:0}
# Optional bits on by default
%define with_sanlock 0%{!?_without_sanlock:1}
%define with_polkit_rules 0%{!?_without_polkit_rules:1}
%define with_wireshark 0%{!?_without_wireshark:1}
%define with_libssh2 0%{!?_without_libssh2:1}
%define with_numactl 0%{!?_without_numactl:1}
%define with_modular_daemons 0%{!?_without_modular_daemons:1}
%define with_userfaultfd_sysctl 0%{!?_without_userfaultfd_sysctl:1}
# A few optional bits off by default, we enable later
%define with_numad 0%{!?_without_numad:0}
%define with_firewalld_zone 0%{!?_without_firewalld_zone:0}
%define with_libssh 0%{!?_without_libssh:0}
%define with_nbdkit 0%{!?_without_nbdkit:0}
%define with_nbdkit_config_default 0%{!?_without_nbdkit_config_default:0}
# Set the OS / architecture specific special cases
# Xen is only available on x86_64
%ifnarch x86_64
%define with_libxl 0
%endif
# Enable numactl for most architectures. Handle aarch64 separately
%ifarch s390 s390x %arm %ix86
%define with_numactl 0
%endif
# Tumbleweeed is new enough to support /dev/userfaultfd, which
# does not require enabling vm.unprivileged_userfaultfd sysct
%if 0%{?suse_version} > 1500
%define with_userfaultfd_sysctl 0
%endif
# vbox is available only on i386 x86_64
%ifnarch %{ix86} x86_64
%define with_vbox 0
%endif
# The 'libvirt' zone must be used with firewalld >= 0.7.0
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150300
%define with_firewalld_zone 0%{!?_without_firewalld_zone:1}
%endif
# Enable libssh support in newer code bases
%if 0%{?suse_version} >= 1500
%define with_libssh 0%{!?_without_libssh:1}
%endif
%ifarch x86_64 aarch64
%define with_storage_rbd 0%{!?_without_storage_rbd:1}
%endif
# libiscsi storage backend needs libiscsi >= 1.18.0 which is only available
# in suse_version >= 1500
%if 0%{?suse_version} >= 1500
%define with_storage_iscsi_direct 0%{!?_without_storage_iscsi_direct:1}
%endif
# numad is used to manage the CPU and memory placement dynamically for
# qemu and lxc drivers
%if %{with_qemu} || %{with_lxc}
# Enable numad for most architectures
%ifnarch s390 s390x %arm %ix86
%define with_numad 0%{!?_without_numad:1}
%endif
%endif
# Items to exclude in SLFO:Main based products
%if 0%{?suse_version} == 1600
%define with_apparmor 0
%define with_esx 0
%define with_interface 0
%define with_libxl 0
%define with_lxc 0
%define with_numad 0
%define with_sanlock 0
%define with_storage_gluster 0
%endif
# Prefer nftables if available
%if "%{?default_firewall_backend}" == "nftables"
%define prefer_nftables 1
%define firewall_backend_priority nftables,iptables
%else
%define prefer_nftables 0
%define firewall_backend_priority iptables,nftables
%endif
# Force QEMU to run as qemu:qemu
%define qemu_user qemu
%define qemu_group qemu
# Locations for QEMU data
%define qemu_moddir %{_libdir}/qemu
%define qemu_datadir %{_datadir}/qemu
%define _fwdefdir %{_prefix}/lib/firewalld/services
%if %{with_wireshark}
%define wireshark_plugindir %(pkg-config --variable plugindir wireshark)/epan
%endif
Name: libvirt
URL: https://libvirt.org/
Version: 11.0.0
Release: 0
Summary: Library providing a virtualization API
License: LGPL-2.1-or-later
Requires: %{name}-daemon = %{version}-%{release}
Requires: %{name}-daemon-config-network = %{version}-%{release}
Requires: %{name}-daemon-config-nwfilter = %{version}-%{release}
%if %{with_libxl}
Requires: %{name}-daemon-driver-libxl = %{version}-%{release}
%endif
%if %{with_qemu}
Requires: %{name}-client-qemu = %{version}-%{release}
Requires: %{name}-daemon-driver-qemu = %{version}-%{release}
%endif
%if %{with_vbox}
Requires: %{name}-daemon-driver-vbox = %{version}-%{release}
%endif
Requires: %{name}-client = %{version}-%{release}
%if %{with_interface}
Requires: %{name}-daemon-driver-interface = %{version}-%{release}
%endif
Requires: %{name}-daemon-driver-network = %{version}-%{release}
Requires: %{name}-daemon-driver-nodedev = %{version}-%{release}
Requires: %{name}-daemon-driver-nwfilter = %{version}-%{release}
Requires: %{name}-daemon-driver-secret = %{version}-%{release}
Requires: %{name}-daemon-driver-storage = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
# All build-time requirements. Run-time requirements are
# listed against each sub-RPM
BuildRequires: gettext-tools
BuildRequires: meson >= 0.56.0
BuildRequires: ninja
# Needed for modprobe and tests/virkmodtest
BuildRequires: kmod
BuildRequires: pkgconfig(systemd)
%if %{with_libxl}
BuildRequires: xen-devel
%endif
%if %{with_qemu}
# For managing ACLs
BuildRequires: libacl-devel
# For qemu-bridge-helper, qemu-pr-helper
BuildRequires: qemu-tools
%endif
BuildRequires: bash-completion-devel >= 2.0
BuildRequires: glib2-devel >= 2.58
BuildRequires: libattr-devel
BuildRequires: libgcrypt-devel
BuildRequires: libgnutls-devel
BuildRequires: libtasn1-devel
BuildRequires: libxml2-devel
BuildRequires: libxslt
BuildRequires: perl
BuildRequires: python3
BuildRequires: python3-docutils
BuildRequires: python3-pytest
BuildRequires: readline-devel
# For pool-build probing for existing pools
BuildRequires: libblkid-devel >= 2.17
BuildRequires: libpciaccess0-devel >= 0.10.9
BuildRequires: libjson-c-devel
BuildRequires: pkgconfig(libudev) >= 145
%if %{with_sanlock}
BuildRequires: sanlock-devel >= 2.4
%endif
BuildRequires: libnl3-devel
BuildRequires: libpcap-devel >= 1.5.0
BuildRequires: libselinux-devel
BuildRequires: libtirpc-devel
%if %{with_apparmor}
BuildRequires: apparmor-rpm-macros
BuildRequires: libapparmor-devel
%endif
BuildRequires: cyrus-sasl-devel
BuildRequires: polkit >= 0.112
%if %{with_nbdkit}
BuildRequires: libnbd-devel
%endif
# For mount/umount in FS driver
BuildRequires: util-linux
# For LVM drivers
BuildRequires: lvm2
# For pool type=iscsi
BuildRequires: open-iscsi
%if %{with_storage_iscsi_direct}
# For pool type=iscsi-direct
BuildRequires: libiscsi-devel
%endif
# For disk driver
BuildRequires: parted
BuildRequires: parted-devel
# For Multipath support
BuildRequires: device-mapper-devel
%if %{with_storage_rbd}
BuildRequires: librbd-devel
%endif
%if %{with_storage_gluster}
BuildRequires: glusterfs-devel >= 3.4.1
%endif
%if %{with_numactl}
# For QEMU/LXC numa info
BuildRequires: libnuma-devel
%endif
BuildRequires: fuse-devel >= 2.8.6
BuildRequires: libcap-ng-devel >= 0.5.0
%if %{with_interface}
BuildRequires: libnetcontrol-devel >= 0.2.0
%endif
%if %{with_libssh2}
BuildRequires: libssh2-devel
%endif
%if %{with_esx}
BuildRequires: libcurl-devel
%endif
%if %{with_hyperv}
BuildRequires: libwsman-devel >= 2.6.3
%endif
BuildRequires: audit-devel
# For /usr/sbin/dtrace
BuildRequires: systemtap-sdt-devel
%if %{with_numad}
BuildRequires: numad
%endif
%if %{with_wireshark}
BuildRequires: wireshark-devel
%endif
%if %{with_libssh}
BuildRequires: libssh-devel >= 0.8.1
%endif
# Needed for the firewalld_reload macro
%if %{with_firewalld_zone}
BuildRequires: firewall-macros
%endif
Source0: %{name}-%{version}.tar.xz
Source1: libvirt-supportconfig
Source2: suse-qemu-domain-hook.py
Source3: libvirtd-relocation-server.xml
Source98: README.packaging.txt
Source99: baselibs.conf
Source100: %{name}-rpmlintrc
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
Libvirt is a C toolkit to interact with the virtualization
capabilities of Linux. Virtualization of the Linux Operating System means
the ability to run multiple instances of Operating Systems concurrently
on a single hardware system where the basic resources are driven by a
Linux instance. The library aims to provide long term stable C API
to interact with Linux virtualization technologies.
This package does not contain files, it just requires the necessary packages.
%package doc
Summary: API reference and website documentation for libvirt
BuildArch: noarch
%description doc
The API reference for the libvirt C library, and a
copy of the libvirt.org website documentation.
%package daemon
Summary: Server side daemon and supporting files for libvirt
Requires: %{name}-daemon-common = %{version}-%{release}
Requires: %{name}-daemon-lock = %{version}-%{release}
Requires: %{name}-daemon-log = %{version}-%{release}
Requires: %{name}-daemon-plugin-lockd = %{version}-%{release}
Requires: %{name}-daemon-proxy = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
%description daemon
Server side daemon required to manage the virtualization capabilities
of recent versions of Linux. Requires a hypervisor specific sub-RPM
for specific drivers.
%package daemon-common
Summary: Files and utilities used by daemons
Requires: %{name}-libs = %{version}-%{release}
# The libvirt-guests.sh script requires virsh from libvirt-client subpackage,
# but not every deployment wants to use libvirt-guests service. Using
# Recommends here will install libvirt-client by default (if available), but
# RPM won't complain if the package is unavailable, masked, or removed later.
Recommends: %{name}-client = %{version}-%{release}
# for /sbin/ip & /sbin/tc
Requires: iproute
Requires: logrotate
Requires: pkgconfig(udev) >= 145
Recommends: polkit >= 0.112
%ifarch %ix86 x86_64 aarch64
# For virConnectGetSysinfo
Requires: dmidecode
%endif
# For service management
%{?systemd_requires}
# Daemons depend on the 'messagebus' service
Requires: dbus-1
Requires: group(libvirt)
# Needed by libvirt-guests init script.
Requires: gettext-runtime
Requires: bash-completion >= 2.0
# virt-manager uses netcat for accessing spice and VNC servers running in
# qemu processes. See boo#1222100 for details. Although libvirt does not
# use netcat, it's in a good position to provide the dependency for
# virt-manager. netcat-openbsd is a tiny package, so it's a tolerable hack.
Requires: netcat-openbsd
%if %{with_apparmor}
Recommends: apparmor-abstractions
%endif
# Ensure smooth upgrades
Obsoletes: %{name}-admin < 7.3.0
Provides: %{name}-admin = %{version}
Obsoletes: %{name}-bash-completion < 7.3.0
%description daemon-common
Miscellaneous files and utilities used by other libvirt daemons
%package daemon-lock
Summary: Server side daemon for managing locks
Requires: %{name}-libs = %{version}-%{release}
%description daemon-lock
Server side daemon used to manage locks held against virtual machine
resources
%package daemon-plugin-lockd
Summary: lockd client plugin for virtlockd
Requires: %{name}-libs = %{version}-%{release}
%description daemon-plugin-lockd
A client-side plugin that implements disk locking using POSIX fcntl advisory
locks via communication with the virtlockd daemon
%package daemon-log
Summary: Server side daemon for managing logs
Requires: %{name}-libs = %{version}-%{release}
%description daemon-log
Server side daemon used to manage logs from virtual machine consoles
%package daemon-proxy
Summary: Server side daemon providing libvirtd proxy
Requires: %{name}-libs = %{version}-%{release}
%description daemon-proxy
Server side daemon providing functionality previously provided by
the monolithic libvirtd
%package daemon-hooks
Summary: Hook scripts for QEMU
Requires: %{name}-daemon-driver-qemu = %{version}-%{release}
Requires: python3-lxml
%description daemon-hooks
Hook scripts for the virtqemud daemon
%package daemon-config-network
Summary: Default configuration files for the libvirtd daemon
Requires: %{name}-daemon-driver-network = %{version}-%{release}
%description daemon-config-network
Default configuration files for setting up NAT based networking
%package daemon-config-nwfilter
Summary: Network filter configuration files for the libvirtd
Requires: %{name}-daemon-driver-nwfilter = %{version}-%{release}
%description daemon-config-nwfilter
Network filter configuration files for the libvirt daemon, used for
cleaning guest network traffic.
%package daemon-driver-network
Summary: Network driver plugin for the libvirtd daemon
Requires: %{name}-daemon-common = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Requires: dnsmasq >= 2.41
%if %{prefer_nftables}
Requires: nftables
%else
Requires: iptables
%endif
%description daemon-driver-network
The network driver plugin for the libvirtd daemon, providing
an implementation of the virtual network APIs using the Linux
bridge capabilities.
%package daemon-driver-nwfilter
Summary: A nwfilter driver plugin for the libvirtd daemon
Requires: %{name}-daemon-common = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Requires: ebtables
Requires: iptables
%description daemon-driver-nwfilter
The nwfilter driver plugin for the libvirtd daemon, providing
an implementation of the firewall APIs using the ebtables,
iptables and ip6tables capabilities
%package daemon-driver-nodedev
Summary: Nodedev driver plugin for the libvirtd daemon
Requires: %{name}-daemon-common = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
# For managing persistent mediated devices
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150300
Requires: mdevctl
%endif
# For modprobe of pci devices
Requires: modutils
%description daemon-driver-nodedev
The nodedev driver plugin for the libvirtd daemon, providing
an implementation of the node device APIs using the udev
capabilities.
%package daemon-driver-interface
Summary: Interface driver plugin for the libvirtd daemon
Requires: %{name}-daemon-common = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
%description daemon-driver-interface
The interface driver plugin for the libvirtd daemon, providing
an implementation of the network interface APIs using the
netcontrol library
%package daemon-driver-secret
Summary: Secret driver plugin for the libvirtd daemon
Requires: %{name}-daemon-common = %{version}-%{release}
%description daemon-driver-secret
The secret driver plugin for the libvirtd daemon, providing
an implementation of the secret key APIs.
%package daemon-driver-storage-core
Summary: Storage driver plugin including base backends for the libvirtd daemon
Requires: %{name}-daemon-common = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Recommends: nfs-utils
# For mkfs
Requires: util-linux
%if %{with_qemu}
# From QEMU RPMs
Requires: /usr/bin/qemu-img
%endif
%description daemon-driver-storage-core
The storage driver plugin for the libvirtd daemon, providing
an implementation of the storage APIs using files, local disks, LVM, SCSI,
iSCSI, and multipath storage.
%package daemon-driver-storage-logical
Summary: Storage driver plugin for lvm volumes
Requires: %{name}-daemon-driver-storage-core = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Requires: lvm2
%description daemon-driver-storage-logical
The storage driver backend adding implementation of the storage APIs for block
volumes using lvm.
%package daemon-driver-storage-disk
Summary: Storage driver plugin for disk
Requires: %{name}-daemon-driver-storage-core = %{version}-%{release}
Requires: device-mapper
Requires: parted
%description daemon-driver-storage-disk
The storage driver backend adding implementation of the storage APIs for block
volumes using the host disks.
%package daemon-driver-storage-scsi
Summary: Storage driver plugin for local scsi devices
Requires: %{name}-daemon-driver-storage-core = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
%description daemon-driver-storage-scsi
The storage driver backend adding implementation of the storage APIs for scsi
host devices.
%package daemon-driver-storage-iscsi
Summary: Storage driver plugin for iscsi
Requires: %{name}-daemon-driver-storage-core = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Requires: open-iscsi
%description daemon-driver-storage-iscsi
The storage driver backend adding implementation of the storage APIs for iscsi
volumes using the host iscsi stack.
%package daemon-driver-storage-iscsi-direct
Summary: Storage driver plugin for iscsi-direct
Requires: %{name}-daemon-driver-storage-core = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
%description daemon-driver-storage-iscsi-direct
The storage driver backend adding implementation of the storage APIs for iscsi
volumes using libiscsi direct connection.
%package daemon-driver-storage-mpath
Summary: Storage driver plugin for multipath volumes
Requires: %{name}-daemon-driver-storage-core = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Requires: device-mapper
%description daemon-driver-storage-mpath
The storage driver backend adding implementation of the storage APIs for
multipath storage using device mapper.
%package daemon-driver-storage-gluster
Summary: Storage driver plugin for gluster
Requires: %{name}-daemon-driver-storage-core = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
%description daemon-driver-storage-gluster
The storage driver backend adding implementation of the storage APIs for gluster
volumes using libgfapi.
%package daemon-driver-storage-rbd
Summary: Storage driver plugin for rbd
Requires: %{name}-daemon-driver-storage-core = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
%description daemon-driver-storage-rbd
The storage driver backend adding implementation of the storage APIs for rbd
volumes using the ceph protocol.
%package daemon-driver-storage
Summary: Storage driver plugin including all backends for the libvirtd daemon
Requires: %{name}-daemon-driver-storage-core = %{version}-%{release}
Requires: %{name}-daemon-driver-storage-disk = %{version}-%{release}
Requires: %{name}-daemon-driver-storage-iscsi = %{version}-%{release}
Requires: %{name}-daemon-driver-storage-logical = %{version}-%{release}
Requires: %{name}-daemon-driver-storage-mpath = %{version}-%{release}
Requires: %{name}-daemon-driver-storage-scsi = %{version}-%{release}
# Closing the Leap gap note:
# Generally we would have a conditional 'Requires:' for daemon-driver-storage-gluster
# similar to the other configurable storage backends, but gluster is not supported in
# SLE. We'll build the backend so it is available but not require it as part of the
# daemon-driver-storage metapackage
%if %{with_storage_rbd}
Requires: %{name}-daemon-driver-storage-rbd = %{version}-%{release}
%endif
%if %{with_storage_iscsi_direct}
Requires: %{name}-daemon-driver-storage-iscsi-direct = %{version}-%{release}
%endif
%description daemon-driver-storage
The storage driver plugin for the libvirtd daemon, providing
an implementation of the storage APIs using LVM, iSCSI,
parted and more.
This package does not contain files, it just requires the necessary packages.
%package daemon-driver-qemu
Summary: Qemu driver plugin for the libvirtd daemon
Requires: %{name}-daemon-common = %{version}-%{release}
Requires: %{name}-daemon-log = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Requires: /usr/bin/qemu-img
# For image compression
Requires: /usr/bin/bzip2
Requires: /usr/bin/gzip
Requires: /usr/bin/lzop
Requires: /usr/bin/xz
Requires: /usr/bin/zstd
Requires: qemu
Requires: systemd-container
# swtp is needed to manage <tpm> devices.
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150300
Requires: swtpm
%endif
%ifarch x86_64
Requires: qemu-ovmf-x86_64
%endif
%ifarch aarch64
Requires: qemu-uefi-aarch64
%endif
%if %{with_numad}
Suggests: numad
%endif
%if %{with_nbdkit}
Recommends: nbdkit
Recommends: nbdkit-curl-plugin
Recommends: nbdkit-ssh-plugin
%endif
%description daemon-driver-qemu
The qemu driver plugin for the libvirtd daemon, providing
an implementation of the hypervisor driver APIs using QEMU.
%package daemon-driver-lxc
Summary: LXC driver plugin for the libvirtd daemon
Requires: %{name}-daemon-common = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
# There really is a hard cross-driver dependency here
Requires: %{name}-daemon-driver-network = %{version}-%{release}
Requires: systemd-container
# For modprobe of nbd driver
Requires: modutils
%if %{with_numad}
Suggests: numad
%endif
%description daemon-driver-lxc
The LXC driver plugin for the libvirtd daemon, providing
an implementation of the hypervisor driver APIs using
the Linux kernel
%package daemon-driver-vbox
Summary: VirtualBox driver plugin for the libvirtd daemon
Requires: %{name}-daemon-common = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
%description daemon-driver-vbox
The vbox driver plugin for the libvirtd daemon, providing
an implementation of the hypervisor driver APIs using
VirtualBox
%package daemon-driver-libxl
Summary: Libxl driver plugin for the libvirtd daemon
Requires: %{name}-daemon-common = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Requires: qemu-ovmf-x86_64
%description daemon-driver-libxl
The Libxl driver plugin for the libvirtd daemon, providing
an implementation of the hypervisor driver APIs using libxl.
%package daemon-qemu
Summary: Server side daemon & driver required to run QEMU guests
%if %{with_modular_daemons}
Requires: %{name}-daemon-lock = %{version}-%{release}
Requires: %{name}-daemon-log = %{version}-%{release}
Requires: %{name}-daemon-plugin-lockd = %{version}-%{release}
%else
Requires: %{name}-daemon = %{version}-%{release}
%endif
%if %{with_interface}
Requires: %{name}-daemon-driver-interface = %{version}-%{release}
%endif
Requires: %{name}-daemon-driver-network = %{version}-%{release}
Requires: %{name}-daemon-driver-nodedev = %{version}-%{release}
Recommends: %{name}-daemon-driver-nwfilter = %{version}-%{release}
Requires: %{name}-daemon-driver-qemu = %{version}-%{release}
Requires: %{name}-daemon-driver-secret = %{version}-%{release}
Requires: %{name}-daemon-driver-storage = %{version}-%{release}
%description daemon-qemu
Server side daemon and driver required to manage the virtualization
capabilities of the QEMU emulators
This package does not contain files, it just requires the necessary packages.
%package daemon-lxc
Summary: Server side daemon & driver required to run LXC guests
%if %{with_modular_daemons}
Requires: %{name}-daemon-log = %{version}-%{release}
%else
Requires: %{name}-daemon = %{version}-%{release}
%endif
%if %{with_interface}
Requires: %{name}-daemon-driver-interface = %{version}-%{release}
%endif
Requires: %{name}-daemon-driver-lxc = %{version}-%{release}
Requires: %{name}-daemon-driver-network = %{version}-%{release}
Requires: %{name}-daemon-driver-nodedev = %{version}-%{release}
Recommends: %{name}-daemon-driver-nwfilter = %{version}-%{release}
Requires: %{name}-daemon-driver-secret = %{version}-%{release}
Requires: %{name}-daemon-driver-storage = %{version}-%{release}
%description daemon-lxc
Server side daemon and driver required to manage the virtualization
capabilities of LXC
This package does not contain files, it just requires the necessary packages.
%package daemon-xen
Summary: Server side daemon & driver required to run XEN guests
%if %{with_modular_daemons}
Requires: %{name}-daemon-lock = %{version}-%{release}
Requires: %{name}-daemon-plugin-lockd = %{version}-%{release}
%else
Requires: %{name}-daemon = %{version}-%{release}
%endif
%if %{with_interface}
Requires: %{name}-daemon-driver-interface = %{version}-%{release}
%endif
Requires: %{name}-daemon-driver-libxl = %{version}-%{release}
Requires: %{name}-daemon-driver-network = %{version}-%{release}
Requires: %{name}-daemon-driver-nodedev = %{version}-%{release}
Requires: %{name}-daemon-driver-secret = %{version}-%{release}
Requires: %{name}-daemon-driver-storage = %{version}-%{release}
Requires: xen
%description daemon-xen
Server side daemon and driver required to manage the virtualization
capabilities of XEN
This package does not contain files, it just requires the necessary packages.
%package daemon-vbox
Summary: Server side daemon & driver required to run VirtualBox guests
%if ! %{with_modular_daemons}
Requires: %{name}-daemon = %{version}-%{release}
%endif
%if %{with_interface}
Requires: %{name}-daemon-driver-interface = %{version}-%{release}
%endif
Requires: %{name}-daemon-driver-network = %{version}-%{release}
Requires: %{name}-daemon-driver-nodedev = %{version}-%{release}
Recommends: %{name}-daemon-driver-nwfilter = %{version}-%{release}
Requires: %{name}-daemon-driver-secret = %{version}-%{release}
Requires: %{name}-daemon-driver-storage = %{version}-%{release}
Requires: %{name}-daemon-driver-vbox = %{version}-%{release}
# Specify supported virtualbox API explicitly. See ./src/vbox
# Reference bsc#1017189
Requires: virtualbox < 5.3
%description daemon-vbox
Server side daemon and driver required to manage the virtualization
capabilities of VirtualBox
This package does not contain files, it just requires the necessary packages.
%package client
Summary: Client side utilities of the libvirt library
Requires: %{name}-libs = %{version}-%{release}
Requires: bash-completion >= 2.0
# Ensure smooth upgrades
Obsoletes: libvirt-bash-completion < 7.3.0
%description client
The client binaries needed to access the virtualization
capabilities of recent versions of Linux (and other OSes).
%package client-qemu
Summary: Additional client side utilities for QEMU
Requires: %{name}-libs = %{version}-%{release}
Requires: python3-libvirt-python >= 5.1.0
%description client-qemu
The additional client binaries are used to interact
with some QEMU specific features of libvirt.
%package libs
Summary: Client side libraries for libvirt
# Not technically required, but makes 'out-of-box' config
# work correctly & doesn't have onerous dependencies
Requires: cyrus-sasl-digestmd5
%description libs
Shared libraries for accessing the libvirt daemon.
%package devel
Summary: Libraries, includes, etc. to compile with the libvirt library
Requires: %{name}-libs = %{version}-%{release}
Suggests: %{name}-doc = %{version}-%{release}
Requires: pkg-config
%description devel
Include header files & development libraries for the libvirt C library.
%package daemon-plugin-sanlock
Summary: Sanlock lock manager plugin for QEMU driver
Requires: sanlock >= 2.4
# For virt-sanlock-cleanup require augeas
Requires: %{name}-libs = %{version}-%{release}
Requires: augeas
Obsoletes: %{name}-lock-sanlock < 9.0.0
Provides: %{name}-lock-sanlock = %{version}-%{release}
%description daemon-plugin-sanlock
Includes the Sanlock lock manager plugin for the QEMU driver
%package -n wireshark-plugin-libvirt
Summary: Wireshark plugin for libvirt RPC protocol
Requires: %{name}-libs = %{version}-%{release}
Requires: wireshark
%description -n wireshark-plugin-libvirt
Wireshark dissector plugin for better analysis of libvirt RPC traffic.
%package nss
Summary: Libvirt plugin for Name Service Switch
Requires: %{name}-daemon-driver-network = %{version}-%{release}
%description nss
libvirt plugin for NSS for translating domain names into IP addresses.
%package ssh-proxy
Summary: Libvirt SSH proxy
Requires: %{name}-libs = %{version}-%{release}
%description ssh-proxy
Allows SSH into domains via VSOCK without need for network.
%prep
%autosetup -p1
%build
%if %{with_qemu}
%define arg_qemu -Ddriver_qemu=enabled
%else
%define arg_qemu -Ddriver_qemu=disabled
%endif
%if %{with_openvz}
%define arg_openvz -Ddriver_openvz=enabled
%else
%define arg_openvz -Ddriver_openvz=disabled
%endif
%if %{with_lxc}
%define arg_lxc -Ddriver_lxc=enabled
%else
%define arg_lxc -Ddriver_lxc=disabled
%endif
%if %{with_vbox}
%define arg_vbox -Ddriver_vbox=enabled
%else
%define arg_vbox -Ddriver_vbox=disabled
%endif
%if %{with_esx}
%define arg_esx -Ddriver_esx=enabled -Dcurl=enabled
%else
%define arg_esx -Ddriver_esx=disabled -Dcurl=disabled
%endif
%if %{with_vmware}
%define arg_vmware -Ddriver_vmware=enabled
%else
%define arg_vmware -Ddriver_vmware=disabled
%endif
%if %{with_hyperv}
%define arg_hyperv -Ddriver_hyperv=enabled -Dopenwsman=enabled
%else
%define arg_hyperv -Ddriver_hyperv=disabled -Dopenwsman=disabled
%endif
%if %{with_libxl}
%define arg_libxl -Ddriver_libxl=enabled
%else
%define arg_libxl -Ddriver_libxl=disabled
%endif
%if %{with_interface}
%define arg_interface -Ddriver_interface=enabled
%define arg_netcontrol -Dnetcontrol=enabled
%else
%define arg_interface -Ddriver_interface=disabled
%define arg_netcontrol -Dnetcontrol=disabled
%endif
%if %{with_storage_rbd}
%define arg_storage_rbd -Dstorage_rbd=enabled
%else
%define arg_storage_rbd -Dstorage_rbd=disabled
%endif
%if %{with_storage_gluster}
%define arg_storage_gluster -Dstorage_gluster=enabled -Dglusterfs=enabled
%else
%define arg_storage_gluster -Dstorage_gluster=disabled -Dglusterfs=disabled
%endif
%if %{with_storage_iscsi_direct}
%define arg_storage_iscsi_direct -Dstorage_iscsi_direct=enabled -Dlibiscsi=enabled
%else
%define arg_storage_iscsi_direct -Dstorage_iscsi_direct=disabled -Dlibiscsi=disabled
%endif
%if %{with_libssh}
%define arg_libssh -Dlibssh=enabled
%else
%define arg_libssh -Dlibssh=disabled
%endif
%if %{with_libssh2}
%define arg_libssh2 -Dlibssh2=enabled
%else
%define arg_libssh2 -Dlibssh2=disabled
%endif
%if %{with_modular_daemons}
%define arg_remote_mode -Dremote_default_mode=direct
%else
%define arg_remote_mode -Dremote_default_mode=legacy
%endif
%if %{with_numactl}
%define arg_numactl -Dnumactl=enabled
%else
%define arg_numactl -Dnumactl=disabled
%endif
%if %{with_numad}
%define arg_numad -Dnumad=enabled
%else
%define arg_numad -Dnumad=disabled
%endif
%if %{with_userfaultfd_sysctl}
%define arg_userfaultfd_sysctl -Duserfaultfd_sysctl=enabled
%else
%define arg_userfaultfd_sysctl -Duserfaultfd_sysctl=disabled
%endif
%if %{with_nbdkit}
%define arg_nbdkit -Dnbdkit=enabled
%else
%define arg_nbdkit -Dnbdkit=disabled
%endif
%if %{with_nbdkit_config_default}
%define arg_nbdkit_config_default -Dnbdkit_config_default=enabled
%else
%define arg_nbdkit_config_default -Dnbdkit_config_default=disabled
%endif
%if %{with_apparmor}
%define arg_apparmor -Dapparmor=enabled -Dsecdriver_apparmor=enabled
%define arg_apparmor_profiles -Dapparmor_profiles=enabled
%else
%define arg_apparmor -Dapparmor=disabled -Dsecdriver_apparmor=disabled
%define arg_apparmor_profiles -Dapparmor_profiles=disabled
%endif
%if %{with_sanlock}
%define arg_sanlock -Dsanlock=enabled
%else
%define arg_sanlock -Dsanlock=disabled
%endif
%if %{with_firewalld_zone}
%define arg_firewalld_zone -Dfirewalld_zone=enabled
%else
%define arg_firewalld_zone -Dfirewalld_zone=disabled
%endif
%if %{with_wireshark}
%define arg_wireshark -Dwireshark_dissector=enabled
%else
%define arg_wireshark -Dwireshark_dissector=disabled
%endif
%define arg_selinux_mount -Dselinux_mount="/selinux"
# UEFI firmwares
# For SLE15 SP2 (Leap 15.2) and newer, use firmware descriptor files from the
# firmware packages, otherwise define firmwares via configure option
%if ! (0%{?suse_version} > 1500 || 0%{?sle_version} > 150100)
# x86_64 UEFI firmwares
# To more closely resemble actual hardware, we use the firmwares with
# embedded Microsoft keys
#
# The Windows HCK test requires a bigger variable store, so 4MB firmware
# images have been introduced. They are advertised first and will be
# used by default for new VM installations. The 2MB images are still
# available for existing VMs, and can be selected for new installations
# as well.
LOADERS="/usr/share/qemu/ovmf-x86_64-ms-4m-code.bin:/usr/share/qemu/ovmf-x86_64-ms-4m-vars.bin"
LOADERS="$LOADERS:/usr/share/qemu/ovmf-x86_64-ms-code.bin:/usr/share/qemu/ovmf-x86_64-ms-vars.bin"
# aarch64 UEFI firmwares
LOADERS="$LOADERS:/usr/share/qemu/aavmf-aarch64-code.bin:/usr/share/qemu/aavmf-aarch64-vars.bin"
%define arg_loader_nvram -Dloader-nvram="$LOADERS"
%endif
# Macros for moving vendor provided configuration from /etc to /usr
%if 0%{?suse_version} > 1500
%define logrotate_prefix %nil
%define logrotate_dir %{_distconfdir}/logrotate.d
# Prepare for migration to /usr/etc; save any old .rpmsave
%define libvirt_logrotate_pre() \
for sc in %{?*} ; do \
test -f "%{_sysconfdir}/logrotate.d/${sc}.rpmsave" || continue ; \
mv -v "%{_sysconfdir}/logrotate.d/${sc}.rpmsave" "%{_sysconfdir}/logrotate.d/${sc}.rpmsave.old" ; \
done \
%{nil}
%define libvirt_logrotate_posttrans() \
for sc in %{?*} ; do \
test -f "%{_sysconfdir}/logrotate.d/${sc}.rpmsave" || continue ; \
mv -v "%{_sysconfdir}/logrotate.d/${sc}.rpmsave" "%{_sysconfdir}/logrotate.d/${sc}" ; \
done \
%{nil}
%else
%define logrotate_prefix %config(noreplace)
%define logrotate_dir %{_sysconfdir}/logrotate.d
%define libvirt_logrotate_pre() %nil
%define libvirt_logrotate_posttrans() %nil
%endif
# The libvirt package has long redefined libexecdir. Stop the madness at SLE15.
# Factory and newer will use the product default for libexecdir
%if 0%{?suse_version} <= 1500
%define _libexecdir %{_libdir}/%{name}
%endif
%meson \
--libexecdir=%{_libexecdir} \
-Drunstatedir=%{_rundir} \
-Dunitdir=%{_unitdir} \
-Dsysusersdir=%{_sysusersdir} \
%{?arg_qemu} \
%{?arg_openvz} \
%{?arg_lxc} \
%{?arg_vbox} \
%{?arg_libxl} \
-Dsasl=enabled \
-Dpolkit=enabled \
-Ddriver_libvirtd=enabled \
-Ddriver_remote=enabled \
-Ddriver_test=enabled \
%{?arg_esx} \
%{?arg_hyperv} \
%{?arg_vmware} \
-Ddriver_vz=disabled \
-Ddriver_bhyve=disabled \
-Ddriver_ch=disabled \
%{?arg_remote_mode} \
%{?arg_interface} \
-Ddriver_network=enabled \
-Dstorage_fs=enabled \
-Dstorage_lvm=enabled \
-Dstorage_iscsi=enabled \
-Dstorage_scsi=enabled \
-Dstorage_disk=enabled \
-Dstorage_mpath=enabled \
%{?arg_storage_rbd} \
%{?arg_storage_gluster} \
%{?arg_storage_iscsi_direct} \
-Dstorage_zfs=disabled \
-Dstorage_vstorage=disabled \
%{?arg_numactl} \
%{?arg_numad} \
%{?arg_userfaultfd_sysctl} \
%{?arg_nbdkit} \
%{?arg_nbdkit_config_default} \
-Dssh_proxy=enabled \
-Dsysctl_config=enabled \
-Dcapng=enabled \
-Dfuse=enabled \
-Dnetcf=disabled \
%{?arg_netcontrol} \
-Dselinux=enabled \
%{?arg_selinux_mount} \
%{?arg_apparmor} \
%{?arg_apparmor_profiles} \
-Dudev=enabled \
-Djson_c=enabled \
%{?arg_sanlock} \
-Dlibpcap=enabled \
-Dlibnl=enabled \
-Daudit=enabled \
-Ddtrace=enabled \
-Dfirewalld=enabled \
%{?arg_firewalld_zone} \
%{?arg_wireshark} \
%{?arg_libssh} \
%{?arg_libssh2} \
-Dpm_utils=disabled \
-Dnss=enabled \
-Dqemu_user=%{qemu_user} \
-Dqemu_group=%{qemu_group} \
-Dqemu_moddir=%{qemu_moddir} \
-Dqemu_datadir=%{qemu_datadir} \
-Dexpensive_tests=enabled \
%{?arg_loader_nvram} \
-Dinit_script=systemd \
-Dfirewall_backend_priority=%{firewall_backend_priority} \
-Ddocs=enabled \
-Dtests=enabled \
-Drpath=disabled \
-Dlogin_shell=disabled \
-Dno_git=true \
%{nil}
%meson_build
%install
%meson_install
# Remove currently unsupported locale(s)
for dir in %{buildroot}/usr/share/locale/*
do
sdir=`echo $dir | sed "s|%{buildroot}||"`
if test -d $sdir ; then continue ; fi
rm -rfv "$dir"
done
%if 0%{?suse_version} > 1500
mkdir -p %{buildroot}/%{logrotate_dir}
mv %{buildroot}/%{_sysconfdir}/logrotate.d/libvirtd.lxc %{buildroot}/%{logrotate_dir}
mv %{buildroot}/%{_sysconfdir}/logrotate.d/libvirtd.qemu %{buildroot}/%{logrotate_dir}
mv %{buildroot}/%{_sysconfdir}/logrotate.d/libvirtd.libxl %{buildroot}/%{logrotate_dir}
mv %{buildroot}/%{_sysconfdir}/logrotate.d/libvirtd %{buildroot}/%{logrotate_dir}
%endif
mkdir -p %{buildroot}/%{_localstatedir}/lib/%{name}
%if %{with_qemu}
mkdir -p %{buildroot}/%{_sysconfdir}/%{name}/hooks
%endif
%find_lang %{name}
install -d -m 0755 %{buildroot}/%{_datadir}/%{name}/networks/
cp %{buildroot}/%{_sysconfdir}/%{name}/qemu/networks/default.xml \
%{buildroot}/%{_datadir}/%{name}/networks/default.xml
rm -f %{buildroot}/%{_sysconfdir}/%{name}/qemu/networks/default.xml
rm -f %{buildroot}/%{_sysconfdir}/%{name}/qemu/networks/autostart/default.xml
%if ! %{with_lxc}
rm -f %{buildroot}/%{_sysconfdir}/%{name}/lxc.conf
rm -f %{buildroot}/%{_datadir}/augeas/lenses/libvirtd_lxc.aug
rm -f %{buildroot}/%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug
rm -f %{buildroot}/%{logrotate_dir}/libvirtd.lxc
%endif
%if ! %{with_qemu}
rm -f %{buildroot}/%{_sysconfdir}/%{name}/qemu.conf
rm -f %{buildroot}/%{_sysconfdir}/apparmor.d/usr.sbin.virtqemud
rm -f %{buildroot}/%{_datadir}/augeas/lenses/libvirtd_qemu.aug
rm -f %{buildroot}/%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug
rm -f %{buildroot}/%{logrotate_dir}/libvirtd.qemu
%endif
%if ! %{with_libxl}
rm -f %{buildroot}/%{_sysconfdir}/%{name}/libxl.conf
rm -f %{buildroot}/%{_sysconfdir}/apparmor.d/usr.sbin.virtxend
rm -f %{buildroot}/%{logrotate_dir}/libvirtd.libxl
rm -f %{buildroot}/%{_datadir}/augeas/lenses/libvirtd_libxl.aug
rm -f %{buildroot}/%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug
%endif
%if ! %{with_sanlock}
rm -f %{buildroot}/%{_datadir}/augeas/lenses/libvirt_sanlock.aug
rm -f %{buildroot}/%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug
%endif
rm -f %{buildroot}/%{_sysusersdir}/libvirt-qemu.conf
rm -f %{buildroot}/usr/lib/sysctl.d/60-libvirtd.conf
# Install firewall services for migration ports
mkdir -p %{buildroot}/%{_fwdefdir}
install -m 644 %{S:3} %{buildroot}/%{_fwdefdir}/libvirtd-relocation-server.xml
# Install supportconfig plugin
mkdir -p %{buildroot}/usr/lib/supportconfig/plugins
install -m 755 %{S:1} %{buildroot}/usr/lib/supportconfig/plugins/libvirt
# Install qemu hook script
%if %{with_qemu}
install -m 755 %{S:2} %{buildroot}/%{_sysconfdir}/%{name}/hooks/qemu
%endif
%ifarch %{power64} s390x x86_64
mv %{buildroot}/%{_datadir}/systemtap/tapset/libvirt_probes.stp \
%{buildroot}/%{_datadir}/systemtap/tapset/libvirt_probes-64.stp
%if %{with_qemu}
mv %{buildroot}/%{_datadir}/systemtap/tapset/libvirt_qemu_probes.stp \
%{buildroot}/%{_datadir}/systemtap/tapset/libvirt_qemu_probes-64.stp
%endif
%endif
%check
export VIR_TEST_DEBUG=1
%meson_test -t 5 --no-suite syntax-check
# For daemons with only UNIX sockets
%define libvirt_daemon_systemd_pre() %service_add_pre %1.socket %1-ro.socket %1-admin.socket %1.service
%define libvirt_daemon_systemd_post() %service_add_post %1.socket %1-ro.socket %1-admin.socket %1.service
%define libvirt_daemon_systemd_preun() %service_del_preun %1.service %1-ro.socket %1-admin.socket %1.socket
%define libvirt_daemon_systemd_postun() %service_del_postun_without_restart %1.service %1-ro.socket %1-admin.socket %1.socket
%define libvirt_daemon_systemd_postun_restart() %service_del_postun %1.service %1-ro.socket %1-admin.socket %1.socket
# For daemons with UNIX and INET sockets
%define libvirt_daemon_systemd_pre_inet() %service_add_pre %1.socket %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket %1.service
%define libvirt_daemon_systemd_post_inet() %service_add_post %1.socket %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket %1.service
%define libvirt_daemon_systemd_preun_inet() %service_del_preun %1.service %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket %1.socket
%define libvirt_daemon_systemd_postun_inet() %service_del_postun_without_restart %1.service %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket %1.socket
%define libvirt_daemon_systemd_postun_inet_restart() %service_del_postun %1.service %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket %1.socket
# For daemons with only UNIX sockets and no unprivileged read-only access
%define libvirt_daemon_systemd_pre_priv() %service_add_pre %1.socket %1-admin.socket %1.service
%define libvirt_daemon_systemd_post_priv() %service_add_post %1.socket %1-admin.socket %1.service
%define libvirt_daemon_systemd_preun_priv() %service_del_preun %1.service %1-admin.socket %1.socket
%define libvirt_daemon_systemd_postun_priv() %service_del_postun_without_restart %1.service %1-admin.socket %1.socket
%define libvirt_daemon_systemd_postun_priv_restart() %service_del_postun %1.service %1-admin.socket %1.socket
%pre daemon
%libvirt_daemon_systemd_pre_inet libvirtd
%libvirt_logrotate_pre libvirtd
%post daemon
%if %{with_apparmor}
%apparmor_reload /etc/apparmor.d/usr.sbin.libvirtd
%endif
%libvirt_daemon_systemd_post_inet libvirtd
%preun daemon
%libvirt_daemon_systemd_preun_inet libvirtd
%postun daemon
%libvirt_daemon_systemd_postun_inet libvirtd
%posttrans daemon
%libvirt_logrotate_posttrans libvirtd
# All connection drivers should be installed post transaction.
# Time to restart the daemon
test -f %{_sysconfdir}/sysconfig/services && \
test -z "$DISABLE_RESTART_ON_UPDATE" && . %{_sysconfdir}/sysconfig/services
if test "$DISABLE_RESTART_ON_UPDATE" != yes && \
test "$DISABLE_RESTART_ON_UPDATE" != 1; then
%{_bindir}/systemctl try-restart libvirtd.service >/dev/null 2>&1 || :
fi
%pre daemon-common
%service_add_pre libvirt-guests
%post daemon-common
/sbin/ldconfig
%service_add_post libvirt-guests.service
%preun daemon-common
%service_del_preun libvirt-guests.service
if [ $1 = 0 ]; then
rm -f /var/lib/%{name}/libvirt-guests
fi
%postun daemon-common
/sbin/ldconfig
%service_del_postun_without_restart libvirt-guests.service
%pre daemon-proxy
%libvirt_daemon_systemd_pre_inet virtproxyd
%post daemon-proxy
%libvirt_daemon_systemd_post_inet virtproxyd
%preun daemon-proxy
%libvirt_daemon_systemd_preun_inet virtproxyd
%postun daemon-proxy
%libvirt_daemon_systemd_postun_inet virtproxyd
%pre daemon-lock
%libvirt_daemon_systemd_pre_priv virtlockd
%post daemon-lock
%libvirt_daemon_systemd_post_priv virtlockd
%preun daemon-lock
%libvirt_daemon_systemd_preun_priv virtlockd
%postun daemon-lock
%libvirt_daemon_systemd_postun_priv virtlockd
%posttrans daemon-lock
# virtlockd must not be restarted, otherwise the locks it uses to protect
# VM resources would be lost. It is safe to re-exec.
%{_bindir}/systemctl reload-or-try-restart virtlockd.service >/dev/null 2>&1 || :
%pre daemon-log
%libvirt_daemon_systemd_pre_priv virtlogd
%post daemon-log
%libvirt_daemon_systemd_post_priv virtlogd
%preun daemon-log
%libvirt_daemon_systemd_preun_priv virtlogd
%postun daemon-log
%libvirt_daemon_systemd_postun_priv virtlogd
%posttrans daemon-log
# virtlogd must not be restarted since it manages logs from virtual machine
# consoles. It is safe to re-exec.
%{_bindir}/systemctl reload-or-try-restart virtlogd.service >/dev/null 2>&1 || :
%pre daemon-driver-network
%libvirt_daemon_systemd_pre virtnetworkd
%post daemon-driver-network
%if %{with_firewalld_zone}
%firewalld_reload
%endif
%libvirt_daemon_systemd_post virtnetworkd
%preun daemon-driver-network
%libvirt_daemon_systemd_preun virtnetworkd
%postun daemon-driver-network
%if %{with_firewalld_zone}
%firewalld_reload
%endif
%libvirt_daemon_systemd_postun_restart virtnetworkd
%post daemon-config-network
# Install the default network if one doesn't exist
if test $1 -eq 1 && test ! -f %{_sysconfdir}/%{name}/qemu/networks/default.xml ; then
cp %{_datadir}/%{name}/networks/default.xml %{_sysconfdir}/%{name}/qemu/networks/default.xml
# libvirt saves this file with mode 0600
chmod 0600 %{_sysconfdir}/%{name}/qemu/networks/default.xml
fi
%pre daemon-driver-nwfilter
%libvirt_daemon_systemd_pre virtnwfilterd
%post daemon-driver-nwfilter
%libvirt_daemon_systemd_post virtnwfilterd
%preun daemon-driver-nwfilter
%libvirt_daemon_systemd_preun virtnwfilterd
%postun daemon-driver-nwfilter
%libvirt_daemon_systemd_postun_restart virtnwfilterd
%pre daemon-driver-storage-core
%libvirt_daemon_systemd_pre virtstoraged
%post daemon-driver-storage-core
%libvirt_daemon_systemd_post virtstoraged
%preun daemon-driver-storage-core
%libvirt_daemon_systemd_preun virtstoraged
%postun daemon-driver-storage-core
%libvirt_daemon_systemd_postun_restart virtstoraged
%pre daemon-driver-interface
%libvirt_daemon_systemd_pre virtinterfaced
%post daemon-driver-interface
%libvirt_daemon_systemd_post virtinterfaced
%preun daemon-driver-interface
%libvirt_daemon_systemd_preun virtinterfaced
%postun daemon-driver-interface
%libvirt_daemon_systemd_postun_restart virtinterfaced
%pre daemon-driver-nodedev
%libvirt_daemon_systemd_pre virtnodedevd
%post daemon-driver-nodedev
%libvirt_daemon_systemd_post virtnodedevd
%preun daemon-driver-nodedev
%libvirt_daemon_systemd_preun virtnodedevd
%postun daemon-driver-nodedev
%libvirt_daemon_systemd_postun_restart virtnodedevd
%pre daemon-driver-secret
%libvirt_daemon_systemd_pre virtsecretd
%post daemon-driver-secret
%libvirt_daemon_systemd_post virtsecretd
%preun daemon-driver-secret
%libvirt_daemon_systemd_preun virtsecretd
%postun daemon-driver-secret
%libvirt_daemon_systemd_postun_restart virtsecretd
%pre daemon-driver-qemu
%libvirt_daemon_systemd_pre virtqemud
%libvirt_logrotate_pre libvirtd.qemu
%post daemon-driver-qemu
%if %{with_apparmor}
%apparmor_reload /etc/apparmor.d/usr.sbin.virtqemud
%endif
%libvirt_daemon_systemd_post virtqemud
%preun daemon-driver-qemu
%libvirt_daemon_systemd_preun virtqemud
%postun daemon-driver-qemu
%libvirt_daemon_systemd_postun_restart virtqemud
%posttrans daemon-driver-qemu
%libvirt_logrotate_posttrans libvirtd.qemu
%pre daemon-driver-lxc
%libvirt_daemon_systemd_pre virtlxcd
%libvirt_logrotate_pre libvirtd.lxc
%post daemon-driver-lxc
%libvirt_daemon_systemd_post virtlxcd
%preun daemon-driver-lxc
%libvirt_daemon_systemd_preun virtlxcd
%postun daemon-driver-lxc
%libvirt_daemon_systemd_postun_restart virtlxcd
%posttrans daemon-driver-lxc
%libvirt_logrotate_posttrans libvirtd.lxc
%pre daemon-driver-libxl
%libvirt_daemon_systemd_pre virtxend
%libvirt_logrotate_pre libvirtd.libxl
%post daemon-driver-libxl
%if %{with_apparmor}
%apparmor_reload /etc/apparmor.d/usr.sbin.virtxend
%endif
%libvirt_daemon_systemd_post virtxend
%preun daemon-driver-libxl
%libvirt_daemon_systemd_preun virtxend
%postun daemon-driver-libxl
%libvirt_daemon_systemd_postun_restart virtxend
%posttrans daemon-driver-libxl
%libvirt_logrotate_posttrans libvirtd.libxl
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
%post nss -p /sbin/ldconfig
%postun nss -p /sbin/ldconfig
%files
%files daemon
%{_sbindir}/libvirtd
%{_unitdir}/libvirtd.service
%{_unitdir}/libvirtd.socket
%{_unitdir}/libvirtd-ro.socket
%{_unitdir}/libvirtd-admin.socket
%{_unitdir}/libvirtd-tcp.socket
%{_unitdir}/libvirtd-tls.socket
%config(noreplace) %{_sysconfdir}/%{name}/libvirtd.conf
%if %{with_apparmor}
%config(noreplace) %{_sysconfdir}/apparmor.d/usr.sbin.libvirtd
%endif
%{logrotate_prefix} %{logrotate_dir}/libvirtd
%dir %{_datadir}/augeas/
%dir %{_datadir}/augeas/lenses/
%dir %{_datadir}/augeas/lenses/tests/
%{_datadir}/augeas/lenses/libvirtd.aug
%{_datadir}/augeas/lenses/tests/test_libvirtd.aug
%doc %{_mandir}/man8/libvirtd.8*
%files daemon-common
%dir %{_libdir}/%{name}
%attr(0755, root, root) %{_libexecdir}/libvirt-guests.sh
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/hooks
%{_unitdir}/libvirt-guests.service
%{_unitdir}/virt-guest-shutdown.target
%{_bindir}/virt-admin
%{_bindir}/virt-host-validate
%dir %{_sysconfdir}/sasl2/
%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf
%{_datadir}/bash-completion/completions/virt-admin
%dir %{_localstatedir}/lib/%{name}/
%dir %attr(0755, root, root) %{_localstatedir}/lib/%{name}/
%dir %attr(0711, root, root) %{_localstatedir}/lib/%{name}/images/
%dir %attr(0711, root, root) %{_localstatedir}/lib/%{name}/filesystems/
%dir %attr(0711, root, root) %{_localstatedir}/lib/%{name}/boot/
%dir %attr(0711, root, root) %{_localstatedir}/cache/%{name}/
%dir %attr(0700, root, root) %{_localstatedir}/log/%{name}/
%if %{with_polkit_rules}
%{_datadir}/polkit-1/rules.d/50-libvirt.rules
%endif
%{_datadir}/polkit-1/actions/org.libvirt.unix.policy
%{_datadir}/polkit-1/actions/org.libvirt.api.policy
%attr(0755, root, root) %{_libexecdir}/libvirt_iohelper
%attr(0755, root, root) %{_bindir}/virt-ssh-helper
%doc %{_mandir}/man1/virt-admin.1*
%doc %{_mandir}/man1/virt-host-validate.1*
%doc %{_mandir}/man8/virt-ssh-helper.8*
%doc %{_mandir}/man8/libvirt-guests.8*
%if %{with_apparmor}
%dir %{_sysconfdir}/apparmor.d/
%dir %{_sysconfdir}/apparmor.d/abstractions/
%dir %{_sysconfdir}/apparmor.d/%{name}/
%config(noreplace) %{_sysconfdir}/apparmor.d/usr.lib.libvirt.virt-aa-helper
%config(noreplace) %{_sysconfdir}/apparmor.d/abstractions/libvirt-qemu
%config(noreplace) %{_sysconfdir}/apparmor.d/abstractions/libvirt-lxc
%config(noreplace) %{_sysconfdir}/apparmor.d/%{name}/TEMPLATE.lxc
%config(noreplace) %{_sysconfdir}/apparmor.d/%{name}/TEMPLATE.qemu
%{_libexecdir}/virt-aa-helper
%endif
%dir %{_prefix}/lib/firewalld/
%dir %{_fwdefdir}
%{_fwdefdir}/libvirtd-relocation-server.xml
%dir /usr/lib/supportconfig/
%dir /usr/lib/supportconfig/plugins/
/usr/lib/supportconfig/plugins/libvirt
%files daemon-lock
%{_sbindir}/virtlockd
%{_unitdir}/virtlockd.service
%{_unitdir}/virtlockd.socket
%{_unitdir}/virtlockd-admin.socket
%config(noreplace) %{_sysconfdir}/%{name}/virtlockd.conf
%{_datadir}/augeas/lenses/virtlockd.aug
%{_datadir}/augeas/lenses/tests/test_virtlockd.aug
%{_datadir}/augeas/lenses/libvirt_lockd.aug
%{_datadir}/augeas/lenses/tests/test_libvirt_lockd.aug
%doc %{_mandir}/man8/virtlockd.8*
%files daemon-plugin-lockd
%dir %attr(0755, root, root) %{_libdir}/%{name}/lock-driver
%attr(0755, root, root) %{_libdir}/%{name}/lock-driver/lockd.so
%files daemon-log
%{_sbindir}/virtlogd
%{_unitdir}/virtlogd.service
%{_unitdir}/virtlogd.socket
%{_unitdir}/virtlogd-admin.socket
%config(noreplace) %{_sysconfdir}/%{name}/virtlogd.conf
%{_datadir}/augeas/lenses/virtlogd.aug
%{_datadir}/augeas/lenses/tests/test_virtlogd.aug
%doc %{_mandir}/man8/virtlogd.8*
%files daemon-proxy
%{_sbindir}/virtproxyd
%{_unitdir}/virtproxyd.service
%{_unitdir}/virtproxyd.socket
%{_unitdir}/virtproxyd-ro.socket
%{_unitdir}/virtproxyd-admin.socket
%{_unitdir}/virtproxyd-tcp.socket
%{_unitdir}/virtproxyd-tls.socket
%config(noreplace) %{_sysconfdir}/%{name}/virtproxyd.conf
%{_datadir}/augeas/lenses/virtproxyd.aug
%{_datadir}/augeas/lenses/tests/test_virtproxyd.aug
%doc %{_mandir}/man8/virtproxyd.8*
%if %{with_qemu}
%files daemon-hooks
%{_sysconfdir}/%{name}/hooks/qemu
%endif
%files daemon-config-network
%dir %{_datadir}/%{name}/networks/
%{_datadir}/%{name}/networks/default.xml
%files daemon-config-nwfilter
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/nwfilter/
%config %{_sysconfdir}/%{name}/nwfilter/*.xml
%if %{with_interface}
%files daemon-driver-interface
%config(noreplace) %{_sysconfdir}/%{name}/virtinterfaced.conf
%{_datadir}/augeas/lenses/virtinterfaced.aug
%{_datadir}/augeas/lenses/tests/test_virtinterfaced.aug
%{_unitdir}/virtinterfaced.service
%{_unitdir}/virtinterfaced.socket
%{_unitdir}/virtinterfaced-ro.socket
%{_unitdir}/virtinterfaced-admin.socket
%{_sbindir}/virtinterfaced
%dir %{_libdir}/%{name}/connection-driver/
%{_libdir}/%{name}/connection-driver/libvirt_driver_interface.so
%doc %{_mandir}/man8/virtinterfaced.8*
%endif
%files daemon-driver-network
%config(noreplace) %{_sysconfdir}/%{name}/virtnetworkd.conf
%{_datadir}/augeas/lenses/virtnetworkd.aug
%{_datadir}/augeas/lenses/tests/test_virtnetworkd.aug
%config(noreplace) %{_sysconfdir}/%{name}/network.conf
%{_datadir}/augeas/lenses/libvirtd_network.aug
%{_datadir}/augeas/lenses/tests/test_libvirtd_network.aug
%{_unitdir}/virtnetworkd.service
%{_unitdir}/virtnetworkd.socket
%{_unitdir}/virtnetworkd-ro.socket
%{_unitdir}/virtnetworkd-admin.socket
%{_sbindir}/virtnetworkd
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/qemu/
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/qemu/networks/
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/qemu/networks/autostart/
%dir %attr(0700, root, root) %{_localstatedir}/lib/%{name}/network/
%dir %attr(0755, root, root) %{_localstatedir}/lib/%{name}/dnsmasq/
%attr(0755, root, root) %{_libexecdir}/libvirt_leaseshelper
%dir %{_libdir}/%{name}/connection-driver/
%{_libdir}/%{name}/connection-driver/libvirt_driver_network.so
%if %{with_firewalld_zone}
%dir %{_prefix}/lib/firewalld/zones/
%dir %{_prefix}/lib/firewalld/policies/
%{_prefix}/lib/firewalld/zones/libvirt.xml
%{_prefix}/lib/firewalld/zones/libvirt-routed.xml
%{_prefix}/lib/firewalld/policies/libvirt-routed-in.xml
%{_prefix}/lib/firewalld/policies/libvirt-routed-out.xml
%{_prefix}/lib/firewalld/policies/libvirt-to-host.xml
%endif
%doc %{_mandir}/man8/virtnetworkd.8*
%files daemon-driver-nodedev
%config(noreplace) %{_sysconfdir}/%{name}/virtnodedevd.conf
%{_datadir}/augeas/lenses/virtnodedevd.aug
%{_datadir}/augeas/lenses/tests/test_virtnodedevd.aug
%{_unitdir}/virtnodedevd.service
%{_unitdir}/virtnodedevd.socket
%{_unitdir}/virtnodedevd-ro.socket
%{_unitdir}/virtnodedevd-admin.socket
%{_sbindir}/virtnodedevd
%dir %{_libdir}/%{name}/connection-driver/
%{_libdir}/%{name}/connection-driver/libvirt_driver_nodedev.so
%doc %{_mandir}/man8/virtnodedevd.8*
%files daemon-driver-nwfilter
%config(noreplace) %{_sysconfdir}/%{name}/virtnwfilterd.conf
%{_datadir}/augeas/lenses/virtnwfilterd.aug
%{_datadir}/augeas/lenses/tests/test_virtnwfilterd.aug
%{_unitdir}/virtnwfilterd.service
%{_unitdir}/virtnwfilterd.socket
%{_unitdir}/virtnwfilterd-ro.socket
%{_unitdir}/virtnwfilterd-admin.socket
%{_sbindir}/virtnwfilterd
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/nwfilter/
%dir %{_libdir}/%{name}/connection-driver/
%{_libdir}/%{name}/connection-driver/libvirt_driver_nwfilter.so
%doc %{_mandir}/man8/virtnwfilterd.8*
%files daemon-driver-secret
%config(noreplace) %{_sysconfdir}/%{name}/virtsecretd.conf
%{_datadir}/augeas/lenses/virtsecretd.aug
%{_datadir}/augeas/lenses/tests/test_virtsecretd.aug
%{_unitdir}/virtsecretd.service
%{_unitdir}/virtsecretd.socket
%{_unitdir}/virtsecretd-ro.socket
%{_unitdir}/virtsecretd-admin.socket
%{_sbindir}/virtsecretd
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/secrets/
%dir %{_libdir}/%{name}/connection-driver/
%{_libdir}/%{name}/connection-driver/libvirt_driver_secret.so
%doc %{_mandir}/man8/virtsecretd.8*
%files daemon-driver-storage
%files daemon-driver-storage-core
%config(noreplace) %{_sysconfdir}/%{name}/virtstoraged.conf
%{_datadir}/augeas/lenses/virtstoraged.aug
%{_datadir}/augeas/lenses/tests/test_virtstoraged.aug
%{_unitdir}/virtstoraged.service
%{_unitdir}/virtstoraged.socket
%{_unitdir}/virtstoraged-ro.socket
%{_unitdir}/virtstoraged-admin.socket
%{_sbindir}/virtstoraged
%attr(0755, root, root) %{_libexecdir}/libvirt_parthelper
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/storage/
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/storage/autostart/
%dir %{_libdir}/%{name}/connection-driver/
%{_libdir}/%{name}/connection-driver/libvirt_driver_storage.so
%dir %{_libdir}/%{name}/storage-backend/
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_fs.so
%dir %{_libdir}/%{name}/storage-file/
%{_libdir}/%{name}/storage-file/libvirt_storage_file_fs.so
%doc %{_mandir}/man8/virtstoraged.8*
%files daemon-driver-storage-disk
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_disk.so
%files daemon-driver-storage-logical
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_logical.so
%files daemon-driver-storage-scsi
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_scsi.so
%files daemon-driver-storage-iscsi
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_iscsi.so
%files daemon-driver-storage-mpath
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_mpath.so
%if %{with_storage_gluster}
%files daemon-driver-storage-gluster
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_gluster.so
%{_libdir}/%{name}/storage-file/libvirt_storage_file_gluster.so
%endif
%if %{with_storage_rbd}
%files daemon-driver-storage-rbd
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_rbd.so
%endif
%if %{with_storage_iscsi_direct}
%files daemon-driver-storage-iscsi-direct
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_iscsi-direct.so
%endif
%if %{with_qemu}
%files daemon-driver-qemu
%config(noreplace) %{_sysconfdir}/%{name}/virtqemud.conf
%if %{with_apparmor}
%config(noreplace) %{_sysconfdir}/apparmor.d/usr.sbin.virtqemud
%endif
%if %{with_userfaultfd_sysctl}
%config(noreplace) %{_prefix}/lib/sysctl.d/60-qemu-postcopy-migration.conf
%endif
%{_datadir}/augeas/lenses/virtqemud.aug
%{_datadir}/augeas/lenses/tests/test_virtqemud.aug
%{_unitdir}/virtqemud.service
%{_unitdir}/virtqemud.socket
%{_unitdir}/virtqemud-ro.socket
%{_unitdir}/virtqemud-admin.socket
%{_sbindir}/virtqemud
%config(noreplace) %{_sysconfdir}/%{name}/qemu.conf
%config(noreplace) %{_sysconfdir}/%{name}/qemu-lockd.conf
%{logrotate_prefix} %{logrotate_dir}/libvirtd.qemu
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/qemu/autostart/
%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/%{name}/qemu/
%dir %attr(0750, root, root) %{_localstatedir}/cache/%{name}/qemu/
%dir %attr(0700, root, root) %{_localstatedir}/log/%{name}/qemu/
%{_datadir}/augeas/lenses/libvirtd_qemu.aug
%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug
%dir %{_libdir}/%{name}/connection-driver/
%{_libdir}/%{name}/connection-driver/libvirt_driver_qemu.so
%dir %attr(0711, root, root) %{_localstatedir}/lib/%{name}/swtpm/
%dir %attr(0711, root, root) %{_localstatedir}/log/swtpm/
%dir %attr(0711, root, root) %{_localstatedir}/log/swtpm/%{name}/
%dir %attr(0730, tss, tss) %{_localstatedir}/log/swtpm/%{name}/qemu/
%{_bindir}/virt-qemu-run
%doc %{_mandir}/man1/virt-qemu-run.1*
%doc %{_mandir}/man8/virtqemud.8*
%endif
%if %{with_lxc}
%files daemon-driver-lxc
%config(noreplace) %{_sysconfdir}/%{name}/virtlxcd.conf
%{_datadir}/augeas/lenses/virtlxcd.aug
%{_datadir}/augeas/lenses/tests/test_virtlxcd.aug
%{_unitdir}/virtlxcd.service
%{_unitdir}/virtlxcd.socket
%{_unitdir}/virtlxcd-ro.socket
%{_unitdir}/virtlxcd-admin.socket
%{_sbindir}/virtlxcd
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/lxc/
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/lxc/autostart/
%config(noreplace) %{_sysconfdir}/%{name}/lxc.conf
%{logrotate_prefix} %{logrotate_dir}/libvirtd.lxc
%dir %attr(0700, root, root) %{_localstatedir}/lib/%{name}/lxc/
%dir %attr(0700, root, root) %{_localstatedir}/log/%{name}/lxc/
%attr(0755, root, root) %{_libexecdir}/libvirt_lxc
%{_datadir}/augeas/lenses/libvirtd_lxc.aug
%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug
%dir %{_libdir}/%{name}/connection-driver/
%{_libdir}/%{name}/connection-driver/libvirt_driver_lxc.so
%{_bindir}/virt-create-rootfs
%doc %{_mandir}/man1/virt-create-rootfs.1*
%doc %{_mandir}/man8/virtlxcd.8*
%endif
%if %{with_libxl}
%files daemon-driver-libxl
%config(noreplace) %{_sysconfdir}/%{name}/virtxend.conf
%if %{with_apparmor}
%config(noreplace) %{_sysconfdir}/apparmor.d/usr.sbin.virtxend
%endif
%{_datadir}/augeas/lenses/virtxend.aug
%{_datadir}/augeas/lenses/tests/test_virtxend.aug
%{_unitdir}/virtxend.service
%{_unitdir}/virtxend.socket
%{_unitdir}/virtxend-ro.socket
%{_unitdir}/virtxend-admin.socket
%{_sbindir}/virtxend
%config(noreplace) %{_sysconfdir}/%{name}/libxl.conf
%{logrotate_prefix} %{logrotate_dir}/libvirtd.libxl
%config(noreplace) %{_sysconfdir}/%{name}/libxl-lockd.conf
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/libxl/
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/libxl/autostart/
%{_datadir}/augeas/lenses/libvirtd_libxl.aug
%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug
%dir %attr(0700, root, root) %{_localstatedir}/lib/%{name}/libxl/
%dir %attr(0700, root, root) %{_localstatedir}/lib/%{name}/libxl/dump/
%dir %attr(0700, root, root) %{_localstatedir}/lib/%{name}/libxl/save/
%dir %attr(0700, root, root) %{_localstatedir}/log/%{name}/libxl/
%dir %{_libdir}/%{name}/connection-driver/
%{_libdir}/%{name}/connection-driver/libvirt_driver_libxl.so
%doc %{_mandir}/man8/virtxend.8*
%endif
%if %{with_vbox}
%files daemon-driver-vbox
%config(noreplace) %{_sysconfdir}/%{name}/virtvboxd.conf
%{_datadir}/augeas/lenses/virtvboxd.aug
%{_datadir}/augeas/lenses/tests/test_virtvboxd.aug
%{_unitdir}/virtvboxd.service
%{_unitdir}/virtvboxd.socket
%{_unitdir}/virtvboxd-ro.socket
%{_unitdir}/virtvboxd-admin.socket
%{_sbindir}/virtvboxd
%{_libdir}/%{name}/connection-driver/libvirt_driver_vbox.so
%doc %{_mandir}/man8/virtvboxd.8*
%endif
%if %{with_qemu}
%files daemon-qemu
%endif
%if %{with_lxc}
%files daemon-lxc
%endif
%if %{with_libxl}
%files daemon-xen
%endif
%if %{with_vbox}
%files daemon-vbox
%endif
%files client
%doc %{_mandir}/man1/virsh.1*
%doc %{_mandir}/man1/virt-xml-validate.1*
%doc %{_mandir}/man1/virt-pki-query-dn.1*
%doc %{_mandir}/man1/virt-pki-validate.1*
%doc %{_mandir}/man7/virkey*.7*
%{_bindir}/virsh
%{_bindir}/virt-xml-validate
%{_bindir}/virt-pki-query-dn
%{_bindir}/virt-pki-validate
%{_datadir}/bash-completion/completions/virsh
%dir %{_libdir}/%{name}/
%if %{with_qemu}
%files client-qemu
%doc %{_mandir}/man1/virt-qemu-qmp-proxy.1*
%{_mandir}/man1/virt-qemu-sev-validate.1*
%{_bindir}/virt-qemu-qmp-proxy
%{_bindir}/virt-qemu-sev-validate
%endif
%files libs -f %{name}.lang
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/
%config(noreplace) %{_sysconfdir}/%{name}/libvirt.conf
%config(noreplace) %{_sysconfdir}/%{name}/libvirt-admin.conf
%{_libdir}/libvirt.so.*
%{_libdir}/libvirt-qemu.so.*
%{_libdir}/libvirt-lxc.so.*
%{_libdir}/libvirt-admin.so.*
%dir %{_datadir}/%{name}/
%dir %{_datadir}/%{name}/schemas/
%dir %{_datadir}/%{name}/cpu_map/
%{_datadir}/systemtap/tapset/libvirt_probes*.stp
%{_datadir}/systemtap/tapset/libvirt_functions.stp
%if %{with_qemu}
%{_datadir}/systemtap/tapset/libvirt_qemu_probes*.stp
%endif
%{_datadir}/%{name}/schemas/*.rng
%{_datadir}/%{name}/cpu_map/*.xml
%{_datadir}/%{name}/test-screenshot.png
%files devel
%{_libdir}/libvirt.so
%{_libdir}/libvirt-admin.so
%{_libdir}/libvirt-qemu.so
%{_libdir}/libvirt-lxc.so
%{_includedir}/%{name}
%{_libdir}/pkgconfig/libvirt.pc
%{_libdir}/pkgconfig/libvirt-admin.pc
%{_libdir}/pkgconfig/libvirt-qemu.pc
%{_libdir}/pkgconfig/libvirt-lxc.pc
%dir %{_datadir}/%{name}/api/
%{_datadir}/%{name}/api/libvirt-api.xml
%{_datadir}/%{name}/api/libvirt-admin-api.xml
%{_datadir}/%{name}/api/libvirt-qemu-api.xml
%{_datadir}/%{name}/api/libvirt-lxc-api.xml
%files doc
%doc NEWS.rst README.rst
%license COPYING COPYING.LESSER
%dir %{_datadir}/doc/%{name}/
%doc %{_datadir}/doc/%{name}/*
%if %{with_sanlock}
%files daemon-plugin-sanlock
%doc %{_mandir}/man8/virt-sanlock-cleanup.8*
%if %{with_qemu}
%config(noreplace) %{_sysconfdir}/%{name}/qemu-sanlock.conf
%endif
%if %{with_libxl}
%config(noreplace) %{_sysconfdir}/%{name}/libxl-sanlock.conf
%endif
%dir %{_libdir}/%{name}/lock-driver/
%attr(0755, root, root) %{_libdir}/%{name}/lock-driver/sanlock.so
%dir %{_datadir}/augeas/
%dir %{_datadir}/augeas/lenses/
%dir %{_datadir}/augeas/lenses/tests/
%{_datadir}/augeas/lenses/libvirt_sanlock.aug
%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug
%dir %attr(0700, root, sanlock) %{_localstatedir}/lib/%{name}/sanlock/
%{_sbindir}/virt-sanlock-cleanup
%attr(0755, root, root) %{_libexecdir}/libvirt_sanlock_helper
%endif
%if %{with_wireshark}
%files -n wireshark-plugin-libvirt
%dir %{wireshark_plugindir}/
%{wireshark_plugindir}/libvirt.so
%endif
%files nss
%{_libdir}/libnss_libvirt.so.2
%{_libdir}/libnss_libvirt_guest.so.2
%files ssh-proxy
%dir %{_sysconfdir}/ssh/
%dir %{_sysconfdir}/ssh/ssh_config.d/
%config(noreplace) %{_sysconfdir}/ssh/ssh_config.d/30-libvirt-ssh-proxy.conf
%{_libexecdir}/libvirt-ssh-proxy
%changelog