Refactor the libvirt RPM daemon pieces

There are a number of flaws with our packaging of the libvirtd
daemon:

 - Installing 'libvirt' does not install 'qemu-kvm' or 'xen'
   etc which are required to actually run the hypervisor in
   question
 - Installing 'libvirt' pulls in the default configuration
   files which may not be wanted & cause problems if installed
   inside a guest
 - It is not possible to explicitly required all the peices
   required to manage a specific hypervisor

This change takes the 'libvirt' RPM and and changes it thus

 - libvirt: just a virtual package with dep on libvirt-daemon,
   libvirt-daemon-config-network & libvirt-daemon-config-nwfilter
 - libvirt-daemon: the libvirt daemon and related pieces
 - libvirt-daemon-config-network: the default network config
 - libvirt-daemon-config-nwfilter: the network filter configs
 - libvirt-docs: the website HTML

We then introduce some more virtual (empty) packages

 - libvirt-daemon-qemu: Deps on libvirt-daemon & 'qemu'
 - libvirt-daemon-kvm: Deps on libvirt-daemon & 'qemu-kvm'
 - libvirt-daemon-lxc: Deps on libvirt-daemon
 - libvirt-daemon-uml: Deps on libvirt-daemon
 - libvirt-daemon-xen: Deps on libvirt-daemon & 'xen'

 - libvirt-qemu: Deps on libvirt-daemon-qemu & libvirt-daemon-config-{network,nwfilter}
 - libvirt-kvm: Deps on libvirt-daemon-kvm & libvirt-daemon-config-{network,nwfilter}
 - libvirt-lxc: Deps on libvirt-daemon-lxc & libvirt-daemon-config-{network,nwfilter}
 - libvirt-uml: Deps on libvirt-daemon-uml & libvirt-daemon-config-{network,nwfilter}
 - libvirt-xen: Deps on libvirt-daemon-xen & libvirt-daemon-config-network

My intent in the future is to turn on the driver modules by
default, at which time 'libvirt-daemon' will cease to include
any specific drivers, instead we'll get libvirt-daemon-driver-XXXX
packages for each driver. The libvirt-daemon-XXX packages will
then pull in each driver that they require.

It is recommended that applications required a locally installed
libvirtd daemon, use either 'Requires: libvirt-daemon-XXXX' or
'Requires: libvirt-XXX' and *not* "Requires: libvirt-daemon"
or 'Requires: libvirt'

* libvirt.spec.in: Refactor RPMs
* docs/packaging.html.in, docs/sitemap.html.in: Document
  new RPM split rationale
This commit is contained in:
Daniel P. Berrange 2012-03-30 14:14:00 +01:00
parent 2711ac8716
commit 06a0d57f5a
3 changed files with 501 additions and 117 deletions

106
docs/packaging.html.in Normal file
View File

