Bug 2022847

Summary: qemu-kvm: Align package split with Fedora
Product: Red Hat Enterprise Linux 9 Reporter: Andrea Bolognani <abologna>
Component: qemu-kvmAssignee: Miroslav Rezanina <mrezanin>
qemu-kvm sub component: General QA Contact: jingzhao <jinzhao>
Status: CLOSED ERRATA Docs Contact:
Severity: unspecified    
Priority: unspecified CC: coli, ddepaula, jinzhao, juzhang, mrezanin, virt-maint, yfu
Version: 9.0Keywords: Triaged
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qemu-kvm-6.2.0-6.el9 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-05-17 12:25:10 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Andrea Bolognani 2021-11-12 18:02:24 UTC
Looking at how the QEMU package is split into components in CentOS
Stream 9 and comparing it to Fedora 35, we can see that they are
quite a bit different.

  [cs9]# rpm -qa | grep ^qemu | sort -u
  qemu-img-6.1.0-3.el9.x86_64
  qemu-kvm-6.1.0-3.el9.x86_64
  qemu-kvm-audio-pa-6.1.0-3.el9.x86_64
  qemu-kvm-block-curl-6.1.0-3.el9.x86_64
  qemu-kvm-block-rbd-6.1.0-3.el9.x86_64
  qemu-kvm-block-ssh-6.1.0-3.el9.x86_64
  qemu-kvm-common-6.1.0-3.el9.x86_64
  qemu-kvm-core-6.1.0-3.el9.x86_64
  qemu-kvm-docs-6.1.0-3.el9.x86_64
  qemu-kvm-hw-usbredir-6.1.0-3.el9.x86_64
  qemu-kvm-tools-6.1.0-3.el9.x86_64
  qemu-kvm-ui-opengl-6.1.0-3.el9.x86_64
  qemu-pr-helper-6.1.0-3.el9.x86_64
  qemu-virtiofsd-6.1.0-6.el9.x86_64

  [f35]# rpm -qa | grep ^qemu | sort -u
  qemu-audio-alsa-6.1.0-10.fc35.x86_64
  qemu-audio-jack-6.1.0-10.fc35.x86_64
  qemu-audio-oss-6.1.0-10.fc35.x86_64
  qemu-audio-pa-6.1.0-10.fc35.x86_64
  qemu-audio-sdl-6.1.0-10.fc35.x86_64
  qemu-audio-spice-6.1.0-10.fc35.x86_64
  qemu-block-curl-6.1.0-10.fc35.x86_64
  qemu-block-dmg-6.1.0-10.fc35.x86_64
  qemu-block-gluster-6.1.0-10.fc35.x86_64
  qemu-block-iscsi-6.1.0-10.fc35.x86_64
  qemu-block-nfs-6.1.0-10.fc35.x86_64
  qemu-block-rbd-6.1.0-10.fc35.x86_64
  qemu-block-ssh-6.1.0-10.fc35.x86_64
  qemu-char-baum-6.1.0-10.fc35.x86_64
  qemu-char-spice-6.1.0-10.fc35.x86_64
  qemu-common-6.1.0-10.fc35.x86_64
  qemu-device-display-qxl-6.1.0-10.fc35.x86_64
  qemu-device-display-vhost-user-gpu-6.1.0-10.fc35.x86_64
  qemu-device-display-virtio-gpu-6.1.0-10.fc35.x86_64
  qemu-device-display-virtio-gpu-gl-6.1.0-10.fc35.x86_64
  qemu-device-display-virtio-gpu-pci-6.1.0-10.fc35.x86_64
  qemu-device-display-virtio-gpu-pci-gl-6.1.0-10.fc35.x86_64
  qemu-device-display-virtio-vga-6.1.0-10.fc35.x86_64
  qemu-device-display-virtio-vga-gl-6.1.0-10.fc35.x86_64
  qemu-device-usb-host-6.1.0-10.fc35.x86_64
  qemu-device-usb-redirect-6.1.0-10.fc35.x86_64
  qemu-device-usb-smartcard-6.1.0-10.fc35.x86_64
  qemu-kvm-6.1.0-10.fc35.x86_64
  qemu-pr-helper-6.1.0-10.fc35.x86_64
  qemu-system-x86-6.1.0-10.fc35.x86_64
  qemu-system-x86-core-6.1.0-10.fc35.x86_64
  qemu-ui-curses-6.1.0-10.fc35.x86_64
  qemu-ui-egl-headless-6.1.0-10.fc35.x86_64
  qemu-ui-gtk-6.1.0-10.fc35.x86_64
  qemu-ui-opengl-6.1.0-10.fc35.x86_64
  qemu-ui-sdl-6.1.0-10.fc35.x86_64
  qemu-ui-spice-app-6.1.0-10.fc35.x86_64
  qemu-ui-spice-core-6.1.0-10.fc35.x86_64

Of course most of the differences can be attributed to Fedora
enabling all possible QEMU features/devices while the CentOS Stream
build is more selective, but there are still a significant number
that don't fall into that category. Here are the ones that I've
spotted - there might be more.


usbredir

Contents are the same, but the subpackage name is completely
different.

  [cs9]# rpm -ql qemu-kvm-hw-usbredir | grep -v build-id
  /usr/lib64/qemu-kvm/hw-usb-redirect.so

  [f35]# rpm -ql qemu-device-usb-redirect | grep -v build-id
  /usr/lib64/qemu/hw-usb-redirect.so

