01.03.2021 14:47, Helmut Grohne wrote:
Package: qemu-system-common
Version: 1:5.2+dfsg-6
User: debian-cr...@lists.debian.org
Usertags: cross-satisfiability
Control: affects -1 + src:libvirt

libvirt cannot be cross built from source, because its Build-Depends:
qemu-system-common now results in a conflict. The direct dependency asks
for the host architecture qemu-system-common and a Multi-Arch: foreign
qemu frontend also depends on qemu-system-common, which becomes a build
architecture dependency.

After some discussion on irc and clarifications about what's going on
in the first place, I see a few points here.

First, this is not about multi-arch really, but about our fake dependency
of qemu-system-common on one of qemu-system-FOO architectures. We never
thought that qemu-system-common can be used/installed by its own without
qemu itself.  We added this fake dependency (fake because qemu-system-common
does not actually depend on these other qemu-system-foo packages) in order
to ensure that qemu modules which were in -common for a few releases, are
of the right version - the same as the corresponding qemu-system-foo. The
thought was like, the modules can't be used by their own so at least one
qemu binary which can use these modules should be installed.

So for now, if we drop this dependency of qemu-system-common on qemu-system-foo,
this issue should go away.

Next, the question is why qemu-system-common is needed to BUILD libvirt.
This is because libvirt's build system finds the path of qemu-bridge-helper
(and uses default path which is not the one used on debian). Which immediately
leads to the next question: why libvirt uses qemu-bridge-helper in the first
place.

The thing is that on debian we still don't add set-uid bit to 
qemu-bridge-helper,
so this place in libvirt will never actually work. libvirt can manage network
by its own, or, if run unprivileged (is it ever possible?), it will try to
use qemu-bridge-helper, and that will fail too by default (unless the user
explicitly enabled set-uid bit for qemu-bridge-helper.

I looked at where qemu-bridge-helper is located on debian. It is 
/usr/lib/qemu/, -
which is not commonly used path, the default is /usr/libexec/. Now there's 3rd
question: what if we'll try to move this executable to the place where it is
installed to by default? How we can change libvirt? Adding versioning breaks/
requires seems to be the only way.

I think we should move qemu-bridge-helper to the default place, maybe even now
before bullseye, and drop qemu-system-common from libvirt's build-depends. At
the same time drop the fake versioned deps of qemu-system-common. And decide
when/how we should use the bridge-helper in the first place.

What do you think?

Thanks,

/mjt

Reply via email to