X-Git-Url: http://git.onelab.eu/?p=libvirt.git;a=blobdiff_plain;f=libvirt.spec;h=dc338ec292607b66ae4e1b0b18f407dd8143ac91;hp=16d8ccd7195f5dcfa2c02a38ccb6fbfaaea6c6b9;hb=bdf8c383f1803655b00e3812424720a584adf702;hpb=e38a33818807f767d8bebddbc832392b0cd74e72 diff --git a/libvirt.spec b/libvirt.spec index 16d8ccd..dc338ec 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -1,5 +1,9 @@ # -*- rpm-spec -*- +%define mainstream_version 1.0.2 +%define module_version_varname mainstream_version +%define taglevel 0 + # If neither fedora nor rhel was defined, try to guess them from %{dist} %if !0%{?rhel} && !0%{?fedora} %{expand:%(echo "%{?dist}" | \ @@ -22,7 +26,7 @@ # RHEL-5 builds are client-only for s390, ppc %if 0%{?rhel} == 5 -%ifnarch i386 i586 i686 x86_64 ia64 +%ifnarch %{ix86} x86_64 ia64 %define client_only 1 %endif %endif @@ -34,6 +38,8 @@ %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 @@ -42,31 +48,50 @@ %define with_libvirtd 0%{!?_without_libvirtd:%{server_drivers}} %define with_avahi 0%{!?_without_avahi:%{server_drivers}} -# Then the hypervisor drivers that run on local host +# Then the hypervisor drivers that run in libvirtd %define with_xen 0%{!?_without_xen:%{server_drivers}} %define with_qemu 0%{!?_without_qemu:%{server_drivers}} -%define with_openvz 0%{!?_without_openvz:%{server_drivers}} %define with_lxc 0%{!?_without_lxc:%{server_drivers}} -%define with_vbox 0%{!?_without_vbox:%{server_drivers}} %define with_uml 0%{!?_without_uml:%{server_drivers}} %define with_libxl 0%{!?_without_libxl:%{server_drivers}} -%define with_vmware 0%{!?_without_vmware:%{server_drivers}} -# Then the hypervisor drivers that talk via a native remote protocol +%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 run outside libvirtd, in libvirt.so +%define with_openvz 0%{!?_without_openvz:1} +%define with_vbox 0%{!?_without_vbox:1} +%define with_vmware 0%{!?_without_vmware:1} %define with_phyp 0%{!?_without_phyp:1} %define with_esx 0%{!?_without_esx:1} %define with_hyperv 0%{!?_without_hyperv:1} %define with_xenapi 0%{!?_without_xenapi:1} - -# Then the secondary host 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}} -%define with_numactl 0%{!?_without_numactl:%{server_drivers}} -%define with_selinux 0%{!?_without_selinux:%{server_drivers}} +%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}} +%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} @@ -84,6 +109,8 @@ %define with_cgconfig 0%{!?_without_cgconfig:0} %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} # Non-server/HV driver defaults which are always enabled %define with_python 0%{!?_without_python:1} @@ -93,7 +120,7 @@ # Finally set the OS / architecture specific special cases # Xen is available only on i386 x86_64 ia64 -%ifnarch i386 i586 i686 x86_64 ia64 +%ifnarch %{ix86} x86_64 ia64 %define with_xen 0 %define with_libxl 0 %endif @@ -115,17 +142,26 @@ %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 +# 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 %endif @@ -133,14 +169,16 @@ # 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 %endif -# Fedora doesn't have any QEMU on ppc64 - only ppc -%if 0%{?fedora} +# 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 @@ -184,7 +222,7 @@ %define with_sanlock 0%{!?_without_sanlock:%{server_drivers}} %endif %if 0%{?rhel} >= 6 -%ifarch i386 i586 i686 x86_64 +%ifarch %{ix86} x86_64 %define with_sanlock 0%{!?_without_sanlock:%{server_drivers}} %endif %endif @@ -202,14 +240,24 @@ %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 -# Enable libpcap library -%if %{with_qemu} +%if %{with_qemu} || %{with_lxc} || %{with_uml} %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}} + +# 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 %endif %if %{with_macvtap} @@ -231,6 +279,25 @@ %endif %endif +%if %{with_udev} || %{with_hal} +%define with_nodedev 1 +%else +%define with_nodedev 0 +%endif + +%if %{with_netcf} +%define with_interface 1 +%else +%define with_interface 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 @@ -251,112 +318,55 @@ Summary: Library providing a simple virtualization API Name: libvirt -Version: 0.9.9 -Release: 1%{?dist}%{?extra_release} +Version: %{mainstream_version} +Release: %{taglevel} License: LGPLv2+ Group: Development/Libraries -Source: http://libvirt.org/sources/libvirt-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root 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} +%if %(echo %{version} | grep -o \\. | wc -l) == 3 +%define mainturl stable_updates/ +%endif +Source: http://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.gz -# Used by many of the drivers, so turn it on whenever the -# daemon is present %if %{with_libvirtd} -# for modprobe of pci devices -Requires: module-init-tools -# for /sbin/ip & /sbin/tc -Requires: iproute -%if %{with_avahi} -Requires: avahi -%endif -%endif +Requires: libvirt-daemon = %{version}-%{release} %if %{with_network} -Requires: dnsmasq >= 2.41 -Requires: radvd -%endif -%if %{with_network} || %{with_nwfilter} -Requires: iptables -Requires: iptables-ipv6 +Requires: libvirt-daemon-config-network = %{version}-%{release} %endif %if %{with_nwfilter} -Requires: ebtables -%endif -# needed for device enumeration -%if %{with_hal} -Requires: hal +Requires: libvirt-daemon-config-nwfilter = %{version}-%{release} %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 +%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} -# 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 +Requires: libvirt-daemon-driver-qemu = %{version}-%{release} %endif -%if %{with_storage_disk} -# For disk driver -Requires: parted -Requires: device-mapper +%if %{with_uml} +Requires: libvirt-daemon-driver-uml = %{version}-%{release} %endif -%if %{with_storage_mpath} -# For multipath support -Requires: device-mapper +%if %{with_xen} +Requires: libvirt-daemon-driver-xen = %{version}-%{release} %endif -%if %{with_cgconfig} -Requires: libcgroup + +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 -# For virConnectGetSysinfo -Requires: dmidecode -# For service management -%if %{with_systemd} -Requires(post): systemd-units -Requires(post): systemd-sysv -Requires(preun): systemd-units -Requires(postun): systemd-units %endif +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} BuildRequires: autoconf BuildRequires: automake @@ -386,7 +396,11 @@ 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} @@ -399,8 +413,12 @@ BuildRequires: sanlock-devel >= 1.8 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 %endif @@ -465,6 +483,9 @@ BuildRequires: device-mapper %else BuildRequires: device-mapper-devel %endif +%if %{with_storage_rbd} +BuildRequires: ceph-devel +%endif %endif %if %{with_numactl} # For QEMU/LXC numa info @@ -476,13 +497,18 @@ BuildRequires: libcap-ng-devel >= 0.5.0 %if %{with_phyp} BuildRequires: libssh2-devel %endif + %if %{with_netcf} +%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 BuildRequires: netcf-devel >= 0.1.4 %endif %endif +%endif %if %{with_esx} %if 0%{?fedora} >= 9 || 0%{?rhel} >= 6 BuildRequires: libcurl-devel @@ -508,14 +534,448 @@ 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 +# For storage wiping with different algorithms +BuildRequires: scrub + +%if %{with_numad} +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 the libvirtd server exporting the virtualization support. +%package docs +Summary: API reference and website documentation +Group: Development/Libraries + +%description docs +Includes the API reference for the libvirt C library, and a complete +copy of the libvirt.org 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} +%if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 +Requires: systemd >= 185 +%else +Requires: udev >= 145 +%endif +%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_storage_rbd} +# For RBD support +Requires: ceph +%endif +%if %{with_storage_sheepdog} +# For Sheepdog support +Requires: sheepdog +%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 + +%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 +%if %{with_driver_modules} +Requires: libvirt-daemon-driver-network = %{version}-%{release} +%endif + +%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 +%if %{with_driver_modules} +Requires: libvirt-daemon-driver-network = %{version}-%{release} +%endif + +%description daemon-driver-lxc +The LXC driver plugin for the libvirtd daemon, providing +an implementation of the hypervisor driver APIs using +the Linux kernel +%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 + + + +%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 + + +%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 + + +%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 + + +%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 + + +%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 + %package client Summary: Client side library and utilities of the libvirt library Group: Development/Libraries @@ -545,14 +1005,11 @@ virtualization capabilities of recent versions of Linux (and other OSes). Summary: Libraries, includes, etc. to compile with the libvirt library Group: Development/Libraries Requires: %{name}-client = %{version}-%{release} +Requires: %{name}-docs = %{version}-%{release} Requires: pkgconfig -%if %{with_xen} -Requires: xen-devel -%endif %description devel -Includes and documentations for the C library providing an API to use -the virtualization capabilities of recent versions of Linux (and other OSes). +Include header files & development libraries for the libvirt C library. %if %{with_sanlock} %package lock-sanlock @@ -561,7 +1018,7 @@ Group: Development/Libraries Requires: sanlock >= 1.8 #for virt-sanlock-cleanup require augeas Requires: augeas -Requires: %{name} = %{version}-%{release} +Requires: %{name}-daemon = %{version}-%{release} %description lock-sanlock Includes the Sanlock lock manager plugin for the QEMU @@ -637,6 +1094,10 @@ of recent versions of Linux (and other OSes). %define _without_vmware --without-vmware %endif +%if ! %{with_parallels} +%define _without_parallels --without-parallels +%endif + %if ! %{with_polkit} %define _without_polkit --without-polkit %endif @@ -681,10 +1142,22 @@ of recent versions of Linux (and other OSes). %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 %endif +%if ! %{with_numad} +%define _without_numad --without-numad +%endif + %if ! %{with_capng} %define _without_capng --without-capng %endif @@ -729,6 +1202,14 @@ of recent versions of Linux (and other OSes). %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") %define where %(hostname) %define who %{?packager}%{!?packager:Unknown} @@ -751,6 +1232,7 @@ autoreconf -if %{?_without_openvz} \ %{?_without_lxc} \ %{?_without_vbox} \ + %{?_without_libxl} \ %{?_without_xenapi} \ %{?_without_sasl} \ %{?_without_avahi} \ @@ -762,6 +1244,7 @@ autoreconf -if %{?_without_esx} \ %{?_without_hyperv} \ %{?_without_vmware} \ + %{?_without_parallels} \ %{?_without_network} \ %{?_with_rhel5_api} \ %{?_without_storage_fs} \ @@ -769,7 +1252,10 @@ autoreconf -if %{?_without_storage_iscsi} \ %{?_without_storage_disk} \ %{?_without_storage_mpath} \ + %{?_without_storage_rbd} \ + %{?_without_storage_sheepdog} \ %{?_without_numactl} \ + %{?_without_numad} \ %{?_without_capng} \ %{?_without_netcf} \ %{?_without_selinux} \ @@ -781,14 +1267,13 @@ autoreconf -if %{?_without_macvtap} \ %{?_without_audit} \ %{?_without_dtrace} \ + %{?_without_driver_modules} \ + %{?_with_firewalld} \ %{with_packager} \ %{with_packager_version} \ - --with-capng \ - --with-udev \ --with-qemu-user=%{qemu_user} \ --with-qemu-group=%{qemu_group} \ - %{init_scripts} \ - --with-remote-pid-file=%{_localstatedir}/run/libvirtd.pid + %{init_scripts} make %{?_smp_mflags} gzip -9 ChangeLog @@ -806,6 +1291,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/ @@ -829,6 +1318,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 @@ -838,16 +1332,6 @@ rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-python-%{version} %endif -%if %{client_only} -rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-%{version} -%endif - -%if ! %{with_libvirtd} -rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter -mv $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-%{version}/html \ - $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-devel-%{version}/ -%endif - %if ! %{with_qemu} rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu.conf rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.qemu @@ -860,21 +1344,27 @@ rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.lxc rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.uml %endif +mv $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-%{version} \ + $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-docs-%{version} + %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 -%pre +%if %{with_libvirtd} +%pre daemon %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 @@ -886,22 +1376,9 @@ getent passwd qemu >/dev/null || \ -c "qemu user" qemu %endif -%post +%post daemon -%if %{with_libvirtd} %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,,\n $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 # auto-generated, but networks already existing at the time of upgrade # will not. We need to go through all the network configs, look for @@ -951,9 +1428,9 @@ if [ $1 -eq 1 ] ; then 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) +# 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 @@ -962,13 +1439,11 @@ fi /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 -%if %{with_libvirtd} +%preun daemon %if %{with_systemd} if [ $1 -eq 0 ] ; then # Package removal, not upgrade @@ -981,10 +1456,8 @@ if [ $1 = 0 ]; then /sbin/chkconfig --del libvirtd fi %endif -%endif -%postun -%if %{with_libvirtd} +%postun daemon %if %{with_systemd} /bin/systemctl daemon-reload >/dev/null 2>&1 || : if [ $1 -ge 1 ] ; then @@ -992,6 +1465,17 @@ if [ $1 -ge 1 ] ; then /bin/systemctl try-restart libvirtd.service >/dev/null 2>&1 || : fi %endif + +%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,,\n $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} @@ -1024,14 +1508,6 @@ fi %if %{with_systemd} %else /sbin/chkconfig --add libvirt-guests -if [ $1 -ge 1 ]; then - level=$(/sbin/runlevel | /bin/cut -d ' ' -f 2) - if /sbin/chkconfig --levels $level libvirt-guests; then - # this doesn't do anything but allowing for libvirt-guests to be - # stopped on the first shutdown - /sbin/service libvirt-guests start > /dev/null 2>&1 || true - fi -fi %endif %postun client -p /sbin/ldconfig @@ -1048,10 +1524,27 @@ fi /bin/systemctl try-restart libvirt-guests.service >/dev/null 2>&1 || : %endif -%if %{with_libvirtd} %files %defattr(-, root, root) +%files docs +%defattr(-, root, root) +# Website +%dir %{_datadir}/doc/libvirt-docs-%{version} +%dir %{_datadir}/doc/libvirt-docs-%{version}/html +%{_datadir}/doc/libvirt-docs-%{version}/html/* + +# API docs +%dir %{_datadir}/gtk-doc/html/libvirt/ +%doc %{_datadir}/gtk-doc/html/libvirt/*.devhelp +%doc %{_datadir}/gtk-doc/html/libvirt/*.html +%doc %{_datadir}/gtk-doc/html/libvirt/*.png +%doc %{_datadir}/gtk-doc/html/libvirt/*.css + +%if %{with_libvirtd} +%files daemon +%defattr(-, root, root) + %doc AUTHORS ChangeLog.gz NEWS README COPYING.LIB TODO %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/ @@ -1062,7 +1555,6 @@ fi %endif %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/nwfilter/ -%{_sysconfdir}/libvirt/nwfilter/*.xml %{_sysconfdir}/rc.d/init.d/libvirtd %if %{with_systemd} @@ -1076,10 +1568,6 @@ fi %else rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd %endif -%if %{with_dtrace} -%{_datadir}/systemtap/tapset/libvirt_probes.stp -%{_datadir}/systemtap/tapset/libvirt_functions.stp -%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/ @@ -1173,7 +1661,107 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd %{_mandir}/man8/libvirtd.8* -%doc docs/*.xml +%if %{with_driver_modules} +%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_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_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 + +%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} || %{with_libxl} +%files daemon-xen +%defattr(-, root, root) +%endif %endif %if %{with_sanlock} @@ -1198,11 +1786,19 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd %{_mandir}/man1/virsh.1* %{_mandir}/man1/virt-xml-validate.1* %{_mandir}/man1/virt-pki-validate.1* +%{_mandir}/man1/virt-host-validate.1* %{_bindir}/virsh %{_bindir}/virt-xml-validate %{_bindir}/virt-pki-validate +%{_bindir}/virt-host-validate %{_libdir}/lib*.so.* +%if %{with_dtrace} +%{_datadir}/systemtap/tapset/libvirt_probes.stp +%{_datadir}/systemtap/tapset/libvirt_qemu_probes.stp +%{_datadir}/systemtap/tapset/libvirt_functions.stp +%endif + %dir %{_datadir}/libvirt/ %dir %{_datadir}/libvirt/schemas/ @@ -1241,11 +1837,10 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd %dir %{_includedir}/libvirt %{_includedir}/libvirt/*.h %{_libdir}/pkgconfig/libvirt.pc -%dir %{_datadir}/gtk-doc/html/libvirt/ -%doc %{_datadir}/gtk-doc/html/libvirt/*.devhelp -%doc %{_datadir}/gtk-doc/html/libvirt/*.html -%doc %{_datadir}/gtk-doc/html/libvirt/*.png -%doc %{_datadir}/gtk-doc/html/libvirt/*.css + +%dir %{_datadir}/libvirt/api/ +%{_datadir}/libvirt/api/libvirt-api.xml +%{_datadir}/libvirt/api/libvirt-qemu-api.xml %doc docs/*.html docs/html docs/*.gif %doc docs/libvirt-api.xml @@ -1272,6 +1867,62 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd %endif %changelog +* 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 +- a lot of bug fixes, improvements and portability work + +* Tue Apr 3 2012 Daniel Veillard - 0.9.11-1 +- Add support for the suspend event +- Add support for event tray moved of removable disks +- qemu: Support numad +- cpustats: API, improvements and qemu support +- qemu: support type='hostdev' network devices at domain start +- Introduce virDomainPMWakeup API +- network: support Open vSwitch +- a number of snapshot improvements +- many improvements and bug fixes + +* Mon Feb 13 2012 Daniel Veillard - 0.9.10-1 +- Add support for sVirt in the LXC driver +- block rebase: add new API virDomainBlockRebase +- API: Add api to set and get domain metadata +- virDomainGetDiskErrors public API +- conf: add rawio attribute to disk element of domain XML +- Add new public API virDomainGetCPUStats() +- Introduce virDomainPMSuspendForDuration API +- resize: add virStorageVolResize() API +- Add a virt-host-validate command to sanity check HV config +- Add new virDomainShutdownFlags API +- QEMU guest agent support +- many improvements and bug fixes + * Sat Jan 7 2012 Daniel Veillard - 0.9.9-1 - Add API virDomain{S,G}etInterfaceParameters - Add API virDomain{G, S}etNumaParameters