[libvirt] [PATCH] spec: Explicitly require matching libvirt-libs

Jiri Denemark posted 1 patch 5 years, 8 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/534889cae55ea29e107a9440c366d3754f3cb0d6.1531151750.git.jdenemar@redhat.com
Test syntax-check passed
libvirt.spec.in | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
[libvirt] [PATCH] spec: Explicitly require matching libvirt-libs
Posted by Jiri Denemark 5 years, 8 months ago
All drivers now link directly to libvirt.so rather than getting the
symbols from the daemon. Let's explicitly mention this dependency in the
spec file.

Theoretically, the automatic libvirt.so.0(LIBVIRT_PRIVATE_4.5.0)
dependency should take care of everything, but rpmdiff complains it
would like to see an explicit dependency on the exact libvirt-libs
version too.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
---

Notes:
    The rpmdiff check may also be wrong, but I figured the explicit
    requires statement makes some sense and can't harm in any case.

 libvirt.spec.in | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/libvirt.spec.in b/libvirt.spec.in
index 720870e2b1..6f0d399064 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -544,6 +544,7 @@ Network filter configuration files for cleaning guest traffic
 %package daemon-driver-network
 Summary: Network driver plugin for the libvirtd daemon
 Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 Requires: dnsmasq >= 2.41
 Requires: radvd
 Requires: iptables
@@ -560,6 +561,7 @@ bridge capabilities.
 %package daemon-driver-nwfilter
 Summary: Nwfilter driver plugin for the libvirtd daemon
 Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 Requires: iptables
 %if 0%{?rhel} && 0%{?rhel} < 7
 Requires: iptables-ipv6
@@ -575,6 +577,7 @@ iptables and ip6tables capabilities
 %package daemon-driver-nodedev
 Summary: Nodedev driver plugin for the libvirtd daemon
 Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 # needed for device enumeration
 %if 0%{?fedora} || 0%{?rhel} >= 7
 Requires: systemd >= 185
@@ -591,6 +594,7 @@ capabilities.
 %package daemon-driver-interface
 Summary: Interface driver plugin for the libvirtd daemon
 Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 %if (0%{?fedora} || 0%{?rhel} >= 7)
 Requires: netcf-libs >= 0.2.2
 %endif
@@ -604,6 +608,7 @@ netcf library
 %package daemon-driver-secret
 Summary: Secret driver plugin for the libvirtd daemon
 Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 
 %description daemon-driver-secret
 The secret driver plugin for the libvirtd daemon, providing
@@ -612,6 +617,7 @@ an implementation of the secret key APIs.
 %package daemon-driver-storage-core
 Summary: Storage driver plugin including base backends for the libvirtd daemon
 Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 Requires: nfs-utils
 # For mkfs
 Requires: util-linux
@@ -628,6 +634,7 @@ iSCSI, and multipath storage.
 %package daemon-driver-storage-logical
 Summary: Storage driver plugin for lvm volumes
 Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 Requires: lvm2
 
 %description daemon-driver-storage-logical
@@ -638,6 +645,7 @@ volumes using lvm.
 %package daemon-driver-storage-disk
 Summary: Storage driver plugin for disk
 Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 Requires: parted
 Requires: device-mapper
 
@@ -649,6 +657,7 @@ volumes using the host disks.
 %package daemon-driver-storage-scsi
 Summary: Storage driver plugin for local scsi devices
 Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 
 %description daemon-driver-storage-scsi
 The storage driver backend adding implementation of the storage APIs for scsi
@@ -658,6 +667,7 @@ host devices.
 %package daemon-driver-storage-iscsi
 Summary: Storage driver plugin for iscsi
 Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 Requires: iscsi-initiator-utils
 
 %description daemon-driver-storage-iscsi
@@ -668,6 +678,7 @@ volumes using the host iscsi stack.
 %package daemon-driver-storage-mpath
 Summary: Storage driver plugin for multipath volumes
 Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 Requires: device-mapper
 
 %description daemon-driver-storage-mpath
@@ -679,6 +690,7 @@ multipath storage using device mapper.
 %package daemon-driver-storage-gluster
 Summary: Storage driver plugin for gluster
 Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
     %if 0%{?fedora}
 Requires: glusterfs-client >= 2.0.1
     %endif
@@ -696,6 +708,7 @@ volumes using libgfapi.
 %package daemon-driver-storage-rbd
 Summary: Storage driver plugin for rbd
 Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 
 %description daemon-driver-storage-rbd
 The storage driver backend adding implementation of the storage APIs for rbd
@@ -707,6 +720,7 @@ volumes using the ceph protocol.
 %package daemon-driver-storage-sheepdog
 Summary: Storage driver plugin for sheepdog
 Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 Requires: sheepdog
 
 %description daemon-driver-storage-sheepdog
