# Whether to support Ceph rbd storage backend %bcond_without rbd Name: qemu Version: 8.2.0 Release: 1 Epoch: 11 Summary: QEMU is a generic and open source machine emulator and virtualizer License: GPLv2 and BSD and MIT and CC-BY-SA-4.0 URL: http://www.qemu.org Source0: https://download.qemu.org/%{name}-%{version}%{?rcstr}.tar.xz Source1: 80-kvm.rules Source2: 99-qemu-guest-agent.rules Source3: bridge.conf Source4: BinDir.tar.gz BuildRequires: flex BuildRequires: gcc BuildRequires: make BuildRequires: bison BuildRequires: texinfo BuildRequires: perl-podlators BuildRequires: chrpath BuildRequires: gettext BuildRequires: python-sphinx BuildRequires: ninja-build BuildRequires: zlib-devel BuildRequires: zstd-devel BuildRequires: gtk3-devel BuildRequires: gnutls-devel BuildRequires: numactl-devel BuildRequires: device-mapper-multipath-devel BuildRequires: rdma-core-devel BuildRequires: libcap-devel BuildRequires: libcap-ng-devel BuildRequires: cyrus-sasl-devel BuildRequires: libaio-devel BuildRequires: usbredir-devel >= 0.5.2 BuildRequires: libseccomp-devel >= 2.3.0 BuildRequires: systemd-devel BuildRequires: libiscsi-devel BuildRequires: snappy-devel BuildRequires: lzo-devel BuildRequires: ncurses-devel BuildRequires: libattr-devel BuildRequires: libcurl-devel BuildRequires: libjpeg-devel BuildRequires: libpng-devel BuildRequires: pixman-devel BuildRequires: libusbx-devel BuildRequires: bzip2-devel BuildRequires: libepoxy-devel BuildRequires: libtasn1-devel BuildRequires: libxml2-devel BuildRequires: libudev-devel BuildRequires: pam-devel BuildRequires: perl-Test-Harness BuildRequires: python3-devel %if %{with rbd} BuildRequires: librbd-devel %endif BuildRequires: krb5-devel BuildRequires: libssh-devel BuildRequires: glib2 BuildRequires: libfdt-devel BuildRequires: virglrenderer-devel BuildRequires: libslirp-devel BuildRequires: liburing-devel %ifarch loongarch64 BuildRequires: spice-server-devel %endif # for upgrade from qemu-kvm Provides: qemu-kvm Obsoletes: qemu-kvm < 11:8.2.0 Requires(post): /usr/bin/getent Requires(post): /usr/sbin/groupadd Requires(post): /usr/sbin/useradd Requires(post): systemd-units Requires(preun): systemd-units Requires(postun): systemd-units Requires(postun): qemu-block-iscsi Requires(postun): qemu-block-curl Requires(postun): qemu-hw-usb-host Requires: libgcc Requires: liburing %description QEMU is a FAST! processor emulator using dynamic translation to achieve good emulation speed. QEMU has two operating modes: Full system emulation. In this mode, QEMU emulates a full system (for example a PC), including one or several processors and various peripherals. It can be used to launch different Operating Systems without rebooting the PC or to debug system code. User mode emulation. In this mode, QEMU can launch processes compiled for one CPU on another CPU. It can be used to launch the Wine Windows API emulator (https://www.winehq.org) or to ease cross-compilation and cross-debugging. You can refer to https://www.qemu.org for more infortmation. %package guest-agent Summary: QEMU guest agent Requires(post): systemd-units Requires(preun): systemd-units Requires(postun): systemd-units %description guest-agent This package provides an agent to run inside guests, which communicates with the host over a virtio-serial channel named "org.qemu.guest_agent.0" Please refer to https://wiki.qemu.org/Features/GuestAgent for more information. %package help Summary: Documents for qemu Buildarch: noarch %description help This package provides documents for qemu related man help and information. %package img Summary: QEMU command line tool for manipulating disk images %description img This package provides a command line tool for manipulating disk images %if %{with rbd} %package block-rbd Summary: Qemu-block-rbd %description block-rbd This package provides RBD support for Qemu %endif %package block-ssh Summary: Qemu-block-ssh %description block-ssh This package provides block-ssh support for Qemu %package block-iscsi Summary: Qemu-block-iscsi %description block-iscsi This package provides block-iscsi support for Qemu %package block-curl Summary: Qemu-block-curl %description block-curl This package provides block-curl support for Qemu %package hw-usb-host Summary: Qemu-hw-usb-host %description hw-usb-host This package provides hw-usb-host support for Qemu %ifarch %{ix86} x86_64 %package seabios Summary: QEMU seabios %description seabios This package include bios-256k.bin and bios.bin of seabios %endif %package system-aarch64 Summary: Qemu-system-aarch64 Requires: qemu %description system-aarch64 This package provides the QEMU system emulator for AArch64. %package system-arm Summary: Qemu-system-arm Requires: qemu %description system-arm This package provides the QEMU system emulator for ARM. %package system-x86_64 Summary: Qemu-system-x86_64 Requires: qemu %description system-x86_64 This package provides the QEMU system emulator for x86_64. %package system-ppc64 Summary: Qemu-system-ppc64 Requires: qemu %description system-ppc64 This package provides the QEMU system emulator for ppc64le. %package system-riscv Summary: Qemu-system-riscv32, Qemu-system-riscv64 Requires: qemu %description system-riscv This package provides the QEMU system emulator for riscv. %package system-loongarch64 Summary: Qemu-system-loongarch64 Requires: qemu %description system-loongarch64 This package provides the QEMU system emulator for loongarch64. %prep %setup -q -n qemu-%{version}%{?rcstr} %autopatch -p1 %build %ifarch x86_64 buildarch="x86_64-softmmu" targetarch="aarch64-softmmu arm-softmmu riscv32-softmmu riscv64-softmmu" %endif %ifarch aarch64 buildarch="aarch64-softmmu" targetarch="x86_64-softmmu arm-softmmu riscv32-softmmu riscv64-softmmu" %endif %ifarch ppc64le buildarch="ppc64-softmmu" targetarch="x86_64-softmmu aarch64-softmmu arm-softmmu riscv32-softmmu riscv64-softmmu" %endif %ifarch loongarch64 buildarch="loongarch64-softmmu" targetarch="x86_64-softmmu aarch64-softmmu arm-softmmu riscv32-softmmu riscv64-softmmu" %endif %ifarch riscv64 buildarch="riscv64-softmmu" targetarch="x86_64-softmmu aarch64-softmmu arm-softmmu riscv32-softmmu" %endif buildldflags="VL_LDFLAGS=-Wl,--build-id" qemubuilddir="build" tar xf %{SOURCE4} cd BinDir/ \cp -r -a . ../ cd ../ ./configure \ --prefix=%{_prefix} \ --target-list="${buildarch} ${targetarch}" \ --extra-cflags="%{optflags} -fPIE -DPIE -fPIC -ftls-model=initial-exec" \ --extra-ldflags="-Wl,--build-id -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack" \ --datadir=%{_datadir} \ --docdir=%{_docdir}/ \ --libdir=%{_libdir} \ --libexecdir=%{_libexecdir} \ --localstatedir=%{_localstatedir} \ --sysconfdir=%{_sysconfdir} \ --interp-prefix=%{_prefix}/qemu-%%M \ --firmwarepath=%{_datadir}/%{name} \ --with-pkgversion=%{name}-%{version}-%{release} \ --python=/usr/bin/python3 \ --disable-slirp \ --enable-slirp-smbd \ --enable-gtk \ --enable-docs \ --enable-guest-agent \ --enable-pie \ --enable-numa \ --enable-mpath \ --disable-libnfs \ --disable-bzip2 \ --enable-kvm \ --enable-tcg \ --enable-rdma \ --enable-linux-aio \ --enable-linux-io-uring \ --enable-cap-ng \ --enable-vhost-user \ --enable-vhost-net \ --enable-vhost-kernel \ --enable-vhost-user-blk-server \ --enable-vhost-vdpa \ --enable-tpm \ --enable-modules \ --enable-libssh \ --enable-fdt \ --enable-virglrenderer \ --enable-cap-ng \ --enable-libusb \ %if %{with rbd} --enable-rbd \ %else --disable-rbd \ %endif --disable-dmg \ --disable-qcow1 \ --disable-vdi \ --disable-vvfat \ --disable-qed \ --disable-parallels \ --disable-capstone \ --disable-smartcard \ --enable-zstd \ --disable-brlapi \ --disable-plugins \ --enable-debug make %{?_smp_mflags} $buildldflags V=1 cp ${qemubuilddir}/${buildarch}/qemu-system-* qemu-kvm %install make %{?_smp_mflags} DESTDIR=%{buildroot} \ install %find_lang %{name} install -m 0755 qemu-kvm %{buildroot}%{_libexecdir}/ ln -s %{_libexecdir}/qemu-kvm %{buildroot}/%{_bindir}/qemu-kvm install -D -p -m 0644 contrib/systemd/qemu-pr-helper.service %{buildroot}%{_unitdir}/qemu-pr-helper.service install -D -p -m 0644 contrib/systemd/qemu-pr-helper.socket %{buildroot}%{_unitdir}/qemu-pr-helper.socket install -D -p -m 0644 qemu.sasl %{buildroot}%{_sysconfdir}/sasl2/qemu.conf install -D -m 0644 %{_sourcedir}/bridge.conf %{buildroot}%{_sysconfdir}/qemu/bridge.conf install -D -m 0644 %{_sourcedir}/80-kvm.rules %{buildroot}/usr/lib/udev/rules.d/80-kvm.rules # For qemu-guest-agent package %global _udevdir /lib/udev/rules.d install -D -p -m 0644 contrib/systemd/qemu-guest-agent.service %{buildroot}%{_unitdir}/qemu-guest-agent.service install -D -m 0644 %{_sourcedir}/99-qemu-guest-agent.rules %{buildroot}%{_udevdir}/99-qemu-guest-agent.rules mkdir -p %{buildroot}%{_localstatedir}/log touch %{buildroot}%{_localstatedir}/log/qga-fsfreeze-hook.log # For qemu docs package %global qemudocdir %{_docdir}/%{name} rm -rf %{buildroot}%{qemudocdir}/specs rm -rf %{buildroot}%{qemudocdir}/.buildinfo rm -rf %{buildroot}%{qemudocdir}/objects.inv rm -rf %{buildroot}%{qemudocdir}/genindex.html rm -rf %{buildroot}%{qemudocdir}/index.html install -D -p -m 0644 -t %{buildroot}%{qemudocdir} README.rst COPYING COPYING.LIB LICENSE chmod -x %{buildroot}%{_mandir}/man1/* rm -rf %{buildroot}%{_datadir}/%{name}/vgabios-ati.bin rm -rf %{buildroot}%{_datadir}/%{name}/bios-microvm.bin rm -rf %{buildroot}%{_datadir}/%{name}/openbios-* rm -rf %{buildroot}%{_datadir}/%{name}/QEMU,*.bin rm -rf %{buildroot}%{_datadir}/%{name}/bamboo.dtb rm -rf %{buildroot}%{_datadir}/%{name}/canyonlands.dtb rm -rf %{buildroot}%{_datadir}/%{name}/hppa-firmware.img rm -rf %{buildroot}%{_datadir}/%{name}/palcode-clipper rm -rf %{buildroot}%{_datadir}/%{name}/petalogix-* rm -rf %{buildroot}%{_datadir}/%{name}/qemu_vga.ndrv rm -rf %{buildroot}%{_datadir}/%{name}/s390-* %ifnarch ppc64le rm -rf %{buildroot}%{_datadir}/%{name}/slof.bin rm -rf %{buildroot}%{_datadir}/%{name}/skiboot.lid rm -rf %{buildroot}%{_datadir}/%{name}/spapr-* rm -rf %{buildroot}%{_datadir}/%{name}/ppc_* %endif rm -rf %{buildroot}%{_datadir}/%{name}/u-boot* rm -rf %{buildroot}%{_datadir}/%{name}/core3-hmcode rm -rf %{buildroot}%{_datadir}/%{name}/core3-reset rm -rf %{buildroot}%{_datadir}/%{name}/uefi-bios-sw rm -rf %{buildroot}%{_bindir}/ivshmem* rm -f %{buildroot}%{_datadir}/%{name}/edk2* rm -rf %{buildroot}%{_datadir}/%{name}/firmware rm -rf %{buildroot}%{_datadir}/%{name}/qemu-nsis.bmp rm -rf %{buildroot}%{_libdir}/%{name}/audio-pa.so rm -rf %{buildroot}%{_libdir}/%{name}/block-gluster.so rm -rf %{buildroot}%{_libdir}/%{name}/ui-sdl.so rm -rf %{buildroot}%{_libdir}/%{name}/chardev-baum.so %ifnarch loongarch64 rm -rf %{buildroot}%{_libdir}/%{name}/audio-oss.so rm -rf %{buildroot}%{_libdir}/%{name}/audio-spice.so rm -rf %{buildroot}%{_libdir}/%{name}/ui-curses.so rm -rf %{buildroot}%{_libdir}/%{name}/ui-gtk.so rm -rf %{buildroot}%{_libdir}/%{name}/chardev-spice.so rm -rf %{buildroot}%{_libdir}/%{name}/hw-display-qxl.so rm -rf %{buildroot}%{_libdir}/%{name}/hw-s390x-virtio-gpu-ccw.so rm -rf %{buildroot}%{_libdir}/%{name}/hw-usb-redirect.so rm -rf %{buildroot}%{_libdir}/%{name}/ui-opengl.so rm -rf %{buildroot}%{_libdir}/%{name}/ui-spice-app.so rm -rf %{buildroot}%{_libdir}/%{name}/ui-spice-core.so %endif rm -rf %{buildroot}%{_libexecdir}/vhost-user-gpu rm -rf %{buildroot}%{_datadir}/%{name}/vhost-user/50-qemu-gpu.json %ifarch ppc64le %endif %if %{with rbd} strip %{buildroot}%{_libdir}/%{name}/block-rbd.so %endif strip %{buildroot}%{_libdir}/%{name}/block-iscsi.so strip %{buildroot}%{_libdir}/%{name}/block-curl.so strip %{buildroot}%{_libdir}/%{name}/block-ssh.so strip %{buildroot}%{_libdir}/%{name}/hw-usb-host.so for f in %{buildroot}%{_bindir}/* %{buildroot}%{_libdir}/* \ %{buildroot}%{_libexecdir}/*; do if file $f | grep -q ELF | grep -q -i shared; then chrpath --delete $f; fi done %check echo "#define CONFIG_DISABLE_QEMU_LOG" >> build/config-host.h make %{?_smp_mflags} $buildldflags V=1 make check V=1 %{?_smp_mflags} %pre getent group kvm >/dev/null || groupadd -g 36 -r kvm getent group qemu >/dev/null || groupadd -g 107 -r qemu getent passwd qemu >/dev/null || \ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ -c "qemu user" qemu %post guest-agent %systemd_post qemu-guest-agent.service %preun guest-agent %systemd_preun qemu-guest-agent.service %postun guest-agent %systemd_postun_with_restart qemu-guest-agent.service %files -f %{name}.lang %dir %{_datadir}/%{name}/ %{_libexecdir}/qemu-kvm %{_bindir}/qemu-kvm %{_libdir}/%{name}/accel-qtest-*.so %ifarch x86_64 %{_libdir}/%{name}/accel-tcg-*.so %{_libdir}/%{name}/hw-display-virtio-vga-gl.so %{_libdir}/%{name}/hw-display-virtio-vga.so %endif %{_libdir}/%{name}/hw-display-virtio-gpu-gl.so %{_libdir}/%{name}/hw-display-virtio-gpu-pci-gl.so %{_libdir}/%{name}/hw-display-virtio-gpu-pci.so %{_libdir}/%{name}/hw-display-virtio-gpu.so %{_libdir}/%{name}/audio-dbus.so %{_libdir}/%{name}/ui-dbus.so %{_libdir}/%{name}/ui-egl-headless.so %{_docdir}/%{name}/dbus-dbusindex.html %{_datadir}/%{name}/vof-nvram.bin %{_datadir}/%{name}/vof.bin %{_datadir}/%{name}/efi-virtio.rom %{_datadir}/%{name}/efi-e1000.rom %{_datadir}/%{name}/efi-e1000e.rom %{_datadir}/%{name}/efi-rtl8139.rom %{_datadir}/%{name}/efi-pcnet.rom %{_datadir}/%{name}/efi-ne2k_pci.rom %{_datadir}/%{name}/efi-eepro100.rom %{_datadir}/%{name}/efi-vmxnet3.rom %{_datadir}/%{name}/pxe-virtio.rom %{_datadir}/%{name}/pxe-e1000.rom %{_datadir}/%{name}/pxe-ne2k_pci.rom %{_datadir}/%{name}/pxe-pcnet.rom %{_datadir}/%{name}/pxe-rtl8139.rom %{_datadir}/%{name}/pxe-eepro100.rom %{_datadir}/%{name}/qboot.rom %{_datadir}/%{name}/trace-events-all %{_datadir}/applications/qemu.desktop %{_datadir}/icons/hicolor/*/apps/* %{_datadir}/%{name}/keymaps/ %{_bindir}/elf2dmp %{_bindir}/qemu-edid %{_bindir}/qemu-keymap %{_bindir}/qemu-pr-helper %{_libexecdir}/virtfs-proxy-helper %{_unitdir}/qemu-pr-helper.service %{_unitdir}/qemu-pr-helper.socket %attr(4755, root, root) %{_libexecdir}/qemu-bridge-helper %config(noreplace) %{_sysconfdir}/sasl2/qemu.conf %dir %{_sysconfdir}/qemu %config(noreplace) %{_sysconfdir}/qemu/bridge.conf /usr/lib/udev/rules.d/80-kvm.rules %doc %{qemudocdir}/COPYING %doc %{qemudocdir}/COPYING.LIB %doc %{qemudocdir}/LICENSE %ifarch x86_64 %{_datadir}/%{name}/bios.bin %{_datadir}/%{name}/bios-256k.bin %{_datadir}/%{name}/vgabios.bin %{_datadir}/%{name}/vgabios-cirrus.bin %{_datadir}/%{name}/vgabios-qxl.bin %{_datadir}/%{name}/vgabios-stdvga.bin %{_datadir}/%{name}/vgabios-vmware.bin %{_datadir}/%{name}/vgabios-virtio.bin %{_datadir}/%{name}/vgabios-ramfb.bin %{_datadir}/%{name}/vgabios-bochs-display.bin %{_datadir}/%{name}/linuxboot.bin %{_datadir}/%{name}/linuxboot_dma.bin %{_datadir}/%{name}/pvh.bin %{_datadir}/%{name}/multiboot.bin %{_datadir}/%{name}/multiboot_dma.bin %{_datadir}/%{name}/kvmvapic.bin %endif %files system-aarch64 %{_bindir}/qemu-system-aarch64 %files system-arm %{_bindir}/qemu-system-arm %{_datadir}/%{name}/npcm7xx_bootrom.bin %files system-x86_64 %{_bindir}/qemu-system-x86_64 %ifnarch x86_64 %{_libdir}/%{name}/accel-tcg-*.so %{_libdir}/%{name}/hw-display-virtio-vga-gl.so %{_libdir}/%{name}/hw-display-virtio-vga.so %{_datadir}/%{name}/bios.bin %{_datadir}/%{name}/bios-256k.bin %{_datadir}/%{name}/vgabios.bin %{_datadir}/%{name}/vgabios-cirrus.bin %{_datadir}/%{name}/vgabios-qxl.bin %{_datadir}/%{name}/vgabios-stdvga.bin %{_datadir}/%{name}/vgabios-vmware.bin %{_datadir}/%{name}/vgabios-virtio.bin %{_datadir}/%{name}/vgabios-ramfb.bin %{_datadir}/%{name}/vgabios-bochs-display.bin %{_datadir}/%{name}/linuxboot.bin %{_datadir}/%{name}/linuxboot_dma.bin %{_datadir}/%{name}/pvh.bin %{_datadir}/%{name}/multiboot.bin %{_datadir}/%{name}/multiboot_dma.bin %{_datadir}/%{name}/kvmvapic.bin %endif %ifarch ppc64le %files system-ppc64 %{_bindir}/qemu-system-ppc64 %{_datadir}/%{name}/slof.bin %{_datadir}/%{name}/skiboot.lid %endif %files system-riscv %{_bindir}/qemu-system-riscv32 %{_bindir}/qemu-system-riscv64 %{_datadir}/%{name}/opensbi-riscv32-generic-fw_dynamic.* %{_datadir}/%{name}/opensbi-riscv64-generic-fw_dynamic.* %ifnarch ppc64le %endif %ifarch loongarch64 %files system-loongarch64 %{_bindir}/qemu-system-loongarch64 %{_libdir}/%{name}/audio-oss.so %{_libdir}/%{name}/ui-curses.so %{_libdir}/%{name}/ui-gtk.so %{_libdir}/%{name}/audio-spice.so %{_libdir}/%{name}/chardev-spice.so %{_libdir}/%{name}/hw-display-qxl.so %{_libdir}/%{name}/hw-s390x-virtio-gpu-ccw.so %{_libdir}/%{name}/hw-usb-redirect.so %{_libdir}/%{name}/ui-opengl.so %{_libdir}/%{name}/ui-spice-app.so %{_libdir}/%{name}/ui-spice-core.so %endif %ifnarch loongarch64 %endif %files help %dir %{qemudocdir} %doc %{qemudocdir}/about %doc %{qemudocdir}/devel %doc %{qemudocdir}/interop %doc %{qemudocdir}/search* %doc %{qemudocdir}/_static %doc %{qemudocdir}/system %doc %{qemudocdir}/tools %doc %{qemudocdir}/user %doc %{qemudocdir}/README.rst %{_mandir}/man1/qemu.1* %{_mandir}/man1/qemu-img.1* %{_mandir}/man1/qemu-storage-daemon.1* %{_mandir}/man1/virtfs-proxy-helper.1* %{_mandir}/man7/qemu-block-drivers.7* %{_mandir}/man7/qemu-cpu-models.7* %{_mandir}/man7/qemu-ga-ref.7* %{_mandir}/man7/qemu-qmp-ref.7* %{_mandir}/man7/qemu-storage-daemon-qmp-ref.7* %{_mandir}/man8/qemu-ga.8* %{_mandir}/man8/qemu-nbd.8* %{_mandir}/man8/qemu-pr-helper.8* %files guest-agent %defattr(-,root,root,-) %{_bindir}/qemu-ga %{_unitdir}/qemu-guest-agent.service %{_udevdir}/99-qemu-guest-agent.rules %ghost %{_localstatedir}/log/qga-fsfreeze-hook.log %files img %{_bindir}/qemu-img %{_bindir}/qemu-io %{_bindir}/qemu-nbd %{_bindir}/qemu-storage-daemon %if %{with rbd} %files block-rbd %{_libdir}/%{name}/block-rbd.so %endif %files block-ssh %{_libdir}/%{name}/block-ssh.so %files block-iscsi %{_libdir}/%{name}/block-iscsi.so %files block-curl %{_libdir}/%{name}/block-curl.so %files hw-usb-host %{_libdir}/%{name}/hw-usb-host.so %ifarch %{ix86} x86_64 %files seabios %{_datadir}/%{name}/bios-256k.bin %{_datadir}/%{name}/bios.bin %endif %changelog * Thu Feb 29 2024 Tao Yang - 11:8.2.0-1 - Package init