From ed47b0b49d9b18373903904fcc5aad54dec74a6992dfd60f23a45cb64cf4ee9a Mon Sep 17 00:00:00 2001 From: James Fehlig Date: Fri, 7 Jun 2013 01:10:31 +0000 Subject: [PATCH] Accepting request 177953 from home:jfehlig:branches:Virtualization - Add rpmlintrc to get around suse-filelist-empty error on older distros. - Refactor libvirt spec file to create subpackages for the various libvirtd components. This allows installing a libvirtd tailored for the underlying virtualizer. E.g. on a KVM/QEMU virtualizer only the libvirt-daemon-qemu package needs installed. Similarly, only libvirt-daemon-xen on a Xen virtualizer and libvirt-daemon-lxc on LXC. OBS-URL: https://build.opensuse.org/request/show/177953 OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=270 --- libvirt.changes | 16 + libvirt.spec | 1027 ++++++++++++++++++++++++++++++++++------------- libvirtd.init | 1 - rpmlintrc | 4 + 4 files changed, 763 insertions(+), 285 deletions(-) create mode 100644 rpmlintrc diff --git a/libvirt.changes b/libvirt.changes index 0823a0c..d65aea4 100644 --- a/libvirt.changes +++ b/libvirt.changes @@ -1,3 +1,19 @@ +------------------------------------------------------------------- +Thu Jun 6 16:05:39 MDT 2013 - jfehlig@suse.com + +- Add rpmlintrc to get around suse-filelist-empty error on + older distros. + +------------------------------------------------------------------- +Thu Jun 6 11:59:26 MDT 2013 - jfehlig@suse.com + +- Refactor libvirt spec file to create subpackages for the various + libvirtd components. This allows installing a libvirtd tailored + for the underlying virtualizer. E.g. on a KVM/QEMU virtualizer + only the libvirt-daemon-qemu package needs installed. + Similarly, only libvirt-daemon-xen on a Xen virtualizer and + libvirt-daemon-lxc on LXC. + ------------------------------------------------------------------- Tue Jun 4 16:44:30 MDT 2013 - jfehlig@suse.com diff --git a/libvirt.spec b/libvirt.spec index 42d2f07..23e5702 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -26,8 +26,8 @@ %define server_drivers 1 %endif -# Do not build with dlopen'd modules for now -%define with_driver_modules 0 +# Default build includes dlopen'd modules +%define with_driver_modules 1 # Now set the defaults for all the important features, independent # of any particular OS @@ -44,9 +44,9 @@ %define with_libxl 0%{!?_without_libxl:%{server_drivers}} # Then the hypervisor drivers that run outside libvirtd, in libvirt.so -%define with_openvz 0%{!?_without_openvz:%{server_drivers}} -%define with_vbox 0%{!?_without_vbox:%{server_drivers}} -%define with_vmware 0%{!?_without_vmware:%{server_drivers}} +%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:0} %define with_esx 0%{!?_without_esx:1} %define with_hyperv 0%{!?_without_hyperv:0} @@ -69,13 +69,14 @@ # Optional bits on by default %define with_polkit 0%{!?_without_polkit:1} -%define with_udev 0%{!?_without_udev:1} +%define with_udev 0%{!?_without_udev:%{server_drivers}} %define with_audit 0%{!?_without_audit:1} -%define with_yajl 0%{!?_without_yajl:1} -%define with_sanlock 0%{!?_without_sanlock:1} +%define with_yajl 0%{!?_without_yajl:%{server_drivers}} +%define with_sanlock 0%{!?_without_sanlock:%{server_drivers}} # A few optional bits off by default, we enable later %define with_capng 0%{!?_without_capng:0} +%define with_fuse 0%{!?_without_fuse:0} %define with_netcf 0%{!?_without_netcf:0} %define with_netcontrol 0%{!?_without_netcontrol:0} %define with_nwfilter 0%{!?_without_nwfilter:0} @@ -87,7 +88,7 @@ %define with_systemd 0%{!?_without_systemd:0} %define with_numad 0%{!?_without_numad:0} %define with_firewalld 0%{!?_without_firewalld:0} -%define with_libssh2_transport 0%{!?_without_libssh2_transport:0} +%define with_libssh2 0%{!?_without_libssh2:0} # Non-server/HV driver defaults which are always enabled %define with_python 0%{!?_without_python:1} @@ -95,20 +96,15 @@ # Set the OS / architecture specific special cases -# Xen is available only on i386 x86_64 -%ifnarch %ix86 x86_64 +# Xen is available only on x86_64 +%ifnarch x86_64 %define with_xen 0 %define with_libxl 0 %endif # libxl is only compatible with Xen >= 4.2 (i.e. suse_version > 12.2) %if 0%{?suse_version} <= 1220 -%define with_libxl 0 -%endif - -# vbox is available only on i386 x86_64 -%ifnarch %{ix86} x86_64 -%define with_vbox 0 +%define with_libxl 0 %endif # numactl only on x86_64 and ia64 @@ -116,6 +112,11 @@ %define with_numactl 0 %endif +# vbox is available only on i386 x86_64 +%ifnarch %{ix86} x86_64 +%define with_vbox 0 +%endif + # SLES doesn't contain OpenVZ, VBox, UML, ESX, VMWare, Citrix XenAPI, # or hyper-v %if 0%{?sles_version} @@ -134,15 +135,15 @@ %define with_phyp 1 %endif -# LXC and selinux are not available on anything < openSUSE 11.1 +# LXC and selinux are not available on anything < 11.1 %if 0%{?suse_version} < 1110 %define with_lxc 0 %define with_selinux 0 %endif -# netcontrol is used to manage network interfaces on openSUSE >= 12.1 +# Support systemd on 12.1 and later %if 0%{?suse_version} >= 1210 -%define with_netcontrol 0%{!?_without_netcontrol:%{server_drivers}} +%define with_systemd 0%{!?_without_systemd:1} %endif # libcapng is used to manage capabilities in 11.3 or newer. @@ -151,30 +152,46 @@ %define with_capng 0%{!?_without_capng:1} %endif +%if 0%{?suse_version} >= 1230 +%define with_fuse 0%{!?_without_fuse:1} +%endif + +# netcontrol is used to manage network interfaces on openSUSE >= 12.1 %if 0%{?suse_version} >= 1210 -%define with_systemd 0%{!?_without_systemd:1} +%define with_netcontrol 0%{!?_without_netcontrol:%{server_drivers}} +%endif + +# interface requires netcontrol +%if ! 0%{?with_netcontrol} +%define with_interface 0 +%endif + +# Support libssh2 in 12.3 and later +%if 0%{?suse_version} >= 1230 +%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_interface 0 -%define with_network 0 -%define with_qemu 0 -%define with_lxc 0 -%define with_uml 0 -%define with_udev 0 -%define with_storage_fs 0 -%define with_storage_lvm 0 +%define with_interface 0 +%define with_network 0 +%define with_qemu 0 +%define with_lxc 0 +%define with_uml 0 +%define with_vbox 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_rbd 0 %define with_storage_sheepdog 0 -%define with_storage_disk 0 +%define with_storage_disk 0 %endif # Enable libpcap library -%if %{with_qemu} +%if %{with_qemu} || %{with_lxc} %if 0%{?suse_version} >= 1140 %define with_nwfilter 0%{!?_without_nwfilter:%{server_drivers}} %define with_libpcap 0%{!?_without_libpcap:%{server_drivers}} @@ -211,87 +228,89 @@ %define _fwdefdir /etc/sysconfig/SuSEfirewall2.d/services -BuildRequires: bridge-utils +Name: libvirt +Url: http://libvirt.org/ +Version: 1.0.6 +Release: 0 +Summary: Library providing a simple virtualization API +License: LGPL-2.1+ +Group: Development/Libraries/C and C++ + +%if %{with_libvirtd} +Requires: libvirt-daemon = %{version}-%{release} +%if %{with_network} +Requires: libvirt-daemon-config-network = %{version}-%{release} +%endif +%if %{with_nwfilter} +Requires: libvirt-daemon-config-nwfilter = %{version}-%{release} +%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 +%if %{with_vbox} +Requires: libvirt-daemon-driver-vbox = %{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 +%endif +Requires: libvirt-client = %{version}-%{release} + +# All build-time requirements. Run-time requirements are +# listed against each sub-RPM +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: gettext-devel +BuildRequires: libtool +%if %{with_systemd} +BuildRequires: systemd +%endif +%if %{with_xen} || %{with_libxl} +BuildRequires: xen-devel +%endif BuildRequires: fdupes BuildRequires: gettext +BuildRequires: libattr-devel BuildRequires: libgcrypt-devel BuildRequires: libgnutls-devel BuildRequires: libtasn1-devel -BuildRequires: libtool BuildRequires: libxml2-devel BuildRequires: libxslt BuildRequires: ncurses-devel -BuildRequires: pkg-config BuildRequires: python-devel BuildRequires: python-xml BuildRequires: readline-devel BuildRequires: xhtml-dtd -# Only for directory ownership: -BuildRequires: gtk-doc -%if %{with_xen} || %{with_libxl} -BuildRequires: xen-devel -%endif -%if %{with_sasl} -BuildRequires: cyrus-sasl-devel +%if %{with_libvirtd} +# For pool-build probing for existing pools +BuildRequires: libblkid-devel >= 2.17 %endif %if %{with_udev} BuildRequires: libpciaccess0-devel >= 0.10.9 BuildRequires: libudev-devel >= 145 %endif -%if %{with_avahi} -%if 0%{?suse_version} > 1030 -BuildRequires: libavahi-devel -%else -BuildRequires: avahi-devel -%endif -%endif -%if %{with_selinux} -BuildRequires: libselinux-devel -%endif -%if %{with_apparmor} -BuildRequires: libapparmor-devel -%endif -%if %{with_numactl} -BuildRequires: libnuma-devel -%endif -%if %{with_numad} -BuildRequires: numad -%endif -%if %{with_polkit} -%if 0%{?suse_version} > 1110 -BuildRequires: polkit >= 0.9 -%else -BuildRequires: PolicyKit-devel >= 0.6 -%endif -%endif -%if %{with_phyp} -BuildRequires: libssh2-devel -%endif %if %{with_yajl} BuildRequires: libyajl-devel %endif -%if %{with_esx} -BuildRequires: libcurl-devel -%endif -%if %{with_hyperv} -BuildRequires: libwsman-devel >= 2.2.3 -%endif -%if %{with_capng} -BuildRequires: libcap-ng-devel >= 0.5.0 -%endif -%if %{with_netcf} -BuildRequires: netcf-devel >= 0.1.4 -%endif -%if %{with_netcontrol} -BuildRequires: libnetcontrol-devel >= 0.2.0 -%endif -%if %{with_network} -BuildRequires: dnsmasq >= 2.41 -BuildRequires: iptables -BuildRequires: radvd -%endif -%if %{with_nwfilter} -BuildRequires: ebtables +%if %{with_sanlock} +BuildRequires: sanlock-devel >= 2.4 %endif %if %{with_libpcap} BuildRequires: libpcap-devel @@ -303,6 +322,34 @@ BuildRequires: libnl-devel BuildRequires: libnl-1_1-devel %endif %endif +%if %{with_avahi} +BuildRequires: libavahi-devel +%endif +%if %{with_selinux} +BuildRequires: libselinux-devel +%endif +%if %{with_apparmor} +BuildRequires: libapparmor-devel +%endif +%if %{with_network} +BuildRequires: dnsmasq >= 2.41 +BuildRequires: iptables +# TODO BuildRequires: iptables-ipv6 +BuildRequires: radvd +%endif +%if %{with_nwfilter} +BuildRequires: ebtables +%endif +%if %{with_sasl} +BuildRequires: cyrus-sasl-devel +%endif +%if %{with_polkit} +%if 0%{?suse_version} > 1110 +BuildRequires: polkit >= 0.9 +%else +BuildRequires: PolicyKit-devel >= 0.6 +%endif +%endif %if %{with_storage_fs} # For mount/umount in FS driver BuildRequires: util-linux @@ -326,6 +373,28 @@ BuildRequires: device-mapper-devel %if %{with_storage_rbd} BuildRequires: ceph-devel %endif +%if %{with_numactl} +# For QEMU/LXC numa info +BuildRequires: libnuma-devel +%endif +%if %{with_capng} +BuildRequires: libcap-ng-devel >= 0.5.0 +%endif +%if %{with_fuse} +BuildRequires: fuse-devel >= 2.8.6 +%endif +%if %{with_phyp} || %{with_libssh2} +BuildRequires: libssh2-devel +%endif +%if %{with_netcontrol} +BuildRequires: libnetcontrol-devel >= 0.2.0 +%endif +%if %{with_esx} +BuildRequires: libcurl-devel +%endif +%if %{with_hyperv} +BuildRequires: libwsman-devel >= 2.2.3 +%endif %if %{with_audit} BuildRequires: audit-devel %endif @@ -333,100 +402,12 @@ BuildRequires: audit-devel # we need /usr/sbin/dtrace BuildRequires: systemtap-sdt-devel %endif -%if %{with_sanlock} -BuildRequires: sanlock-devel >= 2.4 -%endif -%if %{with_systemd} -BuildRequires: systemd -%endif -%if %{with_libvirtd} -%if 0%{?suse_version} >= 1210 -# For pool-build probing for existing pools -BuildRequires: libblkid-devel >= 2.17 -%endif -%endif - -Name: libvirt -Url: http://libvirt.org/ -Version: 1.0.6 -Release: 0 -Summary: A C toolkit to interact with the virtualization capabilities of Linux -License: LGPL-2.1+ -Group: Development/Libraries/C and C++ -Conflicts: kvm < 0.14.1 - -# The client side, i.e. shared libs and virsh are in a subpackage -Requires: %{name}-client = %{version}-%{release} -Requires: virt-utils -# Used by many of the drivers, so turn it on whenever the -# daemon is present -%if %{with_libvirtd} -Recommends: bridge-utils -# for modprobe of pci devices -Requires: modutils -# for /sbin/ip & /sbin/tc -Requires: iproute -%endif -%if %{with_network} -Recommends: dnsmasq >= 2.41 -Recommends: radvd -%endif -%if %{with_network} || %{with_nwfilter} -Recommends: iptables -%endif -%if %{with_nwfilter} -Recommends: ebtables -%endif -Recommends: logrotate -Recommends: nfs-client -%if %{with_udev} -Requires: udev >= 145 -%endif -%if %{with_polkit} -%if 0%{?suse_version} > 1110 -Recommends: polkit >= 0.9 -%else -Recommends: PolicyKit >= 0.6 -%endif -%endif -%if %{with_storage_fs} -Recommends: nfs-utils -%endif -%if %{with_storage_lvm} -# For LVM drivers -Recommends: lvm2 -%endif -%if %{with_storage_iscsi} -# For ISCSI driver -Recommends: open-iscsi -%endif -%if %{with_storage_disk} -# For disk driver -Recommends: parted -Recommends: device-mapper -%endif -%if %{with_storage_mpath} -# For multipath support -Recommends: device-mapper -%endif -%if 0%{?suse_version} > 1110 -%ifarch i386 i586 i686 x86_64 ia64 -# For virConnectGetSysinfo -Recommends: dmidecode -%endif -%endif -%if %{with_numad} -Requires: numad -%endif -# For service management -%if %{with_systemd} -%{?systemd_requires} -%endif Source0: %{name}-%{version}.tar.bz2 Source1: libvirtd.init Source2: libvirtd-relocation-server.fw Source99: baselibs.conf +Source100: rpmlintrc # Upstream patches # Need to go upstream Patch100: xen-name-for-devid.patch @@ -464,81 +445,425 @@ Authors: Daniel Veillard Karel Zak + +%package doc +Summary: API reference and website documentation +Group: Development/Libraries/C and C++ + +%description doc +Includes the API reference for the libvirt C library, and a complete +copy of the libvirt.org website documentation. + +%if %{with_libvirtd} +%package daemon +Summary: Server side daemon and supporting files for libvirt library +Group: Development/Libraries/C and C++ + +# All runtime requirements for the libvirt package (runtime requirements +# for subpackages are listed later in those subpackages) + +# The client side, i.e. shared libs and virsh are in a subpackage +Requires: %{name}-client = %{version}-%{release} + +# for modprobe of pci devices +Requires: modutils +# for /sbin/ip & /sbin/tc +Requires: bridge-utils +Requires: iproute +Requires: logrotate + +%if %{with_network} +Requires: dnsmasq >= 2.41 +Requires: radvd +%endif +%if %{with_network} || %{with_nwfilter} +Requires: iptables +%endif +%if %{with_nwfilter} +Requires: ebtables +%endif +%if %{with_udev} +Requires: udev >= 145 +%endif +%if %{with_polkit} +%if 0%{?suse_version} > 1110 +Recommends: polkit >= 0.93 +%else +Recommends: PolicyKit >= 0.6 +%endif +%endif +%if %{with_storage_fs} +Requires: nfs-utils +# For mkfs +Requires: util-linux +%endif +%if %{with_qemu} +# From QEMU RPMs +Requires: /usr/bin/qemu-img +# For image compression +Requires: bzip2 +Requires: gzip +Requires: lzop +Requires: xz +%endif +%if %{with_storage_lvm} +# For LVM drivers +Requires: lvm2 +%endif +%if %{with_storage_iscsi} +# For ISCSI driver +Requires: open-iscsi +%endif +%if %{with_storage_disk} +# For disk driver +Requires: device-mapper +Requires: parted +%endif +%if %{with_storage_mpath} +# For multipath support +Requires: device-mapper +%endif +%if %{with_cgconfig} +Requires: libcgroup1 +%endif +%ifarch i386 i586 i686 x86_64 ia64 +# For virConnectGetSysinfo +Requires: dmidecode +%endif +%if %{with_systemd} +# For service management +%{?systemd_requires} +%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/C and C++ + +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 +Group: Development/Libraries/C and C++ + +Requires: libvirt-daemon = %{version}-%{release} + +%description daemon-config-nwfilter +Network filter configuration files for the libvirt daemon, used for +cleaning guest network traffic. +%endif + +%if %{with_driver_modules} +%if %{with_network} +%package daemon-driver-network +Summary: Network driver plugin for the libvirtd daemon +Group: Development/Libraries/C and C++ +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: A nwfilter driver plugin for the libvirtd daemon +Group: Development/Libraries/C and C++ +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/C and C++ +Requires: libvirt-daemon = %{version}-%{release} + +%description daemon-driver-nodedev +The nodedev driver plugin for the libvirtd daemon, providing +an implementation of the node device APIs using the udev +capabilities. +%endif + +%if %{with_interface} +%package daemon-driver-interface +Summary: Interface driver plugin for the libvirtd daemon +Group: Development/Libraries/C and C++ +Requires: libvirt-daemon = %{version}-%{release} + +%description daemon-driver-interface +The interface driver plugin for the libvirtd daemon, providing +an implementation of the network interface APIs using the +netcontrol library +%endif + +%package daemon-driver-secret +Summary: Secret driver plugin for the libvirtd daemon +Group: Development/Libraries/C and C++ +Requires: libvirt-daemon = %{version}-%{release} + +%description daemon-driver-secret +The secret driver plugin for the libvirtd daemon, providing +an implementation of the secret key APIs. + +%if %{with_storage} +%package daemon-driver-storage +Summary: Storage driver plugin for the libvirtd daemon +Group: Development/Libraries/C and C++ +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/C and C++ +Requires: libvirt-daemon = %{version}-%{release} +# There really is a hard cross-driver dependency here +Requires: libvirt-daemon-driver-network = %{version}-%{release} + +%description daemon-driver-qemu +The qemu driver plugin for the libvirtd daemon, providing +an implementation of the hypervisor driver APIs using QEMU. +%endif + +%if %{with_lxc} +%package daemon-driver-lxc +Summary: LXC driver plugin for the libvirtd daemon +Group: Development/Libraries/C and C++ +Requires: libvirt-daemon = %{version}-%{release} +# There really is a hard cross-driver dependency here +Requires: libvirt-daemon-driver-network = %{version}-%{release} + +%description daemon-driver-lxc +The LXC driver plugin for the libvirtd daemon, providing +an implementation of the hypervisor driver APIs using +the Linux kernel +%endif + +%if %{with_uml} +%package daemon-driver-uml +Summary: Uml driver plugin for the libvirtd daemon +Group: Development/Libraries/C and C++ +Requires: libvirt-daemon = %{version}-%{release} + +%description daemon-driver-uml +The UML driver plugin for the libvirtd daemon, providing +an implementation of the hypervisor driver APIs using +User Mode Linux +%endif + +%if %{with_xen} +%package daemon-driver-xen +Summary: Xen driver plugin for the libvirtd daemon +Group: Development/Libraries/C and C++ +Requires: libvirt-daemon = %{version}-%{release} + +%description daemon-driver-xen +The Xen driver plugin for the libvirtd daemon, providing +an implementation of the hypervisor driver APIs using Xen. +%endif + +%if %{with_vbox} +%package daemon-driver-vbox +Summary: VirtualBox driver plugin for the libvirtd daemon +Group: Development/Libraries/C and C++ +Requires: libvirt-daemon = %{version}-%{release} + +%description daemon-driver-vbox +The vbox driver plugin for the libvirtd daemon, providing +an implementation of the hypervisor driver APIs using +VirtualBox +%endif + +%if %{with_libxl} +%package daemon-driver-libxl +Summary: Libxl driver plugin for the libvirtd daemon +Group: Development/Libraries/C and C++ +Requires: libvirt-daemon = %{version}-%{release} + +%description daemon-driver-libxl +The Libxl driver plugin for the libvirtd daemon, providing +an implementation of the hypervisor driver APIs using libxl. +%endif +%endif # with_driver_modules + +%if %{with_qemu} +%package daemon-qemu +Summary: Server side daemon & driver required to run QEMU guests +Group: Development/Libraries/C and C++ + +Requires: libvirt-daemon = %{version}-%{release} +%if %{with_driver_modules} +Requires: libvirt-daemon-driver-interface = %{version}-%{release} +Requires: libvirt-daemon-driver-network = %{version}-%{release} +Requires: libvirt-daemon-driver-nodedev = %{version}-%{release} +Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} +Requires: libvirt-daemon-driver-qemu = %{version}-%{release} +Requires: libvirt-daemon-driver-secret = %{version}-%{release} +Requires: libvirt-daemon-driver-storage = %{version}-%{release} +%endif +Requires: kvm + +%description daemon-qemu +Server side daemon and driver required to manage the virtualization +capabilities of the QEMU emulators +%endif + +%if %{with_lxc} +%package daemon-lxc +Summary: Server side daemon & driver required to run LXC guests +Group: Development/Libraries/C and C++ + +Requires: libvirt-daemon = %{version}-%{release} +%if %{with_driver_modules} +Requires: libvirt-daemon-driver-interface = %{version}-%{release} +Requires: libvirt-daemon-driver-lxc = %{version}-%{release} +Requires: libvirt-daemon-driver-network = %{version}-%{release} +Requires: libvirt-daemon-driver-nodedev = %{version}-%{release} +Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} +Requires: libvirt-daemon-driver-secret = %{version}-%{release} +Requires: libvirt-daemon-driver-storage = %{version}-%{release} +%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/C and C++ + +Requires: libvirt-daemon = %{version}-%{release} +%if %{with_driver_modules} +Requires: libvirt-daemon-driver-interface = %{version}-%{release} +Requires: libvirt-daemon-driver-network = %{version}-%{release} +Requires: libvirt-daemon-driver-nodedev = %{version}-%{release} +Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} +Requires: libvirt-daemon-driver-secret = %{version}-%{release} +Requires: libvirt-daemon-driver-storage = %{version}-%{release} +Requires: libvirt-daemon-driver-uml = %{version}-%{release} +%endif + +%description daemon-uml +Server side daemon and driver required to manage the virtualization +capabilities of UML +%endif + +%if %{with_xen} || %{with_libxl} +%package daemon-xen +Summary: Server side daemon & driver required to run XEN guests +Group: Development/Libraries/C and C++ + +Requires: libvirt-daemon = %{version}-%{release} +%if %{with_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 + +%if %{with_vbox} +%package daemon-vbox +Summary: Server side daemon & driver required to run VirtualBox guests +Group: Development/Libraries/C and C++ +Requires: libvirt-daemon = %{version}-%{release} +%if %{with_driver_modules} +Requires: libvirt-daemon-driver-interface = %{version}-%{release} +Requires: libvirt-daemon-driver-network = %{version}-%{release} +Requires: libvirt-daemon-driver-nodedev = %{version}-%{release} +Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} +Requires: libvirt-daemon-driver-secret = %{version}-%{release} +Requires: libvirt-daemon-driver-storage = %{version}-%{release} +Requires: libvirt-daemon-driver-vbox = %{version}-%{release} +%endif +Requires: virtualbox + +%description daemon-vbox +Server side daemon and driver required to manage the virtualization +capabilities of VirtualBox +%endif +%endif # with_libvirtd + %package client Summary: Client side library and utilities of the libvirt library Group: Development/Libraries/C and C++ Requires: ncurses Requires: readline -# Needed by libvirt-guests init script. -Requires: cyrus-sasl -Requires: gettext -Recommends: cyrus-sasl-digestmd5 # So remote clients can access libvirt over SSH tunnel # (client invokes 'nc' against the UNIX socket on the server) -Recommends: netcat-openbsd +Requires: netcat-openbsd +# Needed by libvirt-guests init script. +Requires: gettext +# Needed by virt-pki-validate script. +Requires: gnutls # Needed for probing the power management features of the host. -Recommends: pm-utils - -%description client -Libvirt is a C toolkit to interact with the virtualization -capabilities of Linux. The libvirt-client package contains shared -libraries and client binaries needed to access the virtualization -capabilities of recent versions of Linux (and other OSes). - - - -Authors: --------- - Daniel Veillard - Karel Zak - -%package devel -Summary: A C toolkit to interact with the virtualization capabilities of Linux -Group: Development/Libraries/C and C++ -Requires: %{name}-client = %{version}-%{release} -Requires: libxml2-devel -Requires: pkg-config -%if %{with_xen} || %{with_libxl} -Requires: xen-devel +Requires: pm-utils +%if %{with_sasl} +Requires: cyrus-sasl +# Not technically required, but makes 'out-of-box' config +# work correctly & doesn't have onerous dependencies +Requires: cyrus-sasl-digestmd5 %endif -%description devel -Libvirt is a C toolkit to interact with the virtualization -capabilities of Linux. The libvirt-devel package contains headers -and libraries needed for developing libvirt applications. +%description client +Shared libraries and client binaries needed to access to the +virtualization capabilities of recent versions of Linux (and other OSes). - - -Authors: --------- - Daniel Veillard - Karel Zak - -%package doc -Summary: A C toolkit to interact with the virtualization capabilities of Linux +%package devel +Summary: Libraries, includes, etc. to compile with the libvirt library Group: Development/Libraries/C and C++ Requires: %{name}-client = %{version}-%{release} +Requires: %{name}-docs = %{version}-%{release} +Requires: pkg-config -%description doc -Libvirt is a C toolkit to interact with the virtualization -capabilities of Linux. The libvirt-doc package contains documentation -for the libvirt API and tools. +%description devel +Include header files & development libraries for the libvirt C library. - -Authors: --------- - Daniel Veillard - Karel Zak - %if %{with_sanlock} - %package lock-sanlock Summary: Sanlock lock manager plugin for QEMU driver Group: Development/Libraries/C and C++ Requires: sanlock >= 2.4 -#for virt-sanlock-cleanup require augeas -Requires: %{name} = %{version}-%{release} +# for virt-sanlock-cleanup require augeas +Requires: %{name}-client = %{version}-%{release} +Requires: %{name}-daemon = %{version}-%{release} Requires: augeas %description lock-sanlock @@ -546,24 +871,17 @@ Includes the Sanlock lock manager plugin for the QEMU driver %endif %if %{with_python} - %package python -Summary: A C toolkit to interact with the virtualization capabilities of Linux +Summary: Python bindings for the libvirt library Group: Development/Libraries/C and C++ Requires: %{name}-client = %{version}-%{release} %py_requires %description python -Libvirt is a C toolkit to interact with the virtualization -capabilities of Linux. The libvirt-python package provides python -bindings for the libvirt C API. - - - -Authors: --------- - Daniel Veillard - Karel Zak +The libvirt-python package contains a module that permits applications +written in the Python programming language to use the interface +supplied by the libvirt library to use the virtualization capabilities +of recent versions of Linux (and other OSes). %endif %prep @@ -665,6 +983,9 @@ Authors: %if ! %{with_capng} %define _without_capng --without-capng %endif +%if ! %{with_fuse} +%define _without_fuse --without-fuse +%endif %if ! %{with_netcf} %define _without_netcf --without-netcf %endif @@ -722,6 +1043,10 @@ Authors: %define _with_firewalld --with-firewalld %endif +%if %{with_selinux} +%define with_selinux_mount --with-selinux-mount="/sys/fs/selinux" +%endif + autoreconf -f -i export CFLAGS="$RPM_OPT_FLAGS" %configure --disable-static --with-pic \ @@ -755,9 +1080,11 @@ export CFLAGS="$RPM_OPT_FLAGS" %{?_without_numactl} \ %{?_without_numad} \ %{?_without_capng} \ + %{?_without_fuse} \ %{?_without_netcf} \ %{?_without_netcontrol} \ %{?_without_selinux} \ + %{?_with_selinux_mount} \ %{?_without_apparmor} \ %{?_without_udev} \ %{?_without_yajl} \ @@ -776,17 +1103,24 @@ export CFLAGS="$RPM_OPT_FLAGS" ac_cv_path_UDEVADM=/sbin/udevadm \ ac_cv_path_SHOWMOUNT=/usr/sbin/showmount make V=1 %{?jobs:-j%jobs} DOCS_DIR=%{_docdir}/%{name}-python EXAMPLE_DIR=%{_docdir}/%{name}-python/examples HTML_DIR=%{_docdir}/%{name} +gzip -9 ChangeLog %install %makeinstall SYSTEMD_UNIT_DIR=%{_unitdir} DOCS_DIR=%{_docdir}/%{name}-python EXAMPLE_DIR=%{_docdir}/%{name}-python/examples HTML_DIR=%{_docdir}/%{name} -cp -a AUTHORS ChangeLog COPYING NEWS README TODO $RPM_BUILD_ROOT%{_docdir}/%{name}/ -cd docs ; cp -a *.html $RPM_BUILD_ROOT%{_docdir}/%{name} ; cp -a *.png $RPM_BUILD_ROOT%{_docdir}/%{name} ; cd .. +for i in domain-events/events-c dominfo domsuspend hellolibvirt openauth python xml/nwfilter systemtap +do + (cd examples/$i ; make clean ; rm -rf .deps .libs Makefile Makefile.in) +done rm -f $RPM_BUILD_ROOT%{_libdir}/*.la rm -f $RPM_BUILD_ROOT%{_libdir}/*.a rm -f $RPM_BUILD_ROOT%{py_sitedir}/*.la rm -f $RPM_BUILD_ROOT%{py_sitedir}/*.a rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/lock-driver/*.la rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/lock-driver/*.a +%if %{with_driver_modules} +rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/connection-driver/*.la +rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/connection-driver/*.a +%endif # remove currently unsupported locale(s) rm -rf $RPM_BUILD_ROOT/usr/share/locale/sr@latin %if 0%{?suse_version} < 1130 @@ -807,24 +1141,32 @@ sed -i -e "//d" $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/default.xml rm -f $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml rm -f $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml %endif +%if ! %{with_nwfilter} +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter +%endif %if ! %{with_lxc} rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/lxc.conf rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_lxc.aug +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.lxc %endif %if ! %{with_qemu} rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu.conf rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_qemu.aug +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.qemu %endif %if ! %{with_uml} rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.uml %endif +%if ! %{with_sanlock} +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirt_sanlock.aug +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug +%endif %if ! %{with_python} rm -rf $RPM_BUILD_ROOT%{_docdir}/%{name}-python -%endif -%if ! %{with_libvirtd} -rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter +%else +rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-python-%{version}/* %endif # init scripts @@ -841,20 +1183,22 @@ rm -f $RPM_BUILD_ROOT/usr/lib/sysctl.d/libvirtd.conf mv $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/virtlockd $RPM_BUILD_ROOT%{_sysconfdir}/init.d/virtlockd ln -s /etc/init.d/virtlockd $RPM_BUILD_ROOT%{_sbindir}/rcvirtlockd mv $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/virtlockd $RPM_BUILD_ROOT%{_localstatedir}/adm/fillup-templates/sysconfig.virtlockd -%endif -mv $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/libvirt-guests $RPM_BUILD_ROOT%{_sysconfdir}/init.d/libvirt-guests -ln -s /etc/init.d/libvirt-guests $RPM_BUILD_ROOT%{_sbindir}/rclibvirt-guests -mv $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/libvirt-guests $RPM_BUILD_ROOT%{_localstatedir}/adm/fillup-templates/sysconfig.libvirt-guests #install firewall definitions format is described here: #/usr/share/SuSEfirewall2/services/TEMPLATE mkdir -p $RPM_BUILD_ROOT/%{_fwdefdir} install -m 644 %{S:2} $RPM_BUILD_ROOT/%{_fwdefdir}/libvirtd-relocation-server +%endif +mv $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/libvirt-guests $RPM_BUILD_ROOT%{_sysconfdir}/init.d/libvirt-guests +mkdir -p $RPM_BUILD_ROOT%{_sbindir} +ln -s %{_sysconfdir}/init.d/libvirt-guests $RPM_BUILD_ROOT%{_sbindir}/rclibvirt-guests +mv $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/libvirt-guests $RPM_BUILD_ROOT%{_localstatedir}/adm/fillup-templates/sysconfig.libvirt-guests %fdupes -s $RPM_BUILD_ROOT %clean rm -rf $RPM_BUILD_ROOT -%pre +%if %{with_libvirtd} +%pre daemon %if %{with_systemd} %service_add_pre libvirtd.service %service_add_pre virtlockd.service virtlockd.socket @@ -862,9 +1206,8 @@ rm -rf $RPM_BUILD_ROOT %{_bindir}/getent group libvirt >/dev/null || \ %{_sbindir}/groupadd -r libvirt 2>/dev/null -%post +%post daemon /sbin/ldconfig -%if %{with_libvirtd} %if %{with_network} # Install the default network if one doesn't exist if test ! -f %{_sysconfdir}/libvirt/qemu/networks/default.xml @@ -885,29 +1228,25 @@ fi %{fillup_only -n libvirtd} %endif %{fillup_only -n virtlockd} -%endif -%preun -%if %{with_libvirtd} +%preun daemon %if %{with_systemd} %service_del_preun libvirtd.service %service_del_preun virtlockd.service virtlockd.socket %endif %stop_on_removal libvirtd %stop_on_removal virtlockd -%endif -%postun +%postun daemon /sbin/ldconfig -%if %{with_libvirtd} %if %{with_systemd} %service_del_postun libvirtd.service %service_del_postun virtlockd.service virtlockd.socket %endif %restart_on_update libvirtd %restart_on_update virtlockd -%endif %insserv_cleanup +%endif # with_libvirtd %post client /sbin/ldconfig @@ -932,10 +1271,12 @@ fi %endif %insserv_cleanup -%if %{with_libvirtd} - %files %defattr(-, root, root) + +%if %{with_libvirtd} +%files daemon +%defattr(-, root, root) %{_sbindir}/libvirtd %{_sbindir}/virtlockd %dir %{_libdir}/%{name} @@ -950,7 +1291,6 @@ fi %{_datadir}/libvirt/networks/default.xml %endif %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/nwfilter/ -%{_sysconfdir}/libvirt/nwfilter/*.xml %{_localstatedir}/adm/fillup-templates/sysconfig.libvirtd %config /etc/init.d/libvirtd %{_sbindir}/rclibvirtd @@ -977,6 +1317,7 @@ fi %endif %dir %{_localstatedir}/lib/libvirt/ %dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/images/ +%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/filesystems/ %dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/boot/ %dir %attr(0711, root, root) %{_localstatedir}/cache/libvirt/ %dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/ @@ -1033,18 +1374,135 @@ fi %{_libdir}/%{name}/virt-aa-helper %endif %config %{_fwdefdir}/libvirtd-relocation-server + +%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) +%dir %{_libdir}/%{name}/connection-driver +%{_libdir}/%{name}/connection-driver/libvirt_driver_interface.so +%endif + +%if %{with_network} +%files daemon-driver-network +%defattr(-, root, root) +%dir %{_libdir}/%{name}/connection-driver +%{_libdir}/%{name}/connection-driver/libvirt_driver_network.so +%endif + +%if %{with_nodedev} +%files daemon-driver-nodedev +%defattr(-, root, root) +%dir %{_libdir}/%{name}/connection-driver +%{_libdir}/%{name}/connection-driver/libvirt_driver_nodedev.so +%endif + +%if %{with_nwfilter} +%files daemon-driver-nwfilter +%defattr(-, root, root) +%dir %{_libdir}/%{name}/connection-driver +%{_libdir}/%{name}/connection-driver/libvirt_driver_nwfilter.so +%endif + +%files daemon-driver-secret +%defattr(-, root, root) +%dir %{_libdir}/%{name}/connection-driver +%{_libdir}/%{name}/connection-driver/libvirt_driver_secret.so + +%if %{with_storage} +%files daemon-driver-storage +%defattr(-, root, root) +%dir %{_libdir}/%{name}/connection-driver +%{_libdir}/%{name}/connection-driver/libvirt_driver_storage.so +%endif + +%if %{with_qemu} +%files daemon-driver-qemu +%defattr(-, root, root) +%dir %{_libdir}/%{name}/connection-driver +%{_libdir}/%{name}/connection-driver/libvirt_driver_qemu.so +%endif + +%if %{with_lxc} +%files daemon-driver-lxc +%defattr(-, root, root) +%dir %{_libdir}/%{name}/connection-driver +%{_libdir}/%{name}/connection-driver/libvirt_driver_lxc.so +%endif + +%if %{with_uml} +%files daemon-driver-uml +%defattr(-, root, root) +%dir %{_libdir}/%{name}/connection-driver +%{_libdir}/%{name}/connection-driver/libvirt_driver_uml.so +%endif + +%if %{with_xen} +%files daemon-driver-xen +%defattr(-, root, root) +%dir %{_libdir}/%{name}/connection-driver +%{_libdir}/%{name}/connection-driver/libvirt_driver_xen.so +%endif + +%if %{with_libxl} +%files daemon-driver-libxl +%defattr(-, root, root) +%dir %{_libdir}/%{name}/connection-driver +%{_libdir}/%{name}/connection-driver/libvirt_driver_libxl.so +%endif + +%if %{with_vbox} +%files daemon-driver-vbox +%defattr(-, root, root) +%{_libdir}/%{name}/connection-driver/libvirt_driver_vbox.so +%endif +%endif # with_driver_modules + +%if %{with_qemu} +%files daemon-qemu +%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 + +%if %{with_vbox} +%files daemon-vbox +%defattr(-, root, root) +%endif %endif # with_libvirtd %files client -f %{name}.lang %defattr(-, root, root) -%doc %dir %{_docdir}/%{name} -%doc %{_docdir}/%{name}/[CNRT]* -%doc %{_docdir}/%{name}/AUTHORS +%doc AUTHORS ChangeLog.gz NEWS README COPYING COPYING.LESSER TODO %doc %{_mandir}/man1/virsh.1* %doc %{_mandir}/man1/virt-xml-validate.1* %doc %{_mandir}/man1/virt-pki-validate.1* %doc %{_mandir}/man1/virt-host-validate.1* -%config(noreplace) %{_sysconfdir}/libvirt/libvirt.conf +%config(noreplace) %{_sysconfdir}/%{name}/libvirt.conf %{_bindir}/virsh %{_bindir}/virt-xml-validate %{_bindir}/virt-pki-validate @@ -1094,16 +1552,15 @@ fi %files doc %defattr(-, root, root) -%{_datadir}/gtk-doc/html/libvirt -%doc %{_docdir}/%{name}/*.png -%doc %{_docdir}/%{name}/*.html -%doc %{_docdir}/%{name}/*.gif -%doc %{_docdir}/%{name}/*.css -%doc %{_docdir}/%{name}/html -%doc %{_docdir}/%{name}/internals +# Website +%dir %{_docdir}/libvirt +%doc %{_docdir}/libvirt/* + +# API docs +%dir %{_datadir}/gtk-doc/html/libvirt/ +%doc %{_datadir}/gtk-doc/html/libvirt/* %if %{with_sanlock} - %files lock-sanlock %defattr(-, root, root) %doc %{_mandir}/man8/virt-sanlock-cleanup.8* @@ -1123,14 +1580,16 @@ fi %endif %if %{with_python} - %files python %defattr(-, root, root) -%doc %{_docdir}/%{name}-python %{py_sitedir}/libvirt.py* %{py_sitedir}/libvirt_qemu.py* %{py_sitedir}/libvirt_lxc.py* %{py_sitedir}/libvirtmod* +%doc python/tests/*.py +%doc python/TODO +%doc examples/python +%doc examples/domain-events/events-python %endif %changelog diff --git a/libvirtd.init b/libvirtd.init index 167d8f5..7c58256 100644 --- a/libvirtd.init +++ b/libvirtd.init @@ -61,7 +61,6 @@ case "$1" in ;; stop) echo -n "Shutting down libvirtd " - rm -f /var/lock/subsys/libvirtd rm -rf /var/cache/libvirt/* killproc -TERM $LIBVIRTD_BIN > /dev/null 2>&1 rm -f $LIBVIRTD_PIDFILE diff --git a/rpmlintrc b/rpmlintrc new file mode 100644 index 0000000..4a0a507 --- /dev/null +++ b/rpmlintrc @@ -0,0 +1,4 @@ +# This line is mandatory to access the configuration functions +from Config import * + +addFilter("suse-filelist-empty")