Attached is a patch to add some additional options to the spec file,
allowing for more flexibility when building.
With this patch, it allows you to build a "client-only" version of
libvirt for machines that may have an interest in communicating over the
remote driver, but do not have a hypervisor themselves.
It enables command line overrides of control variables for the build
eg:
rpmbuild $(RPM_FLAGS) --nodeps \
--without xen \
--without xen_proxy \
--without qemu \
--without openvz \
--without lxc \
--without polkit \
--without libvirtd \
--without avahi \
--without sasl \
--without python \
--without devel \
-ta --clean libvirt*.tar.gz
Signed-off-by: Ben Guthro <bguthro(a)virtualiron.com>
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 18b2127..666fb83 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -1,11 +1,16 @@
# -*- rpm-spec -*-
-%define with_xen 1
-%define with_xen_proxy 1
-%define with_qemu 1
-%define with_openvz 1
-%define with_lxc 1
-%define with_polkit 0
+%define with_xen 0%{!?_without_xen:1}
+%define with_xen_proxy 0%{!?_without_xen_proxy:1}
+%define with_qemu 0%{!?_without_qemu:1}
+%define with_openvz 0%{!?_without_openvz:1}
+%define with_lxc 0%{!?_without_lxc:1}
+%define with_sasl 0%{!?_without_sasl:1}
+%define with_avahi 0%{!?_without_avahi:1}
+%define with_polkit 0%{!?_without_polkit:0}
+%define with_python 0%{!?_without_python:1}
+%define with_libvirtd 0%{!?_without_libvirtd:1}
+%define with_devel 0%{!?_without_devel:1}
# Xen is available only on i386 x86_64 ia64
%ifnarch i386 i686 x86_64 ia64
@@ -23,7 +28,7 @@
%endif
%if 0%{fedora} >= 8
-%define with_polkit 1
+%define with_polkit 0%{!?_without_polkit:1}
%define with_xen_proxy 0
%endif
@@ -46,10 +51,12 @@ Requires: iptables
# So remote clients can access libvirt over SSH tunnel
# (client invokes 'nc' against the UNIX socket on the server)
Requires: nc
+%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-md5
+%endif
%if %{with_polkit}
Requires: PolicyKit >= 0.6
%endif
@@ -82,14 +89,18 @@ BuildRequires: readline-devel
BuildRequires: ncurses-devel
BuildRequires: gettext
BuildRequires: gnutls-devel
+%if %{with_avahi}
BuildRequires: avahi-devel
+%endif
BuildRequires: libselinux-devel
BuildRequires: dnsmasq
BuildRequires: bridge-utils
%if %{with_qemu}
BuildRequires: qemu
%endif
+%if %{with_sasl}
BuildRequires: cyrus-sasl-devel
+%endif
%if %{with_polkit}
BuildRequires: PolicyKit-devel >= 0.6
%endif
@@ -119,6 +130,7 @@ BuildRequires: gawk
Libvirt is a C toolkit to interact with the virtualization capabilities
of recent versions of Linux (and other OSes).
+%if %{with_devel}
%package devel
Summary: Libraries, includes, etc. to compile with the libvirt library
Group: Development/Libraries
@@ -132,7 +144,9 @@ Obsoletes: libvir-devel
%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).
+%endif
+%if %{with_python}
%package python
Summary: Python bindings for the libvirt library
Group: Development/Libraries
@@ -144,6 +158,7 @@ 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
%setup -q
@@ -190,6 +205,7 @@ install -d -m 0755
$RPM_BUILD_ROOT%{_localstatedir}/lib/libvirt/images/
# Default dir for kernel+initrd images defnied in SELinux policy
install -d -m 0755 $RPM_BUILD_ROOT%{_localstatedir}/lib/libvirt/boot/
+%if %{with_qemu}
# We don't want to install /etc/libvirt/qemu/networks in the main
%files list
# because if the admin wants to delete the default network completely,
we don't
# want to end up re-incarnating it on every RPM upgrade.
@@ -200,14 +216,33 @@ rm -f
$RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml
rm -f
$RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml
# Strip auto-generated UUID - we need it generated per-install
sed -i -e "/<uuid>/d"
$RPM_BUILD_ROOT%{_datadir}/libvirt/networks/default.xml
+%endif
%find_lang %{name}
+# If we are not building with certain options, we need to remove files
+# so that we don't get Installed (but unpackaged) errors
+%if ! %{with_devel}
+rm -rf $RPM_BUILD_ROOT%{_datadir}/gtk-doc/html/libvirt
+rm -rf $RPM_BUILD_ROOT%{_includedir}/libvirt
+rm -rf $RPM_BUILD_ROOT%{_libdir}/lib*.so
+rm -rf $RPM_BUILD_ROOT%{_libdir}/pkgconfig/libvirt.pc
+%endif
+
+%if ! %{with_python}
+rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-python-%{version}
+%endif
+
+%if ! %{with_qemu}
+rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu.conf
+%endif
+
%clean
rm -fr %{buildroot}
%post
/sbin/ldconfig
+%if %{with_libvirtd}
# 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
@@ -222,12 +257,15 @@ then
fi
/sbin/chkconfig --add libvirtd
+%endif
%preun
+%if %{with_libvirtd}
if [ $1 = 0 ]; then
/sbin/service libvirtd stop 1>/dev/null 2>&1
/sbin/chkconfig --del libvirtd
fi
+%endif
%postun
/sbin/ldconfig
@@ -240,40 +278,73 @@ fi
%{_bindir}/virsh
%{_libdir}/lib*.so.*
%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/
+
+%if %{with_qemu}
%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
+
+%if %{with_libvirtd}
%{_sysconfdir}/rc.d/init.d/libvirtd
%config(noreplace) %{_sysconfdir}/sysconfig/libvirtd
%config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf
+%endif
+
+%if %{with_qemu}
%config(noreplace) %{_sysconfdir}/libvirt/qemu.conf
+%endif
+
+%if %{with_sasl}
%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf
+%endif
+
+%if %{with_qemu}
%dir %{_datadir}/libvirt/
%dir %{_datadir}/libvirt/networks/
%{_datadir}/libvirt/networks/default.xml
+%endif
+
%dir %{_localstatedir}/run/libvirt/
%dir %{_localstatedir}/lib/libvirt/
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/images/
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/boot/
-%{_datadir}/augeas/lenses/libvirtd.aug
+
+%if %{with_qemu}
%{_datadir}/augeas/lenses/libvirtd_qemu.aug
-%{_datadir}/augeas/lenses/tests/test_libvirtd.aug
%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug
+%endif
+
+%if %{with_libvirtd}
+%{_datadir}/augeas/lenses/libvirtd.aug
+%{_datadir}/augeas/lenses/tests/test_libvirtd.aug
+%endif
+
%if %{with_polkit}
%{_datadir}/PolicyKit/policy/org.libvirt.unix.policy
%endif
+
+%if %{with_qemu}
%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/qemu/
+%endif
+
%if %{with_xen_proxy}
%attr(4755, root, root) %{_libexecdir}/libvirt_proxy
%endif
-%attr(0755, root, root) %{_libexecdir}/libvirt_parthelper
+
%if %{with_lxc}
%attr(0755, root, root) %{_libexecdir}/libvirt_lxc
%endif
+
+%if %{with_libvirtd}
+%attr(0755, root, root) %{_libexecdir}/libvirt_parthelper
%attr(0755, root, root) %{_sbindir}/libvirtd
+%endif
+
%doc docs/*.rng
%doc docs/*.xml
+%if %{with_devel}
%files devel
%defattr(-, root, root)
@@ -289,7 +360,9 @@ fi
%doc docs/*.html docs/html docs/*.gif
%doc docs/examples
%doc docs/libvirt-api.xml
+%endif
+%if %{with_python}
%files python
%defattr(-, root, root)
@@ -300,6 +373,7 @@ fi
%doc python/TODO
%doc python/libvirtclass.txt
%doc docs/examples/python
+%endif
%changelog
* Mon Sep 8 2008 Daniel Veillard <veillard(a)redhat.com> - 0.4.5-1