libvirt/libvirt.spec
James Fehlig e8379ff946 Accepting request 453025 from home:jfehlig:branches:Virtualization
- Fix dom0 ballooning with Xen >= 4.8
  libxl-dom0-balloon-fix.patch
  bsc#1020755

- SLE12 SP2 bugs merged via version updates of the Factory libvirt
  package:
  bsc#996020, bsc#987002, bsc#997278, bsc#998005, bsc#998389,
  bsc#1001446, bsc#1001698, bsc#1005288, bsc#1013991, bsc#1016253,
  bsc#1017086, bsc#1017762, bsc#1018189

- virt-create-rootfs is a temporary SLE-only hack that was never
  added to the Factory libvirt package, causing it to be dropped
  when rebasing SLE on Factory. Add it now but only apply
  associated patch when building for SLE.
  virt-create-rootfs.patch
  bsc#995981

OBS-URL: https://build.opensuse.org/request/show/453025
OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=579
2017-01-27 18:41:04 +00:00

1646 lines
53 KiB
RPMSpec

#
# spec file for package libvirt
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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 http://bugs.opensuse.org/
#
# The configuration of libvirt is modified slightly for SLE
%define with_sle_build %{?is_opensuse:0}%{!?is_opensuse:1}
# openSUSE13.1 and 13.2 do not understand %is_opensuse. Check for those
# explicitly and disable SLE build
%if 0%{?suse_version} == 1310 || 0%{?suse_version} == 1320
%define with_sle_build 0
%endif
# The hypervisor drivers that run in libvirtd
%define with_xen 0%{!?_without_xen:1}
%define with_qemu 0%{!?_without_qemu:1}
%define with_lxc 0%{!?_without_lxc:1}
%define with_uml 0%{!?_without_uml:1}
%define with_libxl 0%{!?_without_libxl:1}
%define with_vbox 0%{!?_without_vbox:1}
# Then the hypervisor drivers that run outside libvirtd, in libvirt.so
%define with_openvz 0%{!?_without_openvz:1}
%define with_vmware 0%{!?_without_vmware:1}
%define with_phyp 0%{!?_without_phyp:0}
%define with_esx 0%{!?_without_esx:1}
%define with_hyperv 0%{!?_without_hyperv:0}
# Then the secondary host drivers, which run inside libvirtd
%define with_storage_rbd 0%{!?_without_storage_rbd:0}
%define with_storage_sheepdog 0
%define with_storage_gluster 0
%define with_apparmor 0%{!?_without_apparmor:1}
# Optional bits on by default
%define with_sanlock 0%{!?_without_sanlock:1}
%define with_polkit_rules 1
# A few optional bits off by default, we enable later
%define with_cgconfig 0%{!?_without_cgconfig:0}
%define with_systemd 0%{!?_without_systemd:0}
%define with_numactl 0%{!?_without_numactl:0}
%define with_numad 0%{!?_without_numad:0}
%define with_firewalld 0%{!?_without_firewalld:0}
%define with_wireshark 0%{!?_without_wireshark:0}
%define with_libssh 0%{!?_without_libssh:0}
# Xen no longer contains xm/xend so disable building the legacy Xen driver
%define with_xen 0
# Set the OS / architecture specific special cases
# Xen is available only on x86_64 and arm
%ifnarch x86_64 %arm aarch64
%define with_xen 0
%define with_libxl 0
%endif
# For SLE, further restrice Xen support to x86_64 only
%if %{with_sle_build}
%ifarch %arm aarch64
%define with_xen 0
%define with_libxl 0
%endif
%endif
# Enable numactl for most architectures. Handle aarch64 separately
%ifnarch s390 s390x %arm %ix86 aarch64
%define with_numactl 0%{!?_without_numactl:1}
%endif
# For aarch64, numactl is only available on newer than 1320, or SLE12
# family newer than 120100
%ifarch aarch64
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && ( 0%{?sle_version} > 120100 ) )
%define with_numactl 0%{!?_without_numactl:1}
%endif
%endif
# vbox is available only on i386 x86_64
%ifnarch %{ix86} x86_64
%define with_vbox 0
%endif
# Disable hypervisor drivers not supported in SLE
%if %{with_sle_build}
%define with_openvz 0
%define with_vbox 0
%define with_uml 0
%define with_vmware 0
%define with_hyperv 0
%endif
# Enable phyp driver for IBM Power systems
%ifarch ppc64
%define with_phyp 1
%endif
# rbd enablement is a bit tricky. For x86_64
%ifarch x86_64
# enable on anything newer than 1320, or SLE12 family newer than 120100
# use librbd-devel as build dependency
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && ( 0%{?sle_version} > 120100 ) )
%define with_storage_rbd 0%{!?_without_storage_rbd:1}
%define with_rbd_lib librbd-devel
%endif
# enable for SLE12 family <= 120100 (SLE12GA/SP1, Leap 42.1)
# use ceph-devel as build dependency
%if 0%{?suse_version} == 1315 && 0%{?sle_version} <= 120100
%define with_storage_rbd 0%{!?_without_storage_rbd:1}
%define with_rbd_lib ceph-devel
%endif
%endif
# For arm
%ifarch aarch64
# enable on anything newer than 1320, or SLE12 newer than 120100
# use librbd-devel as build dependency
%if 0%{?suse_version} > 1320 || ( 0%{?is_opensuse} == 0 && 0%{?sle_version} > 120100 )
%define with_storage_rbd 0%{!?_without_storage_rbd:1}
%define with_rbd_lib librbd-devel
%endif
%endif
# Support systemd on 12.1 and later
%if 0%{?suse_version} >= 1210
%define with_systemd 0%{!?_without_systemd:1}
%endif
# libvirt commit 37397320 changed the configure check for wireshark to
# use pkgconfig, but our wireshark packages do not provide wireshark.pc.
# Disable the dissector for now
%define with_wireshark 0
# numad is used to manage the CPU and memory placement dynamically for
# qemu, lxc, and uml drivers
%if %{with_qemu} || %{with_lxc} || %{with_uml}
# Enable numad for most architectures. Handle aarch64 separately
%ifnarch s390 s390x %arm %ix86 aarch64
%define with_numad 0%{!?_without_numad:1}
%endif
# For aarch64, enable on anything newer than 1320, or SLE12 family newer
# than 120100
%ifarch aarch64
%if 0%{?suse_version} > 1320 || ( 0%{?suse_version} == 1315 && 0%{?sle_version} > 120100 )
%define with_numad 0%{!?_without_numad:1}
%endif
%endif
%endif
# Force QEMU to run as qemu:qemu
%define qemu_user qemu
%define qemu_group qemu
# Pull in cgroups config system
%if %{with_qemu} || %{with_lxc}
%define with_cgconfig 0%{!?_without_cgconfig:1}
%endif
%define _fwdefdir /etc/sysconfig/SuSEfirewall2.d/services
Name: libvirt
Url: http://libvirt.org/
Version: 3.0.0
Release: 0
Summary: Library providing a simple virtualization API
License: LGPL-2.1+
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
Requires: libvirt-daemon-config-network = %{version}-%{release}
Requires: libvirt-daemon-config-nwfilter = %{version}-%{release}
%if %{with_libxl}
Requires: libvirt-daemon-driver-libxl = %{version}-%{release}
%endif
%if %{with_lxc}
Requires: libvirt-daemon-driver-lxc = %{version}-%{release}
%endif
%if %{with_qemu}
Requires: libvirt-daemon-driver-qemu = %{version}-%{release}
%endif
%if %{with_uml}
Requires: libvirt-daemon-driver-uml = %{version}-%{release}
%endif
%if %{with_xen}
Requires: libvirt-daemon-driver-xen = %{version}-%{release}
%endif
%if %{with_vbox}
Requires: libvirt-daemon-driver-vbox = %{version}-%{release}
%endif
Requires: libvirt-client = %{version}-%{release}
Requires: libvirt-daemon-driver-interface = %{version}-%{release}
Requires: libvirt-daemon-driver-network = %{version}-%{release}
Requires: libvirt-daemon-driver-nodedev = %{version}-%{release}
Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
Requires: libvirt-daemon-driver-secret = %{version}-%{release}
Requires: libvirt-daemon-driver-storage = %{version}-%{release}
Requires: libvirt-libs = %{version}-%{release}
# All build-time requirements. Run-time requirements are
# listed against each sub-RPM
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: gettext-tools
BuildRequires: libtool
# Needed for virkmodtest in 'make check'
BuildRequires: modutils
%if %{with_systemd}
BuildRequires: systemd
BuildRequires: pkgconfig(systemd)
%endif
%if %{with_xen} || %{with_libxl}
BuildRequires: xen-devel
%endif
BuildRequires: fdupes
BuildRequires: libattr-devel
BuildRequires: libgcrypt-devel
BuildRequires: libgnutls-devel
BuildRequires: libtasn1-devel
BuildRequires: libxml2-devel
BuildRequires: libxslt
BuildRequires: ncurses-devel
BuildRequires: perl
BuildRequires: python
BuildRequires: python-xml
BuildRequires: readline-devel
BuildRequires: xhtml-dtd
# perl XPath is needed since we have a patch touching files that cause
# hvsupport.html to be regenerated
BuildRequires: perl(XML::XPath)
# For pool-build probing for existing pools
BuildRequires: libblkid-devel >= 2.17
BuildRequires: libpciaccess0-devel >= 0.10.9
BuildRequires: libudev-devel >= 145
BuildRequires: libyajl-devel
%if %{with_sanlock}
BuildRequires: sanlock-devel >= 2.4
%endif
BuildRequires: libavahi-devel
BuildRequires: libnl3-devel
BuildRequires: libpcap-devel
BuildRequires: libselinux-devel
%if %{with_apparmor}
BuildRequires: libapparmor-devel
%endif
BuildRequires: dnsmasq >= 2.41
BuildRequires: iptables
# TODO BuildRequires: iptables-ipv6
BuildRequires: cyrus-sasl-devel
BuildRequires: ebtables
BuildRequires: polkit >= 0.93
BuildRequires: polkit-devel >= 0.93
BuildRequires: radvd
# For mount/umount in FS driver
BuildRequires: util-linux
# For LVM drivers
BuildRequires: lvm2
# For ISCSI driver
BuildRequires: open-iscsi
# For disk driver
BuildRequires: parted-devel
# For Multipath support
BuildRequires: device-mapper-devel
%if %{with_storage_rbd}
BuildRequires: %{with_rbd_lib}
%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
BuildRequires: libnetcontrol-devel >= 0.2.0
BuildRequires: libssh2-devel
%if %{with_esx}
BuildRequires: libcurl-devel
%endif
%if %{with_hyperv}
BuildRequires: libwsman-devel >= 2.2.3
%endif
BuildRequires: audit-devel
# we need /usr/sbin/dtrace
BuildRequires: systemtap-sdt-devel
%if %{with_numad}
BuildRequires: numad
%endif
%if %{with_wireshark}
BuildRequires: wireshark-devel >= 1.12.1
%endif
%if %{with_libssh}
BuildRequires: libssh-devel >= 0.7.0
%endif
Source0: %{name}-%{version}.tar.xz
Source1: %{name}-%{version}.tar.xz.asc
Source2: %{name}.keyring
Source3: libvirtd.init
Source4: libvirtd-relocation-server.fw
Source99: baselibs.conf
Source100: %{name}-rpmlintrc
# Upstream patches
Patch0: b018ada3-shunloadtest-build-fix.patch
# Patches pending upstream review
Patch100: libxl-dom-reset.patch
Patch101: libxl-dom0-balloon-fix.patch
# Need to go upstream
Patch150: xen-pv-cdrom.patch
Patch151: blockcopy-check-dst-identical-device.patch
Patch152: libvirt-power8-models.patch
Patch153: ppc64le-canonical-name.patch
Patch154: libxl-set-migration-constraints.patch
Patch155: libxl-set-cach-mode.patch
Patch156: apparmor-fixes.patch
# Our patches
Patch200: libvirtd-defaults.patch
Patch201: libvirtd-init-script.patch
Patch202: libvirt-guests-init-script.patch
Patch203: virtlockd-init-script.patch
Patch204: virtlogd-init-script.patch
Patch205: suse-qemu-conf.patch
Patch206: support-managed-pci-xen-driver.patch
Patch207: systemd-service-xen.patch
Patch208: xen-sxpr-disk-type.patch
Patch209: libxl-support-block-script.patch
Patch210: apparmor-no-mount.patch
Patch211: qemu-apparmor-screenshot.patch
Patch212: libvirt-suse-netcontrol.patch
Patch213: lxc-wait-after-eth-del.patch
Patch214: libxl-qemu-emulator-caps.patch
# Similar to upstream, temporarily disable qemu namespaces until all issues
# are resolved. See
# https://www.redhat.com/archives/libvir-list/2017-January/msg00790.html
Patch300: qemu-disable-namespaces.patch
# SLES-Only patches
%if %{with_sle_build}
Patch400: virt-create-rootfs.patch
%endif
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.
Authors:
--------
Daniel Veillard <veillard@redhat.com>
Karel Zak <kzak@redhat.com>
%package doc
Summary: API reference and website documentation
Group: Development/Libraries/C and C++
%description doc
Includes the API reference for the libvirt C library, and a complete
copy of the libvirt.org website documentation.
%package daemon
Summary: Server side daemon and supporting files for libvirt library
Group: Development/Libraries/C and C++
# All runtime requirements for the libvirt package (runtime requirements
# for subpackages are listed later in those subpackages)
# The client side, i.e. shared libs are in a subpackage
Requires: %{name}-libs = %{version}-%{release}
# for modprobe of pci devices
Requires: modutils
# for /sbin/ip & /sbin/tc
Requires: bridge-utils
Requires: iproute
Requires: logrotate
Requires: udev >= 145
Recommends: polkit >= 0.93
%ifarch i386 i586 i686 x86_64 ia64
# For virConnectGetSysinfo
Requires: dmidecode
%endif
%if %{with_systemd}
# For service management
%{?systemd_requires}
%endif
%if %{with_numad}
Requires: numad
%endif
%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-config-network
Summary: Default configuration files for the libvirtd daemon
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
Requires: libvirt-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
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
Requires: libvirt-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
Group: Development/Libraries/C and C++
Requires: dnsmasq >= 2.41
Requires: iptables
# TODO Requires: iptables-ipv6
Requires: libvirt-daemon = %{version}-%{release}
Requires: radvd
%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
Group: Development/Libraries/C and C++
Requires: ebtables
Requires: iptables
# TODO Requires: iptables-ipv6
Requires: libvirt-daemon = %{version}-%{release}
%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
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
%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
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{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
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{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
Summary: Storage driver plugin for the libvirtd daemon
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
Requires: nfs-utils
# For mkfs
Requires: util-linux
%if %{with_qemu}
# From QEMU RPMs
Requires: /usr/bin/qemu-img
%endif
# For LVM drivers
Requires: lvm2
# For ISCSI driver
Requires: open-iscsi
# For disk driver
Requires: device-mapper
Requires: parted
# For multipath support
Requires: device-mapper
%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.
%if %{with_qemu}
%package daemon-driver-qemu
Summary: Qemu driver plugin for the libvirtd daemon
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
# There really is a hard cross-driver dependency here
Requires: /usr/bin/qemu-img
Requires: libvirt-daemon-driver-network = %{version}-%{release}
Requires: libvirt-daemon-driver-storage = %{version}-%{release}
# For image compression
Requires: bzip2
Requires: gzip
Requires: lzop
Requires: qemu
Requires: xz
%description daemon-driver-qemu
The qemu driver plugin for the libvirtd daemon, providing
an implementation of the hypervisor driver APIs using QEMU.
%endif
%if %{with_lxc}
%package daemon-driver-lxc
Summary: LXC driver plugin for the libvirtd daemon
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
# There really is a hard cross-driver dependency here
Requires: libvirt-daemon-driver-network = %{version}-%{release}
%description daemon-driver-lxc
The LXC driver plugin for the libvirtd daemon, providing
an implementation of the hypervisor driver APIs using
the Linux kernel
%endif
%if %{with_uml}
%package daemon-driver-uml
Summary: Uml driver plugin for the libvirtd daemon
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
%description daemon-driver-uml
The UML driver plugin for the libvirtd daemon, providing
an implementation of the hypervisor driver APIs using
User Mode Linux
%endif
%if %{with_xen}
%package daemon-driver-xen
Summary: Xen driver plugin for the libvirtd daemon
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
%description daemon-driver-xen
The Xen driver plugin for the libvirtd daemon, providing
an implementation of the hypervisor driver APIs using Xen.
%endif
%if %{with_vbox}
%package daemon-driver-vbox
Summary: VirtualBox driver plugin for the libvirtd daemon
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
%description daemon-driver-vbox
The vbox driver plugin for the libvirtd daemon, providing
an implementation of the hypervisor driver APIs using
VirtualBox
%endif
%if %{with_libxl}
%package daemon-driver-libxl
Summary: Libxl driver plugin for the libvirtd daemon
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
%description daemon-driver-libxl
The Libxl driver plugin for the libvirtd daemon, providing
an implementation of the hypervisor driver APIs using libxl.
%endif
%if %{with_qemu}
%package daemon-qemu
Summary: Server side daemon & driver required to run QEMU guests
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
Requires: libvirt-daemon-driver-interface = %{version}-%{release}
Requires: libvirt-daemon-driver-network = %{version}-%{release}
Requires: libvirt-daemon-driver-nodedev = %{version}-%{release}
Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
Requires: libvirt-daemon-driver-qemu = %{version}-%{release}
Requires: libvirt-daemon-driver-secret = %{version}-%{release}
%description daemon-qemu
Server side daemon and driver required to manage the virtualization
capabilities of the QEMU emulators
%endif
%if %{with_lxc}
%package daemon-lxc
Summary: Server side daemon & driver required to run LXC guests
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
Requires: libvirt-daemon-driver-interface = %{version}-%{release}
Requires: libvirt-daemon-driver-lxc = %{version}-%{release}
Requires: libvirt-daemon-driver-network = %{version}-%{release}
Requires: libvirt-daemon-driver-nodedev = %{version}-%{release}
Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
Requires: libvirt-daemon-driver-secret = %{version}-%{release}
Requires: libvirt-daemon-driver-storage = %{version}-%{release}
%description daemon-lxc
Server side daemon and driver required to manage the virtualization
capabilities of LXC
%endif
%if %{with_uml}
%package daemon-uml
Summary: Server side daemon & driver required to run UML guests
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
Requires: libvirt-daemon-driver-interface = %{version}-%{release}
Requires: libvirt-daemon-driver-network = %{version}-%{release}
Requires: libvirt-daemon-driver-nodedev = %{version}-%{release}
Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
Requires: libvirt-daemon-driver-secret = %{version}-%{release}
Requires: libvirt-daemon-driver-storage = %{version}-%{release}
Requires: libvirt-daemon-driver-uml = %{version}-%{release}
%description daemon-uml
Server side daemon and driver required to manage the virtualization
capabilities of UML
%endif
%if %{with_xen} || %{with_libxl}
%package daemon-xen
Summary: Server side daemon & driver required to run XEN guests
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
%if %{with_xen}
Requires: libvirt-daemon-driver-xen = %{version}-%{release}
%endif
%if %{with_libxl}
Requires: libvirt-daemon-driver-libxl = %{version}-%{release}
%endif
Requires: libvirt-daemon-driver-interface = %{version}-%{release}
Requires: libvirt-daemon-driver-network = %{version}-%{release}
Requires: libvirt-daemon-driver-nodedev = %{version}-%{release}
Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
Requires: libvirt-daemon-driver-secret = %{version}-%{release}
Requires: libvirt-daemon-driver-storage = %{version}-%{release}
Requires: xen
%description daemon-xen
Server side daemon and driver required to manage the virtualization
capabilities of XEN
%endif
%if %{with_vbox}
%package daemon-vbox
Summary: Server side daemon & driver required to run VirtualBox guests
Group: Development/Libraries/C and C++
Requires: libvirt-daemon = %{version}-%{release}
Requires: libvirt-daemon-driver-interface = %{version}-%{release}
Requires: libvirt-daemon-driver-network = %{version}-%{release}
Requires: libvirt-daemon-driver-nodedev = %{version}-%{release}
Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
Requires: libvirt-daemon-driver-secret = %{version}-%{release}
Requires: libvirt-daemon-driver-storage = %{version}-%{release}
Requires: libvirt-daemon-driver-vbox = %{version}-%{release}
# Specify supported virtualbox API explicitly. See ./src/vbox
# Reference bsc#1017189
Requires: virtualbox < 5.2
%description daemon-vbox
Server side daemon and driver required to manage the virtualization
capabilities of VirtualBox
%endif
%package client
Summary: Client side utilities of the libvirt library
Group: Development/Libraries/C and C++
Requires: %{name}-libs = %{version}-%{release}
Requires: ncurses
Requires: readline
# Needed by libvirt-guests init script.
Requires: gettext-runtime
# Needed by virt-pki-validate script.
Requires: cyrus-sasl
Requires: gnutls
%description client
The client binaries needed to access the virtualization
capabilities of recent versions of Linux (and other OSes).
%package libs
Summary: Client side libraries
Group: Development/Libraries/C and C++
# So remote clients can access libvirt over SSH tunnel
# (client invokes 'nc' against the UNIX socket on the server)
Requires: netcat-openbsd
# 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 admin
Summary: Set of tools to control libvirt daemon
Group: Development/Libraries/C and C++
Requires: %{name}-libs = %{version}-%{release}
Requires: readline
%description admin
The client side utilities to control the libvirt daemon.
%package devel
Summary: Libraries, includes, etc. to compile with the libvirt library
Group: Development/Libraries/C and C++
Requires: %{name}-client = %{version}-%{release}
Requires: %{name}-doc = %{version}-%{release}
Requires: pkg-config
%description devel
Include header files & development libraries for the libvirt C library.
%if %{with_sanlock}
%package lock-sanlock
Summary: Sanlock lock manager plugin for QEMU driver
Group: Development/Libraries/C and C++
Requires: sanlock >= 2.4
# for virt-sanlock-cleanup require augeas
Requires: %{name}-daemon = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Requires: augeas
%description lock-sanlock
Includes the Sanlock lock manager plugin for the QEMU driver
%endif
%if %{with_wireshark}
%package -n wireshark-plugin-libvirt
Summary: Wireshark plugin for libvirt RPC protocol
Group: Productivity/Networking/Diagnostic
Requires: %{name}-libs = %{version}-%{release}
Requires: wireshark
%description -n wireshark-plugin-libvirt
Wireshark dissector plugin for better analysis of libvirt RPC traffic.
%endif
%package nss
Summary: Libvirt plugin for Name Service Switch
Group: Development/Libraries/C and C++
Requires: libvirt-daemon-driver-network = %{version}-%{release}
%description nss
libvirt plugin for NSS for translating domain names into IP addresses.
%prep
%setup -q
%patch0 -p1
%patch100 -p1
%patch101 -p1
%patch150 -p1
%patch151 -p1
%patch152 -p1
%patch153 -p1
%patch154 -p1
%patch155 -p1
%patch156 -p1
%patch200 -p1
%patch201 -p1
%patch202 -p1
%patch203 -p1
%patch204 -p1
%patch205 -p1
%patch206 -p1
%patch207 -p1
%patch208 -p1
%patch209 -p1
%patch210 -p1
%patch211 -p1
%patch212 -p1
%patch213 -p1
%patch214 -p1
%patch300 -p1
%if %{with_sle_build}
%patch400 -p1
%endif
%build
%if %{with_xen}
%define arg_xen --with-xen
%else
%define arg_xen --without-xen
%endif
%if %{with_qemu}
%define arg_qemu --with-qemu
%else
%define arg_qemu --without-qemu
%endif
%if %{with_openvz}
%define arg_openvz --with-openvz
%else
%define arg_openvz --without-openvz
%endif
%if %{with_lxc}
%define arg_lxc --with-lxc
%else
%define arg_lxc --without-lxc
%endif
%if %{with_vbox}
%define arg_vbox --with-vbox
%else
%define arg_vbox --without-vbox
%endif
%if %{with_uml}
%define arg_uml --with-uml
%else
%define arg_uml --without-uml
%endif
%if %{with_phyp}
%define arg_phyp --with-phyp
%else
%define arg_phyp --without-phyp
%endif
%if %{with_esx}
%define arg_esx --with-esx
%else
%define arg_esx --without-esx
%endif
%if %{with_vmware}
%define arg_vmware --with-vmware
%else
%define arg_vmware --without-vmware
%endif
%if %{with_hyperv}
%define arg_hyperv --with-hyperv
%else
%define arg_hyperv --without-hyperv
%endif
%if %{with_libxl}
%define arg_libxl --with-libxl
%else
%define arg_libxl --without-libxl
%endif
%if %{with_storage_rbd}
%define arg_storage_rbd --with-storage-rbd
%else
%define arg_storage_rbd --without-storage-rbd
%endif
%if %{with_storage_sheepdog}
%define arg_storage_sheepdog --with-storage-sheepdog
%else
%define arg_storage_sheepdog --without-storage-sheepdog
%endif
%if %{with_storage_gluster}
%define arg_storage_gluster --with-storage-gluster
%else
%define arg_storage_gluster --without-storage-gluster
%endif
%if %{with_numactl}
%define arg_numactl --with-numactl
%else
%define arg_numactl --without-numactl
%endif
%if %{with_numad}
%define arg_numad --with-numad
%else
%define arg_numad --without-numad
%endif
%if %{with_apparmor}
%define arg_apparmor --with-apparmor
%define arg_apparmor_profiles --with-apparmor-profiles
%else
%define arg_apparmor --without-apparmor
%endif
%if %{with_sanlock}
%define arg_sanlock --with-sanlock
%else
%define arg_sanlock --without-sanlock
%endif
%if %{with_systemd}
%define arg_init_script --with-init-script=systemd
%else
%define arg_init_script --with-init-script=redhat
%endif
%if %{with_firewalld}
%define arg_firewalld --with-firewalld
%else
%define arg_firewalld --without-firewalld
%endif
%if %{with_wireshark}
%define arg_wireshark --with-wireshark-dissector
%else
%define arg_wireshark --without-wireshark-dissector
%endif
%define arg_selinux_mount --with-selinux-mount="/selinux"
# x86_64 UEFI firmwares
# To more closely resemble actual hardware, we use the firmwares with
# embedded Microsoft keys
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 --with-loader-nvram="$LOADERS"
autoreconf -f -i
export CFLAGS="$RPM_OPT_FLAGS"
%configure --disable-static --with-pic \
%{?arg_xen} \
%{?arg_qemu} \
%{?arg_openvz} \
%{?arg_lxc} \
%{?arg_vbox} \
%{?arg_libxl} \
--with-sasl \
--with-avahi \
--with-polkit \
--with-libvirtd \
%{?arg_uml} \
%{?arg_phyp} \
%{?arg_esx} \
%{?arg_hyperv} \
%{?arg_vmware} \
--without-xenapi \
--without-vz \
--without-bhyve \
--with-interface \
--with-network \
--with-storage-fs \
--with-storage-lvm \
--with-storage-iscsi \
--with-storage-disk \
--with-storage-mpath \
%{?arg_storage_rbd} \
%{?arg_storage_sheepdog} \
%{?arg_storage_gluster} \
%{?arg_numactl} \
%{?arg_numad} \
--with-capng \
--with-fuse \
--without-netcf \
--with-netcontrol \
--with-selinux \
%{?arg_selinux_mount} \
%{?arg_apparmor} \
%{?arg_apparmor_profiles} \
--with-udev \
--with-yajl \
%{?arg_sanlock} \
--with-libpcap \
--with-macvtap \
--with-audit \
--with-dtrace \
--with-driver-modules \
%{?arg_firewalld} \
%{?arg_wireshark} \
--with-nss-plugin \
--libexecdir=%{_libdir}/%{name} \
--with-qemu-user=%{qemu_user} \
--with-qemu-group=%{qemu_group} \
%{?arg_loader_nvram} \
--without-login-shell \
%{arg_init_script} \
ac_cv_path_MODPROBE=/sbin/modprobe \
ac_cv_path_UDEVADM=/sbin/udevadm \
ac_cv_path_SHOWMOUNT=/usr/sbin/showmount \
ac_cv_path_PARTED=/usr/sbin/parted \
ac_cv_path_QEMU_BRIDGE_HELPER=/usr/lib/qemu-bridge-helper
make V=1 %{?jobs:-j%jobs} HTML_DIR=%{_docdir}/%{name}
gzip -9 ChangeLog
%install
%makeinstall SYSTEMD_UNIT_DIR=%{_unitdir} HTML_DIR=%{_docdir}/%{name}
make %{?jobs:-j%jobs} -C examples distclean
cp examples/lxcconvert/virt-lxc-convert $RPM_BUILD_ROOT%{_bindir}
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
%if %{with_wireshark}
rm -f $RPM_BUILD_ROOT%{_libdir}/wireshark/plugins/libvirt.la
%endif
rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/lock-driver/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/lock-driver/*.a
rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/connection-driver/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/connection-driver/*.a
# remove currently unsupported locale(s)
for dir in $RPM_BUILD_ROOT/usr/share/locale/*
do
sdir=`echo $dir | sed "s|$RPM_BUILD_ROOT||"`
if test -d $sdir ; then continue ; fi
rm -rfv "$dir"
done
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/libvirt
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/hooks
%find_lang %{name}
# Add a README to the libvirt package with a note about the empty
# file list
cat > $RPM_BUILD_ROOT%{_docdir}/libvirt/libvirt.README << 'EOF'
The libvirt package no longer contains any files. It exists now
only to fulfill its 'Provides' contract.
EOF
install -d -m 0755 $RPM_BUILD_ROOT%{_localstatedir}/lib/libvirt/dnsmasq/
install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/
cp $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml \
$RPM_BUILD_ROOT%{_datadir}/libvirt/networks/default.xml
rm -f $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml
rm -f $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml
# Strip auto-generated UUID - we need it generated per-install
sed -i -e "/<uuid>/d" $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/default.xml
%if %{with_lxc}
cat > $RPM_BUILD_ROOT%{_docdir}/libvirt/libvirt-daemon-lxc.README << 'EOF'
Any empty package encapsulating requirements for a libvirtd capable
of managing LXC.
EOF
%else
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/lxc.conf
rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_lxc.aug
rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.lxc
%endif
%if %{with_qemu}
cat > $RPM_BUILD_ROOT%{_docdir}/libvirt/libvirt-daemon-qemu.README << 'EOF'
Any empty package encapsulating requirements for a libvirtd capable
of managing QEMU/KVM.
EOF
%else
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu.conf
rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_qemu.aug
rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.qemu
%endif
%if %{with_uml}
cat > $RPM_BUILD_ROOT%{_docdir}/libvirt/libvirt-daemon-uml.README << 'EOF'
Any empty package encapsulating requirements for a libvirtd capable
of managing UML.
EOF
%else
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.uml
%endif
%if %{with_vbox}
cat > $RPM_BUILD_ROOT%{_docdir}/libvirt/libvirt-daemon-vbox.README << 'EOF'
Any empty package encapsulating requirements for a libvirtd capable
of managing VirtualBox.
EOF
%endif
%if %{with_xen} || %{with_libxl}
cat > $RPM_BUILD_ROOT%{_docdir}/libvirt/libvirt-daemon-xen.README << 'EOF'
Any empty package encapsulating requirements for a libvirtd capable
of managing Xen.
EOF
%endif
%if ! %{with_libxl}
rm -f $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/libxl.conf
rm -f $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.libxl
rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_libxl.aug
rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug
%endif
%if ! %{with_sanlock}
rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirt_sanlock.aug
rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug
%endif
# init scripts
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/init.d
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/adm/fillup-templates
# Currently using our own libvirtd init script
rm -f $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/libvirtd
%if %{with_systemd}
ln -s %{_sbindir}/service $RPM_BUILD_ROOT%{_sbindir}/rclibvirtd
%else
install %SOURCE3 $RPM_BUILD_ROOT%{_sysconfdir}/init.d/libvirtd
ln -s /etc/init.d/libvirtd $RPM_BUILD_ROOT%{_sbindir}/rclibvirtd
%endif
mv $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/libvirtd $RPM_BUILD_ROOT%{_localstatedir}/adm/fillup-templates/sysconfig.libvirtd
rm -f $RPM_BUILD_ROOT/usr/lib/sysctl.d/60-libvirtd.conf
# For other services, use the in-tree scripts
%if %{with_systemd}
rm -f $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/virtlogd
ln -s %{_sbindir}/service $RPM_BUILD_ROOT%{_sbindir}/rcvirtlogd
rm -f $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/virtlockd
ln -s %{_sbindir}/service $RPM_BUILD_ROOT%{_sbindir}/rcvirtlockd
%else
mv $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/virtlogd $RPM_BUILD_ROOT%{_sysconfdir}/init.d/virtlogd
ln -s /etc/init.d/virtlogd $RPM_BUILD_ROOT%{_sbindir}/rcvirtlogd
mv $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/virtlockd $RPM_BUILD_ROOT%{_sysconfdir}/init.d/virtlockd
ln -s /etc/init.d/virtlockd $RPM_BUILD_ROOT%{_sbindir}/rcvirtlockd
%endif
mv $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/virtlogd $RPM_BUILD_ROOT%{_localstatedir}/adm/fillup-templates/sysconfig.virtlogd
mv $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/virtlockd $RPM_BUILD_ROOT%{_localstatedir}/adm/fillup-templates/sysconfig.virtlockd
#install firewall definitions format is described here:
#/usr/share/SuSEfirewall2/services/TEMPLATE
mkdir -p $RPM_BUILD_ROOT%{_fwdefdir}
install -m 644 %{S:4} $RPM_BUILD_ROOT%{_fwdefdir}/libvirtd-relocation-server
%if %{with_systemd}
rm -f $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/libvirt-guests
ln -s %{_sbindir}/service $RPM_BUILD_ROOT%{_sbindir}/rclibvirt-guests
%else
mv $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/libvirt-guests $RPM_BUILD_ROOT%{_sysconfdir}/init.d/libvirt-guests
mkdir -p $RPM_BUILD_ROOT%{_sbindir}
ln -s %{_sysconfdir}/init.d/libvirt-guests $RPM_BUILD_ROOT%{_sbindir}/rclibvirt-guests
%endif
mv $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/libvirt-guests $RPM_BUILD_ROOT%{_localstatedir}/adm/fillup-templates/sysconfig.libvirt-guests
%ifarch %{power64} s390x x86_64
mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_probes.stp \
$RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_probes-64.stp
mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes.stp \
$RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes-64.stp
%endif
%fdupes -s $RPM_BUILD_ROOT
%clean
rm -rf $RPM_BUILD_ROOT
%check
cd tests
SKIP_TESTS=""
# These tests don't current work in a mock build root
# virnetsockettest: needs unsupported linux-user syscalls
SKIP_TESTS="$SKIP_TESTS virnetsockettest"
# virportallocatortest fails on aarch64 due to unsupported IPV6_V6ONLY flag
%ifarch aarch64
SKIP_TESTS="$SKIP_TESTS virportallocatortest"
%endif
for i in $SKIP_TESTS
do
rm -f $i
printf 'int main(void) { return 0; }' > $i.c
done
make %{?jobs:-j%jobs}
if ! make %{?jobs:-j%jobs} check VIR_TEST_DEBUG=1
then
cat test-suite.log || true
exit 1
fi
%pre daemon
%if %{with_systemd}
%service_add_pre libvirtd.service
%service_add_pre virtlockd.service virtlockd.socket
%service_add_pre virtlogd.service virtlogd.socket
%endif
%{_bindir}/getent group libvirt >/dev/null || \
%{_sbindir}/groupadd -r libvirt || :
%post daemon
/sbin/ldconfig
%if %{with_systemd}
%service_add_post libvirtd.service
%service_add_post virtlockd.service virtlockd.socket
%service_add_post virtlogd.service virtlogd.socket
%endif
%{fillup_only -n libvirtd}
%{fillup_only -n virtlockd}
%{fillup_only -n virtlogd}
%preun daemon
%if %{with_systemd}
%service_del_preun libvirtd.service
%service_del_preun virtlockd.service virtlockd.socket
%service_del_preun virtlogd.service virtlogd.socket
%else
%stop_on_removal libvirtd
%stop_on_removal virtlockd
%stop_on_removal virtlogd
%endif
%postun daemon
/sbin/ldconfig
%if %{with_systemd}
# On upgrade, defer restarting daemons until %posttrans
if test $1 -eq 0 ; then
for service in libvirtd virtlockd virtlogd ; do
rm -f "/var/lib/systemd/migrated/$service" 2> /dev/null || :
done
/usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :
fi
%else
%restart_on_update libvirtd
%restart_on_update virtlockd
%restart_on_update virtlogd
%endif
%if %{with_systemd}
%service_del_postun libvirtd.service
%service_del_postun virtlockd.service virtlockd.socket
%service_del_postun virtlogd.service virtlogd.socket
%else
%insserv_cleanup
%endif
%posttrans daemon
# All connection drivers should be installed post transaction.
# Time to restart daemons.
%if %{with_systemd}
if test "$YAST_IS_RUNNING" != "instsys" -a "$DISABLE_RESTART_ON_UPDATE" != yes ; then
for service in libvirtd virtlockd virtlogd ; do
/usr/bin/systemctl try-restart ${service}.service >/dev/null 2>&1 || :
done
fi
%endif
# In upgrade scenario we must explicitly enable virtlockd/virtlogd
# sockets, if libvirtd is already enabled and start them if
# libvirtd is running, otherwise you'll get failures to start
# guests
%triggerpostun daemon -- libvirt-daemon < 1.3.0
if [ $1 -ge 1 ] ; then
%if %{with_systemd}
/usr/bin/systemctl is-enabled libvirtd.service 1>/dev/null 2>&1 &&
/usr/bin/systemctl enable virtlogd.socket || :
/usr/bin/systemctl is-active libvirtd.service 1>/dev/null 2>&1 &&
/usr/bin/systemctl start virtlogd.socket || :
%else
/sbin/chkconfig libvirtd 1>/dev/null 2>&1 &&
/sbin/chkconfig virtlogd on || :
/sbin/service libvirtd status 1>/dev/null 2>&1 &&
/sbin/service virtlogd start || :
%endif
fi
%post daemon-config-network
# Install the default network if one doesn't exist
if test $1 -eq 1 && test ! -f %{_sysconfdir}/libvirt/qemu/networks/default.xml ; then
UUID=`/usr/bin/uuidgen`
sed -e "s,</name>,</name>\n <uuid>$UUID</uuid>," \
< %{_datadir}/libvirt/networks/default.xml \
> %{_sysconfdir}/libvirt/qemu/networks/default.xml
fi
%pre client
%if %{with_systemd}
%service_add_pre libvirt-guests.service
%endif
%post client
%if %{with_systemd}
%service_add_post libvirt-guests.service
%endif
%{fillup_only -n libvirt-guests}
%preun client
%if %{with_systemd}
%service_del_preun libvirt-guests.service
%else
%stop_on_removal libvirt-guests
%endif
if [ $1 = 0 ]; then
rm -f /var/lib/libvirt/libvirt-guests
fi
%postun client
%if %{with_systemd}
%service_del_postun libvirt-guests.service
%endif
%insserv_cleanup
%post libs
/sbin/ldconfig
%postun libs
/sbin/ldconfig
%post nss
/sbin/ldconfig
%postun nss
/sbin/ldconfig
%files
%doc %{_docdir}/%{name}/libvirt.README
%files daemon
%{_sbindir}/libvirtd
%{_sbindir}/virtlogd
%{_sbindir}/virtlockd
%dir %{_libdir}/%{name}
%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/
%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/hooks
%{_localstatedir}/adm/fillup-templates/sysconfig.libvirtd
%{_localstatedir}/adm/fillup-templates/sysconfig.virtlogd
%{_localstatedir}/adm/fillup-templates/sysconfig.virtlockd
%if %{with_systemd}
%{_unitdir}/libvirtd.service
%{_unitdir}/virt-guest-shutdown.target
%{_unitdir}/virtlogd.service
%{_unitdir}/virtlogd.socket
%{_unitdir}/virtlockd.service
%{_unitdir}/virtlockd.socket
%else
%config /etc/init.d/libvirtd
%config /etc/init.d/virtlogd
%config /etc/init.d/virtlockd
%endif
%{_sbindir}/rclibvirtd
%{_sbindir}/rcvirtlogd
%{_sbindir}/rcvirtlockd
%config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd
%config(noreplace) %{_sysconfdir}/libvirt/virtlogd.conf
%config(noreplace) %{_sysconfdir}/libvirt/virtlockd.conf
%dir %{_datadir}/augeas/
%dir %{_datadir}/augeas/lenses
%dir %{_datadir}/augeas/lenses/tests
%{_datadir}/augeas/lenses/libvirtd.aug
%{_datadir}/augeas/lenses/tests/test_libvirtd.aug
%{_datadir}/augeas/lenses/virtlogd.aug
%{_datadir}/augeas/lenses/tests/test_virtlogd.aug
%{_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
%{_datadir}/systemtap/tapset/libvirt_probes*.stp
%{_datadir}/systemtap/tapset/libvirt_qemu_probes*.stp
%{_datadir}/systemtap/tapset/libvirt_functions.stp
%dir %{_localstatedir}/lib/libvirt/
%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/images/
%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/filesystems/
%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/boot/
%dir %attr(0711, root, root) %{_localstatedir}/cache/libvirt/
%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/
%dir %attr(0755, root, root) %{_libdir}/%{name}/lock-driver
%attr(0755, root, root) %{_libdir}/%{name}/lock-driver/lockd.so
%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) %{_libdir}/%{name}/libvirt_iohelper
%doc %{_mandir}/man8/libvirtd.8*
%doc %{_mandir}/man8/virtlogd.8*
%doc %{_mandir}/man8/virtlockd.8*
%if %{with_apparmor}
%dir %{_sysconfdir}/apparmor.d
%dir %{_sysconfdir}/apparmor.d/abstractions
%dir %{_sysconfdir}/apparmor.d/libvirt
%config(noreplace) %{_sysconfdir}/apparmor.d/usr.sbin.libvirtd
%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/libvirt/TEMPLATE.lxc
%config(noreplace) %{_sysconfdir}/apparmor.d/libvirt/TEMPLATE.qemu
%{_libdir}/%{name}/virt-aa-helper
%endif
%config %{_fwdefdir}/libvirtd-relocation-server
%files daemon-config-network
%dir %{_datadir}/libvirt/networks/
%{_datadir}/libvirt/networks/default.xml
%files daemon-config-nwfilter
%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/nwfilter/
%config %{_sysconfdir}/libvirt/nwfilter/*.xml
%files daemon-driver-interface
%dir %{_libdir}/%{name}/connection-driver
%{_libdir}/%{name}/connection-driver/libvirt_driver_interface.so
%files daemon-driver-network
%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/
%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/
%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/autostart
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/network/
%dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/dnsmasq/
%attr(0755, root, root) %{_libdir}/%{name}/libvirt_leaseshelper
%dir %{_libdir}/%{name}/connection-driver
%{_libdir}/%{name}/connection-driver/libvirt_driver_network.so
%files daemon-driver-nodedev
%dir %{_libdir}/%{name}/connection-driver
%{_libdir}/%{name}/connection-driver/libvirt_driver_nodedev.so
%files daemon-driver-nwfilter
%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/nwfilter/
%dir %{_libdir}/%{name}/connection-driver
%{_libdir}/%{name}/connection-driver/libvirt_driver_nwfilter.so
%files daemon-driver-secret
%dir %{_libdir}/%{name}/connection-driver
%{_libdir}/%{name}/connection-driver/libvirt_driver_secret.so
%files daemon-driver-storage
%attr(0755, root, root) %{_libdir}/%{name}/libvirt_parthelper
%dir %{_libdir}/%{name}/connection-driver
%{_libdir}/%{name}/connection-driver/libvirt_driver_storage.so
%if %{with_qemu}
%files daemon-driver-qemu
%config(noreplace) %{_sysconfdir}/libvirt/qemu.conf
%config(noreplace) %{_sysconfdir}/libvirt/qemu-lockd.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.qemu
%dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/
%dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/cache/libvirt/qemu/
%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/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
%endif
%if %{with_lxc}
%files daemon-driver-lxc
%config(noreplace) %{_sysconfdir}/libvirt/lxc.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.lxc
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/lxc/
%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/lxc/
%attr(0755, root, root) %{_libdir}/%{name}/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
%attr(0755, root, root) %{_bindir}/virt-lxc-convert
%if %{with_sle_build}
%{_bindir}/virt-create-rootfs
%doc %{_mandir}/man1/virt-create-rootfs.1*
%endif
%endif
%if %{with_uml}
%files daemon-driver-uml
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.uml
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/uml/
%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/uml/
%dir %{_libdir}/%{name}/connection-driver
%{_libdir}/%{name}/connection-driver/libvirt_driver_uml.so
%endif
%if %{with_xen}
%files daemon-driver-xen
%dir %{_libdir}/%{name}/connection-driver
%{_libdir}/%{name}/connection-driver/libvirt_driver_xen.so
%endif
%if %{with_libxl}
%files daemon-driver-libxl
%config(noreplace) %{_sysconfdir}/libvirt/libxl.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.libxl
%config(noreplace) %{_sysconfdir}/libvirt/libxl-lockd.conf
%{_datadir}/augeas/lenses/libvirtd_libxl.aug
%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/
%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/libxl/
%dir %{_libdir}/%{name}/connection-driver
%{_libdir}/%{name}/connection-driver/libvirt_driver_libxl.so
%endif
%if %{with_vbox}
%files daemon-driver-vbox
%{_libdir}/%{name}/connection-driver/libvirt_driver_vbox.so
%endif
%if %{with_qemu}
%files daemon-qemu
%doc %{_docdir}/%{name}/libvirt-daemon-qemu.README
%endif
%if %{with_lxc}
%files daemon-lxc
%doc %{_docdir}/%{name}/libvirt-daemon-lxc.README
%endif
%if %{with_uml}
%files daemon-uml
%doc %{_docdir}/%{name}/libvirt-daemon-uml.README
%endif
%if %{with_xen} || %{with_libxl}
%files daemon-xen
%doc %{_docdir}/%{name}/libvirt-daemon-xen.README
%endif
%if %{with_vbox}
%files daemon-vbox
%doc %{_docdir}/%{name}/libvirt-daemon-vbox.README
%endif
%files client
%doc %{_mandir}/man1/virsh.1*
%doc %{_mandir}/man1/virt-xml-validate.1*
%doc %{_mandir}/man1/virt-pki-validate.1*
%doc %{_mandir}/man1/virt-host-validate.1*
%{_bindir}/virsh
%{_bindir}/virt-xml-validate
%{_bindir}/virt-pki-validate
%{_bindir}/virt-host-validate
%dir %{_libdir}/%{name}
%attr(0755, root, root) %{_libdir}/%{name}/libvirt-guests.sh
%{_localstatedir}/adm/fillup-templates/sysconfig.libvirt-guests
%if %{with_systemd}
%{_unitdir}/libvirt-guests.service
%else
%config /etc/init.d/libvirt-guests
%endif
%{_sbindir}/rclibvirt-guests
%files libs -f %{name}.lang
%doc AUTHORS ChangeLog.gz NEWS README COPYING COPYING.LESSER TODO
%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}/libvirt/
%dir %{_datadir}/libvirt/schemas/
%dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/
%{_datadir}/libvirt/schemas/basictypes.rng
%{_datadir}/libvirt/schemas/capability.rng
%{_datadir}/libvirt/schemas/domain.rng
%{_datadir}/libvirt/schemas/cputypes.rng
%{_datadir}/libvirt/schemas/domaincaps.rng
%{_datadir}/libvirt/schemas/domaincommon.rng
%{_datadir}/libvirt/schemas/domainsnapshot.rng
%{_datadir}/libvirt/schemas/interface.rng
%{_datadir}/libvirt/schemas/network.rng
%{_datadir}/libvirt/schemas/networkcommon.rng
%{_datadir}/libvirt/schemas/nodedev.rng
%{_datadir}/libvirt/schemas/nwfilter.rng
%{_datadir}/libvirt/schemas/secret.rng
%{_datadir}/libvirt/schemas/storagecommon.rng
%{_datadir}/libvirt/schemas/storagepool.rng
%{_datadir}/libvirt/schemas/storagevol.rng
%{_datadir}/libvirt/cpu_map.xml
%{_datadir}/libvirt/test-screenshot.png
%dir %{_sysconfdir}/sasl2/
%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf
%files admin
%doc %{_mandir}/man1/virt-admin.1*
%{_bindir}/virt-admin
%files devel
%{_libdir}/libvirt.so
%{_libdir}/libvirt-admin.so
%{_libdir}/libvirt-qemu.so
%{_libdir}/libvirt-lxc.so
%{_includedir}/libvirt
%{_libdir}/pkgconfig/libvirt.pc
%{_libdir}/pkgconfig/libvirt-admin.pc
%{_libdir}/pkgconfig/libvirt-qemu.pc
%{_libdir}/pkgconfig/libvirt-lxc.pc
%dir %{_datadir}/libvirt/api/
%{_datadir}/libvirt/api/libvirt-api.xml
%{_datadir}/libvirt/api/libvirt-admin-api.xml
%{_datadir}/libvirt/api/libvirt-qemu-api.xml
%{_datadir}/libvirt/api/libvirt-lxc-api.xml
%files doc
# Website
%dir %{_docdir}/libvirt
%doc %{_docdir}/%{name}/*.png
%doc %{_docdir}/%{name}/*.html
%doc %{_docdir}/%{name}/*.gif
%doc %{_docdir}/%{name}/*.css
%doc %{_docdir}/%{name}/html
%doc %{_docdir}/%{name}/internals
%doc %{_docdir}/%{name}/logos
# API docs
%dir %{_datadir}/gtk-doc/html/libvirt/
%doc %{_datadir}/gtk-doc/html/libvirt/*
%if %{with_sanlock}
%files lock-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, root) %{_localstatedir}/lib/%{name}/sanlock
%{_sbindir}/virt-sanlock-cleanup
%attr(0755, root, root) %{_libdir}/%{name}/libvirt_sanlock_helper
%endif
%if %{with_wireshark}
%files -n wireshark-plugin-libvirt
%{_libdir}/wireshark/plugins/libvirt.so
%endif
%files nss
%{_libdir}/libnss_libvirt.so.2
%{_libdir}/libnss_libvirt_guest.so.2
%changelog