Bug 2022848

Summary: qemu-kvm: Align package split with Fedora
Product: Red Hat Enterprise Linux 8 Reporter: Andrea Bolognani <abologna>
Component: qemu-kvmAssignee: Miroslav Rezanina <mrezanin>
qemu-kvm sub component: General QA Contact: jingzhao <jinzhao>
Status: CLOSED NOTABUG Docs Contact:
Severity: unspecified    
Priority: unspecified CC: coli, ddepaula, juzhang, virt-maint, yfu
Version: 8.5   
Target Milestone: rc   
Target Release: 8.6   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-01-24 14:07:28 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:04:00 UTC
Looking at how the QEMU package is split into components in RHEL AV
and comparing it to Fedora 35[1], we can see that they are quite a
bit different.

  [cs8]# rpm -qa | grep ^qemu | sort -u
  qemu-img-6.0.0-33.el8s.x86_64
  qemu-kvm-6.0.0-33.el8s.x86_64
  qemu-kvm-block-curl-6.0.0-33.el8s.x86_64
  qemu-kvm-block-gluster-6.0.0-33.el8s.x86_64
  qemu-kvm-block-iscsi-6.0.0-33.el8s.x86_64
  qemu-kvm-block-rbd-6.0.0-33.el8s.x86_64
  qemu-kvm-block-ssh-6.0.0-33.el8s.x86_64
  qemu-kvm-common-6.0.0-33.el8s.x86_64
  qemu-kvm-core-6.0.0-33.el8s.x86_64
  qemu-kvm-docs-6.0.0-33.el8s.x86_64
  qemu-kvm-hw-usbredir-6.0.0-33.el8s.x86_64
  qemu-kvm-ui-opengl-6.0.0-33.el8s.x86_64
  qemu-kvm-ui-spice-6.0.0-33.el8s.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 RHEL 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.

  [cs8]# 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 RHEL, a single subpackage encompasses the contents of two separate
Fedora subpackages.

  [cs8]# 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

SPICE

Same as OpenGL, but this time the ratio is 1:5.

  [cs8]# rpm -ql qemu-kvm-ui-spice | grep -v build-id
  /usr/lib64/qemu-kvm/audio-spice.so
  /usr/lib64/qemu-kvm/chardev-spice.so
  /usr/lib64/qemu-kvm/hw-display-qxl.so
  /usr/lib64/qemu-kvm/hw-usb-smartcard.so
  /usr/lib64/qemu-kvm/ui-spice-core.so

  [f35]# rpm -ql qemu-audio-spice | grep -v build-id
  /usr/lib64/qemu/audio-spice.so
  [f35]# rpm -ql qemu-char-spice | grep -v build-id
  /usr/lib64/qemu/chardev-spice.so
  [f35]# rpm -ql qemu-device-display-qxl | grep -v build-id
  /usr/lib64/qemu/hw-display-qxl.so
  [f35]# rpm -ql qemu-device-usb-smartcard | grep -v build-id
  /usr/lib64/qemu/hw-usb-smartcard.so
  [f35]# rpm -ql qemu-ui-spice-core | grep -v build-id
  /usr/lib64/qemu/ui-spice-core.so

virtio-gpu

Fedora has two separate subpackages for the PCI and non-PCI parts,
whereas RHEL ships both of them as part of the -core subpackage.
Note that in Fedora the -core subpackage doesn't contain any module.

  [cs8]# rpm -ql qemu-kvm-core | grep -v build-id | grep lib64
  /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-pci | grep -v build-id
  /usr/lib64/qemu/hw-display-virtio-gpu-pci.so

virtio-vga

Fedora has a package for it, whereas RHEL ships it as part of the
-common subpackage. Note that in Fedora the -common subpackage
doesn't contain any module.

  [cs8]# rpm -ql qemu-kvm-common | grep -v build-id | grep lib64
  /usr/lib64/qemu-kvm/hw-display-virtio-vga.so

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

pr-helper

Fedora has a package for it, whereas RHEL ships it as part of the
-common subpackage.

  [cs8]# rpm -ql qemu-kvm-common | grep pr-helper
  /usr/bin/qemu-pr-helper
  /usr/lib/systemd/system/qemu-pr-helper.service
  /usr/lib/systemd/system/qemu-pr-helper.socket
  /usr/share/man/man8/qemu-pr-helper.8.gz

  [f35]# rpm -ql qemu-pr-helper | grep -v build-id
  /usr/bin/qemu-pr-helper
  /usr/lib/systemd/system/qemu-pr-helper.service
  /usr/lib/systemd/system/qemu-pr-helper.socket
  /usr/share/man/man8/qemu-pr-helper.8.gz


I believe that these differences in packaging between Fedora and RHEL
constitute an annoyance to users and upstream developers that want to
target both, and that we should address them in RHEL AV 8.6.


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


[1] I've actually used CentOS Stream 8 with the Advanced
    Virtualization repo enabled for convenience, but the split should
    be the same in RHEL AV.

Comment 1 Andrea Bolognani 2021-12-09 08:58:59 UTC
Danilo, any updates on this and Bug 2022848? We should make sure we
don't miss the 9.0 / 8.6 boat. I guess right after the upcoming 8.2
rebase would be a great time to start seriously looking into it.

Thanks in advance! :)

Comment 2 Andrea Bolognani 2021-12-09 09:00:22 UTC
(In reply to Andrea Bolognani from comment #1)
> Danilo, any updates on this and Bug 2022848?

I meant to post this in Bug 2022847 but got the wrong tab. Oh well.

Comment 3 Danilo de Paula 2022-01-10 05:42:51 UTC
Mirek: would you mind taking a look into this one with the 9.0 as well?

Comment 4 Miroslav Rezanina 2022-01-24 14:07:28 UTC
After discussion we decided to not change layout in RHEL 8.