DropQEMU32bitHostBuilds
This is a proposed Change for Fedora Linux.
This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee.
Summary
The QEMU upstream project deprecated support for 32-bit host builds and will start removing this in a near-term forthcoming release. It is not practical for Fedora to re-enable 32-bit support over the long term, as QEMUâs intent with dropping 32-bit support code is to enable code to be changed to assume 64-bit atomic ops in all builds.
Fedora will thus stop building the QEMU package on the i686 architecture.
Owner
- Name: [[User:berrange| Daniel Berrangé]]
- Email: berrange@redhat.com
Detailed Description
The QEMU upstream project deprecated support for 32-bit host builds for system emulator binaries in its 8.0.0 release (April 2023), and subsequently deprecated all support for 32-bit host builds in its 10.0.0 release (April 2025).
The QEMU deprecation policy (Deprecated features â QEMU documentation) requires the deprecation notice to be present for a minimum of 2 release before the feature is removed. It is thus possible that some aspects of 32-bit host support will be removed in 10.2.0 (Dec 2025) with full removal likely in 11.0.0 (April 2026).
It will not be practical for Fedora to re-enable support for 32-bit builds with downstream patches, as QEMU intends to change its code to assume the support of 64-bit atomic ops.
Fedora thus has to discontinue builds of QEMU on the i686 architecture, and any packages which rely on QEMU provided binaries need to ensure they exclude the i686 architecture.
Aside from upstream support, Fedora maintainers continue to expend (waste) effort debugging koji build problems on i686 for binaries that will never be present on any end user installation of Fedora, since QEMU has no multilib components. The only place where the i686 binaries may get used is in koji build roots for i686 builds via build dependencies.
=== Removed RPMs on i686 ===
- qemu
- qemu-audio-alsa
- qemu-audio-dbus
- qemu-audio-jack
- qemu-audio-oss
- qemu-audio-pa
- qemu-audio-pipewire
- qemu-audio-sdl
- qemu-audio-spice
- qemu-block-blkio
- qemu-block-curl
- qemu-block-dmg
- qemu-block-gluster
- qemu-block-iscsi
- qemu-block-nfs
- qemu-block-rbd
- qemu-block-ssh
- qemu-char-baum
- qemu-char-spice
- qemu-common
- qemu-device-display-qxl
- qemu-device-display-vhost-user-gpu
- qemu-device-display-virtio-gpu
- qemu-device-display-virtio-gpu-ccw
- qemu-device-display-virtio-gpu-gl
- qemu-device-display-virtio-gpu-pci
- qemu-device-display-virtio-gpu-pci-gl
- qemu-device-display-virtio-gpu-pci-rutabaga
- qemu-device-display-virtio-gpu-rutabaga
- qemu-device-display-virtio-vga
- qemu-device-display-virtio-vga-gl
- qemu-device-display-virtio-vga-rutabaga
- qemu-device-uefi-vars
- qemu-device-usb-host
- qemu-device-usb-redirect
- qemu-device-usb-smartcard
- qemu-docs
- qemu-guest-agent
- qemu-img
- qemu-kvm
- qemu-kvm-core
- qemu-pr-helper
- qemu-rdp
- qemu-sanity-check
- qemu-sanity-check-nodeps
- qemu-system-aarch64
- qemu-system-aarch64-core
- qemu-system-alpha
- qemu-system-alpha-core
- qemu-system-arm
- qemu-system-arm-core
- qemu-system-avr
- qemu-system-avr-core
- qemu-system-hppa
- qemu-system-hppa-core
- qemu-system-loongarch64
- qemu-system-loongarch64-core
- qemu-system-m68k
- qemu-system-m68k-core
- qemu-system-microblaze
- qemu-system-microblaze-core
- qemu-system-mips
- qemu-system-mips-core
- qemu-system-or1k
- qemu-system-or1k-core
- qemu-system-ppc
- qemu-system-ppc-core
- qemu-system-riscv
- qemu-system-riscv-core
- qemu-system-rx
- qemu-system-rx-core
- qemu-system-s390x
- qemu-system-s390x-core
- qemu-system-sh4
- qemu-system-sh4-core
- qemu-system-sparc
- qemu-system-sparc-core
- qemu-system-tricore
- qemu-system-tricore-core
- qemu-system-x86
- qemu-system-x86-core
- qemu-system-xtensa
- qemu-system-xtensa-core
- qemu-tests
- qemu-tools
- qemu-ui-curses
- qemu-ui-dbus
- qemu-ui-egl-headless
- qemu-ui-gtk
- qemu-ui-opengl
- qemu-ui-sdl
- qemu-ui-spice-app
- qemu-ui-spice-core
- qemu-user
- qemu-user-binfmt
- qemu-user-static
- qemu-user-static-aarch64
- qemu-user-static-alpha
- qemu-user-static-arm
- qemu-user-static-hexagon
- qemu-user-static-hppa
- qemu-user-static-loongarch64
- qemu-user-static-m68k
- qemu-user-static-microblaze
- qemu-user-static-mips
- qemu-user-static-or1k
- qemu-user-static-ppc
- qemu-user-static-riscv
- qemu-user-static-s390x
- qemu-user-static-sh4
- qemu-user-static-sparc
- qemu-user-static-x86
- qemu-user-static-xtensa
- libvirt-daemon-qemu
- libvirt-daemon-driver-qemu
=== Removed binaries on i686 === - /usr/bin/qemu-aarch64
- /usr/bin/qemu-aarch64_be
- /usr/bin/qemu-aarch64_be-static
- /usr/bin/qemu-aarch64-static
- /usr/bin/qemu-alpha
- /usr/bin/qemu-alpha-static
- /usr/bin/qemu-arm
- /usr/bin/qemu-armeb
- /usr/bin/qemu-armeb-static
- /usr/bin/qemu-arm-static
- /usr/bin/qemu-edid
- /usr/bin/qemu-ga
- /usr/bin/qemu-hexagon
- /usr/bin/qemu-hexagon-static
- /usr/bin/qemu-hppa
- /usr/bin/qemu-hppa-static
- /usr/bin/qemu-i386
- /usr/bin/qemu-i386-static
- /usr/bin/qemu-img
- /usr/bin/qemu-io
- /usr/bin/qemu-keymap
- /usr/bin/qemu-kvm
- /usr/bin/qemu-loongarch64
- /usr/bin/qemu-loongarch64-static
- /usr/bin/qemu-m68k
- /usr/bin/qemu-m68k-static
- /usr/bin/qemu-microblaze
- /usr/bin/qemu-microblazeel
- /usr/bin/qemu-microblazeel-static
- /usr/bin/qemu-microblaze-static
- /usr/bin/qemu-mips
- /usr/bin/qemu-mips64
- /usr/bin/qemu-mips64el
- /usr/bin/qemu-mips64el-static
- /usr/bin/qemu-mips64-static
- /usr/bin/qemu-mipsel
- /usr/bin/qemu-mipsel-static
- /usr/bin/qemu-mipsn32
- /usr/bin/qemu-mipsn32el
- /usr/bin/qemu-mipsn32el-static
- /usr/bin/qemu-mipsn32-static
- /usr/bin/qemu-mips-static
- /usr/bin/qemu-nbd
- /usr/bin/qemu-or1k
- /usr/bin/qemu-or1k-static
- /usr/bin/qemu-ppc
- /usr/bin/qemu-ppc64
- /usr/bin/qemu-ppc64le
- /usr/bin/qemu-ppc64le-static
- /usr/bin/qemu-ppc64-static
- /usr/bin/qemu-ppc-static
- /usr/bin/qemu-pr-helper
- /usr/bin/qemu-rdp
- /usr/bin/qemu-riscv32
- /usr/bin/qemu-riscv32-static
- /usr/bin/qemu-riscv64
- /usr/bin/qemu-riscv64-static
- /usr/bin/qemu-s390x
- /usr/bin/qemu-s390x-static
- /usr/bin/qemu-sanity-check
- /usr/bin/qemu-sh4
- /usr/bin/qemu-sh4eb
- /usr/bin/qemu-sh4eb-static
- /usr/bin/qemu-sh4-static
- /usr/bin/qemu-sparc
- /usr/bin/qemu-sparc32plus
- /usr/bin/qemu-sparc32plus-static
- /usr/bin/qemu-sparc64
- /usr/bin/qemu-sparc64-static
- /usr/bin/qemu-sparc-static
- /usr/bin/qemu-storage-daemon
- /usr/bin/qemu-system-aarch64
- /usr/bin/qemu-system-alpha
- /usr/bin/qemu-system-arm
- /usr/bin/qemu-system-avr
- /usr/bin/qemu-system-hppa
- /usr/bin/qemu-system-i386
- /usr/bin/qemu-system-loongarch64
- /usr/bin/qemu-system-m68k
- /usr/bin/qemu-system-microblaze
- /usr/bin/qemu-system-microblazeel
- /usr/bin/qemu-system-mips
- /usr/bin/qemu-system-mips64
- /usr/bin/qemu-system-mips64el
- /usr/bin/qemu-system-mipsel
- /usr/bin/qemu-system-or1k
- /usr/bin/qemu-system-ppc
- /usr/bin/qemu-system-ppc64
- /usr/bin/qemu-system-riscv32
- /usr/bin/qemu-system-riscv64
- /usr/bin/qemu-system-rx
- /usr/bin/qemu-system-s390x
- /usr/bin/qemu-system-sh4
- /usr/bin/qemu-system-sh4eb
- /usr/bin/qemu-system-sparc
- /usr/bin/qemu-system-sparc64
- /usr/bin/qemu-system-tricore
- /usr/bin/qemu-system-x86_64
- /usr/bin/qemu-system-x86_64.rpm
- /usr/bin/qemu-system-xtensa
- /usr/bin/qemu-system-xtensaeb
- /usr/bin/qemu-trace-stap
- /usr/bin/qemu-vmsr-helper
- /usr/bin/qemu-x86_64
- /usr/bin/qemu-x86_64-static
- /usr/bin/qemu-xtensa
- /usr/bin/qemu-xtensaeb
- /usr/bin/qemu-xtensaeb-static
- /usr/bin/qemu-xtensa-static
Feedback
TBD
Benefit to Fedora
Fedora QEMU maintainers no longer have to waste effort debugging periodic failures on i686 builds, which are never installed by Fedora users.
Fedora QEMU maintainers will not have to hold QEMU back on an outdated upstream release to retain i686 support. Such an outdated release will accumulate CVEs and miss out on new features.
Scope
=== Proposal owners ===
- Submit PRs to any Fedora RPMs that pull in QEMU packages in i686 build roots to âExcludeArch: i686â
- Add âExcludeArch: i686â to QEMU
=== Other developers === - Merge any PRs submitted to their packages which depend on QEMU in i686 build roots. (Most are already merged)
=== Release engineering ===
N/A
=== Policies and guidelines ===
N/A
=== Trademark approval===
N/A
=== Alignment with the Fedora Strategy ===
N/A
Upgrade/compatibility impact
Fedora already dropped i686 as an installable architecture many releases ago. i686 packages are only consumed in multilib context, and QEMU does not have any binaries that are relevant to multilib. Thus there should be no impact on end user deployments of Fedora from dropping of i686 builds for QEMU.
Downstream maintainers who consume Fedora content (eg Copr, RPM Fusion) who rely on i686 QEMU builds as dependencies in a build root will have to add ExcludeArch: i686 to any affected RPM spec files.
Early Testing (Optional)
leafdrop is used to identify all packages which need adapting before QEMU is made to ExcludeArch. Final validation will be a lack of any new FTBFS after QEMU excludes i686.
How To Test
- Observe that there are no i686 packages of QEMU in the koji builds in rawhide after the exclusion of i686.
- Observe that there are no newly discovered FTBFS issue reported after the exclusion of QEMU on i686.
User Experience
i686 is not a deployment architecture for Fedora any more so no deployment experience changes.
Developers relying on QEMU in i686 build roots will have to add ExcludeArch.
Dependencies
Most dependencies which pull QEMU into i686 build roots have already had an âExcludeArch: i686â added. Currently identified remaining deps on QEMU (direct & indirect) are:
- appliance-tools - [PR blocked pending acceptance of livecd-tools PR]
- condor - Making sure you're not a bot!
- fence-agents - Making sure you're not a bot!
- genimage - Making sure you're not a bot!
- gnome-boxes - Making sure you're not a bot!
- kiwi - Making sure you're not a bot!
- libvirt - libvirt-daemon-driver-qemu & libvirt-daemon-qemu sub-RPMs to be disabled
- libvirt-sandbox - Making sure you're not a bot!
- livecd-tools - Making sure you're not a bot!
- nbdkit - Making sure you're not a bot!
- rubygem-ruby-libvirt - Making sure you're not a bot!
- vhostmd - Making sure you're not a bot!
Contingency Plan
Documentation
This change proposal is sufficient documentation for the removal of i686 builds.
Release Notes
\ni686 builds of QEMU are no longer available.
Last edited by @alking 2025-11-13T14:31:38Z
Last edited by @alking 2025-11-13T14:31:38Z