spec: Modularize the storage driver

Create a new set of sub-packages containing the new storage driver
modules so that certain heavy-weight backends (gluster, rbd) can be
installed separately only if required.

To keep backward compatibility the 'libvirt-driver-storage' package
will be turned into a virtual package pulling in all the new storage
backend sub-packages. The storage driver module will be moved into
libvirt-driver-storage-core including the filesystem backend which is
mandatory.

This then allows to make libvirt-daemon-driver-qemu depend only on the
core of the storage driver.

All other meta-packages still depend on the full storage driver and thus
pull in all the backends.
This commit is contained in:
Peter Krempa 2017-02-08 09:20:21 +01:00
parent 93a3f516ee
commit 27c8e36d60

View File

@ -585,35 +585,13 @@ Requires: libvirt-daemon = %{version}-%{release}
The secret driver plugin for the libvirtd daemon, providing The secret driver plugin for the libvirtd daemon, providing
an implementation of the secret key APIs. an implementation of the secret key APIs.
%package daemon-driver-storage-core
%package daemon-driver-storage Summary: Storage driver plugin including base backends for the libvirtd daemon
Summary: Storage driver plugin for the libvirtd daemon
Group: Development/Libraries Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release} Requires: libvirt-daemon = %{version}-%{release}
Requires: nfs-utils Requires: nfs-utils
# For mkfs # For mkfs
Requires: util-linux Requires: util-linux
# For glusterfs
%if 0%{?fedora}
Requires: glusterfs-client >= 2.0.1
%endif
# gluster cli tool for pool discovery
%if (0%{?fedora} || 0%{?with_storage_gluster})
Requires: /usr/sbin/gluster
%endif
# For LVM drivers
Requires: lvm2
# For ISCSI driver
Requires: iscsi-initiator-utils
# For disk driver
Requires: parted
Requires: device-mapper
# For multipath support
Requires: device-mapper
%if %{with_storage_sheepdog}
# For Sheepdog support
Requires: sheepdog
%endif
%if %{with_qemu} %if %{with_qemu}
# From QEMU RPMs # From QEMU RPMs
Requires: /usr/bin/qemu-img Requires: /usr/bin/qemu-img
@ -624,6 +602,128 @@ Requires: /usr/sbin/qcow-create
%endif %endif
%endif %endif
%description daemon-driver-storage-core
The storage driver plugin for the libvirtd daemon, providing
an implementation of the storage APIs using files, local disks, LVM, SCSI,
iSCSI, and multipath storage.
%package daemon-driver-storage-logical
Summary: Storage driver plugin for lvm volumes
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
Requires: lvm2
%description daemon-driver-storage-logical
The storage driver backend adding implementation of the storage APIs for block
volumes using lvm.
%package daemon-driver-storage-disk
Summary: Storage driver plugin for disk
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
Requires: parted
Requires: device-mapper
%description daemon-driver-storage-disk
The storage driver backend adding implementation of the storage APIs for block
volumes using the host disks.
%package daemon-driver-storage-scsi
Summary: Storage driver plugin for local scsi devices
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
%description daemon-driver-storage-scsi
The storage driver backend adding implementation of the storage APIs for scsi
host devices.
%package daemon-driver-storage-iscsi
Summary: Storage driver plugin for iscsi
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
Requires: iscsi-initiator-utils
%description daemon-driver-storage-iscsi
The storage driver backend adding implementation of the storage APIs for iscsi
volumes using the host iscsi stack.
%package daemon-driver-storage-mpath
Summary: Storage driver plugin for multipath volumes
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
Requires: device-mapper
%description daemon-driver-storage-mpath
The storage driver backend adding implementation of the storage APIs for
multipath storage using device mapper.
%if %{with_storage_gluster}
%package daemon-driver-storage-gluster
Summary: Storage driver plugin for gluster
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
%if 0%{?fedora}
Requires: glusterfs-client >= 2.0.1
%endif
%if (0%{?fedora} || 0%{?with_storage_gluster})
Requires: /usr/sbin/gluster
%endif
%description daemon-driver-storage-gluster
The storage driver backend adding implementation of the storage APIs for gluster
volumes using libgfapi.
%endif
%if %{with_storage_rbd}
%package daemon-driver-storage-rbd
Summary: Storage driver plugin for rbd
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
%description daemon-driver-storage-rbd
The storage driver backend adding implementation of the storage APIs for rbd
volumes using the ceph protocol.
%endif
%if %{with_storage_sheepdog}
%package daemon-driver-storage-sheepdog
Summary: Storage driver plugin for sheepdog
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
Requires: sheepdog
%description daemon-driver-storage-sheepdog
The storage driver backend adding implementation of the storage APIs for
sheepdog volumes using.
%endif
%package daemon-driver-storage
Summary: Storage driver plugin including all backends for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
Requires: libvirt-daemon-driver-storage-disk = %{version}-%{release}
Requires: libvirt-daemon-driver-storage-logical = %{version}-%{release}
Requires: libvirt-daemon-driver-storage-scsi = %{version}-%{release}
Requires: libvirt-daemon-driver-storage-iscsi = %{version}-%{release}
Requires: libvirt-daemon-driver-storage-mpath = %{version}-%{release}
%if %{with_storage_gluster}
Requires: libvirt-daemon-driver-storage-gluster = %{version}-%{release}
%endif
%if %{with_storage_rbd}
Requires: libvirt-daemon-driver-storage-rbd = %{version}-%{release}
%endif
%if %{with_storage_sheepdog}
Requires: libvirt-daemon-driver-storage-sheepdog = %{version}-%{release}
%endif
%description daemon-driver-storage %description daemon-driver-storage
The storage driver plugin for the libvirtd daemon, providing The storage driver plugin for the libvirtd daemon, providing
an implementation of the storage APIs using LVM, iSCSI, an implementation of the storage APIs using LVM, iSCSI,
@ -637,7 +737,7 @@ Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release} Requires: libvirt-daemon = %{version}-%{release}
# There really is a hard cross-driver dependency here # There really is a hard cross-driver dependency here
Requires: libvirt-daemon-driver-network = %{version}-%{release} Requires: libvirt-daemon-driver-network = %{version}-%{release}
Requires: libvirt-daemon-driver-storage = %{version}-%{release} Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
Requires: /usr/bin/qemu-img Requires: /usr/bin/qemu-img
# For image compression # For image compression
Requires: gzip Requires: gzip
@ -1694,21 +1794,39 @@ exit 0
%{_libdir}/%{name}/connection-driver/libvirt_driver_secret.so %{_libdir}/%{name}/connection-driver/libvirt_driver_secret.so
%files daemon-driver-storage %files daemon-driver-storage
%files daemon-driver-storage-core
%attr(0755, root, root) %{_libexecdir}/libvirt_parthelper %attr(0755, root, root) %{_libexecdir}/libvirt_parthelper
%{_libdir}/%{name}/connection-driver/libvirt_driver_storage.so %{_libdir}/%{name}/connection-driver/libvirt_driver_storage.so
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_fs.so %{_libdir}/%{name}/storage-backend/libvirt_storage_backend_fs.so
%files daemon-driver-storage-disk
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_disk.so %{_libdir}/%{name}/storage-backend/libvirt_storage_backend_disk.so
%files daemon-driver-storage-logical
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_logical.so %{_libdir}/%{name}/storage-backend/libvirt_storage_backend_logical.so
%files daemon-driver-storage-scsi
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_scsi.so %{_libdir}/%{name}/storage-backend/libvirt_storage_backend_scsi.so
%files daemon-driver-storage-iscsi
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_iscsi.so %{_libdir}/%{name}/storage-backend/libvirt_storage_backend_iscsi.so
%files daemon-driver-storage-mpath
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_mpath.so %{_libdir}/%{name}/storage-backend/libvirt_storage_backend_mpath.so
%if %{with_storage_gluster} %if %{with_storage_gluster}
%files daemon-driver-storage-gluster
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_gluster.so %{_libdir}/%{name}/storage-backend/libvirt_storage_backend_gluster.so
%endif %endif
%if %{with_storage_rbd} %if %{with_storage_rbd}
%files daemon-driver-storage-rbd
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_rbd.so %{_libdir}/%{name}/storage-backend/libvirt_storage_backend_rbd.so
%endif %endif
%if %{with_storage_sheepdog} %if %{with_storage_sheepdog}
%files daemon-driver-storage-sheepdog
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_sheepdog.so %{_libdir}/%{name}/storage-backend/libvirt_storage_backend_sheepdog.so
%endif %endif