X-Git-Url: http://git.onelab.eu/?p=libvirt.git;a=blobdiff_plain;f=libvirt.spec;h=727260bde9a38ea0f06bb20c25fb4348f70f70a1;hp=ba462a222ab42ea93e0d70d329a971da0d9214ca;hb=00b892846c76eac71f38fe5e134ee52f3e259e09;hpb=333be24ae08aa2edaa5955a8338c78334618b154 diff --git a/libvirt.spec b/libvirt.spec index ba462a2..727260b 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -1,5 +1,33 @@ # -*- rpm-spec -*- +%define mainstream_version 1.0.2 +%define module_version_varname mainstream_version +%define taglevel 0 + +#libvirt-RPMFLAGS := --without storage-disk --without storage-iscsi --without storage-scsi \ +# --without storage-fs --without storage-lvm \ +# --without polkit --without sasl --without audit --with capng --with udev \ +# --without netcf --without avahi --without sanlock \ +# --without xen --without qemu --without hyperv --without phyp --without esx \ +# --without libxl \ +%define _without_storage_disk true +%define _without_storage_iscsi true +%define _without_storage_fs true +%define _without_storage_lvm true +%define _without_polkit true +%define _without_sasl true +%define _without_audit true +#interface requires netcf +#%define _without_netcf true +%define _without_avahi true +%define _without_sanlock true +%define _without_xen true +%define _without_qemu true +%define _without_hyperv true +%define _without_phyp true +%define _without_esx true +%define _without_libxl true + # If neither fedora nor rhel was defined, try to guess them from %{dist} %if !0%{?rhel} && !0%{?fedora} %{expand:%(echo "%{?dist}" | \ @@ -22,18 +50,20 @@ # RHEL-5 builds are client-only for s390, ppc %if 0%{?rhel} == 5 -%ifnarch %{ix86} x86_64 ia64 -%define client_only 1 -%endif + %ifnarch %{ix86} x86_64 ia64 + %define client_only 1 + %endif %endif # Disable all server side drivers if client only build requested %if %{client_only} -%define server_drivers 0 + %define server_drivers 0 %else -%define server_drivers 1 + %define server_drivers 1 %endif +# Always build with dlopen'd modules +%define with_driver_modules 1 # Now set the defaults for all the important features, independent # of any particular OS @@ -51,10 +81,16 @@ %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} +%if 0%{?fedora} >= 18 + %define qemu_kvm_arches %{ix86} x86_64 ppc64 s390x +%else + %define qemu_kvm_arches %{ix86} x86_64 +%endif + +%ifarch %{qemu_kvm_arches} + %define with_qemu_kvm %{with_qemu} %else -%define with_qemu_kvm 0 + %define with_qemu_kvm 0 %endif # Then the hypervisor drivers that run outside libvirtd, in libvirt.so @@ -65,20 +101,33 @@ %define with_esx 0%{!?_without_esx:1} %define with_hyperv 0%{!?_without_hyperv:1} %define with_xenapi 0%{!?_without_xenapi:1} +%define with_parallels 0%{!?_without_parallels:1} # Then the secondary host drivers, which run inside libvirtd -%define with_network 0%{!?_without_network:%{server_drivers}} -%define with_storage_fs 0%{!?_without_storage_fs:%{server_drivers}} -%define with_storage_lvm 0%{!?_without_storage_lvm:%{server_drivers}} -%define with_storage_iscsi 0%{!?_without_storage_iscsi:%{server_drivers}} -%define with_storage_disk 0%{!?_without_storage_disk:%{server_drivers}} -%define with_storage_mpath 0%{!?_without_storage_mpath:%{server_drivers}} -%define with_numactl 0%{!?_without_numactl:%{server_drivers}} -%define with_selinux 0%{!?_without_selinux:%{server_drivers}} +%define with_interface 0%{!?_without_interface:%{server_drivers}} +%define with_network 0%{!?_without_network:%{server_drivers}} +%define with_storage_fs 0%{!?_without_storage_fs:%{server_drivers}} +%define with_storage_lvm 0%{!?_without_storage_lvm:%{server_drivers}} +%define with_storage_iscsi 0%{!?_without_storage_iscsi:%{server_drivers}} +%define with_storage_disk 0%{!?_without_storage_disk:%{server_drivers}} +%define with_storage_mpath 0%{!?_without_storage_mpath:%{server_drivers}} +%if 0%{?fedora} >= 16 + %define with_storage_rbd 0%{!?_without_storage_rbd:%{server_drivers}} +%else + %define with_storage_rbd 0 +%endif +%if 0%{?fedora} >= 17 + %define with_storage_sheepdog 0%{!?_without_storage_sheepdog:%{server_drivers}} +%else + %define with_storage_sheepdog 0 +%endif +%define with_numactl 0%{!?_without_numactl:%{server_drivers}} +%define with_selinux 0%{!?_without_selinux:%{server_drivers}} # A few optional bits off by default, we enable later %define with_polkit 0%{!?_without_polkit:0} %define with_capng 0%{!?_without_capng:0} +%define with_fuse 0%{!?_without_fuse:0} %define with_netcf 0%{!?_without_netcf:0} %define with_udev 0%{!?_without_udev:0} %define with_hal 0%{!?_without_hal:0} @@ -93,6 +142,8 @@ %define with_sanlock 0%{!?_without_sanlock:0} %define with_systemd 0%{!?_without_systemd:0} %define with_numad 0%{!?_without_numad:0} +%define with_firewalld 0%{!?_without_firewalld:0} +%define with_libssh2 0%{!?_without_libssh2:0} # Non-server/HV driver defaults which are always enabled %define with_python 0%{!?_without_python:1} @@ -103,197 +154,266 @@ # Xen is available only on i386 x86_64 ia64 %ifnarch %{ix86} x86_64 ia64 -%define with_xen 0 -%define with_libxl 0 + %define with_xen 0 + %define with_libxl 0 %endif # Numactl is not available on s390[x] and ARM %ifarch s390 s390x %{arm} -%define with_numactl 0 + %define with_numactl 0 %endif # RHEL doesn't ship OpenVZ, VBox, UML, PowerHypervisor, # VMWare, libxenserver (xenapi), libxenlight (Xen 4.1 and newer), # or HyperV. %if 0%{?rhel} -%define with_openvz 0 -%define with_vbox 0 -%define with_uml 0 -%define with_phyp 0 -%define with_vmware 0 -%define with_xenapi 0 -%define with_libxl 0 -%define with_hyperv 0 + %define with_openvz 0 + %define with_vbox 0 + %define with_uml 0 + %define with_phyp 0 + %define with_vmware 0 + %define with_xenapi 0 + %define with_libxl 0 + %define with_hyperv 0 + %define with_parallels 0 %endif -# Although earlier Fedora has systemd, libvirt still used sysvinit -%if 0%{?fedora} >= 17 -%define with_systemd 1 +# Fedora 17 / RHEL-7 are first where we use systemd. Although earlier +# Fedora has systemd, libvirt still used sysvinit there. +%if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 + %define with_systemd 1 +%endif + +# Fedora 18 / RHEL-7 are first where firewalld support is enabled +%if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 + %define with_firewalld 1 %endif # RHEL-5 has restricted QEMU to x86_64 only and is too old for LXC %if 0%{?rhel} == 5 -%define with_qemu_tcg 0 -%ifnarch x86_64 -%define with_qemu 0 -%define with_qemu_kvm 0 -%endif -%define with_lxc 0 + %define with_qemu_tcg 0 + %ifnarch x86_64 + %define with_qemu 0 + %define with_qemu_kvm 0 + %endif + %define with_lxc 0 %endif # RHEL-6 has restricted QEMU to x86_64 only, stopped including Xen # on all archs. Other archs all have LXC available though %if 0%{?rhel} >= 6 -%define with_qemu_tcg 0 -%ifnarch x86_64 -%define with_qemu 0 -%define with_qemu_kvm 0 -%endif -%define with_xen 0 + %define with_qemu_tcg 0 + %ifnarch x86_64 + %define with_qemu 0 + %define with_qemu_kvm 0 + %endif + %define with_xen 0 %endif # Fedora doesn't have any QEMU on ppc64 until FC16 - only ppc %if 0%{?fedora} && 0%{?fedora} < 16 -%ifarch ppc64 -%define with_qemu 0 -%endif + %ifarch ppc64 + %define with_qemu 0 + %endif %endif -# Fedora doesn't have new enough Xen for libxl until F16 -%if 0%{?fedora} && 0%{?fedora} < 16 -%define with_libxl 0 +# Fedora doesn't have new enough Xen for libxl until F18 +%if 0%{?fedora} && 0%{?fedora} < 18 + %define with_libxl 0 %endif # PolicyKit was introduced in Fedora 8 / RHEL-6 or newer %if 0%{?fedora} >= 8 || 0%{?rhel} >= 6 -%define with_polkit 0%{!?_without_polkit:1} + %define with_polkit 0%{!?_without_polkit:1} %endif # libcapng is used to manage capabilities in Fedora 12 / RHEL-6 or newer %if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 -%define with_capng 0%{!?_without_capng:1} + %define with_capng 0%{!?_without_capng:1} +%endif + +# fuse is used to provide virtualized /proc for LXC +%if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 + %define with_fuse 0%{!?_without_fuse:1} %endif # netcf is used to manage network interfaces in Fedora 12 / RHEL-6 or newer %if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 -%define with_netcf 0%{!?_without_netcf:%{server_drivers}} + %define with_netcf 0%{!?_without_netcf:%{server_drivers}} %endif # udev is used to manage host devices in Fedora 12 / RHEL-6 or newer %if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 -%define with_udev 0%{!?_without_udev:%{server_drivers}} + %define with_udev 0%{!?_without_udev:%{server_drivers}} %else -%define with_hal 0%{!?_without_hal:%{server_drivers}} + %define with_hal 0%{!?_without_hal:%{server_drivers}} +%endif + +# interface requires netcf +%if ! 0%{?with_netcf} + %define with_interface 0 %endif # Enable yajl library for JSON mode with QEMU %if 0%{?fedora} >= 13 || 0%{?rhel} >= 6 -%define with_yajl 0%{!?_without_yajl:%{server_drivers}} + %define with_yajl 0%{!?_without_yajl:%{server_drivers}} %endif # Enable sanlock library for lock management with QEMU # Sanlock is available only on i686 x86_64 for RHEL %if 0%{?fedora} >= 16 -%define with_sanlock 0%{!?_without_sanlock:%{server_drivers}} + %define with_sanlock 0%{!?_without_sanlock:%{server_drivers}} %endif %if 0%{?rhel} >= 6 -%ifarch %{ix86} x86_64 -%define with_sanlock 0%{!?_without_sanlock:%{server_drivers}} + %ifarch %{ix86} x86_64 + %define with_sanlock 0%{!?_without_sanlock:%{server_drivers}} + %endif %endif + +# Enable libssh2 transport for new enough distros +%if 0%{?fedora} >= 17 || 0%{?rhel} >= 6 + %define with_libssh2 0%{!?_without_libssh2:1} %endif # Disable some drivers when building without libvirt daemon. # The logic is the same as in configure.ac %if ! %{with_libvirtd} -%define with_network 0 -%define with_qemu 0 -%define with_lxc 0 -%define with_uml 0 -%define with_hal 0 -%define with_udev 0 -%define with_storage_fs 0 -%define with_storage_lvm 0 -%define with_storage_iscsi 0 -%define with_storage_mpath 0 -%define with_storage_disk 0 + %define with_interface 0 + %define with_network 0 + %define with_qemu 0 + %define with_lxc 0 + %define with_uml 0 + %define with_hal 0 + %define with_udev 0 + %define with_storage_fs 0 + %define with_storage_lvm 0 + %define with_storage_iscsi 0 + %define with_storage_mpath 0 + %define with_storage_rbd 0 + %define with_storage_sheepdog 0 + %define with_storage_disk 0 %endif %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 -%define with_libpcap 0%{!?_without_libpcap:%{server_drivers}} -%define with_macvtap 0%{!?_without_macvtap:%{server_drivers}} + %define with_libpcap 0%{!?_without_libpcap:%{server_drivers}} + %define with_macvtap 0%{!?_without_macvtap:%{server_drivers}} # numad is used to manage the CPU and memory placement dynamically, # it's not available on s390[x] and ARM. -%if 0%{?fedora} >= 17 || 0%{?rhel} >= 6 -%ifnarch s390 s390x %{arm} -%define with_numad 0%{!?_without_numad:%{server_drivers}} -%endif -%endif + %if 0%{?fedora} >= 17 || 0%{?rhel} >= 6 + %ifnarch s390 s390x %{arm} + %define with_numad 0%{!?_without_numad:%{server_drivers}} + %endif + %endif %endif %if %{with_macvtap} -%define with_libnl 1 + %define with_libnl 1 %endif %if 0%{?fedora} >= 11 || 0%{?rhel} >= 5 -%define with_audit 0%{!?_without_audit:1} + %define with_audit 0%{!?_without_audit:1} %endif %if 0%{?fedora} >= 13 || 0%{?rhel} >= 6 -%define with_dtrace 1 + %define with_dtrace 1 %endif # Pull in cgroups config system %if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 -%if %{with_qemu} || %{with_lxc} -%define with_cgconfig 0%{!?_without_cgconfig:1} + %if %{with_qemu} || %{with_lxc} + %define with_cgconfig 0%{!?_without_cgconfig:1} + %endif %endif + +%if %{with_udev} || %{with_hal} + %define with_nodedev 1 +%else + %define with_nodedev 0 %endif +%if %{with_storage_fs} || %{with_storage_mpath} || %{with_storage_iscsi} || %{with_storage_lvm} || %{with_storage_disk} + %define with_storage 1 +%else + %define with_storage 0 +%endif + + # Force QEMU to run as non-root %if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 -%define qemu_user qemu -%define qemu_group qemu + %define qemu_user qemu + %define qemu_group qemu %else -%define qemu_user root -%define qemu_group root + %define qemu_user root + %define qemu_group root %endif # The RHEL-5 Xen package has some feature backports. This # flag is set to enable use of those special bits on RHEL-5 %if 0%{?rhel} == 5 -%define with_rhel5 1 + %define with_rhel5 1 %else -%define with_rhel5 0 + %define with_rhel5 0 %endif +%if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 + %define with_systemd_macros 1 +%else + %define with_systemd_macros 0 +%endif + + Summary: Library providing a simple virtualization API Name: libvirt -Version: 0.9.12 -Release: 1%{?dist}%{?extra_release} +Version: %{mainstream_version} +Release: %{taglevel} License: LGPLv2+ Group: Development/Libraries BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root URL: http://libvirt.org/ %if %(echo %{version} | grep -o \\. | wc -l) == 3 -%define mainturl stable_updates/ + %define mainturl stable_updates/ %endif Source: http://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.gz +Patch1: libcurl.patch +Patch2: securityselinuxlabeltest.patch %if %{with_libvirtd} Requires: libvirt-daemon = %{version}-%{release} -%if %{with_network} + %if %{with_network} Requires: libvirt-daemon-config-network = %{version}-%{release} -%endif -%if %{with_nwfilter} + %endif + %if %{with_nwfilter} Requires: libvirt-daemon-config-nwfilter = %{version}-%{release} -%endif -# XXX when we turn on driver modules, we need to add -# deps on each driver (Requires: libvirt-daemon-drv-qemu) + %endif + %if %{with_driver_modules} + %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 + +Requires: libvirt-daemon-driver-interface = %{version}-%{release} +Requires: libvirt-daemon-driver-secret = %{version}-%{release} +Requires: libvirt-daemon-driver-storage = %{version}-%{release} +Requires: libvirt-daemon-driver-network = %{version}-%{release} +Requires: libvirt-daemon-driver-nodedev = %{version}-%{release} +Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} + %endif %endif Requires: libvirt-client = %{version}-%{release} @@ -320,6 +440,7 @@ BuildRequires: ncurses-devel BuildRequires: gettext BuildRequires: libtasn1-devel BuildRequires: gnutls-devel +BuildRequires: libattr-devel %if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 # for augparse, optionally used in testing BuildRequires: augeas @@ -328,20 +449,34 @@ BuildRequires: augeas BuildRequires: hal-devel %endif %if %{with_udev} + %if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 +BuildRequires: systemd-devel >= 185 + %else BuildRequires: libudev-devel >= 145 + %endif BuildRequires: libpciaccess-devel >= 0.10.9 %endif %if %{with_yajl} BuildRequires: yajl-devel %endif %if %{with_sanlock} +# make sure libvirt is built with new enough sanlock on +# distros that have it; required for on_lockfailure + %if 0%{?fedora} >= 17 || 0%{?rhel} >= 6 +BuildRequires: sanlock-devel >= 2.4 + %else BuildRequires: sanlock-devel >= 1.8 + %endif %endif %if %{with_libpcap} BuildRequires: libpcap-devel %endif %if %{with_libnl} + %if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 +BuildRequires: libnl3-devel + %else BuildRequires: libnl-devel + %endif %endif %if %{with_avahi} BuildRequires: avahi-devel @@ -363,12 +498,12 @@ BuildRequires: module-init-tools BuildRequires: cyrus-sasl-devel %endif %if %{with_polkit} -%if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 + %if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 # Only need the binary, not -devel BuildRequires: polkit >= 0.93 -%else + %else BuildRequires: PolicyKit-devel >= 0.6 -%endif + %endif %endif %if %{with_storage_fs} # For mount/umount in FS driver @@ -378,10 +513,10 @@ BuildRequires: util-linux # From QEMU RPMs BuildRequires: /usr/bin/qemu-img %else -%if %{with_xen} + %if %{with_xen} # From Xen RPMs BuildRequires: /usr/sbin/qcow-create -%endif + %endif %endif %if %{with_storage_lvm} # For LVM drivers @@ -394,19 +529,22 @@ BuildRequires: iscsi-initiator-utils %if %{with_storage_disk} # For disk driver BuildRequires: parted-devel -%if 0%{?rhel} == 5 + %if 0%{?rhel} == 5 # Broken RHEL-5 parted RPM is missing a dep BuildRequires: e2fsprogs-devel -%endif + %endif %endif %if %{with_storage_mpath} # For Multipath support -%if 0%{?rhel} == 5 + %if 0%{?rhel} == 5 # Broken RHEL-5 packaging has header files in main RPM :-( BuildRequires: device-mapper -%else + %else BuildRequires: device-mapper-devel -%endif + %endif + %if %{with_storage_rbd} +BuildRequires: ceph-devel + %endif %endif %if %{with_numactl} # For QEMU/LXC numa info @@ -415,22 +553,30 @@ BuildRequires: numactl-devel %if %{with_capng} BuildRequires: libcap-ng-devel >= 0.5.0 %endif -%if %{with_phyp} -BuildRequires: libssh2-devel +%if %{with_fuse} +BuildRequires: fuse-devel >= 2.8.6 +%endif +%if %{with_phyp} || %{with_libssh2} +BuildRequires: libssh2-devel >= 1.3.0 %endif + %if %{with_netcf} -%if 0%{?fedora} >= 16 || 0%{?rhel} >= 6 + %if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 +BuildRequires: netcf-devel >= 0.2.2 + %else + %if 0%{?fedora} >= 16 || 0%{?rhel} >= 6 BuildRequires: netcf-devel >= 0.1.8 -%else + %else BuildRequires: netcf-devel >= 0.1.4 -%endif + %endif + %endif %endif %if %{with_esx} -%if 0%{?fedora} >= 9 || 0%{?rhel} >= 6 + %if 0%{?fedora} >= 9 || 0%{?rhel} >= 6 BuildRequires: libcurl-devel -%else + %else BuildRequires: curl-devel -%endif + %endif %endif %if %{with_hyperv} BuildRequires: libwsman-devel >= 2.2.3 @@ -450,6 +596,11 @@ BuildRequires: util-linux BuildRequires: nfs-utils %endif +%if %{with_firewalld} +# Communication with the firewall daemon uses DBus +BuildRequires: dbus-devel +%endif + # Fedora build root suckage BuildRequires: gawk @@ -460,6 +611,8 @@ BuildRequires: scrub BuildRequires: numad %endif +Provides: bundled(gnulib) + %description Libvirt is a C toolkit to interact with the virtualization capabilities of recent versions of Linux (and other OSes). The main package includes @@ -488,46 +641,57 @@ Requires: %{name}-client = %{version}-%{release} Requires: module-init-tools # for /sbin/ip & /sbin/tc Requires: iproute -%if %{with_avahi} + %if %{with_avahi} + %if 0%{?rhel} == 5 +Requires: avahi + %else Requires: avahi-libs -%endif -%if %{with_network} + %endif + %endif + %if %{with_network} Requires: dnsmasq >= 2.41 Requires: radvd -%endif -%if %{with_network} || %{with_nwfilter} + %endif + %if %{with_network} || %{with_nwfilter} Requires: iptables Requires: iptables-ipv6 -%endif -%if %{with_nwfilter} + %endif + %if %{with_nwfilter} Requires: ebtables -%endif + %endif + %if %{with_netcf} && (0%{?fedora} >= 18 || 0%{?rhel} >= 7) +Requires: netcf-libs >= 0.2.2 + %endif # needed for device enumeration -%if %{with_hal} + %if %{with_hal} Requires: hal -%endif -%if %{with_udev} + %endif + %if %{with_udev} + %if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 +Requires: systemd >= 185 + %else Requires: udev >= 145 -%endif -%if %{with_polkit} -%if 0%{?fedora} >= 12 || 0%{?rhel} >=6 + %endif + %endif + %if %{with_polkit} + %if 0%{?fedora} >= 12 || 0%{?rhel} >=6 Requires: polkit >= 0.93 -%else + %else Requires: PolicyKit >= 0.6 -%endif -%endif -%if %{with_storage_fs} + %endif + %endif + %if %{with_storage_fs} Requires: nfs-utils # For mkfs -Requires: util-linux-ng +Requires: util-linux # For pool-build probing for existing pools BuildRequires: libblkid-devel >= 2.17 # For glusterfs -%if 0%{?fedora} >= 11 + %if 0%{?fedora} >= 11 Requires: glusterfs-client >= 2.0.1 -%endif -%endif -%if %{with_qemu} + %endif + %endif + %if %{with_qemu} # From QEMU RPMs Requires: /usr/bin/qemu-img # For image compression @@ -535,53 +699,59 @@ Requires: gzip Requires: bzip2 Requires: lzop Requires: xz -%else -%if %{with_xen} + %else + %if %{with_xen} # From Xen RPMs Requires: /usr/sbin/qcow-create -%endif -%endif -%if %{with_storage_lvm} + %endif + %endif + %if %{with_storage_lvm} # For LVM drivers Requires: lvm2 -%endif -%if %{with_storage_iscsi} + %endif + %if %{with_storage_iscsi} # For ISCSI driver Requires: iscsi-initiator-utils -%endif -%if %{with_storage_disk} + %endif + %if %{with_storage_disk} # For disk driver Requires: parted Requires: device-mapper -%endif -%if %{with_storage_mpath} + %endif + %if %{with_storage_mpath} # For multipath support Requires: device-mapper -%endif -%if %{with_cgconfig} + %endif + %if %{with_storage_sheepdog} +# For Sheepdog support +Requires: sheepdog + %endif + %if %{with_cgconfig} Requires: libcgroup -%endif -%ifarch %{ix86} x86_64 ia64 + %endif + %ifarch %{ix86} x86_64 ia64 # For virConnectGetSysinfo Requires: dmidecode -%endif + %endif # For service management -%if %{with_systemd} + %if %{with_systemd} Requires(post): systemd-units Requires(post): systemd-sysv Requires(preun): systemd-units Requires(postun): systemd-units -%endif -%if %{with_numad} + %endif + %if %{with_numad} Requires: numad -%endif + %endif +# libvirtd depends on 'messagebus' service +Requires: dbus %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} + %if %{with_network} %package daemon-config-network Summary: Default configuration files for the libvirtd daemon Group: Development/Libraries @@ -590,9 +760,9 @@ Requires: libvirt-daemon = %{version}-%{release} %description daemon-config-network Default configuration files for setting up NAT based networking -%endif + %endif -%if %{with_nwfilter} + %if %{with_nwfilter} %package daemon-config-nwfilter Summary: Network filter configuration files for the libvirtd daemon Group: Development/Libraries @@ -601,80 +771,273 @@ Requires: libvirt-daemon = %{version}-%{release} %description daemon-config-nwfilter Network filter configuration files for cleaning guest traffic -%endif + %endif + + %if %{with_driver_modules} + %if %{with_network} +%package daemon-driver-network +Summary: Network driver plugin for the libvirtd daemon +Group: Development/Libraries +Requires: libvirt-daemon = %{version}-%{release} + +%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. + %endif + + + %if %{with_nwfilter} +%package daemon-driver-nwfilter +Summary: Nwfilter driver plugin for the libvirtd daemon +Group: Development/Libraries +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 + %endif + + + %if %{with_nodedev} +%package daemon-driver-nodedev +Summary: Nodedev driver plugin for the libvirtd daemon +Group: Development/Libraries +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. + %endif + + + %if %{with_interface} +%package daemon-driver-interface +Summary: Interface driver plugin for the libvirtd daemon +Group: Development/Libraries +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 +netcf library + %endif + + +%package daemon-driver-secret +Summary: Secret driver plugin for the libvirtd daemon +Group: Development/Libraries +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. + + + %if %{with_storage} +%package daemon-driver-storage +Summary: Storage driver plugin for the libvirtd daemon +Group: Development/Libraries +Requires: libvirt-daemon = %{version}-%{release} + +%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. + %endif + + + %if %{with_qemu} +%package daemon-driver-qemu +Summary: Qemu driver plugin for the libvirtd daemon +Group: Development/Libraries +Requires: libvirt-daemon = %{version}-%{release} +# There really is a hard cross-driver dependency here +Requires: libvirt-daemon-driver-network = %{version}-%{release} + +%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 +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 +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 +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_libxl} +%package daemon-driver-libxl +Summary: Libxl driver plugin for the libvirtd daemon +Group: Development/Libraries +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 + %endif # %{with_driver_modules} + -# 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} + %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} + %if %{with_driver_modules} +Requires: libvirt-daemon-driver-qemu = %{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} + %endif Requires: qemu %description daemon-qemu Server side daemon and driver required to manage the virtualization capabilities of the QEMU TCG emulators -%endif + %endif -%if %{with_qemu_kvm} + %if %{with_qemu_kvm} %package daemon-kvm Summary: Server side daemon & driver required to run KVM guests Group: Development/Libraries Requires: libvirt-daemon = %{version}-%{release} + %if %{with_driver_modules} +Requires: libvirt-daemon-driver-qemu = %{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} + %endif Requires: qemu-kvm %description daemon-kvm Server side daemon and driver required to manage the virtualization capabilities of the KVM hypervisor -%endif + %endif -%if %{with_lxc} + %if %{with_lxc} %package daemon-lxc Summary: Server side daemon & driver required to run LXC guests Group: Development/Libraries Requires: libvirt-daemon = %{version}-%{release} + %if %{with_driver_modules} +Requires: libvirt-daemon-driver-lxc = %{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} + %endif %description daemon-lxc Server side daemon and driver required to manage the virtualization capabilities of LXC -%endif + %endif -%if %{with_uml} + %if %{with_uml} %package daemon-uml Summary: Server side daemon & driver required to run UML guests Group: Development/Libraries Requires: libvirt-daemon = %{version}-%{release} + %if %{with_driver_modules} +Requires: libvirt-daemon-driver-uml = %{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} + %endif # 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 -%endif + %endif -%if %{with_xen} || %{with_libxl} + %if %{with_xen} || %{with_libxl} %package daemon-xen Summary: Server side daemon & driver required to run XEN guests Group: Development/Libraries Requires: libvirt-daemon = %{version}-%{release} + %if %{with_driver_modules} + %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} + %endif Requires: xen %description daemon-xen Server side daemon and driver required to manage the virtualization capabilities of XEN -%endif -%endif + %endif +%endif # %{with_libvirtd} %package client Summary: Client side library and utilities of the libvirt library @@ -715,10 +1078,15 @@ Include header files & development libraries for the libvirt C library. %package lock-sanlock Summary: Sanlock lock manager plugin for QEMU driver Group: Development/Libraries + %if 0%{?fedora} >= 17 || 0%{?rhel} >= 6 +Requires: sanlock >= 2.4 + %else Requires: sanlock >= 1.8 + %endif #for virt-sanlock-cleanup require augeas Requires: augeas -Requires: %{name} = %{version}-%{release} +Requires: %{name}-daemon = %{version}-%{release} +Requires: %{name}-client = %{version}-%{release} %description lock-sanlock Includes the Sanlock lock manager plugin for the QEMU @@ -740,154 +1108,184 @@ of recent versions of Linux (and other OSes). %prep %setup -q +%patch1 -p1 +%patch2 -p1 %build %if ! %{with_xen} -%define _without_xen --without-xen + %define _without_xen --without-xen %endif %if ! %{with_qemu} -%define _without_qemu --without-qemu + %define _without_qemu --without-qemu %endif %if ! %{with_openvz} -%define _without_openvz --without-openvz + %define _without_openvz --without-openvz %endif %if ! %{with_lxc} -%define _without_lxc --without-lxc + %define _without_lxc --without-lxc %endif %if ! %{with_vbox} -%define _without_vbox --without-vbox + %define _without_vbox --without-vbox %endif %if ! %{with_xenapi} -%define _without_xenapi --without-xenapi + %define _without_xenapi --without-xenapi %endif %if ! %{with_libxl} -%define _without_libxl --without-libxl + %define _without_libxl --without-libxl %endif %if ! %{with_sasl} -%define _without_sasl --without-sasl + %define _without_sasl --without-sasl %endif %if ! %{with_avahi} -%define _without_avahi --without-avahi + %define _without_avahi --without-avahi %endif %if ! %{with_phyp} -%define _without_phyp --without-phyp + %define _without_phyp --without-phyp %endif %if ! %{with_esx} -%define _without_esx --without-esx + %define _without_esx --without-esx %endif %if ! %{with_hyperv} -%define _without_hyperv --without-hyperv + %define _without_hyperv --without-hyperv %endif %if ! %{with_vmware} -%define _without_vmware --without-vmware + %define _without_vmware --without-vmware +%endif + +%if ! %{with_parallels} + %define _without_parallels --without-parallels %endif %if ! %{with_polkit} -%define _without_polkit --without-polkit + %define _without_polkit --without-polkit %endif %if ! %{with_python} -%define _without_python --without-python + %define _without_python --without-python %endif %if ! %{with_libvirtd} -%define _without_libvirtd --without-libvirtd + %define _without_libvirtd --without-libvirtd %endif %if ! %{with_uml} -%define _without_uml --without-uml + %define _without_uml --without-uml %endif %if %{with_rhel5} -%define _with_rhel5_api --with-rhel5-api + %define _with_rhel5_api --with-rhel5-api +%endif + +%if ! %{with_interface} + %define _without_interface --without-interface %endif %if ! %{with_network} -%define _without_network --without-network + %define _without_network --without-network %endif %if ! %{with_storage_fs} -%define _without_storage_fs --without-storage-fs + %define _without_storage_fs --without-storage-fs %endif %if ! %{with_storage_lvm} -%define _without_storage_lvm --without-storage-lvm + %define _without_storage_lvm --without-storage-lvm %endif %if ! %{with_storage_iscsi} -%define _without_storage_iscsi --without-storage-iscsi + %define _without_storage_iscsi --without-storage-iscsi %endif %if ! %{with_storage_disk} -%define _without_storage_disk --without-storage-disk + %define _without_storage_disk --without-storage-disk %endif %if ! %{with_storage_mpath} -%define _without_storage_mpath --without-storage-mpath + %define _without_storage_mpath --without-storage-mpath +%endif + +%if ! %{with_storage_rbd} + %define _without_storage_rbd --without-storage-rbd +%endif + +%if ! %{with_storage_sheepdog} + %define _without_storage_sheepdog --without-storage-sheepdog %endif %if ! %{with_numactl} -%define _without_numactl --without-numactl + %define _without_numactl --without-numactl %endif %if ! %{with_numad} -%define _without_numad --without-numad + %define _without_numad --without-numad %endif %if ! %{with_capng} -%define _without_capng --without-capng + %define _without_capng --without-capng +%endif + +%if ! %{with_fuse} + %define _without_fuse --without-fuse %endif %if ! %{with_netcf} -%define _without_netcf --without-netcf + %define _without_netcf --without-netcf %endif %if ! %{with_selinux} -%define _without_selinux --without-selinux + %define _without_selinux --without-selinux %endif %if ! %{with_hal} -%define _without_hal --without-hal + %define _without_hal --without-hal %endif %if ! %{with_udev} -%define _without_udev --without-udev + %define _without_udev --without-udev %endif %if ! %{with_yajl} -%define _without_yajl --without-yajl + %define _without_yajl --without-yajl %endif %if ! %{with_sanlock} -%define _without_sanlock --without-sanlock + %define _without_sanlock --without-sanlock %endif %if ! %{with_libpcap} -%define _without_libpcap --without-libpcap + %define _without_libpcap --without-libpcap %endif %if ! %{with_macvtap} -%define _without_macvtap --without-macvtap + %define _without_macvtap --without-macvtap %endif %if ! %{with_audit} -%define _without_audit --without-audit + %define _without_audit --without-audit %endif %if ! %{with_dtrace} -%define _without_dtrace --without-dtrace + %define _without_dtrace --without-dtrace +%endif + +%if ! %{with_driver_modules} + %define _without_driver_modules --without-driver-modules +%endif + +%if %{with_firewalld} + %define _with_firewalld --with-firewalld %endif %define when %(date +"%%F-%%T") @@ -897,16 +1295,23 @@ of recent versions of Linux (and other OSes). %define with_packager_version --with-packager-version="%{release}" %if %{with_systemd} -# We use 'systemd+redhat', so if someone installs upstart or -# legacy init scripts, they can still start libvirtd, etc -%define init_scripts --with-init_script=systemd+redhat + %define init_scripts --with-init_script=systemd %else -%define init_scripts --with-init_script=redhat + %define init_scripts --with-init_script=redhat %endif %if 0%{?enable_autotools} -autoreconf -if + autoreconf -if %endif + +%if %{with_selinux} + %if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 + %define with_selinux_mount --with-selinux-mount="/sys/fs/selinux" + %else + %define with_selinux_mount --with-selinux-mount="/selinux" + %endif +%endif + %configure %{?_without_xen} \ %{?_without_qemu} \ %{?_without_openvz} \ @@ -924,6 +1329,8 @@ autoreconf -if %{?_without_esx} \ %{?_without_hyperv} \ %{?_without_vmware} \ + %{?_without_parallels} \ + %{?_without_interface} \ %{?_without_network} \ %{?_with_rhel5_api} \ %{?_without_storage_fs} \ @@ -931,11 +1338,15 @@ autoreconf -if %{?_without_storage_iscsi} \ %{?_without_storage_disk} \ %{?_without_storage_mpath} \ + %{?_without_storage_rbd} \ + %{?_without_storage_sheepdog} \ %{?_without_numactl} \ %{?_without_numad} \ %{?_without_capng} \ + %{?_without_fuse} \ %{?_without_netcf} \ %{?_without_selinux} \ + %{?_with_selinux_mount} \ %{?_without_hal} \ %{?_without_udev} \ %{?_without_yajl} \ @@ -944,12 +1355,12 @@ autoreconf -if %{?_without_macvtap} \ %{?_without_audit} \ %{?_without_dtrace} \ + %{?_without_driver_modules} \ + %{?_with_firewalld} \ %{with_packager} \ %{with_packager_version} \ --with-qemu-user=%{qemu_user} \ --with-qemu-group=%{qemu_group} \ - --with-capng \ - --with-udev \ %{init_scripts} make %{?_smp_mflags} gzip -9 ChangeLog @@ -968,6 +1379,10 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.la rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.a rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/lock-driver/*.la rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/lock-driver/*.a +%if %{with_driver_modules} +rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/connection-driver/*.la +rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/connection-driver/*.a +%endif %if %{with_network} install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/lib/libvirt/dnsmasq/ @@ -991,6 +1406,11 @@ rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug %endif %find_lang %{name} +%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 + %if ! %{with_lxc} rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_lxc.aug rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug @@ -998,6 +1418,8 @@ rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug %if ! %{with_python} rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-python-%{version} +%else +rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-python-%{version}/examples %endif %if ! %{with_qemu} @@ -1015,23 +1437,38 @@ rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.uml mv $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-%{version} \ $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-docs-%{version} +%if %{with_dtrace} + %ifarch %{power64} s390x x86_64 ia64 alpha sparc64 +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 +%endif + +%if 0%{?fedora} < 14 && 0%{?rhel} < 6 +rm -f $RPM_BUILD_ROOT%{_prefix}/lib/sysctl.d/libvirtd.conf +%endif + %clean rm -fr %{buildroot} %check cd tests -# These 3 tests don't current work in a mock build root -for i in nodeinfotest daemon-conf seclabeltest +make +# These tests don't current work in a mock build root +for i in nodeinfotest seclabeltest do rm -f $i - printf "#!/bin/sh\nexit 0\n" > $i + printf 'int main(void) { return 0; }' > $i.c + printf '#!/bin/sh\nexit 0\n' > $i chmod +x $i done -#make check +make check %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 # here for case of upgrades from earlier Fedora/RHEL. This # UID/GID pair is reserved for qemu:qemu @@ -1040,11 +1477,11 @@ getent group qemu >/dev/null || groupadd -g 107 -r qemu getent passwd qemu >/dev/null || \ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ -c "qemu user" qemu -%endif + %endif %post daemon -%if %{with_network} + %if %{with_network} # All newly defined networks will have a mac address for the bridge # auto-generated, but networks already existing at the time of upgrade # will not. We need to go through all the network configs, look for @@ -1084,55 +1521,73 @@ do fi done done -%endif + %endif -%if %{with_systemd} + %if %{with_systemd} + %if %{with_systemd_macros} + %systemd_post libvirtd.service + %else if [ $1 -eq 1 ] ; then # Initial installation + /bin/systemctl enable virtlockd.socket >/dev/null 2>&1 || : /bin/systemctl enable libvirtd.service >/dev/null 2>&1 || : - /bin/systemctl enable cgconfig.service >/dev/null 2>&1 || : fi -%else -%if %{with_cgconfig} -# Starting with Fedora 16, systemd automounts all cgroups, and cgconfig is -# no longer a necessary service. -%if 0%{?rhel} || (0%{?fedora} && 0%{?fedora} < 16) + %endif + %else + %if %{with_cgconfig} +# Starting with Fedora 16/RHEL-7, systemd automounts all cgroups, +# and cgconfig is no longer a necessary service. + %if (0%{?rhel} && 0%{?rhel} < 7) || (0%{?fedora} && 0%{?fedora} < 16) if [ "$1" -eq "1" ]; then /sbin/chkconfig cgconfig on fi -%endif -%endif + %endif + %endif /sbin/chkconfig --add libvirtd if [ "$1" -ge "1" ]; then - /sbin/service libvirtd condrestart > /dev/null 2>&1 + /sbin/service libvirtd condrestart > /dev/null 2>&1 fi -%endif + %endif %preun daemon -%if %{with_systemd} + %if %{with_systemd} + %if %{with_systemd_macros} + %systemd_preun libvirtd.service + %else if [ $1 -eq 0 ] ; then # Package removal, not upgrade + /bin/systemctl --no-reload disable virtlockd.socket > /dev/null 2>&1 || : /bin/systemctl --no-reload disable libvirtd.service > /dev/null 2>&1 || : /bin/systemctl stop libvirtd.service > /dev/null 2>&1 || : + /bin/systemctl stop virtlockd.service > /dev/null 2>&1 || : fi -%else + %endif + %else if [ $1 = 0 ]; then /sbin/service libvirtd stop 1>/dev/null 2>&1 /sbin/chkconfig --del libvirtd fi -%endif + %endif %postun daemon -%if %{with_systemd} + %if %{with_systemd} + %if %{with_systemd_macros} + %systemd_postun_with_restart libvirtd.service + %else /bin/systemctl daemon-reload >/dev/null 2>&1 || : if [ $1 -ge 1 ] ; then # Package upgrade, not uninstall + /bin/systemctl status virtlockd.service >/dev/null 2>&1 + if [ $? = 1 ] ; then + /bin/systemctl kill --signal=USR1 virtlockd.service >/dev/null 2>&1 || : + fi /bin/systemctl try-restart libvirtd.service >/dev/null 2>&1 || : fi -%endif + %endif + %endif -%if %{with_network} + %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` @@ -1141,11 +1596,9 @@ if test $1 -eq 1 && test ! -f %{_sysconfdir}/libvirt/qemu/networks/default.xml ; > %{_sysconfdir}/libvirt/qemu/networks/default.xml ln -s ../default.xml %{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml fi -%endif -%endif + %endif -%if %{with_libvirtd} -%if %{with_systemd} + %if %{with_systemd} %triggerun -- libvirt < 0.9.4 %{_bindir}/systemd-sysv-convert --save libvirtd >/dev/null 2>&1 ||: @@ -1155,12 +1608,15 @@ fi # Run these because the SysV package being removed won't do them /sbin/chkconfig --del libvirtd >/dev/null 2>&1 || : /bin/systemctl try-restart libvirtd.service >/dev/null 2>&1 || : -%endif -%endif + %endif +%endif # %{with_libvirtd} %preun client %if %{with_systemd} + %if %{with_systemd_macros} + %systemd_preun libvirt-guests.service + %endif %else if [ $1 = 0 ]; then /sbin/chkconfig --del libvirt-guests @@ -1172,13 +1628,20 @@ fi /sbin/ldconfig %if %{with_systemd} + %if %{with_systemd_macros} + %systemd_post libvirt-guests.service + %endif %else /sbin/chkconfig --add libvirt-guests %endif -%postun client -p /sbin/ldconfig +%postun client +/sbin/ldconfig %if %{with_systemd} + %if %{with_systemd_macros} + %systemd_postun_with_restart libvirt-guests.service + %endif %triggerun client -- libvirt < 0.9.4 %{_bindir}/systemd-sysv-convert --save libvirt-guests >/dev/null 2>&1 ||: @@ -1190,6 +1653,14 @@ fi /bin/systemctl try-restart libvirt-guests.service >/dev/null 2>&1 || : %endif +%if %{with_sanlock} +%post lock-sanlock +if getent group sanlock > /dev/null ; then + chmod 0770 %{_localstatedir}/lib/libvirt/sanlock + chown root:sanlock %{_localstatedir}/lib/libvirt/sanlock +fi +%endif + %files %defattr(-, root, root) @@ -1214,52 +1685,56 @@ fi %doc AUTHORS ChangeLog.gz NEWS README COPYING.LIB TODO %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/ -%if %{with_network} + %if %{with_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 -%endif + %endif %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/nwfilter/ -%{_sysconfdir}/rc.d/init.d/libvirtd -%if %{with_systemd} + %if %{with_systemd} %{_unitdir}/libvirtd.service -%endif +%{_unitdir}/virtlockd.service +%{_unitdir}/virtlockd.socket + %else +%{_sysconfdir}/rc.d/init.d/libvirtd +%{_sysconfdir}/rc.d/init.d/virtlockd + %endif %doc daemon/libvirtd.upstart %config(noreplace) %{_sysconfdir}/sysconfig/libvirtd +%config(noreplace) %{_sysconfdir}/sysconfig/virtlockd %config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf -%if 0%{?fedora} >= 14 || 0%{?rhel} >= 6 -%config(noreplace) %{_sysconfdir}/sysctl.d/libvirtd -%else -rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd -%endif + %if 0%{?fedora} >= 14 || 0%{?rhel} >= 6 +%config(noreplace) %{_prefix}/lib/sysctl.d/libvirtd.conf + %endif %dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/qemu/ %dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/lxc/ %dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/uml/ -%if %{with_libxl} + %if %{with_libxl} %dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/libxl/ -%endif + %endif %config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd -%if %{with_qemu} + %if %{with_qemu} %config(noreplace) %{_sysconfdir}/libvirt/qemu.conf +%config(noreplace) %{_sysconfdir}/libvirt/qemu-lockd.conf %config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.qemu -%endif -%if %{with_lxc} + %endif + %if %{with_lxc} %config(noreplace) %{_sysconfdir}/libvirt/lxc.conf %config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.lxc -%endif -%if %{with_uml} + %endif + %if %{with_uml} %config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.uml -%endif + %endif %dir %{_datadir}/libvirt/ -%if %{with_network} + %if %{with_network} %dir %{_datadir}/libvirt/networks/ %{_datadir}/libvirt/networks/default.xml -%endif + %endif %ghost %dir %{_localstatedir}/run/libvirt/ @@ -1268,115 +1743,191 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd %dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/boot/ %dir %attr(0711, root, root) %{_localstatedir}/cache/libvirt/ -%if %{with_qemu} + %if %{with_qemu} %ghost %dir %attr(0700, root, root) %{_localstatedir}/run/libvirt/qemu/ %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/ %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/cache/libvirt/qemu/ -%endif -%if %{with_lxc} + %endif + %if %{with_lxc} %ghost %dir %{_localstatedir}/run/libvirt/lxc/ %dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/lxc/ -%endif -%if %{with_uml} + %endif + %if %{with_uml} %ghost %dir %{_localstatedir}/run/libvirt/uml/ %dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/uml/ -%endif -%if %{with_libxl} + %endif + %if %{with_libxl} %ghost %dir %{_localstatedir}/run/libvirt/libxl/ %dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/ -%endif -%if %{with_network} + %endif + %if %{with_xen} +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/xen/ + %endif + %if %{with_network} %ghost %dir %{_localstatedir}/run/libvirt/network/ %dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/network/ %dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/dnsmasq/ -%endif + %endif -%if %{with_qemu} +%dir %attr(0755, root, root) %{_libdir}/libvirt/lock-driver +%attr(0755, root, root) %{_libdir}/libvirt/lock-driver/lockd.so + + %if %{with_qemu} %{_datadir}/augeas/lenses/libvirtd_qemu.aug %{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug -%endif + %endif -%if %{with_lxc} + %if %{with_lxc} %{_datadir}/augeas/lenses/libvirtd_lxc.aug %{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug -%endif + %endif %{_datadir}/augeas/lenses/libvirtd.aug %{_datadir}/augeas/lenses/tests/test_libvirtd.aug +%{_datadir}/augeas/lenses/libvirt_lockd.aug +%{_datadir}/augeas/lenses/tests/test_libvirt_lockd.aug -%if %{with_polkit} -%if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 + %if %{with_polkit} + %if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 %{_datadir}/polkit-1/actions/org.libvirt.unix.policy -%else + %else %{_datadir}/PolicyKit/policy/org.libvirt.unix.policy -%endif -%endif + %endif + %endif %dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/ -%if %{with_lxc} + %if %{with_lxc} %attr(0755, root, root) %{_libexecdir}/libvirt_lxc -%endif + %endif -%if %{with_storage_disk} + %if %{with_storage_disk} %attr(0755, root, root) %{_libexecdir}/libvirt_parthelper -%endif + %endif %attr(0755, root, root) %{_libexecdir}/libvirt_iohelper %attr(0755, root, root) %{_sbindir}/libvirtd +%attr(0755, root, root) %{_sbindir}/virtlockd %{_mandir}/man8/libvirtd.8* -%if %{with_network} + %if %{with_driver_modules} + %if %{with_network} %files daemon-config-network %defattr(-, root, root) -%endif + %endif -%if %{with_nwfilter} + %if %{with_nwfilter} %files daemon-config-nwfilter %defattr(-, root, root) %{_sysconfdir}/libvirt/nwfilter/*.xml -%endif + %endif + + %if %{with_interface} +%files daemon-driver-interface +%defattr(-, root, root) +%{_libdir}/%{name}/connection-driver/libvirt_driver_interface.so + %endif + + %if %{with_network} +%files daemon-driver-network +%defattr(-, root, root) +%{_libdir}/%{name}/connection-driver/libvirt_driver_network.so + %endif + + %if %{with_nodedev} +%files daemon-driver-nodedev +%defattr(-, root, root) +%{_libdir}/%{name}/connection-driver/libvirt_driver_nodedev.so + %endif + + %if %{with_nwfilter} +%files daemon-driver-nwfilter +%defattr(-, root, root) +%{_libdir}/%{name}/connection-driver/libvirt_driver_nwfilter.so + %endif + +%files daemon-driver-secret +%defattr(-, root, root) +%{_libdir}/%{name}/connection-driver/libvirt_driver_secret.so -%if %{with_qemu_tcg} + %if %{with_storage} +%files daemon-driver-storage +%defattr(-, root, root) +%{_libdir}/%{name}/connection-driver/libvirt_driver_storage.so + %endif + + %if %{with_qemu} +%files daemon-driver-qemu +%defattr(-, root, root) +%{_libdir}/%{name}/connection-driver/libvirt_driver_qemu.so + %endif + + %if %{with_lxc} +%files daemon-driver-lxc +%defattr(-, root, root) +%{_libdir}/%{name}/connection-driver/libvirt_driver_lxc.so + %endif + + %if %{with_uml} +%files daemon-driver-uml +%defattr(-, root, root) +%{_libdir}/%{name}/connection-driver/libvirt_driver_uml.so + %endif + + %if %{with_xen} +%files daemon-driver-xen +%defattr(-, root, root) +%{_libdir}/%{name}/connection-driver/libvirt_driver_xen.so + %endif + + %if %{with_libxl} +%files daemon-driver-libxl +%defattr(-, root, root) +%{_libdir}/%{name}/connection-driver/libvirt_driver_libxl.so + %endif + %endif # %{with_driver_modules} + + %if %{with_qemu_tcg} %files daemon-qemu %defattr(-, root, root) -%endif + %endif -%if %{with_qemu_kvm} + %if %{with_qemu_kvm} %files daemon-kvm %defattr(-, root, root) -%endif + %endif -%if %{with_lxc} + %if %{with_lxc} %files daemon-lxc %defattr(-, root, root) -%endif + %endif -%if %{with_uml} + %if %{with_uml} %files daemon-uml %defattr(-, root, root) -%endif + %endif -%if %{with_xen} || %{with_libxl} + %if %{with_xen} || %{with_libxl} %files daemon-xen %defattr(-, root, root) -%endif -%endif + %endif +%endif # %{with_libvirtd} -#%if %{with_sanlock} -#%files lock-sanlock -#%defattr(-, root, root) -#%if %{with_qemu} -#%config(noreplace) %{_sysconfdir}/libvirt/qemu-sanlock.conf -#%endif -#%attr(0755, root, root) %{_libdir}/libvirt/lock-driver/sanlock.so -#%{_datadir}/augeas/lenses/libvirt_sanlock.aug -#%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug -#%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/sanlock -#%{_sbindir}/virt-sanlock-cleanup -#%{_mandir}/man8/virt-sanlock-cleanup.8* -#%endif +%if %{with_sanlock} +%files lock-sanlock +%defattr(-, root, root) + %if %{with_qemu} +%config(noreplace) %{_sysconfdir}/libvirt/qemu-sanlock.conf + %endif +%attr(0755, root, root) %{_libdir}/libvirt/lock-driver/sanlock.so +%{_datadir}/augeas/lenses/libvirt_sanlock.aug +%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/sanlock +%{_sbindir}/virt-sanlock-cleanup +%{_mandir}/man8/virt-sanlock-cleanup.8* +%attr(0755, root, root) %{_libexecdir}/libvirt_sanlock_helper +%endif %files client -f %{name}.lang %defattr(-, root, root) @@ -1394,7 +1945,8 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd %{_libdir}/lib*.so.* %if %{with_dtrace} -%{_datadir}/systemtap/tapset/libvirt_probes.stp +%{_datadir}/systemtap/tapset/libvirt_probes*.stp +%{_datadir}/systemtap/tapset/libvirt_qemu_probes*.stp %{_datadir}/systemtap/tapset/libvirt_functions.stp %endif @@ -1418,11 +1970,13 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd %{_datadir}/libvirt/cpu_map.xml -%{_sysconfdir}/rc.d/init.d/libvirt-guests %if %{with_systemd} %{_unitdir}/libvirt-guests.service +%else +%{_sysconfdir}/rc.d/init.d/libvirt-guests %endif %config(noreplace) %{_sysconfdir}/sysconfig/libvirt-guests +%attr(0755, root, root) %{_libexecdir}/libvirt-guests.sh %dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/ %if %{with_sasl} @@ -1440,6 +1994,7 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd %dir %{_datadir}/libvirt/api/ %{_datadir}/libvirt/api/libvirt-api.xml %{_datadir}/libvirt/api/libvirt-qemu-api.xml +%{_datadir}/libvirt/api/libvirt-lxc-api.xml %doc docs/*.html docs/html docs/*.gif %doc docs/libvirt-api.xml @@ -1458,6 +2013,7 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd %doc AUTHORS NEWS README COPYING.LIB %{_libdir}/python*/site-packages/libvirt.py* %{_libdir}/python*/site-packages/libvirt_qemu.py* +%{_libdir}/python*/site-packages/libvirt_lxc.py* %{_libdir}/python*/site-packages/libvirtmod* %doc python/tests/*.py %doc python/TODO @@ -1466,6 +2022,68 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd %endif %changelog +* Wed Jan 30 2013 Daniel Veillard - 1.0.2-1 +- LXC improvements +- S390 architecture improvement +- Power architecture improvement +- large Coverity report cleanups and associated bug fixes +- virTypedParams* APIs to helps with those data structures +- a lot of bug fixes and overall improvements + +* Fri Nov 2 2012 Daniel Veillard - 1.0.0-1 +- virNodeGetCPUMap: Define public API +- Add systemd journal support +- Add a qemu capabilities cache manager +- USB migration support +- various improvement and fixes when using QMP QEmu interface +- Support for Xen 4.2 +- Lot of localization enhancements +- a lot of bug fixes, improvements and portability work + +* Mon Sep 24 2012 Daniel Veillard - 0.10.2-1 +- network: define new API virNetworkUpdate +- add support for QEmu sandbox support +- blockjob: add virDomainBlockCommit +- New APIs to get/set Node memory parameters +- new API virConnectListAllSecrets +- new API virConnectListAllNWFilters +- new API virConnectListAllNodeDevices +- parallels: add support of containers to the driver +- new API virConnectListAllInterfaces +- new API virConnectListAllNetworks +- new API virStoragePoolListAllVolumes +- Add PMSUSPENDED life cycle event +- new API virStorageListAllStoragePools +- Add per-guest S3/S4 state configuration +- qemu: Support for Block Device IO Limits +- a lot of bug fixes, improvements and portability work + +* Fri Aug 31 2012 Daniel Veillard - 0.10.1-1 +- bugfixes and a brown paper bag + +* Wed Aug 29 2012 Daniel Veillard - 0.10.0-1 +- agent: add qemuAgentArbitraryCommand() for general qemu agent command +- Introduce virDomainPinEmulator and virDomainGetEmulatorPinInfo functions +- network: use firewalld instead of iptables, when available +- network: make network driver vlan-aware +- esx: Implement network driver +- driver for parallels hypervisor +- Various LXC improvements +- Add virDomainGetHostname +- a lot of bug fixes, improvements and portability work + +* Mon Jul 2 2012 Daniel Veillard - 0.9.13-1 +- S390: support for s390(x) +- snapshot: implement new APIs for esx and vbox +- snapshot: new query APIs and many improvements +- virsh: Allow users to reedit rejected XML +- nwfilter: add DHCP snooping +- Enable driver modules in libvirt RPM +- Default to enable driver modules for libvirtd +- storage backend: Add RBD (RADOS Block Device) support +- sVirt support for LXC domains inprovement +- a lot of bug fixes, improvements and portability work + * Mon May 14 2012 Daniel Veillard - 0.9.12-1 - qemu: allow snapshotting of sheepdog and rbd disks - blockjob: add new APIs