summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--65-kvm.rules1
-rw-r--r--99-qemu-guest-agent.rules1
-rw-r--r--PKGBUILD1237
-rw-r--r--bridge.conf1
-rw-r--r--build-most-modules-statically-hack.diff40
-rw-r--r--keys/pgp/CEACC9E15534EBABB82D3FA03353C9CEF108B584.asc52
-rw-r--r--qemu-8.1.1-static_regression.patch13
-rw-r--r--qemu-9.2.0-struct_sched_attr.patch50
-rw-r--r--qemu-9.2.2-libnfs6.patch113
-rw-r--r--qemu-common.install14
-rw-r--r--qemu-ga.conf10
-rw-r--r--qemu-guest-agent.install9
-rw-r--r--qemu-sysusers.conf2
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