@@ -719,6 +733,7 @@ sheepdog volumes using.
 %package daemon-driver-storage-zfs
 Summary: Storage driver plugin for ZFS
 Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 # Support any conforming implementation of zfs
 Requires: /sbin/zfs
 Requires: /sbin/zpool
@@ -760,6 +775,7 @@ parted and more.
 %package daemon-driver-qemu
 Summary: QEMU driver plugin for the libvirtd daemon
 Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 # There really is a hard cross-driver dependency here
 Requires: libvirt-daemon-driver-network = %{version}-%{release}
 Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
@@ -784,6 +800,7 @@ QEMU
 %package daemon-driver-lxc
 Summary: LXC driver plugin for the libvirtd daemon
 Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 # There really is a hard cross-driver dependency here
 Requires: libvirt-daemon-driver-network = %{version}-%{release}
     %if 0%{?fedora} || 0%{?rhel} > 7
@@ -801,6 +818,7 @@ the Linux kernel
 %package daemon-driver-uml
 Summary: Uml driver plugin for the libvirtd daemon
 Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 
 %description daemon-driver-uml
 The UML driver plugin for the libvirtd daemon, providing
@@ -813,6 +831,7 @@ User Mode Linux
 %package daemon-driver-vbox
 Summary: VirtualBox driver plugin for the libvirtd daemon
 Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 
 %description daemon-driver-vbox
 The vbox driver plugin for the libvirtd daemon, providing
@@ -825,6 +844,7 @@ VirtualBox
 %package daemon-driver-libxl
 Summary: Libxl driver plugin for the libvirtd daemon
 Requires: libvirt-daemon = %{version}-%{release}
+Requires: libvirt-libs = %{version}-%{release}
 Obsoletes: libvirt-daemon-driver-xen < 4.3.0
 
 %description daemon-driver-libxl
-- 
2.18.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] spec: Explicitly require matching libvirt-libs
Posted by Daniel P. Berrangé 5 years, 8 months ago
On Mon, Jul 09, 2018 at 05:55:58PM +0200, Jiri Denemark wrote:
> All drivers now link directly to libvirt.so rather than getting the
> symbols from the daemon. Let's explicitly mention this dependency in the
> spec file.
> 
> Theoretically, the automatic libvirt.so.0(LIBVIRT_PRIVATE_4.5.0)
> dependency should take care of everything, but rpmdiff complains it
> would like to see an explicit dependency on the exact libvirt-libs
> version too.

Actually we're not even relying on automatic deps here. The
libvirt-daemon-driver-XXX packages, all have a

  Requires: libvirt-daemon = %{version}-%{release}

The libvirt-daemon package then has

  Requires: libvirt-libs = %{version}-%{release}

so by transitive dependancies, every libvirt-daemon-driver-XXX
package already has

  Requires: libvirt-libs = %{version}-%{release}

> Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
> ---
> 
> Notes:
>     The rpmdiff check may also be wrong, but I figured the explicit
>     requires statement makes some sense and can't harm in any case.

I guess rpmdiff doesn't look at transitive dependancies, because it
doesn't want to assume that we'll always pull this in indirectly.
So since libvirt-daemon-driver-XXX does explicitly link to libvirt.so
I think it is just about justified in complaining

> 
>  libvirt.spec.in | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)

  Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

if you update the commit message to mention the that we want an
explicit dep instead of relying on transitive deps.

