diff options
-rw-r--r-- | 65-kvm.rules | 1 | ||||
-rw-r--r-- | 99-qemu-guest-agent.rules | 1 | ||||
-rw-r--r-- | PKGBUILD | 1237 | ||||
-rw-r--r-- | bridge.conf | 1 | ||||
-rw-r--r-- | build-most-modules-statically-hack.diff | 40 | ||||
-rw-r--r-- | keys/pgp/CEACC9E15534EBABB82D3FA03353C9CEF108B584.asc | 52 | ||||
-rw-r--r-- | qemu-8.1.1-static_regression.patch | 13 | ||||
-rw-r--r-- | qemu-9.2.0-struct_sched_attr.patch | 50 | ||||
-rw-r--r-- | qemu-9.2.2-libnfs6.patch | 113 | ||||
-rw-r--r-- | qemu-common.install | 14 | ||||
-rw-r--r-- | qemu-ga.conf | 10 | ||||
-rw-r--r-- | qemu-guest-agent.install | 9 | ||||
-rw-r--r-- | qemu-sysusers.conf | 2 |
13 files changed, 1543 insertions, 0 deletions
diff --git a/65-kvm.rules b/65-kvm.rules new file mode 100644 index 000000000000..fbb0ebb69c9e --- /dev/null +++ b/65-kvm.rules @@ -0,0 +1 @@ +KERNEL=="vhost-net", GROUP="kvm", MODE="0660", TAG+="uaccess", OPTIONS+="static_node=vhost-net" diff --git a/99-qemu-guest-agent.rules b/99-qemu-guest-agent.rules new file mode 100644 index 000000000000..d72a4183b6cf --- /dev/null +++ b/99-qemu-guest-agent.rules @@ -0,0 +1 @@ +SUBSYSTEM=="virtio-ports", ATTR{name}=="org.qemu.guest_agent.0", TAG+="systemd" ENV{SYSTEMD_WANTS}="qemu-guest-agent.service" diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..729fe0ff889d --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,1237 @@ +# Maintainer: David Runge <dvzrv@archlinux.org> +# Contributor: Tobias Powalowski <tpowa@archlinux.org> +# Contributor: Sébastien "Seblu" Luttringer <seblu@seblu.net> + +pkgbase=qemu +pkgname=( + qemu-common + qemu-audio-{alsa,dbus,jack,oss,pa,pipewire,sdl,spice} + qemu-block-{curl,dmg,gluster,iscsi,nfs,ssh} + qemu-chardev-{baum,spice} + qemu-docs + qemu-guest-agent + qemu-hw-display-{qxl,virtio-{gpu{,-{gl,pci,pci-gl}},vga{,-gl}}} + qemu-hw-s390x-virtio-gpu-ccw + qemu-hw-usb-{host,redirect,smartcard} + qemu-img + qemu-pr-helper + qemu-system-{aarch64,alpha,arm,avr,hppa,loongarch64,m68k,microblaze,mips,or1k,ppc,riscv,rx,s390x,sh4,sparc,tricore,x86,xtensa} + qemu-system-{alpha,arm,hppa,microblaze,ppc,riscv,s390x,sparc,x86}-firmware + qemu-tests + qemu-tools + qemu-ui-{curses,dbus,egl-headless,gtk,opengl,sdl,spice-{app,core}} + qemu-user{,-static}{,-binfmt} + qemu-vhost-user-gpu + qemu-vmsr-helper + qemu-{base,desktop,emulators-full,full} +) +pkgver=9.2.2 +pkgrel=1 +pkgdesc="A generic and open source machine emulator and virtualizer" +arch=(x86_64) +url="https://www.qemu.org/" +license=( + BSD-2-Clause + BSD-2-Clause-Patent + BSD-3-Clause + CC0-1.0 + FSFAP + GPL-1.0-or-later + GPL-2.0-only + 'GPL-2.0-only WITH Linux-syscall-note' + 'GPL-2.0-only WITH Linux-syscall-note OR BSD-2-Clause' + 'GPL-2.0-only WITH Linux-syscall-note OR BSD-3-Clause' + GPL-2.0-or-later + 'GPL-2.0-or-later OR BSD-3-Clause' + 'GPL-2.0-or-later WITH Linux-syscall-note' + ISC + 'LGPL-2.1-only OR BSD-3-Clause' + LGPL-2.0-or-later + LGPL-2.1-or-later + LicenseRef-Public-Domain + MIT +) +# TODO: consider providing rdma-core +# TODO: consider providing lzfse +# TODO: package systemtap +# TODO: package openbios for qemu-system-{ppc,sparc} +# TODO: package /usr/share/qemu/{efi,pxe}-* for qemu (ipxe) +# TODO: package /usr/share/qemu/slof.bin for qemu-system-ppc (slof) +makedepends=( + alsa-lib + brltty + bzip2 + cairo + capstone + curl + dtc + fuse3 + gcc-libs + gdk-pixbuf2 + glib2 + glib2-devel + glusterfs + gnutls + gtk3 + jack + keyutils + libaio + libbpf + libcacard + libcap-ng + libcbor + libepoxy + libiscsi + libnfs + libpipewire + libpng + libpulse + libsasl + libseccomp + libslirp + libssh + liburing + libusb + libx11 + libxdp + libxml2 + libxkbcommon + lzo + mesa + meson + multipath-tools + ncurses + ndctl + numactl + pam + pcre2 + python + python-distlib + python-setuptools + python-pip + python-sphinx + python-sphinx_rtd_theme + sdl2 + sdl2_image + snappy + spice-protocol + spice + systemd + usbredir + vde2 + virglrenderer + vte3 + zlib + zstd +) +source=( + https://download.qemu.org/qemu-$pkgver.tar.xz{,.sig} + bridge.conf + qemu-ga.conf + qemu-sysusers.conf + 65-kvm.rules + 99-qemu-guest-agent.rules + $pkgbase-8.1.1-static_regression.patch + $pkgbase-9.2.2-libnfs6.patch +) +sha512sums=('b010876da9f91da01dbb9e06705a1358d5f062d0fdd4ad5c8cd8ce3fd43adcefcf72a61216eb8d415281f6607b945ce1cfb6b5fc5692ada9163e8f05b7fb5533' + 'SKIP' + '7b412ffa5dcda47b0a4ec9e2c5e5e1d9eaaaf0a087b7ea3ead3e706ba4c9cafb919beadd088a0299b6f7aab753b81a5eafb545b4842ee5f26646d16544dd02a7' + '6e838773d63ae0ffdffe2b891bf611d8f5f3c67a9bc4cbbedf8363c150c2c9971c8e44d92270bc581af40eb0ece02192760bcdd6aee229fff55635f3a4825afa' + '985c2c7a6b5217c87a15b45368089ee91b2f9027b070f9eafa448a18b27ae0d9edd964d52e134b9c1f4aeef4d6aae88afd3f454551ca898affef7f9d28b99b8f' + 'bdf05f99407491e27a03aaf845b7cc8acfa2e0e59968236f10ffc905e5e3d5e8569df496fd71c887da2b5b8d1902494520c7da2d3a8258f7fd93a881dd610c99' + '93b905046fcea8a0a89513b9259c222494ab3b91319dde23baebcb40dc17376a56661b159b99785d6e816831974a0f3cbd7b2f7d89e5fc3c258f88f4492f3839' + 'c7d086a951e9a378434ea95a843a4b01f0eb2ae430135a81365147cf6806a7ba1b49014a3aa66904970853ba84a4a28dbaded7bccb99a0bc3730572c80fb8b12' + '7949b1435ed979836c59149b4b06b80fe14fa89ef12d1e027860df392e2ffdaf4a0f881021f80b4ee56e8657068bf7f2c6415c9891f34c32228b9d35e9359c8f') +b2sums=('fe341d25010b02c47c263e6b1bf1a64f72226e188bd79901ec0072005994e305f5c75b8e5b3f36af1e3b3f776a04cd18b4084dc044952f34b131f3b94134f5b8' + 'SKIP' + 'b1eca364aa60f130ff5e649f5d004d3fcb75356d3421a4542efdfc410d39b40d9434d15e1dd7bbdbd315cb72b5290d3ea5f77f9c41961a5601cd28ef7bbe72e8' + '2102e4a34e11e406e9606c97e026e7b92e887e296a7f77b9cede1b37119d0df33735f3588628167b2b8e32244c196c491bfab623e2caddac9014d445aa2a6d98' + '69177b962d2fda20cafdbc6226fd017b5ca5a0f69f866d055dc1c744b7b2955059f47c693cfb5b4c863ec159569fdabd4327ab4b8a95566a68cd8ce38e339c7a' + '3559fe9c4f744194939770047a0a02d07ff791c845a80726d0bc7b8c4801ed5f11150e7d5adab813844b3dab1cf38c3a5a87fb6efbb8fc9dccdda9fa56409ed8' + 'a9a2bdfeeb44eb86cbe88ac7c65f72800bdb2fd5cecb02f3a258cf9470b52832180aab43c89d481f7fd4d067342a9a27dd6c8a94d625b95d6e2b912e47d274e7' + '209ec05e161d157aaa08a9fcbea45cf87aa22fe9360f9b3c477a78a274e4ecee989c16121f9e6b7765bb479c9db718c98db047c27fd426c127c4c95e28877a16' + '16fe3a16eb874a69324ae42ba9f96deacb832e8cf9123cafb7f5148fbc3c84a2c78876b8fc62b9b9abefabfcfdcdbcfc1955040368d4dc1b3d4ccd719ec9b410') +validpgpkeys=('CEACC9E15534EBABB82D3FA03353C9CEF108B584') # Michael Roth <flukshun@gmail.com> + +_qemu_system_deps=( + capstone + fuse3 + gcc-libs + glibc + glib2 libgio-2.0.so libglib-2.0.so libgmodule-2.0.so + gnutls + keyutils + libaio + libelf + libbpf libbpf.so + libjpeg-turbo libjpeg.so + libpng + libsasl + libseccomp libseccomp.so + libslirp libslirp.so + liburing liburing.so + libxdp libxdp.so + lzo + ndctl + numactl libnuma.so + pam libpam.so + pixman libpixman-1.so + qemu-common=$pkgver-$pkgrel + snappy + vde2 + zlib + zstd libzstd.so +) + +_qemu_full_optdepends=( + 'qemu-user-static: for static user mode emulation of QEMU targets' + 'samba: for SMB/CIFS server support' +) + +_qemu_desktop_optdepends=( + "${_qemu_full_optdepends[@]}" + 'qemu-block-gluster: for Gluster block driver' + 'qemu-block-iscsi: for iSCSI block driver' + 'qemu-chardev-baum: for Baum chardev driver' + 'qemu-docs: for documentation' + 'qemu-emulators-full: for all system emulators' + 'qemu-full: for a full QEMU installation' + 'qemu-hw-s390x-virtio-gpu-ccw: for s390x-virtio-gpu-ccw display device' + 'qemu-pr-helper: for persistent reservation utility' + 'qemu-system-aarch64: for AARCH64 system emulator' + 'qemu-system-alpha: for Alpha system emulator' + 'qemu-system-arm: for ARM system emulator' + 'qemu-system-avr: for AVR system emulator' + 'qemu-system-hppa: for HPPA system emulator' + 'qemu-system-m68k: for ColdFire (m68k) system emulator' + 'qemu-system-microblaze: for Microblaze system emulator' + 'qemu-system-mips: for MIPS system emulator' + 'qemu-system-or1k: for OpenRisc32 system emulator' + 'qemu-system-ppc: for PPC system emulator' + 'qemu-system-riscv: for RISC-V system emulator' + 'qemu-system-rx: for RX system emulator' + 'qemu-system-s390x: for S390 system emulator' + 'qemu-system-sh4: for SH4 system emulator' + 'qemu-system-sparc: for SPARC system emulator' + 'qemu-system-tricore: for tricore system emulator' + 'qemu-system-xtensa: for Xtensa system emulator' + 'qemu-tests: for QEMU tests' + 'qemu-tools: for QEMU tools' + 'qemu-user: for user mode emulation of QEMU targets' + 'qemu-vmsr-helper: for accessing the Running Average Power Limit (RAPL) MSR' +) + +_qemu_base_optdepends=( + "${_qemu_desktop_optdepends[@]}" + 'qemu-audio-alsa: for ALSA audio driver' + 'qemu-audio-dbus: for D-Bus audio driver' + 'qemu-audio-jack: for JACK audio driver' + 'qemu-audio-oss: for OSS audio driver' + 'qemu-audio-pa: for PulseAudio audio driver' + 'qemu-audio-pipewire: for PipeWire audio driver' + 'qemu-audio-sdl: for SDL audio driver' + 'qemu-audio-spice: for spice audio driver' + 'qemu-block-curl: for curl block driver' + 'qemu-block-dmg: for DMG block driver' + 'qemu-block-nfs: for NFS block driver' + 'qemu-block-ssh: for SSH block driver' + 'qemu-chardev-spice: for the spice chardev driver' + 'qemu-desktop: for dependencies commonly used on a desktop' + 'qemu-hw-display-qxl: for the QXL display device' + 'qemu-hw-display-virtio-vga: for the virtio-vga display device' + 'qemu-hw-display-virtio-vga-gl: for the virtio-vga-gl display device' + 'qemu-hw-display-virtio-gpu: for the virtio-gpu display device' + 'qemu-hw-display-virtio-gpu-gl: for the virtio-gpu-gl display device' + 'qemu-hw-display-virtio-gpu-pci: for the virtio-gpu-pci display device' + 'qemu-hw-display-virtio-gpu-pci-gl: for the virtio-gpu-pci-gl display device' + 'qemu-hw-usb-host: for host USB support' + 'qemu-hw-usb-redirect: for USB redirect support' + 'qemu-hw-usb-smartcard: for USB smartcard support' + 'qemu-ui-curses: for ncurses UI driver' + 'qemu-ui-dbus: for D-Bus UI driver' + 'qemu-ui-egl-headless: for EGL headless UI driver' + 'qemu-ui-gtk: for GTK UI driver' + 'qemu-ui-opengl: for OpenGL UI driver' + 'qemu-ui-sdl: for SDL UI driver' + 'qemu-ui-spice-app: for spice app UI driver' + 'qemu-ui-spice-core: for spice core UI driver' + 'qemu-user: for user mode emulation of QEMU targets' + 'qemu-vhost-user-gpu: for vhost-user-gpu display device' +) + +_pick() { + local p="$1" f d; shift + for f; do + d="$srcdir/$p/${f#$pkgdir/}" + mkdir -vp "$(dirname "$d")" + mv -v "$f" "$d" + rmdir -vp --ignore-fail-on-non-empty "$(dirname "$f")" + done +} + +# install the license files to that of qemu-common +_install_licenses() { + install -vDm 644 $pkgbase-$pkgver/LICENSE ./*LICENSE*.txt -t "$pkgdir/usr/share/licenses/$pkgname/" + install -vDm 644 $pkgbase-$pkgver/tests/uefi-test-tools/LICENSE "$pkgdir/usr/share/licenses/$pkgname/BSD-2-Clause.txt" + install -vDm 644 $pkgbase-$pkgver/pc-bios/edk2-licenses.txt -t "$pkgdir/usr/share/licenses/$pkgname/" +} + +prepare() { + # fix crash with static binaries: https://gitlab.com/qemu-project/qemu/-/issues/1913 + patch -Np1 -d $pkgbase-$pkgver -i ../$pkgbase-8.1.1-static_regression.patch + + # support libnfs 6 (LIBNFS_API_V2) + patch -Np1 -d $pkgbase-$pkgver -i ../$pkgbase-9.2.2-libnfs6.patch + + # extract licenses for TCG + sed -n '1,23p' $pkgbase-$pkgver/tcg/tcg-internal.h > tcg.LICENSE.MIT.txt + sed -n '1,23p' $pkgbase-$pkgver/tcg/arm/tcg-target.c.inc > tcg-arm.LICENSE.MIT.txt + sed -n '1,23p' $pkgbase-$pkgver/tcg/tci/tcg-target.h > tci.LICENSE.MIT.txt + + # extract licenses for audio + sed -n '2,4p' $pkgbase-$pkgver/audio/sndioaudio.c > audio.LICENSE.ISC.txt + + # extract licenses for linux headers + sed -n '3,33p' $pkgbase-$pkgver/include/standard-headers/linux/fuse.h > fuse.LICENSE.BSD-2-Clause.txt + + # install qemu-pr-helper.socket and qemu-vmsr-helper.socket to sockets.target + sed -e 's/multi-user.target/sockets.target/g' -i $pkgbase-$pkgver/contrib/systemd/*.socket + + # create build dir + mkdir -vp build + mkdir -vp build-static +} + +build() { + local common_configure_options=( + --prefix=/usr + --sysconfdir=/etc + --libexecdir=/usr/lib/qemu + --localstatedir=/var + --docdir=/usr/share/doc/qemu + ) + local configure_options=( + "${common_configure_options[@]}" + --enable-modules + --enable-sdl + --enable-slirp + --enable-tpm + --smbd=/usr/bin/smbd + --with-coroutine=ucontext + ) + local configure_static_options=( + "${common_configure_options[@]}" + --enable-attr + --enable-linux-user + --enable-tcg + --disable-bpf + --disable-bsd-user + --disable-capstone + --disable-docs + --disable-fdt + --disable-gcrypt + --disable-glusterfs + --disable-gnutls + --disable-gtk + --disable-install-blobs + --disable-kvm + --disable-libiscsi + --disable-libnfs + --disable-libssh + --disable-linux-io-uring + --disable-nettle + --disable-opengl + --disable-qom-cast-debug + --disable-sdl + --disable-system + --disable-tools + --disable-tpm + --disable-vde + --disable-vhost-crypto + --disable-vhost-kernel + --disable-vhost-net + --disable-vhost-user + --disable-vnc + --disable-werror + --disable-xen + --disable-zstd + --static + ) + + ( + cd build-static + ../$pkgbase-$pkgver/configure "${configure_static_options[@]}" + ninja + ) + + # Build only minimal debug info to reduce size + CFLAGS+=' -g1' + CXXFLAGS+=' -g1' + + ( + cd build + ../$pkgbase-$pkgver/configure "${configure_options[@]}" + ninja + ) + +} + +package_qemu-common() { + local binfmt_conf_options=( + --systemd ALL + --exportdir "$pkgdir/usr/lib/binfmt.d/" + --qemu-path "/usr/bin" + --persistent yes + --preserve-argv0 yes + ) + + depends=(gcc-libs glibc glib2 libglib-2.0.so libgmodule-2.0.so hicolor-icon-theme libcap-ng libcap-ng.so numactl libnuma.so) + backup=( + etc/$pkgbase/bridge.conf + etc/sasl2/$pkgbase.conf + ) + conflicts=( + qemu-system-cris + qemu-system-nios2 + ) + install=$pkgname.install + + # install static binaries + meson install -C build-static --destdir "$pkgdir" + install -vdm 755 "$pkgdir/usr/lib/binfmt.d/" + $pkgbase-$pkgver/scripts/qemu-binfmt-conf.sh "${binfmt_conf_options[@]}" + + # rename static binaries to prevent name conflicts + for _src in "$pkgdir/usr/bin/qemu-"*; do + mv -v "$_src" "$pkgdir/usr/bin/$(basename "$_src")-static" + done + # modify and rename binfmt.d configs to prevent name conflicts + for _conf in "$pkgdir/usr/lib/binfmt.d/"*; do + _exe_name="$(basename "${_conf/.conf/}")" + _new_exe_name="${_exe_name}-static" + _new_conf_name="${_conf/.conf/-static.conf}" + sed -e "s|usr/bin/${_exe_name}|usr/bin/${_new_exe_name}|" "$_conf" > "${_new_conf_name}" + done + + # install default binaries + meson install -C build --destdir "$pkgdir" + + install -vdm 755 "$pkgdir/usr/lib/binfmt.d/" + $pkgbase-$pkgver/scripts/qemu-binfmt-conf.sh "${binfmt_conf_options[@]}" + + install -vDm 644 bridge.conf -t "$pkgdir/etc/$pkgbase/" + install -vDm 644 $pkgbase-$pkgver/$pkgbase.sasl "$pkgdir/etc/sasl2/$pkgbase.conf" + install -vDm 644 $pkgbase-sysusers.conf "$pkgdir/usr/lib/sysusers.d/$pkgbase.conf" + + _install_licenses + + # bridge_helper needs suid: https://bugs.archlinux.org/task/32565 + chmod u+s "$pkgdir/usr/lib/qemu/qemu-bridge-helper" + + # remoe invalid directory + rm -frv "$pkgdir/var" + + # remove unneeded files + find "$pkgdir" -name .buildinfo -delete + + # remove files provided by seabios + rm -fv "$pkgdir/usr/share/$pkgbase/"{bios,vgabios}* + + # remove files provided by edk2-{aarch64,arm,ovmf} + rm -fv "$pkgdir/usr/share/$pkgbase/"edk2-* + rm -frv "$pkgdir/usr/share/$pkgbase/firmware" + + ( + # create man page symlinks for all system emulators + cd "$pkgdir/usr/share/man/man1" + for _name in qemu-system-{aarch64,alpha,arm,avr,hppa,i386,loongarch64,m68k,microblaze{,el},mips{,64,64el,el},or1k,ppc{,64},riscv{32,64},rx,s390x,sh4{,eb},sparc{,64},tricore,x86_64,xtensa{,eb}}; do + ln -sv $pkgbase.1.gz "$pkgdir/usr/share/man/man1/$_name.1.gz" + done + ) + + ( + # pick files for all split packages + cd "$pkgdir" + + _pick qemu-guest-agent usr/bin/qemu-ga + _pick qemu-guest-agent usr/share/man/man8/qemu-ga.8* + + _pick qemu-audio-alsa usr/lib/qemu/audio-alsa.so + _pick qemu-audio-dbus usr/lib/qemu/audio-dbus.so + _pick qemu-audio-jack usr/lib/qemu/audio-jack.so + _pick qemu-audio-oss usr/lib/qemu/audio-oss.so + _pick qemu-audio-pa usr/lib/qemu/audio-pa.so + _pick qemu-audio-pipewire usr/lib/qemu/audio-pipewire.so + _pick qemu-audio-sdl usr/lib/qemu/audio-sdl.so + _pick qemu-audio-spice usr/lib/qemu/audio-spice.so + + _pick qemu-block-curl usr/lib/qemu/block-curl.so + _pick qemu-block-dmg usr/lib/qemu/block-dmg*.so + _pick qemu-block-gluster usr/lib/qemu/block-gluster.so + _pick qemu-block-iscsi usr/lib/qemu/block-iscsi.so + _pick qemu-block-nfs usr/lib/qemu/block-nfs.so + _pick qemu-block-ssh usr/lib/qemu/block-ssh.so + + _pick qemu-chardev-baum usr/lib/qemu/chardev-baum.so + _pick qemu-chardev-spice usr/lib/qemu/chardev-spice.so + + _pick qemu-docs usr/share/doc/qemu + + _pick qemu-hw-display-qxl usr/lib/qemu/hw-display-qxl.so + _pick qemu-hw-display-virtio-gpu usr/lib/qemu/hw-display-virtio-gpu.so + _pick qemu-hw-display-virtio-gpu-gl usr/lib/qemu/hw-display-virtio-gpu-gl.so + _pick qemu-hw-display-virtio-gpu-pci usr/lib/qemu/hw-display-virtio-gpu-pci.so + _pick qemu-hw-display-virtio-gpu-pci-gl usr/lib/qemu/hw-display-virtio-gpu-pci-gl.so + _pick qemu-hw-display-virtio-vga usr/lib/qemu/hw-display-virtio-vga.so + _pick qemu-hw-display-virtio-vga-gl usr/lib/qemu/hw-display-virtio-vga-gl.so + + _pick qemu-hw-usb-host usr/lib/qemu/hw-usb-host.so + _pick qemu-hw-usb-redirect usr/lib/qemu/hw-usb-redirect.so + _pick qemu-hw-usb-smartcard usr/lib/qemu/hw-usb-smartcard.so + + _pick qemu-img usr/bin/qemu-{img,io,nbd,storage-daemon} + _pick qemu-img usr/share/man/man1/qemu-{img,storage-daemon}.1* + _pick qemu-img usr/share/man/man7/qemu-storage-daemon-qmp-ref.7* + _pick qemu-img usr/share/man/man8/qemu-nbd.8* + + _pick qemu-pr-helper usr/bin/qemu-pr-helper + _pick qemu-pr-helper usr/share/man/man8/qemu-pr-helper.8* + + _pick qemu-hw-s390x-virtio-gpu-ccw usr/lib/qemu/hw-s390x-virtio-gpu-ccw.so + + _pick qemu-system-aarch64 usr/bin/qemu-system-aarch64 + _pick qemu-system-aarch64 usr/share/man/man1/qemu-system-aarch64.1* + + _pick qemu-system-alpha usr/bin/qemu-system-alpha + _pick qemu-system-alpha usr/share/man/man1/qemu-system-alpha.1* + + _pick qemu-system-alpha-firmware usr/share/qemu/palcode-clipper + + _pick qemu-system-arm usr/bin/qemu-system-arm + _pick qemu-system-arm usr/share/man/man1/qemu-system-arm.1* + + _pick qemu-system-arm-firmware usr/share/qemu/npcm7xx_bootrom.bin + + _pick qemu-system-avr usr/bin/qemu-system-avr + _pick qemu-system-avr usr/share/man/man1/qemu-system-avr.1* + + _pick qemu-system-hppa usr/bin/qemu-system-hppa + _pick qemu-system-hppa usr/share/man/man1/qemu-system-hppa.1* + + _pick qemu-system-hppa-firmware usr/share/qemu/hppa-firmware*.img + + _pick qemu-system-loongarch64 usr/bin/qemu-system-loongarch64 + _pick qemu-system-loongarch64 usr/share/man/man1/qemu-system-loongarch64.1* + + _pick qemu-system-m68k usr/bin/qemu-system-m68k + _pick qemu-system-m68k usr/share/man/man1/qemu-system-m68k.1* + + _pick qemu-system-microblaze usr/bin/qemu-system-microblaze{,el} + _pick qemu-system-microblaze usr/share/man/man1/qemu-system-microblaze{,el}.1* + + _pick qemu-system-microblaze-firmware usr/share/qemu/petalogix-*.dtb + + _pick qemu-system-mips usr/bin/qemu-system-mips{,64,64el,el} + _pick qemu-system-mips usr/share/man/man1/qemu-system-mips{,64,64el,el}.1* + + _pick qemu-system-or1k usr/bin/qemu-system-or1k + _pick qemu-system-or1k usr/share/man/man1/qemu-system-or1k.1* + + _pick qemu-system-ppc usr/bin/qemu-system-ppc{,64} + _pick qemu-system-ppc usr/share/man/man1/qemu-system-ppc{,64}.1* + + _pick qemu-system-ppc-firmware usr/share/qemu/{bamboo,canyonlands}.dtb + # NOTE: needs to be replaced by openbios + _pick qemu-system-ppc-firmware usr/share/qemu/openbios-ppc + _pick qemu-system-ppc-firmware usr/share/qemu/qemu_vga.ndrv + _pick qemu-system-ppc-firmware usr/share/qemu/skiboot.lid + # NOTE: needs to be replaced by slof + _pick qemu-system-ppc-firmware usr/share/qemu/slof.bin + _pick qemu-system-ppc-firmware usr/share/qemu/u-boot.e500 + _pick qemu-system-ppc-firmware usr/share/qemu/u-boot-sam460-20100605.bin + + _pick qemu-system-riscv usr/bin/qemu-system-riscv{32,64} + _pick qemu-system-riscv usr/share/man/man1/qemu-system-riscv{32,64}.1* + + _pick qemu-system-riscv-firmware usr/share/qemu/opensbi-riscv{32,64}*.bin + + _pick qemu-system-rx usr/bin/qemu-system-rx + _pick qemu-system-rx usr/share/man/man1/qemu-system-rx.1* + + _pick qemu-system-s390x usr/bin/qemu-system-s390x + _pick qemu-system-s390x usr/share/man/man1/qemu-system-s390x.1* + + _pick qemu-system-s390x-firmware usr/share/qemu/s390-ccw.img + + _pick qemu-system-sh4 usr/bin/qemu-system-sh4{,eb} + _pick qemu-system-sh4 usr/share/man/man1/qemu-system-sh4{,eb}.1* + + _pick qemu-system-sparc usr/bin/qemu-system-sparc{,64} + _pick qemu-system-sparc usr/share/man/man1/qemu-system-sparc{,64}.1* + + # NOTE: needs to be replaced by openbios + _pick qemu-system-sparc-firmware usr/share/qemu/openbios-sparc{32,64} + _pick qemu-system-sparc-firmware usr/share/qemu/QEMU,{cgthree,tcx}.bin + + _pick qemu-system-tricore usr/bin/qemu-system-tricore + _pick qemu-system-tricore usr/share/man/man1/qemu-system-tricore.1* + + _pick qemu-system-x86 usr/bin/qemu-system-{i386,x86_64} + _pick qemu-system-x86 usr/lib/qemu/accel-tcg-{i386,x86_64}.so + _pick qemu-system-x86 usr/share/man/man1/qemu-system-{i386,x86_64}.1* + + _pick qemu-system-x86-firmware usr/share/qemu/{kvmvapic,linuxboot,multiboot{,_dma},pvh}.bin + _pick qemu-system-x86-firmware usr/share/qemu/qboot.rom + + _pick qemu-system-xtensa usr/bin/qemu-system-xtensa{,eb} + _pick qemu-system-xtensa usr/share/man/man1/qemu-system-xtensa{,eb}.1* + + _pick qemu-tests usr/lib/qemu/accel-qtest-*.so + + _pick qemu-tools usr/bin/{elf2dmp,qemu-{edid,keymap}} + _pick qemu-tools usr/share/qemu/trace-events-all + + _pick qemu-ui-curses usr/lib/qemu/ui-curses.so + _pick qemu-ui-dbus usr/lib/qemu/ui-dbus.so + _pick qemu-ui-egl-headless usr/lib/qemu/ui-egl-headless.so + _pick qemu-ui-gtk usr/lib/qemu/ui-gtk.so + _pick qemu-ui-opengl usr/lib/qemu/ui-opengl.so + _pick qemu-ui-sdl usr/lib/qemu/ui-sdl.so + _pick qemu-ui-spice-app usr/lib/qemu/ui-spice-app.so + _pick qemu-ui-spice-core usr/lib/qemu/ui-spice-core.so + + _pick qemu-user-static usr/bin/qemu-*-static + _pick qemu-user-static-binfmt usr/lib/binfmt.d/*-static.conf + + _pick qemu-user usr/bin/qemu-{aarch64{,_be},alpha,arm{,eb},hexagon,hppa,i386,loongarch64,m68k,microblaze{,el},mips{,64,64el,el,n32,n32el},or1k,ppc{,64,64le},riscv{32,64},s390x,sh4{,eb},sparc{,32plus,64},x86_64,xtensa{,eb}} + _pick qemu-user-binfmt usr/lib/binfmt.d/*.conf + + _pick qemu-vhost-user-gpu usr/lib/qemu/vhost-user-gpu + _pick qemu-vhost-user-gpu usr/share/qemu/vhost-user/50-qemu-gpu.json + + _pick qemu-vmsr-helper usr/bin/qemu-vmsr-helper + ) +} + +package_qemu-audio-alsa() { + pkgdesc="QEMU ALSA audio driver" + depends=(alsa-lib libasound.so glibc qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-audio-dbus() { + pkgdesc="QEMU D-Bus audio driver" + depends=(gcc-libs glib2 libgio-2.0.so libgobject-2.0.so libglib-2.0.so glibc qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-audio-jack() { + pkgdesc="QEMU JACK audio driver" + depends=(gcc-libs glibc jack libjack.so qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-audio-oss() { + pkgdesc="QEMU OSS audio driver" + depends=(glibc qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-audio-pa() { + pkgdesc="QEMU PulseAudio audio driver" + depends=(glibc libpulse libpulse.so qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-audio-pipewire() { + pkgdesc="QEMU PipeWire audio driver" + depends=(gcc-libs glibc libpipewire libpipewire-0.3.so qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-audio-sdl() { + pkgdesc="QEMU SDL audio driver" + depends=(glibc qemu-common=$pkgver-$pkgrel sdl2) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-audio-spice() { + pkgdesc="QEMU spice audio driver" + depends=(glibc qemu-common=$pkgver-$pkgrel qemu-ui-spice-core=$pkgver-$pkgrel spice libspice-server.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-block-curl() { + pkgdesc="QEMU curl block driver" + depends=(curl libcurl.so gcc-libs glibc qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-block-dmg() { + pkgdesc="QEMU DMG block driver" + depends=(bzip2 libbz2.so glibc qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-block-gluster() { + pkgdesc="QEMU Gluster block driver" + depends=(gcc-libs glibc glusterfs qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-block-iscsi() { + pkgdesc="QEMU iSCSI block driver" + depends=(gcc-libs glibc libiscsi qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-block-nfs() { + pkgdesc="QEMU NFS block driver" + depends=(gcc-libs glibc libnfs qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-block-ssh() { + pkgdesc="QEMU SSH block driver" + depends=(gcc-libs glibc libssh libssh.so qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-chardev-baum() { + pkgdesc="QEMU Baum chardev driver" + depends=(brltty libbrlapi.so gcc-libs glibc qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-chardev-spice() { + pkgdesc="QEMU spice chardev driver" + depends=(glibc qemu-common=$pkgver-$pkgrel qemu-ui-spice-core=$pkgver-$pkgrel spice libspice-server.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-docs() { + pkgdesc+=" - documentation" + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-guest-agent() { + pkgdesc="QEMU Guest Agent" + depends=(gcc-libs glib2 libglib-2.0.so libgmodule-2.0.so glibc liburing liburing.so numactl libnuma.so sh systemd-libs libudev.so) + backup=( + etc/$pkgbase/$pkgbase-ga.conf + etc/$pkgbase/fsfreeze-hook + ) + install=$pkgname.install + mv -v $pkgname/* "$pkgdir" + install -vDm 644 $pkgbase-$pkgver/contrib/systemd/$pkgname.service -t "$pkgdir/usr/lib/systemd/system/" + install -vDm 644 99-$pkgname.rules -t "$pkgdir/usr/lib/udev/rules.d/" + install -vDm 644 $pkgbase-ga.conf -t "$pkgdir/etc/$pkgbase/" + install -vDm 755 $pkgbase-$pkgver/scripts/$pkgname/fsfreeze-hook -t "$pkgdir/etc/$pkgbase/" + install -vdm 755 "$pkgdir/etc/$pkgbase/fsfreeze-hook.d" + _install_licenses +} + +package_qemu-hw-display-qxl() { + pkgdesc="QEMU QXL display device" + depends=(gcc-libs glibc pixman libpixman-1.so qemu-common=$pkgver-$pkgrel qemu-ui-spice-core=$pkgver-$pkgrel spice libspice-server.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-hw-display-virtio-gpu() { + pkgdesc="QEMU virtio-gpu display device" + depends=(glibc pixman libpixman-1.so qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-hw-display-virtio-gpu-gl() { + pkgdesc="QEMU virtio-gpu-gl display device" + depends=(gcc-libs glibc qemu-common=$pkgver-$pkgrel virglrenderer) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-hw-display-virtio-gpu-pci() { + pkgdesc="QEMU virtio-gpu-pci display device" + depends=(qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-hw-display-virtio-gpu-pci-gl() { + pkgdesc="QEMU virtio-gpu-pci-gl display device" + depends=(qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-hw-display-virtio-vga() { + pkgdesc="QEMU virtio-vga display device" + depends=(qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-hw-display-virtio-vga-gl() { + pkgdesc="QEMU virtio-vga-gl display device" + depends=(qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-hw-s390x-virtio-gpu-ccw() { + pkgdesc="QEMU s390x-virtio-gpu-ccw display device" + depends=(qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-aarch64() { + pkgdesc="QEMU system emulator for AARCH64" + depends=("${_qemu_system_deps[@]}" dtc edk2-aarch64 systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-alpha() { + pkgdesc="QEMU system emulator for Alpha" + depends=("${_qemu_system_deps[@]}" qemu-system-alpha-firmware=$pkgver-$pkgrel systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-alpha-firmware() { + pkgdesc="Firmware for QEMU system emulator for Alpha" + options=(!strip) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-arm() { + pkgdesc="QEMU system emulator for ARM" + depends=("${_qemu_system_deps[@]}" dtc edk2-arm qemu-system-arm-firmware=$pkgver-$pkgrel systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-arm-firmware() { + pkgdesc="Firmware for QEMU system emulator for ARM" + options=(!strip) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-avr() { + pkgdesc="QEMU system emulator for AVR" + depends=("${_qemu_system_deps[@]}") + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-hppa() { + pkgdesc="QEMU system emulator for HPPA" + depends=("${_qemu_system_deps[@]}" qemu-system-hppa-firmware=$pkgver-$pkgrel systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-hppa-firmware() { + pkgdesc="Firmware for QEMU system emulator for HPPA" + options=(!strip) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-loongarch64() { + pkgdesc="QEMU system emulator for LoongArch64" + depends=("${_qemu_system_deps[@]}" dtc systemd-libs) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-m68k() { + pkgdesc="QEMU system emulator for ColdFire (m68k)" + depends=("${_qemu_system_deps[@]}") + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-microblaze() { + pkgdesc="QEMU system emulator for Microblaze" + depends=("${_qemu_system_deps[@]}" dtc qemu-system-microblaze-firmware=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-microblaze-firmware() { + pkgdesc="Firmware for QEMU system emulator for Microblaze" + options=(!strip) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-mips() { + pkgdesc="QEMU system emulator for MIPS" + depends=("${_qemu_system_deps[@]}" dtc systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-or1k() { + pkgdesc="QEMU system emulator for OpenRisc32" + depends=("${_qemu_system_deps[@]}" dtc systemd-libs) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-ppc() { + pkgdesc="QEMU system emulator for PPC" + depends=("${_qemu_system_deps[@]}" dtc qemu-system-ppc-firmware=$pkgver-$pkgrel systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-ppc-firmware() { + pkgdesc="Firmware for QEMU system emulator for PPC" + options=(!strip) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-riscv() { + pkgdesc="QEMU system emulator for RISC-V" + depends=("${_qemu_system_deps[@]}" dtc qemu-system-riscv-firmware=$pkgver-$pkgrel systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-riscv-firmware() { + pkgdesc="Firmware for QEMU system emulator for RISC-V" + options=(!strip) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-rx() { + pkgdesc="QEMU system emulator for RX" + depends=("${_qemu_system_deps[@]}" dtc) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-s390x() { + pkgdesc="QEMU system emulator for S390" + depends=("${_qemu_system_deps[@]}" qemu-system-s390x-firmware=$pkgver-$pkgrel systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-s390x-firmware() { + pkgdesc="Firmware for QEMU system emulator for S390" + options=(!strip) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-sh4() { + pkgdesc="QEMU system emulator for SH4" + depends=("${_qemu_system_deps[@]}" systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-sparc() { + pkgdesc="QEMU system emulator for SPARC" + depends=("${_qemu_system_deps[@]}" qemu-system-sparc-firmware=$pkgver-$pkgrel systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-sparc-firmware() { + pkgdesc="Firmware for QEMU system emulator for SPARC" + options=(!strip) + # NOTE: will require openbios + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-tricore() { + pkgdesc="QEMU system emulator for tricore" + depends=("${_qemu_system_deps[@]}") + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-x86() { + pkgdesc="QEMU system emulator for x86" + depends=("${_qemu_system_deps[@]}" dtc edk2-ovmf libcbor libcbor.so qemu-system-x86-firmware=$pkgver-$pkgrel seabios systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-x86-firmware() { + pkgdesc="Firmware for QEMU system emulator for x86" + options=(!strip) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-system-xtensa() { + pkgdesc="QEMU system emulator for Xtensa" + depends=("${_qemu_system_deps[@]}" dtc systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-hw-usb-host() { + pkgdesc="QEMU USB host device" + depends=(glibc libusb libusb-1.0.so qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-hw-usb-redirect() { + pkgdesc="QEMU usbredir device" + depends=(gcc-libs glibc qemu-common=$pkgver-$pkgrel usbredir) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-hw-usb-smartcard() { + pkgdesc="QEMU USB smartcard device" + depends=(gcc-libs libcacard glib2 libglib-2.0.so glibc qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-img() { + pkgdesc="QEMU tooling for manipulating disk images" + depends=(fuse3 gcc-libs glib2 libglib-2.0.so libgmodule-2.0.so glibc gnutls libaio liburing liburing.so numactl libnuma.so pam libpam.so zlib zstd libzstd.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-pr-helper() { + pkgdesc="QEMU persistent reservation utility" + depends=(gcc-libs glib2 libglib-2.0.so libgmodule-2.0.so glibc gnutls libcap-ng libcap-ng.so liburing liburing.so multipath-tools numactl libnuma.so pam libpam.so qemu-common=$pkgver-$pkgrel systemd-libs) + mv -v $pkgname/* "$pkgdir" + install -vDm 644 $pkgbase-$pkgver/contrib/systemd/$pkgname.{service,socket} -t "$pkgdir/usr/lib/systemd/system/" + _install_licenses +} + +package_qemu-tests() { + pkgdesc="QEMU tests" + depends=(qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-tools() { + pkgdesc="QEMU tools" + depends=(curl libcurl.so gcc-libs glib2 libglib-2.0.so libgmodule-2.0.so glibc libxkbcommon libxkbcommon.so numactl libnuma.so python qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + install -vDm 644 $pkgbase-$pkgver/scripts/dump-guest-memory.py -t "$pkgdir/usr/share/$pkgbase/" + install -vDm 755 $pkgbase-$pkgver/scripts/simpletrace.py -t "$pkgdir/usr/share/$pkgbase/" + install -vDm 644 $pkgbase-$pkgver/scripts/tracetool/*.py -t "$pkgdir/usr/share/$pkgbase/tracetool/" + install -vDm 644 $pkgbase-$pkgver/scripts/tracetool/backend/*.py -t "$pkgdir/usr/share/$pkgbase/tracetool/backend/" + install -vDm 644 $pkgbase-$pkgver/scripts/tracetool/format/*.py -t "$pkgdir/usr/share/$pkgbase/tracetool/format/" + _install_licenses +} + +package_qemu-ui-curses() { + pkgdesc="QEMU curses UI driver" + depends=(gcc-libs glib2 libglib-2.0.so glibc ncurses libncursesw.so qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-ui-dbus() { + pkgdesc="QEMU D-Bus UI driver" + depends=(gcc-libs glib2 libgio-2.0.so libgobject-2.0.so libglib-2.0.so glibc libepoxy pixman libpixman-1.so qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-ui-egl-headless() { + pkgdesc="QEMU EGL headless UI driver" + depends=(glibc libepoxy pixman libpixman-1.so qemu-common=$pkgver-$pkgrel qemu-ui-opengl=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-ui-gtk() { + pkgdesc="QEMU GTK UI driver" + depends=( + cairo + gdk-pixbuf2 libgdk_pixbuf-2.0.so + glib2 libgobject-2.0.so libglib-2.0.so + glibc + gtk3 libgdk-3.so libgtk-3.so + libepoxy + libx11 + pixman libpixman-1.so + qemu-common=$pkgver-$pkgrel + qemu-ui-opengl + vte3 libvte-2.91.so + ) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-ui-opengl() { + pkgdesc="QEMU OpenGL UI driver" + depends=(gcc-libs glibc libepoxy mesa pixman libpixman-1.so qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-ui-sdl() { + pkgdesc="QEMU SDL UI driver" + depends=(glib2 libglib-2.0.so glibc libx11 pixman libpixman-1.so qemu-common=$pkgver-$pkgrel sdl2_image sdl2) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-ui-spice-app() { + pkgdesc="QEMU spice app UI driver" + depends=(glib2 libgio-2.0.so libglib-2.0.so glibc qemu-common=$pkgver-$pkgrel qemu-chardev-spice=$pkgver-$pkgrel qemu-ui-spice-core=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-ui-spice-core() { + pkgdesc="QEMU spice core UI driver" + depends=(gcc-libs glibc pixman libpixman-1.so qemu-common=$pkgver-$pkgrel qemu-ui-opengl=$pkgver-$pkgrel spice libspice-server.so) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-user() { + pkgdesc="QEMU user mode emulation" + depends=(capstone gcc-libs glib2 libglib-2.0.so libgmodule-2.0.so glibc gnutls libelf liburing liburing.so numactl libnuma.so qemu-common=$pkgver-$pkgrel zlib) + optdepends=('qemu-user-binfmt: for binary format rules') + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-user-binfmt() { + pkgdesc="Binary format rules for QEMU user mode emulation" + depends=(qemu-user=$pkgver-$pkgrel) + provides=(qemu-user-binfmt-provider) + conflicts=(qemu-user-binfmt-provider) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-user-static() { + pkgdesc="QEMU static user mode emulation" + optdepends=('qemu-user-static-binfmt: for binary format rules') + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-user-static-binfmt() { + pkgdesc="Binary format rules for QEMU static user mode emulation" + depends=(qemu-user-static=$pkgver-$pkgrel) + provides=(qemu-user-binfmt-provider) + conflicts=(qemu-user-binfmt-provider) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-vhost-user-gpu() { + pkgdesc="QEMU vhost-user-gpu display device" + depends=(gcc-libs glib2 libglib-2.0.so libgmodule-2.0.so glibc pixman libepoxy libpixman-1.so mesa numactl libnuma.so qemu-common=$pkgver-$pkgrel virglrenderer) + mv -v $pkgname/* "$pkgdir" + _install_licenses +} + +package_qemu-vmsr-helper() { + pkgdesc="QEMU persistent reservation utility" + depends=(gcc-libs glib2 libglib-2.0.so libgmodule-2.0.so glibc gnutls libcap-ng libcap-ng.so liburing liburing.so numactl libnuma.so pam libpam.so qemu-common=$pkgver-$pkgrel) + mv -v $pkgname/* "$pkgdir" + install -vDm 644 $pkgbase-$pkgver/contrib/systemd/$pkgname.{service,socket} -t "$pkgdir/usr/lib/systemd/system/" + _install_licenses +} + +package_qemu-base() { + pkgdesc="A basic QEMU setup for headless environments" + depends=( + qemu-common=$pkgver-$pkgrel + qemu-img=$pkgver-$pkgrel + qemu-system-x86=$pkgver-$pkgrel + virtiofsd + ) + optdepends=("${_qemu_base_optdepends[@]}") + provides=(qemu=$pkgver) + _install_licenses +} + +package_qemu-desktop() { + pkgdesc="A QEMU setup for desktop environments" + depends=( + qemu-base=$pkgver-$pkgrel + qemu-audio-{alsa,dbus,jack,oss,pa,pipewire,sdl,spice}=$pkgver-$pkgrel + qemu-block-{curl,dmg,nfs,ssh}=$pkgver-$pkgrel + qemu-chardev-spice=$pkgver-$pkgrel + qemu-hw-display-{qxl,virtio-gpu{,-{gl,pci,pci-gl}}}=$pkgver-$pkgrel + qemu-hw-display-virtio-vga{,-gl}=$pkgver-$pkgrel + qemu-hw-usb-{host,redirect,smartcard}=$pkgver-$pkgrel + qemu-ui-{curses,dbus,egl-headless,gtk,opengl,sdl,spice-{app,core}}=$pkgver-$pkgrel + qemu-vhost-user-gpu=$pkgver-$pkgrel + ) + optdepends=("${_qemu_desktop_optdepends[@]}") + provides=(qemu=$pkgver) + _install_licenses +} + +package_qemu-emulators-full() { + pkgdesc="All QEMU user mode and system emulators" + depends=( + qemu-system-{aarch64,alpha,arm,avr,hppa,loongarch64,m68k,microblaze,mips,or1k,ppc,riscv,rx,s390x,sh4,sparc,tricore,x86,xtensa}=$pkgver-$pkgrel + qemu-user=$pkgver-$pkgrel + ) + _install_licenses +} + +package_qemu-full() { + pkgdesc="A full QEMU setup" + depends=( + qemu-audio-{alsa,dbus,jack,oss,pa,sdl,spice}=$pkgver-$pkgrel + qemu-block-{gluster,iscsi}=$pkgver-$pkgrel + qemu-chardev-baum=$pkgver-$pkgrel + qemu-desktop=$pkgver-$pkgrel + qemu-docs=$pkgver-$pkgrel + qemu-emulators-full=$pkgver-$pkgrel + qemu-hw-s390x-virtio-gpu-ccw=$pkgver-$pkgrel + qemu-pr-helper=$pkgver-$pkgrel + qemu-tests=$pkgver-$pkgrel + qemu-tools=$pkgver-$pkgrel + qemu-user=$pkgver-$pkgrel + qemu-vmsr-helper=$pkgver-$pkgrel + ) + optdepends=("${_qemu_full_optdepends[@]}") + provides=(qemu=$pkgver) + _install_licenses +} + +# vim:set ts=2 sw=2 et: diff --git a/bridge.conf b/bridge.conf new file mode 100644 index 000000000000..a573665d37fb --- /dev/null +++ b/bridge.conf @@ -0,0 +1 @@ +allow virbr0 diff --git a/build-most-modules-statically-hack.diff b/build-most-modules-statically-hack.diff new file mode 100644 index 000000000000..c845e8197774 --- /dev/null +++ b/build-most-modules-statically-hack.diff @@ -0,0 +1,40 @@ +From: Michael Tokarev <mjt@tls.msk.ru> +Subject: build most modules statically (hack) + +This hack makes the build procedure to build most modules statically, +except block and gui modules which goes into their own packages. +The rest are built into the executables directly in order to make +qemu-system-common package (where all other modules goes) to be +more-or-less version-independent. + +There's little reason to build these as modules or to ship them in +separate packages. + +diff --git a/meson.build b/meson.build +index e3386196ba..a28f7d10f1 100644 +--- a/meson.build ++++ b/meson.build +@@ -1587,13 +1587,19 @@ softmmu_mods = [] + foreach d, list : modules + foreach m, module_ss : list + if enable_modules and targetos != 'windows' +- module_ss = module_ss.apply(config_all, strict: false) +- sl = static_library(d + '-' + m, [genh, module_ss.sources()], +- dependencies: [modulecommon, module_ss.dependencies()], pic: true) ++ module_dn = module_ss.apply(config_all, strict: false) ++ sl = static_library(d + '-' + m, [genh, module_dn.sources()], ++ dependencies: [modulecommon, module_dn.dependencies()], pic: true) + if d == 'block' + block_mods += sl + else +- softmmu_mods += sl ++ # we only build 2 non-block modules as modules: it is the gui part ++ if d + '-' + m in [ 'ui-gtk', 'ui-sdl', 'audio-pa' ] ++ softmmu_mods += sl ++ else ++ warning('Compiling module statically: ' + d + '-' + m) ++ softmmu_ss.add_all(module_ss) ++ endif + endif + else + if d == 'block' diff --git a/keys/pgp/CEACC9E15534EBABB82D3FA03353C9CEF108B584.asc b/keys/pgp/CEACC9E15534EBABB82D3FA03353C9CEF108B584.asc new file mode 100644 index 000000000000..6a17a90de427 --- /dev/null +++ b/keys/pgp/CEACC9E15534EBABB82D3FA03353C9CEF108B584.asc @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +wGZO/aJg0m6uWSWk +=HhAs +-----END PGP PUBLIC KEY BLOCK----- diff --git a/qemu-8.1.1-static_regression.patch b/qemu-8.1.1-static_regression.patch new file mode 100644 index 000000000000..5730c92f2a66 --- /dev/null +++ b/qemu-8.1.1-static_regression.patch @@ -0,0 +1,13 @@ +diff --git a/linux-user/elfload.c b/linux-user/elfload.c +index 7c95098e3e..d52d47c5c3 100644 +--- a/linux-user/elfload.c ++++ b/linux-user/elfload.c +@@ -3327,7 +3327,7 @@ static void load_elf_image(const char *image_name, int image_fd, + info->start_data = -1; + info->end_data = 0; + /* Usual start for brk is after all sections of the main executable. */ +- info->brk = TARGET_PAGE_ALIGN(hiaddr + load_bias); ++ info->brk = TARGET_PAGE_ALIGN(hiaddr); + info->elf_flags = ehdr->e_flags; + + prot_exec = PROT_EXEC; diff --git a/qemu-9.2.0-struct_sched_attr.patch b/qemu-9.2.0-struct_sched_attr.patch new file mode 100644 index 000000000000..58dffb869717 --- /dev/null +++ b/qemu-9.2.0-struct_sched_attr.patch @@ -0,0 +1,50 @@ +From 27a8d899c7a100fd5aa040a8b993bb257687c393 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 7 Feb 2025 16:09:20 +0000 +Subject: [PATCH] linux-user: Do not define struct sched_attr if libc headers + do + +glibc 2.41+ has added [1] definitions for sched_setattr and +sched_getattr functions and struct sched_attr. Therefore, it needs +to be checked for here as well before defining sched_attr, to avoid +a compilation failure. + +Define sched_attr conditionally only when SCHED_ATTR_SIZE_VER0 is +not defined. + +[1] https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=21571ca0d70302909cf72707b2a7736cf12190a0;hp=298bc488fdc047da37482f4003023cb9adef78f8 + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2799 +Cc: qemu-stable@nongnu.org +Reviewed-by: Peter Maydell <peter.maydell@linaro.org> +Signed-off-by: Peter Maydell <peter.maydell@linaro.org> +--- + linux-user/syscall.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/linux-user/syscall.c b/linux-user/syscall.c +index 6ee02383daf..df5ed18062c 100644 +--- a/linux-user/syscall.c ++++ b/linux-user/syscall.c +@@ -360,7 +360,8 @@ _syscall3(int, sys_sched_getaffinity, pid_t, pid, unsigned int, len, + #define __NR_sys_sched_setaffinity __NR_sched_setaffinity + _syscall3(int, sys_sched_setaffinity, pid_t, pid, unsigned int, len, + unsigned long *, user_mask_ptr); +-/* sched_attr is not defined in glibc */ ++/* sched_attr is not defined in glibc < 2.41 */ ++#ifndef SCHED_ATTR_SIZE_VER0 + struct sched_attr { + uint32_t size; + uint32_t sched_policy; +@@ -373,6 +374,7 @@ struct sched_attr { + uint32_t sched_util_min; + uint32_t sched_util_max; + }; ++#endif + #define __NR_sys_sched_getattr __NR_sched_getattr + _syscall4(int, sys_sched_getattr, pid_t, pid, struct sched_attr *, attr, + unsigned int, size, unsigned int, flags); +-- +GitLab + diff --git a/qemu-9.2.2-libnfs6.patch b/qemu-9.2.2-libnfs6.patch new file mode 100644 index 000000000000..0208de38c585 --- /dev/null +++ b/qemu-9.2.2-libnfs6.patch @@ -0,0 +1,113 @@ +diff -Nurp qemu-9.2.2/block/nfs.c qemu-9.2.2-libnfs6/block/nfs.c +--- qemu-9.2.2/block/nfs.c 2025-02-24 15:36:36.000000000 +0100 ++++ qemu-9.2.2-libnfs6/block/nfs.c 2025-03-04 12:48:22.163719876 +0100 +@@ -70,7 +70,9 @@ typedef struct NFSRPC { + BlockDriverState *bs; + int ret; + int complete; ++#ifndef LIBNFS_API_V2 + QEMUIOVector *iov; ++#endif + struct stat *st; + Coroutine *co; + NFSClient *client; +@@ -246,6 +248,7 @@ nfs_co_generic_cb(int ret, struct nfs_co + NFSRPC *task = private_data; + task->ret = ret; + assert(!task->st); ++#ifndef LIBNFS_API_V2 + if (task->ret > 0 && task->iov) { + if (task->ret <= task->iov->size) { + qemu_iovec_from_buf(task->iov, 0, data, task->ret); +@@ -253,6 +256,7 @@ nfs_co_generic_cb(int ret, struct nfs_co + task->ret = -EIO; + } + } ++#endif + if (task->ret < 0) { + error_report("NFS Error: %s", nfs_get_error(nfs)); + } +@@ -266,15 +270,43 @@ static int coroutine_fn nfs_co_preadv(Bl + { + NFSClient *client = bs->opaque; + NFSRPC task; ++#ifdef LIBNFS_API_V2 ++ char *buf = NULL; ++ bool my_buffer = false; ++#endif + + nfs_co_init_task(bs, &task); ++ ++#ifdef LIBNFS_API_V2 ++ if (iov->niov != 1) { ++ buf = g_try_malloc(bytes); ++ if (bytes && buf == NULL) { ++ return -ENOMEM; ++ } ++ my_buffer = true; ++ } else { ++ buf = iov->iov[0].iov_base; ++ } ++#else + task.iov = iov; ++#endif + + WITH_QEMU_LOCK_GUARD(&client->mutex) { ++#ifdef LIBNFS_API_V2 ++ if (nfs_pread_async(client->context, client->fh, ++ buf, bytes, offset, ++ nfs_co_generic_cb, &task) != 0) { ++ if (my_buffer) { ++ g_free(buf); ++ } ++ return -ENOMEM; ++ } ++#else + if (nfs_pread_async(client->context, client->fh, + offset, bytes, nfs_co_generic_cb, &task) != 0) { + return -ENOMEM; + } ++#endif + + nfs_set_events(client); + } +@@ -282,6 +314,15 @@ static int coroutine_fn nfs_co_preadv(Bl + qemu_coroutine_yield(); + } + ++#ifdef LIBNFS_API_V2 ++ if (task.ret > 0) { ++ qemu_iovec_from_buf(iov, 0, buf, task.ret); ++ } ++ if (my_buffer) { ++ g_free(buf); ++ } ++#endif ++ + if (task.ret < 0) { + return task.ret; + } +@@ -318,7 +359,11 @@ static int coroutine_fn nfs_co_pwritev(B + + WITH_QEMU_LOCK_GUARD(&client->mutex) { + if (nfs_pwrite_async(client->context, client->fh, ++#ifdef LIBNFS_API_V2 ++ buf, bytes, offset, ++#else + offset, bytes, buf, ++#endif + nfs_co_generic_cb, &task) != 0) { + if (my_buffer) { + g_free(buf); +diff -Nurp qemu-9.2.2/meson.build qemu-9.2.2-libnfs6/meson.build +--- qemu-9.2.2/meson.build 2025-02-24 15:36:36.000000000 +0100 ++++ qemu-9.2.2-libnfs6/meson.build 2025-03-04 12:50:25.273920473 +0100 +@@ -1122,7 +1122,7 @@ endif + + libnfs = not_found + if not get_option('libnfs').auto() or have_block +- libnfs = dependency('libnfs', version: ['>=1.9.3', '<6.0.0'], ++ libnfs = dependency('libnfs', version: '>=1.9.3', + required: get_option('libnfs'), + method: 'pkg-config') + endif diff --git a/qemu-common.install b/qemu-common.install new file mode 100644 index 000000000000..3f6eaaace76b --- /dev/null +++ b/qemu-common.install @@ -0,0 +1,14 @@ +post_install() { + if [[ -d /run/udev ]]; then + local file files=( + /sys/devices/virtual/misc/vhost-net + ) + + # trigger change event when modules are already loaded + for file in "${files[@]}"; do + if [[ -d $file ]]; then + udevadm trigger --action=change "$file" + fi + done + fi +} diff --git a/qemu-ga.conf b/qemu-ga.conf new file mode 100644 index 000000000000..09fed0eb1066 --- /dev/null +++ b/qemu-ga.conf @@ -0,0 +1,10 @@ +[general] +daemonize = 0 +fsfreeze-hook = /etc/qemu/fsfreeze-hook +method = virtio-serial +path = /dev/virtio-ports/org.qemu.guest_agent.0 +pidfile = /run/qemu-ga.pid +statedir = /run +verbose = 0 +# blacklist = +# logfile = diff --git a/qemu-guest-agent.install b/qemu-guest-agent.install new file mode 100644 index 000000000000..5c32172cdb6c --- /dev/null +++ b/qemu-guest-agent.install @@ -0,0 +1,9 @@ +post_upgrade() { + if (( $(vercmp "$2" '5.1.0-2') < 0 )); then + printf "NOTE: The qemu-ga.service has been renamed to qemu-guest-agent.service\n" + fi + if systemctl is-enabled --quiet qemu-ga.service &> /dev/null; then + systemctl disable qemu-ga.service + systemctl enable qemu-guest-agent.service + fi +} diff --git a/qemu-sysusers.conf b/qemu-sysusers.conf new file mode 100644 index 000000000000..fc3ced96f7a5 --- /dev/null +++ b/qemu-sysusers.conf @@ -0,0 +1,2 @@ +u qemu - "QEMU user" - - +m qemu kvm |