[Pkg-libvirt-maintainers] Bug#1086026: please fine-tune qemu-system package dependencies

Michael Tokarev mjt at tls.msk.ru
Fri Oct 25 09:45:31 BST 2024


Source: libguestfs
Version: 1:1.52.2-4
Severity: normal
Tags: patch
X-Debbugs-Cc: pkg-qemu-devel at lists.alioth.debian.org

Historically, qemu grouped various qemu-system-ARCH binaries
into a few packages, providing a package for an architecture
family, and qemu-system-misc package for all the rest.  This
grouping has been changed a few times in the past already.

libguestfs currently reflects this qemu-system architecture
grouping in its control file in the Depends: field.

With version 9.1.1 of qemu debian packages, this grouping
has been changed once more, by introducing 2 new architecture
families and 2 new packages - riscv and s390x, making every
debian release architectures to be in their own qemu package.
These architectures were part of qemu-system-misc package
before.

However this broke libguestfs, since it relies on qemu-system-misc
for riscv and s390 binaries, which are not there anymore.

For quite some time, qemu provides virtual packages named after
the executable/binary name, - eg, there's a virtual package
qemu-system-riscv64, which were provided by qemu-system-misc
before and now it is provided by qemu-system-riscv.  Ditto
for qemu-system-s390x (which is now its own non-virtual
package).

Usually, I'd suggest to depend on particular qemu binary
name which is used, eg:

 Depends: qemu-system-riscv64

But in the case of libguestfs, which has to list such dependency
for every architecture it builds for, maybe there's an easier
approach which can be implemented with the help from qemu side.
There was a talk for qemu to provide qemu-system-for-host of
the right architecture - which will depend on the right qemu
package depending on what the host arch is.

In a similar way, qemu can provide virtual package named, eg,
qemu-system-native, selecting the rigth qemu-system-foo for the
native architecture (qemu-system-mips for mips64el, etc).

This is an RFC/RFD.  But for now, I'm providing a tiny patch
for libguestfs d/control, to replace qemu-system-misc dependency
for riscv64 and s390x cases with actual architecture libguestfs
expects from qemu.  This change will work with either old or new
qemu packages, but the list in Depends becomes non-uniform: for
some architectures it is qemu package name (qemu-system-x86),
while for other architectures it is virtual qemu package name
(qemu-system-riscv64).  So this change will make things work
again, but it is kinda ugly in this way.

Thanks,

/mjt

--- debian/control.orig	2024-10-07 16:21:04.000000000 +0300
+++ debian/control	2024-10-25 11:44:35.382756399 +0300
@@ -25,7 +25,8 @@
   gperf, libxml2-utils,
   qemu-system-arm [armel armhf arm64],
   qemu-system-mips [mips mipsel mips64 mips64el],
-  qemu-system-misc [s390x riscv64],
+  qemu-system-s390x [s390x],
+  qemu-system-riscv64 [riscv64],
   qemu-system-ppc [powerpc powerpcspe ppc64 ppc64el],
   qemu-system-sparc [sparc sparc64],
   qemu-system-x86 [i386 amd64],
@@ -188,7 +189,8 @@
   supermin (>= 5.2.2-4~),
   qemu-system-arm [armel armhf arm64],
   qemu-system-mips [mips mipsel mips64 mips64el],
-  qemu-system-misc [s390x riscv64],
+  qemu-system-s390x [s390x],
+  qemu-system-riscv64 [riscv64],
   qemu-system-ppc [powerpc ppc64 ppc64el],
   qemu-system-sparc [sparc],
   qemu-system-x86 [i386 amd64],



More information about the Pkg-libvirt-maintainers mailing list