> 
> diff --git a/libvirt.spec.in b/libvirt.spec.in
> index 720870e2b1..6f0d399064 100644
> --- a/libvirt.spec.in
> +++ b/libvirt.spec.in
> @@ -544,6 +544,7 @@ Network filter configuration files for cleaning guest traffic
>  %package daemon-driver-network
>  Summary: Network driver plugin for the libvirtd daemon
>  Requires: libvirt-daemon = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  Requires: dnsmasq >= 2.41
>  Requires: radvd
>  Requires: iptables
> @@ -560,6 +561,7 @@ bridge capabilities.
>  %package daemon-driver-nwfilter
>  Summary: Nwfilter driver plugin for the libvirtd daemon
>  Requires: libvirt-daemon = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  Requires: iptables
>  %if 0%{?rhel} && 0%{?rhel} < 7
>  Requires: iptables-ipv6
> @@ -575,6 +577,7 @@ iptables and ip6tables capabilities
>  %package daemon-driver-nodedev
>  Summary: Nodedev driver plugin for the libvirtd daemon
>  Requires: libvirt-daemon = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  # needed for device enumeration
>  %if 0%{?fedora} || 0%{?rhel} >= 7
>  Requires: systemd >= 185
> @@ -591,6 +594,7 @@ capabilities.
>  %package daemon-driver-interface
>  Summary: Interface driver plugin for the libvirtd daemon
>  Requires: libvirt-daemon = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  %if (0%{?fedora} || 0%{?rhel} >= 7)
>  Requires: netcf-libs >= 0.2.2
>  %endif
> @@ -604,6 +608,7 @@ netcf library
>  %package daemon-driver-secret
>  Summary: Secret driver plugin for the libvirtd daemon
>  Requires: libvirt-daemon = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  
>  %description daemon-driver-secret
>  The secret driver plugin for the libvirtd daemon, providing
> @@ -612,6 +617,7 @@ an implementation of the secret key APIs.
>  %package daemon-driver-storage-core
>  Summary: Storage driver plugin including base backends for the libvirtd daemon
>  Requires: libvirt-daemon = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  Requires: nfs-utils
>  # For mkfs
>  Requires: util-linux
> @@ -628,6 +634,7 @@ iSCSI, and multipath storage.
>  %package daemon-driver-storage-logical
>  Summary: Storage driver plugin for lvm volumes
>  Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  Requires: lvm2
>  
>  %description daemon-driver-storage-logical
> @@ -638,6 +645,7 @@ volumes using lvm.
>  %package daemon-driver-storage-disk
>  Summary: Storage driver plugin for disk
>  Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  Requires: parted
>  Requires: device-mapper
>  
> @@ -649,6 +657,7 @@ volumes using the host disks.
>  %package daemon-driver-storage-scsi
>  Summary: Storage driver plugin for local scsi devices
>  Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  
>  %description daemon-driver-storage-scsi
>  The storage driver backend adding implementation of the storage APIs for scsi
> @@ -658,6 +667,7 @@ host devices.
>  %package daemon-driver-storage-iscsi
>  Summary: Storage driver plugin for iscsi
>  Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  Requires: iscsi-initiator-utils
>  
>  %description daemon-driver-storage-iscsi
> @@ -668,6 +678,7 @@ volumes using the host iscsi stack.
>  %package daemon-driver-storage-mpath
>  Summary: Storage driver plugin for multipath volumes
>  Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  Requires: device-mapper
>  
>  %description daemon-driver-storage-mpath
> @@ -679,6 +690,7 @@ multipath storage using device mapper.
>  %package daemon-driver-storage-gluster
>  Summary: Storage driver plugin for gluster
>  Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>      %if 0%{?fedora}
>  Requires: glusterfs-client >= 2.0.1
>      %endif
> @@ -696,6 +708,7 @@ volumes using libgfapi.
>  %package daemon-driver-storage-rbd
>  Summary: Storage driver plugin for rbd
>  Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  
>  %description daemon-driver-storage-rbd
>  The storage driver backend adding implementation of the storage APIs for rbd
> @@ -707,6 +720,7 @@ volumes using the ceph protocol.
>  %package daemon-driver-storage-sheepdog
>  Summary: Storage driver plugin for sheepdog
>  Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  Requires: sheepdog
>  
>  %description daemon-driver-storage-sheepdog
> @@ -719,6 +733,7 @@ sheepdog volumes using.
>  %package daemon-driver-storage-zfs
>  Summary: Storage driver plugin for ZFS
>  Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  # Support any conforming implementation of zfs
>  Requires: /sbin/zfs
>  Requires: /sbin/zpool
> @@ -760,6 +775,7 @@ parted and more.
>  %package daemon-driver-qemu
>  Summary: QEMU driver plugin for the libvirtd daemon
>  Requires: libvirt-daemon = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  # There really is a hard cross-driver dependency here
>  Requires: libvirt-daemon-driver-network = %{version}-%{release}
>  Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
> @@ -784,6 +800,7 @@ QEMU
>  %package daemon-driver-lxc
>  Summary: LXC driver plugin for the libvirtd daemon
>  Requires: libvirt-daemon = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  # There really is a hard cross-driver dependency here
>  Requires: libvirt-daemon-driver-network = %{version}-%{release}
>      %if 0%{?fedora} || 0%{?rhel} > 7
> @@ -801,6 +818,7 @@ the Linux kernel
>  %package daemon-driver-uml
>  Summary: Uml driver plugin for the libvirtd daemon
>  Requires: libvirt-daemon = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  
>  %description daemon-driver-uml
>  The UML driver plugin for the libvirtd daemon, providing
> @@ -813,6 +831,7 @@ User Mode Linux
>  %package daemon-driver-vbox
>  Summary: VirtualBox driver plugin for the libvirtd daemon
>  Requires: libvirt-daemon = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  
>  %description daemon-driver-vbox
>  The vbox driver plugin for the libvirtd daemon, providing
> @@ -825,6 +844,7 @@ VirtualBox
>  %package daemon-driver-libxl
>  Summary: Libxl driver plugin for the libvirtd daemon
>  Requires: libvirt-daemon = %{version}-%{release}
> +Requires: libvirt-libs = %{version}-%{release}
>  Obsoletes: libvirt-daemon-driver-xen < 4.3.0
>  
>  %description daemon-driver-libxl
> -- 
> 2.18.0
> 
> --
> libvir-list mailing list
> libvir-list@redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list