@ -0,0 +1,106 @@
<?xml version="1.0"?>
<html>
<body>
<h1>Distribution packaging</h1>
<ul id="toc"></ul>
<p>
This page describes the rationale behind the libvirt distribution
packaging in RPM format. The RPM specfile provided with libvirt targets
all Fedora and RHEL releases. It is split up into a number of sub-RPMs
in order to facilitate minimal installations, targetting specific
feature sets.
</p>
<h2><a name="real">Real packages</a></h2>
<p>
The so called "real" packages provide the actual file payloads
related to libvirt. If very specific / targetted functionality
is required, then applications can depend on one or more of these
real packages.
</p>
<dl>
<dt>libvirt-client</dt>
<dd>This package provides the main libvirt.so library along with
the virsh command line tool. If a C based application only wants
to be able to manage remote hypervisors, this is all that they
need depend on</dd>
<dt>libvirt-devel</dt>
<dd>This package provides the header files and libraries required
to compile and link C applications using libvirt</dd>
<dt>libvirt-python</dt>
<dd>This package provides the Python binding to the C libraries.
It will pull in the libvirt-client RPM. If a Python application
only wants to be able to manage remote hypervisors, this is all
that they need depend on</dd>
<dt>libvirt-daemon</dt>
<dd>This package provides server side libvirtd daemon, which is
required in order to manage any stateful hypervisors (currently
QEMU, KVM, Xen, LXC and UML).</dd>
<dt>libvirt-daemon-config-network</dt>
<dd>This package provides the standard configuration files for
setting up a NAT based network</dd>
<dt>libvirt-daemon-config-nwfilter</dt>
<dd>This package provides the standard configuration files for
network filter rules for ensuring clean VM traffic.</dd>
</dl>
<h2><a name="virtual">Virtual packages</a></h2>
<p>
The virtual packages provide convenient targets for application dependencies to
pull in functionality related to specific hypervisors. Since the packaging of
the <code>libvirt-daemon</code> RPM is expected to change in the future to split
each hypervisor driver out into a separate RPM, applications are strongly
recommended to depend on one of the following virtual packages, instead of
depending directly on <code>libvirt-daemon</code>
</p>
<dl>
<dt>libvirt</dt>
<dd>This package, simply pulls in every single other server side RPM.
If an application wants to ensure all possible libvirt drivers are installed,
this is what they should depend on</dd>
<dt>libvirt-daemon-qemu</dt>
<dd>This package pulls in the server side daemon, drivers and the QEMU TCG binaries
required to provide emulation of non-native architectures</dd>
<dt>libvirt-daemon-kvm</dt>
<dd>This package pulls in the server side daemon, drivers and the KVM binaries
required to provide hardware accelerated virtualization of the native
architectures</dd>
<dt>libvirt-daemon-lxc</dt>
<dd>This package pulls in the server side daemon and drivers required to
run native Linux containers</dd>
<dt>libvirt-daemon-uml</dt>
<dd>This package pulls in the server side daemon and drivers required to
run User Mode Linux. The application must still provide the actual
UML binary kernels</dd>
<dt>libvirt-daemon-xen</dt>
<dd>This package pulls in the server side daemon and drivers required to
run guests on the Xen hypervisor.</dd>
<dt>libvirt-qemu</dt>
<dd>This package pulls in the server side daemon, drivers and the QEMU TCG binaries
required to provide emulation of non-native architectures</dd>
<dt>libvirt-kvm</dt>
<dd>This package pulls in the server side daemon, drivers and the KVM binaries
required to provide hardware accelerated virtualization of the native
architectures</dd>
<dt>libvirt-lxc</dt>
<dd>This package pulls in the server side daemon, drivers and default
configuration files required to run native Linux containers</dd>
<dt>libvirt-uml</dt>
<dd>This package pulls in the server side daemon, drivers and default
configuration files required to run User Mode Linux. The application
must still provide the actual UML binary kernels</dd>
<dt>libvirt-xen</dt>
<dd>This package pulls in the server side daemon, drivers and default
configuration files required to run guests on the Xen hypervisor.</dd>
</dl>
</body>
</html>

View File

@ -84,6 +84,10 @@
<a href="hooks.html">Hooks</a> <a href="hooks.html">Hooks</a>
<span>Hooks for system specific management</span> <span>Hooks for system specific management</span>
</li> </li>
<li>
<a href="packaging.html">Distribution packaging</a>
<span>Rationale for distribution RPM packaging</span>
</li>
</ul> </ul>
</li> </li>
<li> <li>

View File

