diff --git a/.cvsignore b/.cvsignore
index 55e6af8..723ace5 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -3,3 +3,4 @@
 i686
 x86_64
 libvirt-*.tar.gz
+libvirt-0.4.6.tar.gz
diff --git a/libvirt.spec b/libvirt.spec
index 95cc2aa..b0cf392 100644
--- a/libvirt.spec
+++ b/libvirt.spec
@@ -1,11 +1,15 @@
 # -*- 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}
 
 # Xen is available only on i386 x86_64 ia64
 %ifnarch i386 i686 x86_64 ia64
@@ -23,18 +27,17 @@
 %endif
 
 %if 0%{fedora} >= 8
-%define with_polkit    1
+%define with_polkit    0%{!?_without_polkit:1}
 %define with_xen_proxy 0
 %endif
 
 Summary: Library providing a simple API virtualization
 Name: libvirt
-Version: 0.4.5
-Release: 2%{?dist}%{?extra_release}
+Version: 0.4.6
+Release: 1%{?dist}%{?extra_release}
 License: LGPLv2+
 Group: Development/Libraries
 Source: libvirt-%{version}.tar.gz
-Patch0: libvirt-0.4.5-no-emulator-segfault.patch
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
 URL: http://libvirt.org/
 BuildRequires: python python-devel
@@ -47,10 +50,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
@@ -83,14 +88,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
@@ -134,6 +143,7 @@ Obsoletes: libvir-devel
 Includes and documentations for the C library providing an API to use
 the virtualization capabilities of recent versions of Linux (and other OSes).
 
+%if %{with_python}
 %package python
 Summary: Python bindings for the libvirt library
 Group: Development/Libraries
@@ -145,10 +155,10 @@ 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
-%patch0 -p1
 
 %build
 %if ! %{with_xen}
@@ -167,10 +177,35 @@ of recent versions of Linux (and other OSes).
 %define _without_lxc --without-lxc
 %endif
 
+%if ! %{with_sasl}
+%define _without_sasl --without-sasl
+%endif
+
+%if ! %{with_avahi}
+%define _without_avahi --without-avahi
+%endif
+
+%if ! %{with_polkit}
+%define _without_polkit --without-polkit
+%endif
+
+%if ! %{with_python}
+%define _without_python --without-python
+%endif
+
+%if ! %{with_libvirtd}
+%define _without_libvirtd --without-libvirtd
+%endif
+
 %configure %{?_without_xen} \
            %{?_without_qemu} \
            %{?_without_openvz} \
            %{?_without_lxc} \
+           %{?_without_sasl} \
+           %{?_without_avahi} \
+           %{?_without_polkit} \
+           %{?_without_python} \
+           %{?_without_libvirtd} \
            --with-init-script=redhat \
            --with-qemud-pid-file=%{_localstatedir}/run/libvirt_qemud.pid \
            --with-remote-file=%{_localstatedir}/run/libvirtd.pid
@@ -192,6 +227,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.
@@ -202,14 +238,24 @@ 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 ! %{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
@@ -224,12 +270,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
@@ -242,37 +291,69 @@ 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
 
@@ -292,6 +373,7 @@ fi
 %doc docs/examples
 %doc docs/libvirt-api.xml
 
+%if %{with_python}
 %files python
 %defattr(-, root, root)
 
@@ -302,6 +384,7 @@ fi
 %doc python/TODO
 %doc python/libvirtclass.txt
 %doc docs/examples/python
+%endif
 
 %changelog
 * Tue Sep  9 2008 Daniel Veillard <veillard@redhat.com> - 0.4.5-2.fc10
diff --git a/sources b/sources
index ce6f52b..a07f3fd 100644
--- a/sources
+++ b/sources
@@ -1 +1,2 @@
 dcb590a6202c332907eae7b44e47ca4b  libvirt-0.4.5.tar.gz
+abdf727deaffd868172f7243eb75ffe3  libvirt-0.4.6.tar.gz