OpenGL

In CentOS Stream, a single subpackage encompasses the contents of two
separate Fedora subpackages.

  [cs9]# rpm -ql qemu-kvm-ui-opengl | grep -v build-id
  /usr/lib64/qemu-kvm/ui-egl-headless.so
  /usr/lib64/qemu-kvm/ui-opengl.so

  [f35]# rpm -ql qemu-ui-opengl | grep -v build-id
  /usr/lib64/qemu/ui-opengl.so
  [f35]# rpm -ql qemu-ui-egl-headless | grep -v build-id
  /usr/lib64/qemu/ui-egl-headless.so

virtio-gpu

Fedora has four separate subpackages for the various variants of the
device, whereas CentOS Stream ships all of them as part of the -core
subpackage. Note that in Fedora the -core subpackage doesn't contain
any module.

  [cs9]# rpm -ql qemu-kvm-core | grep virtio-gpu
  /usr/lib64/qemu-kvm/hw-display-virtio-gpu-gl.so
  /usr/lib64/qemu-kvm/hw-display-virtio-gpu-pci-gl.so
  /usr/lib64/qemu-kvm/hw-display-virtio-gpu-pci.so
  /usr/lib64/qemu-kvm/hw-display-virtio-gpu.so

  [f35]# rpm -ql qemu-device-display-virtio-gpu | grep -v build-id
  /usr/lib64/qemu/hw-display-virtio-gpu.so
  [f35]# rpm -ql qemu-device-display-virtio-gpu-gl | grep -v build-id
  /usr/lib64/qemu/hw-display-virtio-gpu-gl.so
  [f35]# rpm -ql qemu-device-display-virtio-gpu-pci | grep -v build-id
  /usr/lib64/qemu/hw-display-virtio-gpu-pci.so
  [f35]# rpm -ql qemu-device-display-virtio-gpu-pci-gl | grep -v build-id
  /usr/lib64/qemu/hw-display-virtio-gpu-pci-gl.so

virtio-vga

Fedora has a subpackage for each variant of the device, and so does
CentOS Stream - in a sense. In CentOS Stream, one of the variants is
part of the -common subpackage and the other one of the -core
subpackage. Note that in Fedora neither the -common subpackage nor
the -core subpackage contain any modules.

  [cs9]# rpm -ql qemu-kvm-common | grep virtio-vga
  /usr/lib64/qemu-kvm/hw-display-virtio-vga.so
  [cs9]# rpm -ql qemu-kvm-core | grep virtio-vga
  /usr/lib64/qemu-kvm/hw-display-virtio-vga-gl.so

  [f35]# rpm -ql qemu-device-display-virtio-vga | grep -v build-id
  /usr/lib64/qemu/hw-display-virtio-vga.so
  [f35]# rpm -ql qemu-device-display-virtio-vga-gl | grep -v build-id
  /usr/lib64/qemu/hw-display-virtio-vga-gl.so

USB host

Fedora has a package for it, whereas CentOS Stream includes it in the
-core subpackage. Note that in Fedora the -core subpackage doesn't
contain any module.

  [cs9]# rpm -ql qemu-kvm-core | grep usb-host
  /usr/lib64/qemu-kvm/hw-usb-host.so

  [f35]# rpm -ql qemu-device-usb-host | grep -v build-id
  /usr/lib64/qemu/hw-usb-host.so

virtiofsd

This is the one instance in which CentOS Stream is ahead of Fedora:
while the former has a separate package for the daemon, the latter
includes it in the -common subpackage.

  [cs9]# rpm -ql qemu-virtiofsd | grep -v build-id
  /usr/libexec/virtiofsd
  /usr/share/man/man1/virtiofsd.1.gz
  /usr/share/qemu/vhost-user/50-qemu-virtiofsd.json

  [f35]# rpm -ql qemu-common | grep virtiofsd
  /usr/libexec/virtiofsd
  /usr/share/man/man1/virtiofsd.1.gz
  /usr/share/qemu/vhost-user/50-qemu-virtiofsd.json


I believe that these differences in packaging between Fedora and
CentOS Stream / RHEL constitute an annoyance to users and upstream
developers that want to target both, and that we should address them
before RHEL 9 hits GA.


Previous discussion: https://bugzilla.redhat.com/show_bug.cgi?id=1950405#c13

Comment 1 Andrea Bolognani 2022-01-03 17:54:38 UTC
Hi Danilo,

any updates on this?

I see the QEMU package in CentOS Stream 9 has been updated to 6.2.0
with

  https://gitlab.com/redhat/centos-stream/rpms/qemu-kvm/-/commit/037e637fa30d6650f9c990c860a070aa9c15edb4

so this seems like a great time to reorganize the subpackages.

Thanks!

Comment 2 Danilo de Paula 2022-01-10 05:38:59 UTC
Moving to Mirek, let's discuss this in our next meeting.

Comment 8 Yanan Fu 2022-02-07 06:51:36 UTC
QE bot(pre verify): Set 'Verified:Tested,SanityOnly' as gating/tier1 test pass.

Comment 14 errata-xmlrpc 2022-05-17 12:25:10 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (new packages: qemu-kvm), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2022:2307