@ -52,6 +52,14 @@
%define with_libxl 0%{!?_without_libxl:%{server_drivers}} %define with_libxl 0%{!?_without_libxl:%{server_drivers}}
%define with_vmware 0%{!?_without_vmware:%{server_drivers}} %define with_vmware 0%{!?_without_vmware:%{server_drivers}}
%define with_qemu_tcg %{with_qemu}
# Change if we ever provide qemu-kvm binaries on non-x86 hosts
%ifarch %{ix86} x86_64
%define with_qemu_kvm %{with_qemu}
%else
%define with_qemu_kvm 0
%endif
# Then the hypervisor drivers that talk via a native remote protocol # Then the hypervisor drivers that talk via a native remote protocol
%define with_phyp 0%{!?_without_phyp:1} %define with_phyp 0%{!?_without_phyp:1}
%define with_esx 0%{!?_without_esx:1} %define with_esx 0%{!?_without_esx:1}
@ -125,8 +133,10 @@
# RHEL-5 has restricted QEMU to x86_64 only and is too old for LXC # RHEL-5 has restricted QEMU to x86_64 only and is too old for LXC
%if 0%{?rhel} == 5 %if 0%{?rhel} == 5
%define with_qemu_tcg 0
%ifnarch x86_64 %ifnarch x86_64
%define with_qemu 0 %define with_qemu 0
%define with_qemu_kvm 0
%endif %endif
%define with_lxc 0 %define with_lxc 0
%endif %endif
@ -134,8 +144,10 @@
# RHEL-6 has restricted QEMU to x86_64 only, stopped including Xen # RHEL-6 has restricted QEMU to x86_64 only, stopped including Xen
# on all archs. Other archs all have LXC available though # on all archs. Other archs all have LXC available though
%if 0%{?rhel} >= 6 %if 0%{?rhel} >= 6
%define with_qemu_tcg 0
%ifnarch x86_64 %ifnarch x86_64
%define with_qemu 0 %define with_qemu 0
%define with_qemu_kvm 0
%endif %endif
%define with_xen 0 %define with_xen 0
%endif %endif
@ -206,10 +218,13 @@
%define with_storage_disk 0 %define with_storage_disk 0
%endif %endif
%if %{with_qemu} %if %{with_qemu} || %{with_lxc} || %{with_uml}
%define with_nwfilter 0%{!?_without_nwfilter:%{server_drivers}} %define with_nwfilter 0%{!?_without_nwfilter:%{server_drivers}}
# Enable libpcap library # Enable libpcap library
%define with_libpcap 0%{!?_without_libpcap:%{server_drivers}} %define with_libpcap 0%{!?_without_libpcap:%{server_drivers}}
%endif
%if %{with_qemu}
%define with_macvtap 0%{!?_without_macvtap:%{server_drivers}} %define with_macvtap 0%{!?_without_macvtap:%{server_drivers}}
# numad is used to manage the CPU placement dynamically, # numad is used to manage the CPU placement dynamically,
@ -268,109 +283,22 @@ Source: http://libvirt.org/sources/libvirt-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
URL: http://libvirt.org/ URL: http://libvirt.org/
# All runtime requirements for the libvirt package (runtime requrements
# for subpackages are listed later in those subpackages)
# The client side, i.e. shared libs and virsh are in a subpackage
Requires: %{name}-client = %{version}-%{release}
# Used by many of the drivers, so turn it on whenever the
# daemon is present
%if %{with_libvirtd} %if %{with_libvirtd}
# for modprobe of pci devices Requires: libvirt-daemon = %{version}-%{release}
Requires: module-init-tools
# for /sbin/ip & /sbin/tc
Requires: iproute
%if %{with_avahi}
Requires: avahi-libs
%endif
%endif
%if %{with_network} %if %{with_network}
Requires: dnsmasq >= 2.41 Requires: libvirt-daemon-config-network = %{version}-%{release}
Requires: radvd
%endif
%if %{with_network} || %{with_nwfilter}
Requires: iptables
Requires: iptables-ipv6
%endif %endif
%if %{with_nwfilter} %if %{with_nwfilter}
Requires: ebtables Requires: libvirt-daemon-config-nwfilter = %{version}-%{release}
%endif %endif
# needed for device enumeration # XXX when we turn on driver modules, we need to add
%if %{with_hal} # deps on each driver (Requires: libvirt-daemon-drv-qemu)
Requires: hal
%endif
%if %{with_udev}
Requires: udev >= 145
%endif
%if %{with_polkit}
%if 0%{?fedora} >= 12 || 0%{?rhel} >=6
Requires: polkit >= 0.93
%else
Requires: PolicyKit >= 0.6
%endif
%endif
%if %{with_storage_fs}
Requires: nfs-utils
# For mkfs
Requires: util-linux-ng
# For pool-build probing for existing pools
BuildRequires: libblkid-devel >= 2.17
# For glusterfs
%if 0%{?fedora} >= 11
Requires: glusterfs-client >= 2.0.1
%endif
%endif
%if %{with_qemu}
# From QEMU RPMs
Requires: /usr/bin/qemu-img
# For image compression
Requires: gzip
Requires: bzip2
Requires: lzop
Requires: xz
%else
%if %{with_xen}
# From Xen RPMs
Requires: /usr/sbin/qcow-create
%endif
%endif
%if %{with_storage_lvm}
# For LVM drivers
Requires: lvm2
%endif
%if %{with_storage_iscsi}
# For ISCSI driver
Requires: iscsi-initiator-utils
%endif
%if %{with_storage_disk}
# For disk driver
Requires: parted
Requires: device-mapper
%endif
%if %{with_storage_mpath}
# For multipath support
Requires: device-mapper
%endif
%if %{with_cgconfig}
Requires: libcgroup
%endif
%ifarch %{ix86} x86_64 ia64
# For virConnectGetSysinfo
Requires: dmidecode
%endif
# For service management
%if %{with_systemd}
Requires(post): systemd-units
Requires(post): systemd-sysv
Requires(preun): systemd-units
Requires(postun): systemd-units
%endif
%if %{with_numad}
Requires: numad
%endif %endif
Requires: libvirt-docs = %{version}-%{release}
Requires: libvirt-client = %{version}-%{release}
# All build-time requirements # All build-time requirements. Run-time requirements are
# listed against each sub-RPM
%if 0%{?enable_autotools} %if 0%{?enable_autotools}
BuildRequires: autoconf BuildRequires: autoconf
BuildRequires: automake BuildRequires: automake
@ -537,6 +465,275 @@ Libvirt is a C toolkit to interact with the virtualization capabilities
of recent versions of Linux (and other OSes). The main package includes of recent versions of Linux (and other OSes). The main package includes
the libvirtd server exporting the virtualization support. the libvirtd server exporting the virtualization support.
%package docs
Summary: Documentation for libvirt library and daemon
Group: Development/Libraries
%description docs
Copy of the libvirt website documentation
%if %{with_libvirtd}
%package daemon
Summary: Server side daemon and supporting files for libvirt library
Group: Development/Libraries
# All runtime requirements for the libvirt package (runtime requrements
# for subpackages are listed later in those subpackages)
# The client side, i.e. shared libs and virsh are in a subpackage
Requires: %{name}-client = %{version}-%{release}
# for modprobe of pci devices
Requires: module-init-tools
# for /sbin/ip & /sbin/tc
Requires: iproute
%if %{with_avahi}
Requires: avahi-libs
%endif
%if %{with_network}
Requires: dnsmasq >= 2.41
Requires: radvd
%endif
%if %{with_network} || %{with_nwfilter}
Requires: iptables
Requires: iptables-ipv6
%endif
%if %{with_nwfilter}
Requires: ebtables
%endif
# needed for device enumeration
%if %{with_hal}
Requires: hal
%endif
%if %{with_udev}
Requires: udev >= 145
%endif
%if %{with_polkit}
%if 0%{?fedora} >= 12 || 0%{?rhel} >=6
Requires: polkit >= 0.93
%else
Requires: PolicyKit >= 0.6
%endif
%endif
%if %{with_storage_fs}
Requires: nfs-utils
# For mkfs
Requires: util-linux-ng
# For pool-build probing for existing pools
BuildRequires: libblkid-devel >= 2.17
# For glusterfs
%if 0%{?fedora} >= 11
Requires: glusterfs-client >= 2.0.1
%endif
%endif
%if %{with_qemu}
# From QEMU RPMs
Requires: /usr/bin/qemu-img
# For image compression
Requires: gzip
Requires: bzip2
Requires: lzop
Requires: xz
%else
%if %{with_xen}
# From Xen RPMs
Requires: /usr/sbin/qcow-create
%endif
%endif
%if %{with_storage_lvm}
# For LVM drivers
Requires: lvm2
%endif
%if %{with_storage_iscsi}
# For ISCSI driver
Requires: iscsi-initiator-utils
%endif
%if %{with_storage_disk}
# For disk driver
Requires: parted
Requires: device-mapper
%endif
%if %{with_storage_mpath}
# For multipath support
Requires: device-mapper
%endif
%if %{with_cgconfig}
Requires: libcgroup
%endif
%ifarch %{ix86} x86_64 ia64
# For virConnectGetSysinfo
Requires: dmidecode
%endif
# For service management
%if %{with_systemd}
Requires(post): systemd-units
Requires(post): systemd-sysv
Requires(preun): systemd-units
Requires(postun): systemd-units
%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.
%if %{with_network}
%package daemon-config-network
Summary: Default configuration files for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
%description daemon-config-network
Default configuration files for setting up NAT based networking
%endif
%if %{with_nwfilter}
%package daemon-config-nwfilter
Summary: Network filter configuration files for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
%description daemon-config-nwfilter
Network filter configuration files for cleaning guest traffic
%endif
# XXX when we turn on driver modules, we will need to
# create daemon-drv-XXX sub-RPMs and add them as deps
# to all of the following daemon-XXX RPMs
%if %{with_qemu_tcg}
%package daemon-qemu
Summary: Server side daemon & driver required to run QEMU guests
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
Requires: qemu
%description daemon-qemu
Server side daemon and driver required to manage the virtualization
capabilities of the QEMU TCG emulators
%package qemu
Summary: Server side daemon, driver & default configs required to run QEMU guests
Group: Development/Libraries
Requires: libvirt-daemon-qemu = %{version}-%{release}
Requires: libvirt-daemon-config-network = %{version}-%{release}
Requires: libvirt-daemon-config-nwfilter = %{version}-%{release}
%description qemu
Server side daemon, driver and default network & firewall configs
required to manage the virtualization capabilities of QEMU.
%endif
%if %{with_qemu_kvm}
%package daemon-kvm
Summary: Server side daemon & driver required to run QEMU guests
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
Requires: qemu-kvm
%description daemon-kvm
Server side daemon and driver required to manage the virtualization
capabilities of the QEMU KVM hypervisor
%package kvm
Summary: Server side daemon, driver & default configs required to run KVM guests
Group: Development/Libraries
Requires: libvirt-daemon-kvm = %{version}-%{release}
Requires: libvirt-daemon-config-network = %{version}-%{release}
Requires: libvirt-daemon-config-nwfilter = %{version}-%{release}
%description kvm
Server side daemon, driver and default network & firewall configs
required to manage the virtualization capabilities of KVM.
%endif
%if %{with_lxc}
%package daemon-lxc
Summary: Server side daemon & driver required to run LXC guests
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
%description daemon-lxc
Server side daemon and driver required to manage the virtualization
capabilities of LXC
%package lxc
Summary: Server side daemon, driver & default configs required to run LXC guests
Group: Development/Libraries
Requires: libvirt-daemon-lxc = %{version}-%{release}
Requires: libvirt-daemon-config-network = %{version}-%{release}
Requires: libvirt-daemon-config-nwfilter = %{version}-%{release}
%description lxc
Server side daemon, driver and default network & firewall configs
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
Requires: libvirt-daemon = %{version}-%{release}
# There are no UML kernel RPMs in Fedora/RHEL to depend on.
%description daemon-uml
Server side daemon and driver required to manage the virtualization
capabilities of UML
%package uml
Summary: Server side daemon, driver & default configs required to run UML guests
Group: Development/Libraries
Requires: libvirt-daemon-uml = %{version}-%{release}
Requires: libvirt-daemon-config-network = %{version}-%{release}
Requires: libvirt-daemon-config-nwfilter = %{version}-%{release}
%description uml
Server side daemon, driver and default network & firewall configs
required to manage the virtualization capabilities of UML.
%endif
%if %{with_xen}
%package daemon-xen
Summary: Server side daemon & driver required to run XEN guests
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
Requires: xen
%description daemon-xen
Server side daemon and driver required to manage the virtualization
capabilities of XEN
%package xen
Summary: Server side daemon, driver & default configs required to run XEN guests
Group: Development/Libraries
Requires: libvirt-daemon-xen = %{version}-%{release}
Requires: libvirt-daemon-config-network = %{version}-%{release}
%description xen
Server side daemon, driver and default network & firewall configs
required to manage the virtualization capabilities of Xen.
%endif
%endif
%package client %package client
Summary: Client side library and utilities of the libvirt library Summary: Client side library and utilities of the libvirt library
Group: Development/Libraries Group: Development/Libraries
@ -582,7 +779,7 @@ Group: Development/Libraries
Requires: sanlock >= 1.8 Requires: sanlock >= 1.8
#for virt-sanlock-cleanup require augeas #for virt-sanlock-cleanup require augeas
Requires: augeas Requires: augeas
Requires: %{name} = %{version}-%{release} Requires: %{name}-daemon = %{version}-%{release}
%description lock-sanlock %description lock-sanlock
Includes the Sanlock lock manager plugin for the QEMU Includes the Sanlock lock manager plugin for the QEMU
@ -884,6 +1081,12 @@ rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.lxc
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.uml rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.uml
%endif %endif
mv $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-%{version} $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-docs-%{version}
%if ! %{with_nwfilter}
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter
%endif
%clean %clean
rm -fr %{buildroot} rm -fr %{buildroot}
@ -898,7 +1101,8 @@ do
done done
make check make check
%pre %if %{with_libvirtd}
%pre daemon
%if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 %if 0%{?fedora} >= 12 || 0%{?rhel} >= 6
# Normally 'setup' adds this in /etc/passwd, but this is # Normally 'setup' adds this in /etc/passwd, but this is
# here for case of upgrades from earlier Fedora/RHEL. This # here for case of upgrades from earlier Fedora/RHEL. This
@ -910,22 +1114,9 @@ getent passwd qemu >/dev/null || \
-c "qemu user" qemu -c "qemu user" qemu
%endif %endif
%post %post daemon
%if %{with_libvirtd}
%if %{with_network} %if %{with_network}
# We want to install the default network for initial RPM installs
# or on the first upgrade from a non-network aware libvirt only.
# We check this by looking to see if the daemon is already installed
if ! /sbin/chkconfig libvirtd && 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
ln -s ../default.xml %{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml
fi
# All newly defined networks will have a mac address for the bridge # All newly defined networks will have a mac address for the bridge
# auto-generated, but networks already existing at the time of upgrade # auto-generated, but networks already existing at the time of upgrade
# will not. We need to go through all the network configs, look for # will not. We need to go through all the network configs, look for
@ -991,8 +1182,8 @@ fi
%endif %endif
%endif %endif
%preun
%if %{with_libvirtd} %if %{with_libvirtd}
%preun daemon
%if %{with_systemd} %if %{with_systemd}
if [ $1 -eq 0 ] ; then if [ $1 -eq 0 ] ; then
# Package removal, not upgrade # Package removal, not upgrade
@ -1007,8 +1198,8 @@ fi
%endif %endif
%endif %endif
%postun
%if %{with_libvirtd} %if %{with_libvirtd}
%postun daemon
%if %{with_systemd} %if %{with_systemd}
/bin/systemctl daemon-reload >/dev/null 2>&1 || : /bin/systemctl daemon-reload >/dev/null 2>&1 || :
if [ $1 -ge 1 ] ; then if [ $1 -ge 1 ] ; then
@ -1018,6 +1209,20 @@ fi
%endif %endif
%endif %endif
%if %{with_libvirtd}
%if %{with_network}
%post daemon-config-network
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
ln -s ../default.xml %{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml
fi
%endif
%endif
%if %{with_libvirtd} %if %{with_libvirtd}
%if %{with_systemd} %if %{with_systemd}
%triggerun -- libvirt < 0.9.4 %triggerun -- libvirt < 0.9.4
@ -1064,10 +1269,19 @@ fi
/bin/systemctl try-restart libvirt-guests.service >/dev/null 2>&1 || : /bin/systemctl try-restart libvirt-guests.service >/dev/null 2>&1 || :
%endif %endif
%if %{with_libvirtd}
%files %files
%defattr(-, root, root) %defattr(-, root, root)
%files docs
%defattr(-, root, root)
%dir %{_datadir}/doc/libvirt-docs-%{version}
%dir %{_datadir}/doc/libvirt-docs-%{version}/html
%{_datadir}/doc/libvirt-docs-%{version}/html/*
%if %{with_libvirtd}
%files daemon
%defattr(-, root, root)
%doc AUTHORS ChangeLog.gz NEWS README COPYING.LIB TODO %doc AUTHORS ChangeLog.gz NEWS README COPYING.LIB TODO
%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/ %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/
@ -1078,7 +1292,6 @@ fi
%endif %endif
%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/nwfilter/ %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/nwfilter/
%{_sysconfdir}/libvirt/nwfilter/*.xml
%{_sysconfdir}/rc.d/init.d/libvirtd %{_sysconfdir}/rc.d/init.d/libvirtd
%if %{with_systemd} %if %{with_systemd}
@ -1190,6 +1403,67 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd
%{_mandir}/man8/libvirtd.8* %{_mandir}/man8/libvirtd.8*
%doc docs/*.xml %doc docs/*.xml
%if %{with_network}
%files daemon-config-network
%defattr(-, root, root)
%endif
%if %{with_nwfilter}
%files daemon-config-nwfilter
%defattr(-, root, root)
%{_sysconfdir}/libvirt/nwfilter/*.xml
%endif
%if %{with_qemu_tcg}
%files daemon-qemu
%defattr(-, root, root)
%endif
%if %{with_qemu_kvm}
%files daemon-kvm
%defattr(-, root, root)
%endif
%if %{with_lxc}
%files daemon-lxc
%defattr(-, root, root)
%endif
%if %{with_uml}
%files daemon-uml
%defattr(-, root, root)
%endif
%if %{with_xen}
%files daemon-xen
%defattr(-, root, root)
%endif
%if %{with_qemu_tcg}
%files qemu
%defattr(-, root, root)
%endif
%if %{with_qemu_kvm}
%files kvm
%defattr(-, root, root)
%endif
%if %{with_lxc}
%files lxc
%defattr(-, root, root)
%endif
%if %{with_uml}
%files uml
%defattr(-, root, root)
%endif
%if %{with_xen}
%files xen
%defattr(-, root, root)
%endif
%endif %endif
%if %{with_sanlock} %if %{with_sanlock}