Drop QEMU 32-bit Host Builds
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: Daniel Berrangé
- Email: berrange@redhat.com
Current status
- Targeted release: Fedora Linux 44
- Last updated: 2025-12-02
- Announced
- Discussion thread
- FESCo issue: #3514
- Tracker bug: #2418381
- Release notes tracker: #281
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 (https://www.qemu.org/docs/master/about/deprecated.html) 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
- Q. Will emulation of 32-bit targets remain ? A. Yes, remaining 64-bit build platforms will continue to support the full suite of emulation targets for machines & applications, both 32-bit and 64-bit.
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" ✅ (see list of "Dependencies" below)
- Add 'ExcludeArch: i686' to QEMU (https://src.fedoraproject.org/rpms/qemu/pull-request/94) ✅
Other developers
- Merge any PRs submitted to their packages which depend on QEMU in i686 build roots. ✅ (except libvirt-sandbox)
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:
- condor - https://src.fedoraproject.org/rpms/condor/pull-request/5 ✅
- fence-agents - https://src.fedoraproject.org/rpms/fence-agents/pull-request/7 ✅
- genimage - https://src.fedoraproject.org/rpms/genimage/pull-request/1 ✅
- gnome-boxes - https://src.fedoraproject.org/rpms/gnome-boxes/pull-request/18 ✅
- kiwi - https://src.fedoraproject.org/rpms/kiwi/pull-request/12 ✅
- lorax - https://src.fedoraproject.org/rpms/lorax/pull-request/15 ✅
- libvirt - libvirt-daemon-driver-qemu & libvirt-daemon-qemu sub-RPMs disabled in 11.10.0 rebase ✅
- libvirt-sandbox - https://src.fedoraproject.org/rpms/libvirt-sandbox/pull-request/2 ❌ non-responsive maintainer; will have broken deps if attempted to be installed in an i686 build root.
- livecd-tools - https://src.fedoraproject.org/rpms/livecd-tools/pull-request/5 ✅
- nbdkit - https://src.fedoraproject.org/rpms/nbdkit/pull-request/10 ✅
- rubygem-ruby-libvirt - https://src.fedoraproject.org/rpms/rubygem-ruby-libvirt/pull-request/4 ✅
- vhostmd - https://src.fedoraproject.org/rpms/vhostmd/pull-request/5 ✅
Contingency Plan
- Contingency mechanism: Either hold back QEMU version, or drop i686 in QEMU and allow unfixed packages to FTBFS.
- Contingency deadline: Beta freeze
- Blocks release? No
Documentation
This change proposal is sufficient documentation for the removal of i686 builds.
Release Notes
i686 builds of QEMU are no longer available.
