diff --git a/extra/qemu/99-qemu-guest-agent.rules b/extra/qemu/99-qemu-guest-agent.rules new file mode 100644 index 000000000..d72a4183b --- /dev/null +++ b/extra/qemu/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/extra/qemu/PKGBUILD b/extra/qemu/PKGBUILD index d08cb9f5f..44d5a4178 100644 --- a/extra/qemu/PKGBUILD +++ b/extra/qemu/PKGBUILD @@ -1,36 +1,53 @@ -# Maintainer: Tobias Powalowski -# Contributor: David Runge +# Maintainer: David Runge +# Contributor: Tobias Powalowski # Contributor: Sébastien "Seblu" Luttringer # ALARM: Kevin Mihelich # - remove makedepends on numactl and seabios, revert not installing qemu seabios files -# - define ARM _corearchs # - remove makedepend on ceph, drop qemu-block-rbd package pkgbase=qemu pkgname=( - qemu - qemu-headless - qemu-arch-extra - qemu-headless-arch-extra - qemu-block-{iscsi,gluster} + qemu-common + qemu-audio-{alsa,dbus,jack,oss,pa,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,cris,hppa,m68k,microblaze,mips,nios2,or1k,ppc,riscv,rx,s390x,sh4,sparc,tricore,x86,xtensa} + qemu-tests + qemu-tools + qemu-ui-{curses,dbus,egl-headless,gtk,opengl,sdl,spice-{app,core}} + qemu-user + qemu-vhost-user-gpu + qemu-virtiofsd + qemu-{base,desktop,emulators-full,full} ) +pkgver=7.0.0 +pkgrel=9 pkgdesc="A generic and open source machine emulator and virtualizer" -pkgver=6.2.0 -pkgrel=4 arch=(x86_64) +url="https://www.qemu.org/" license=(GPL2 LGPL2.1) -url="https://wiki.qemu.org/" # 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) +# TODO: package /usr/share/qemu/sgabios.bin for qemu-system-x86 (sgabios) +# TODO: package static libs of glib2 and pcre for qemu-user-static makedepends=( alsa-lib brltty bzip2 cairo curl - cdrtools dtc fuse3 gcc-libs @@ -56,10 +73,12 @@ makedepends=( liburing libusb libx11 + libxml2 libxkbcommon lzo mesa meson + multipath-tools ncurses ndctl pam @@ -76,345 +95,903 @@ makedepends=( vde2 virglrenderer vte3 - xfsprogs zlib zstd ) +# NOTE: currently the debug package for qemu >= 7.0.0 contains an invalid /build dir options=(debug) -source=(https://download.qemu.org/qemu-$pkgver.tar.xz{,.sig} - virtiofsd-glibc235.patch::https://github.com/qemu/qemu/commit/7b223e38603de3a75602e14914d26f9d4baf52eb.patch - qemu-guest-agent.service - 65-kvm.rules) -sha512sums=('e9f8231c9e1cfcc41cb47f10a55d63f6b8aee307af00cf6acf64acb7aa4f49fa7e9d6330703a2abea15d8b7bbaba7d3cb08c83edd98d82642367b527df730817' +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 +) +sha512sums=('44ecd10c018a3763e1bc87d1d35b98890d0d5636acd69fe9b5cadf5024d5af6a31684d60cbe1c3370e02986434c1fb0ad99224e0e6f6fe7eda169992508157b1' 'SKIP' - '3b8b1e346d02516195c8ba4a1e88a2f0d69639b75cdd5e57185db624ba514f49b6d373a7fb2ec77133fb75cd43a11ce0e96b7a948ec9fc7140ae7ef26c203cb6' - '269c0f0bacbd06a3d817fde02dce26c99d9f55c9e3b74bb710bd7e5cdde7a66b904d2eb794c8a605bf9305e4e3dee261a6e7d4ec9d9134144754914039f176e4' - 'bdf05f99407491e27a03aaf845b7cc8acfa2e0e59968236f10ffc905e5e3d5e8569df496fd71c887da2b5b8d1902494520c7da2d3a8258f7fd93a881dd610c99') + '7b412ffa5dcda47b0a4ec9e2c5e5e1d9eaaaf0a087b7ea3ead3e706ba4c9cafb919beadd088a0299b6f7aab753b81a5eafb545b4842ee5f26646d16544dd02a7' + '6e838773d63ae0ffdffe2b891bf611d8f5f3c67a9bc4cbbedf8363c150c2c9971c8e44d92270bc581af40eb0ece02192760bcdd6aee229fff55635f3a4825afa' + '985c2c7a6b5217c87a15b45368089ee91b2f9027b070f9eafa448a18b27ae0d9edd964d52e134b9c1f4aeef4d6aae88afd3f454551ca898affef7f9d28b99b8f' + 'bdf05f99407491e27a03aaf845b7cc8acfa2e0e59968236f10ffc905e5e3d5e8569df496fd71c887da2b5b8d1902494520c7da2d3a8258f7fd93a881dd610c99' + '93b905046fcea8a0a89513b9259c222494ab3b91319dde23baebcb40dc17376a56661b159b99785d6e816831974a0f3cbd7b2f7d89e5fc3c258f88f4492f3839') +b2sums=('ceda6d9f1a585298bd49fed61e8bb35f0064ad8388a9f979c8bd68a38bfe1a47c5bb055e5f74f970c2c440957042b9de4a861524120040c56e4cd8b56c5cfb68' + 'SKIP' + 'b1eca364aa60f130ff5e649f5d004d3fcb75356d3421a4542efdfc410d39b40d9434d15e1dd7bbdbd315cb72b5290d3ea5f77f9c41961a5601cd28ef7bbe72e8' + '2102e4a34e11e406e9606c97e026e7b92e887e296a7f77b9cede1b37119d0df33735f3588628167b2b8e32244c196c491bfab623e2caddac9014d445aa2a6d98' + '69177b962d2fda20cafdbc6226fd017b5ca5a0f69f866d055dc1c744b7b2955059f47c693cfb5b4c863ec159569fdabd4327ab4b8a95566a68cd8ce38e339c7a' + '3559fe9c4f744194939770047a0a02d07ff791c845a80726d0bc7b8c4801ed5f11150e7d5adab813844b3dab1cf38c3a5a87fb6efbb8fc9dccdda9fa56409ed8' + 'a9a2bdfeeb44eb86cbe88ac7c65f72800bdb2fd5cecb02f3a258cf9470b52832180aab43c89d481f7fd4d067342a9a27dd6c8a94d625b95d6e2b912e47d274e7') validpgpkeys=('CEACC9E15534EBABB82D3FA03353C9CEF108B584') # Michael Roth -case $CARCH in - i?86) _corearch=i386 ;; - x86_64) _corearch=x86_64 ;; - aarch64) _corearch=aarch64 ;; - arm*) _corearch=arm ;; -esac +_qemu_system_deps=( + dtc + fuse3 + gcc-libs + glib2 libgio-2.0.so libglib-2.0.so libgmodule-2.0.so + gnutls + libaio + libbpf libbpf.so + libjpeg-turbo libjpeg.so + libpng + libsasl + libseccomp libseccomp.so + libslirp libslirp.so + liburing liburing.so + lzo + ndctl + pam libpam.so + pixman libpixman-1.so + qemu-common + snappy + vde2 + zlib + zstd libzstd.so +) + +# TODO: qemu-user-static +# 'qemu-user-static: for static user mode emulation of QEMU targets' +_qemu_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-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-gluster: for Gluster block driver' + 'qemu-block-iscsi: for iSCSI block driver' + 'qemu-block-nfs: for NFS block driver' + 'qemu-block-ssh: for SSH block driver' + 'qemu-chardev-baum: for Baum chardev driver' + 'qemu-chardev-spice: for spice chardev driver' + 'qemu-docs: for documentation' + 'qemu-hw-display-qxl: for QXL display device' + 'qemu-hw-display-virtio-gpu-gl: for virtio-gpu-gl display device' + 'qemu-hw-display-virtio-gpu: for virtio-gpu display device' + 'qemu-hw-display-virtio-gpu-pci: for virtio-gpu-pci display device' + 'qemu-hw-display-virtio-gpu-pci-gl: for virtio-gpu-pci-gl display device' + 'qemu-hw-display-virtio-vga: for virtio-gpu-vga display device' + 'qemu-hw-display-virtio-vga-gl: for virtio-gpu-vga-gl display device' + 'qemu-hw-s390x-virtio-gpu-ccw: for s390x-virtio-gpu-ccw display device' + 'qemu-hw-usb-host: for USB host device' + 'qemu-hw-usb-redirect: for usbredir device' + 'qemu-hw-usb-smartcard: for USB smartcard device' + 'qemu-img: for manipulating disk images' + '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-cris: for CRIS 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-nios2: for nios2 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-x86: for x86 system emulator' + 'qemu-system-xtensa: for Xtensa system emulator' + 'qemu-tests: for QEMU tests' + 'qemu-tools: for QEMU tools' + 'qemu-ui-curses: for curses 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' + 'qemu-virtiofsd: for virtio-fs shared filesystem daemon' + 'samba: for SMB/CIFS server support' +) + +_pick() { + local p="$1" f d; shift + for f; do + d="$srcdir/$p/${f#$pkgdir/}" + mkdir -p "$(dirname "$d")" + mv "$f" "$d" + rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")" + done +} prepare() { - mkdir build-{full,headless} - mkdir -p extra-arch-{full,headless}/usr/{bin,share/qemu} + # extract licenses for TCG + sed -n '1,23p' $pkgbase-$pkgver/tcg/tcg-internal.h > tcg.LICENSE.MIT + sed -n '1,23p' $pkgbase-$pkgver/tcg/arm/tcg-target.c.inc > tcg-arm.LICENSE.MIT + sed -n '1,23p' $pkgbase-$pkgver/tcg/tci/tcg-target.h > tci.LICENSE.MIT - cd ${pkgname}-${pkgver} - patch -p1 < ../virtiofsd-glibc235.patch # FS#73856 + # install qemu-pr-helper.socket to sockets.target + sed -e 's/multi-user.target/sockets.target/g' -i $pkgbase-$pkgver/contrib/systemd/qemu-pr-helper.socket + + # create build dir + mkdir -vp build + mkdir -vp build-static } build() { - _build full + # Build only minimal debug info to reduce size + CFLAGS+=' -g1' + CXXFLAGS+=' -g1' + ( + cd build + ../$pkgbase-$pkgver/configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --libexecdir=/usr/lib/qemu \ + --localstatedir=/var \ + --docdir=/usr/share/doc/qemu \ + --enable-modules \ + --enable-sdl \ + --enable-slirp=system \ + --enable-tpm \ + --smbd=/usr/bin/smbd \ + --tls-priority=@QEMU,SYSTEM \ + --with-coroutine=ucontext + ninja + ) - _build headless \ - --disable-sdl \ - --disable-gtk \ - --disable-vte \ - --disable-brlapi \ - --disable-opengl \ - --disable-virglrenderer \ - --disable-alsa \ - --disable-jack \ - --disable-oss \ - --disable-pa \ - --disable-sdl +# TODO: qemu-user-static +# ( +# cd build-static +# ../$pkgbase-$pkgver/configure \ +# --enable-attr \ +# --enable-linux-user \ +# --enable-tcg \ +# --disable-install-blobs \ +# --static +# ninja +# ) } -_build() ( - cd build-$1 - - ../${pkgname}-${pkgver}/configure \ - --prefix=/usr \ - --sysconfdir=/etc \ - --localstatedir=/var \ - --libexecdir=/usr/lib/qemu \ - --smbd=/usr/bin/smbd \ - --enable-modules \ - --enable-sdl \ - --enable-slirp=system \ - --enable-xfsctl \ - "${@:2}" - - ninja -) - -package_qemu() { - depends=( - alsa-lib libasound.so - bzip2 libbz2.so - cairo - curl libcurl.so - dtc - fuse3 - gcc-libs - gdk-pixbuf2 libgdk_pixbuf-2.0.so - glib2 libgio-2.0.so libglib-2.0.so libgmodule-2.0.so libgobject-2.0.so - gnutls - gtk3 libgdk-3.so libgtk-3.so - jack libjack.so - libaio - libbpf libbpf.so - libcacard - libcap-ng libcap-ng.so - libepoxy - libjpeg libjpeg.so - libnfs - libpng - libpulse libpulse.so - libsasl - libseccomp libseccomp.so - libslirp libslirp.so - libssh libssh.so - libusb libusb-1.0.so - liburing liburing.so - libx11 - libxkbcommon libxkbcommon.so - lzo - mesa - ncurses libncursesw.so - ndctl - pam libpam.so - pixman libpixman-1.so - sdl2 - sdl2_image - snappy - spice libspice-server.so - systemd-libs libudev.so - usbredir - virglrenderer - vde2 - vte3 libvte-2.91.so - zlib - zstd libzstd.so - ) - optdepends=( - 'brltty: for braille device support' - 'qemu-arch-extra: extra architectures support' - ) - provides=(qemu-headless) - conflicts=(qemu-headless) - replaces=(qemu-kvm) - - _package full -} - -package_qemu-headless() { - pkgdesc="QEMU without GUI" - depends=( - bzip2 libbz2.so - curl libcurl.so - dtc - fuse3 - gcc-libs - glib2 libgio-2.0.so libglib-2.0.so libgmodule-2.0.so libgobject-2.0.so - gnutls - libaio - libbpf libbpf.so - libcacard - libcap-ng libcap-ng.so - libjpeg libjpeg.so - libnfs - libpng - libsasl - libseccomp libseccomp.so - libslirp libslirp.so - libssh libssh.so - libusb libusb-1.0.so - liburing liburing.so - libxkbcommon libxkbcommon.so - lzo - ndctl - ncurses libncursesw.so - pam libpam.so - pixman libpixman-1.so - snappy - spice libspice-server.so - systemd-libs libudev.so - usbredir - vde2 - zlib - zstd libzstd.so - ) - optdepends=('qemu-headless-arch-extra: extra architectures support') - - _package headless -} - -_package() { - optdepends+=('samba: SMB/CIFS server support' - 'qemu-block-iscsi: iSCSI block support' - 'qemu-block-gluster: glusterfs block support') - install=qemu.install - options=(!strip !emptydirs) - - DESTDIR="$pkgdir" ninja -C build-$1 install "${@:2}" - - # systemd stuff - install -Dm644 65-kvm.rules "$pkgdir/usr/lib/udev/rules.d/65-kvm.rules" - - # remove conflicting /var/run directory - cd "$pkgdir" - rm -r var - - cd usr/lib - - # bridge_helper needs suid - # https://bugs.archlinux.org/task/32565 - chmod u+s qemu/qemu-bridge-helper - - # remove split block modules - rm qemu/block-{iscsi,gluster}.so - - cd ../bin - - # remove extra arch - for _bin in qemu-*; do - [[ -f $_bin ]] || continue - - case ${_bin#qemu-} in - # guest agent - ga) rm "$_bin"; continue ;; - - # tools - edid|img|io|keymap|nbd|pr-helper|storage-daemon) continue ;; - - # core emu - system-${_corearch}) continue ;; - esac - - mv "$_bin" "$srcdir/extra-arch-$1/usr/bin" - done - - cd ../share/qemu - for _blob in *; do - [[ -f $_blob ]] || continue - - case $_blob in - # provided by edk2-ovmf package - edk2-*) rm "$_blob"; continue ;; - - # iPXE ROMs - efi-*|pxe-*) continue ;; - - # core blobs - bios-microvm.bin|kvmvapic.bin|linuxboot*|multiboot.bin|sgabios.bin|vgabios*) continue ;; - - # Trace events definitions - trace-events*) continue ;; - esac - - mv "$_blob" "$srcdir/extra-arch-$1/usr/share/qemu" - done - - # provided by edk2-ovmf package - rm -r firmware - - cd .. - if [ "$1" = headless ]; then rm -r {applications,icons}; fi -} - -package_qemu-arch-extra() { - pkgdesc="QEMU for foreign architectures" - depends=( - dtc - fuse3 - gcc-libs - gnutls - libaio - libbpf libbpf.so - glib2 libgio-2.0.so libglib-2.0.so libgobject-2.0.so libgmodule-2.0.so - libjpeg libjpeg.so - libpng - libsasl - libseccomp libseccomp.so - libslirp libslirp.so - liburing liburing.so - lzo - ndctl - pam libpam.so - pixman libpixman-1.so - snappy - systemd-libs - libudev.so - qemu - vde2 - zlib - zstd - libzstd.so - ) - optdepends=( - 'edk2-armvirt: for aarch64 UEFI support' - 'edk2-ovmf: for ia32 and x64 UEFI support' - ) - provides=(qemu-headless-arch-extra) - conflicts=(qemu-headless-arch-extra) +package_qemu-common() { + license+=(BSD MIT) + depends=(gcc-libs glib2 libglib-2.0.so libgmodule-2.0.so hicolor-icon-theme libcap-ng libcap-ng.so) + install=$pkgname.install options=(!strip) - mv -v extra-arch-full/usr "$pkgdir" + meson install -C build --destdir "$pkgdir" + + install -vdm 755 "$pkgdir/usr/lib/binfmt.d/" + $pkgbase-$pkgver/scripts/qemu-binfmt-conf.sh --systemd ALL --exportdir "$pkgdir/usr/lib/binfmt.d/" --qemu-path "/usr/bin" + +# TODO: qemu-user-static +# for _conf in "$pkgdir/usr/lib/binfmt.d/"*; do +# cat "$_conf" | tr -d '\n' | sed "s/:$/-static:F/" > "${_conf//.conf/-static.conf}" +# done +# +# meson install -C build-static --destdir "$pkgdir" +# for _src in "$pkgdir/usr/bin/qemu-"*; do +# mv -v "$_src" "$pkgdir/usr/bin/$(basename "$_src")-static" +# done + + 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-$pkgver/LICENSE *LICENSE* -t "$pkgdir/usr/share/licenses/$pkgbase/" + install -vDm 644 $pkgbase-sysusers.conf "$pkgdir/usr/lib/sysusers.d/$pkgbase.conf" + + # 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 edk2-{armvirt,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,cris,hppa,i386,m68k,microblaze{,el},mips{,64,64el,el},nios2,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-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/qemu/palcode-clipper + _pick qemu-system-alpha usr/share/man/man1/qemu-system-alpha.1* + + _pick qemu-system-arm usr/bin/qemu-system-arm + _pick qemu-system-arm usr/share/qemu/npcm7xx_bootrom.bin + _pick qemu-system-arm usr/share/man/man1/qemu-system-arm.1* + + _pick qemu-system-avr usr/bin/qemu-system-avr + _pick qemu-system-avr usr/share/man/man1/qemu-system-avr.1* + + _pick qemu-system-cris usr/bin/qemu-system-cris + _pick qemu-system-cris usr/share/man/man1/qemu-system-cris.1* + + _pick qemu-system-hppa usr/bin/qemu-system-hppa + _pick qemu-system-hppa usr/share/qemu/hppa-firmware.img + _pick qemu-system-hppa usr/share/man/man1/qemu-system-hppa.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/qemu/petalogix-*.dtb + _pick qemu-system-microblaze usr/share/man/man1/qemu-system-microblaze{,el}.1* + + _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-nios2 usr/bin/qemu-system-nios2 + _pick qemu-system-nios2 usr/share/man/man1/qemu-system-nios2.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/qemu/{bamboo,canyonlands}.dtb + # NOTE: needs to be replaced by openbios + _pick qemu-system-ppc usr/share/qemu/openbios-ppc + _pick qemu-system-ppc usr/share/qemu/qemu_vga.ndrv + _pick qemu-system-ppc usr/share/qemu/skiboot.lid + # NOTE: needs to be replaced by slof + _pick qemu-system-ppc usr/share/qemu/slof.bin + _pick qemu-system-ppc usr/share/qemu/u-boot.e500 + _pick qemu-system-ppc usr/share/qemu/u-boot-sam460-20100605.bin + _pick qemu-system-ppc usr/share/man/man1/qemu-system-ppc{,64}.1* + + _pick qemu-system-riscv usr/bin/qemu-system-riscv{32,64} + _pick qemu-system-riscv usr/share/qemu/opensbi-riscv{32,64}*.bin + _pick qemu-system-riscv usr/share/man/man1/qemu-system-riscv{32,64}.1* + + _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/qemu/s390-{ccw,netboot}.img + _pick qemu-system-s390x usr/share/man/man1/qemu-system-s390x.1* + + _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} + # NOTE: needs to be replaced by openbios + _pick qemu-system-sparc usr/share/qemu/openbios-sparc{32,64} + _pick qemu-system-sparc usr/share/qemu/QEMU,{cgthree,tcx}.bin + _pick qemu-system-sparc usr/share/man/man1/qemu-system-sparc{,64}.1* + + _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/qemu/{kvmvapic,linuxboot,multiboot{,_dma},pvh}.bin + _pick qemu-system-x86 usr/share/qemu/qboot.rom + # NOTE: needs to be replaced by sgabios + _pick qemu-system-x86 usr/share/qemu/sgabios.bin + _pick qemu-system-x86 usr/share/man/man1/qemu-system-{i386,x86_64}.1* + + _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 usr/lib/binfmt.d/*-static.conf + + _pick qemu-user usr/bin/qemu-{aarch64{,_be},alpha,arm{,eb},cris,hexagon,hppa,i386,m68k,microblaze{,el},mips{,64,64el,el,n32,n32el},nios2,or1k,ppc{,64,64le},riscv{32,64},s390x,sh4{,eb},sparc{,32plus,64},x86_64,xtensa{,eb}} + _pick qemu-user 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-virtiofsd usr/lib/qemu/virtiofsd + _pick qemu-virtiofsd usr/share/man/man1/virtiofsd.1* + _pick qemu-virtiofsd usr/share/qemu/vhost-user/50-qemu-virtiofsd.json + ) } -package_qemu-headless-arch-extra() { - pkgdesc="QEMU without GUI, for foreign architectures" - depends=( - dtc - fuse3 - gcc-libs - gnutls - libaio - libbpf libbpf.so - glib2 libgio-2.0.so libglib-2.0.so libgobject-2.0.so libgmodule-2.0.so - libjpeg libjpeg.so - libpng - libsasl - libseccomp libseccomp.so - libslirp libslirp.so - liburing liburing.so - lzo - ndctl - pam libpam.so - pixman libpixman-1.so - snappy - qemu-headless - systemd-libs libudev.so - vde2 - zlib - zstd libzstd.so - ) - optdepends=( - 'edk2-armvirt: for aarch64 UEFI support' - 'edk2-ovmf: for ia32 and x64 UEFI support' - ) - options=(!strip) - - mv -v extra-arch-headless/usr "$pkgdir" +package_qemu-audio-alsa() { + pkgdesc="QEMU ALSA audio driver" + depends=(alsa-lib libasound.so glibc qemu-common) + mv -v $pkgname/* "$pkgdir" } -package_qemu-block-iscsi() { - pkgdesc="QEMU iSCSI block module" - depends=(glibc libiscsi) +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) + mv -v $pkgname/* "$pkgdir" +} - install -vDm 755 build-full/block-iscsi.so -t "$pkgdir/usr/lib/qemu/" +package_qemu-audio-jack() { + pkgdesc="QEMU JACK audio driver" + depends=(jack libjack.so glibc qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-audio-oss() { + pkgdesc="QEMU OSS audio driver" + depends=(glibc qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-audio-pa() { + pkgdesc="QEMU PulseAudio audio driver" + depends=(glibc libpulse libpulse.so qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-audio-sdl() { + pkgdesc="QEMU SDL audio driver" + depends=(glibc qemu-common sdl2) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-audio-spice() { + pkgdesc="QEMU spice audio driver" + depends=(glibc qemu-common qemu-ui-spice-core spice libspice-server.so) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-block-curl() { + pkgdesc="QEMU curl block driver" + depends=(curl libcurl.so gcc-libs glibc qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-block-dmg() { + pkgdesc="QEMU DMG block driver" + depends=(bzip2 libbz2.so glibc qemu-common) + mv -v $pkgname/* "$pkgdir" } package_qemu-block-gluster() { - pkgdesc="QEMU GlusterFS block module" - depends=(glibc glusterfs) + pkgdesc="QEMU Gluster block driver" + depends=(glibc glusterfs qemu-common) + mv -v $pkgname/* "$pkgdir" +} - install -vDm 755 build-full/block-gluster.so -t "$pkgdir/usr/lib/qemu/" +package_qemu-block-iscsi() { + pkgdesc="QEMU iSCSI block driver" + depends=(gcc-libs glibc libiscsi qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-block-nfs() { + pkgdesc="QEMU NFS block driver" + depends=(gcc-libs glibc libnfs qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-block-ssh() { + pkgdesc="QEMU SSH block driver" + depends=(gcc-libs glibc libssh libssh.so qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-chardev-baum() { + pkgdesc="QEMU Baum chardev driver" + depends=(brltty libbrlapi.so glibc qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-chardev-spice() { + pkgdesc="QEMU spice chardev driver" + depends=(libspice-server.so glibc qemu-common qemu-ui-spice-core) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-docs() { + pkgdesc+=" - documentation" + mv -v $pkgname/* "$pkgdir" } package_qemu-guest-agent() { pkgdesc="QEMU Guest Agent" - depends=(gcc-libs glib2 libudev.so liburing) - install=qemu-guest-agent.install + depends=(gcc-libs glib2 libglib-2.0.so libgmodule-2.0.so glibc liburing liburing.so 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 644 $pkgbase-$pkgver/scripts/$pkgname/fsfreeze-hook -t "$pkgdir/etc/$pkgbase/" + install -vdm 755 "$pkgdir/etc/$pkgbase/fsfreeze-hook.d" +} - install -vDm 755 build-full/qga/qemu-ga -t "$pkgdir/usr/bin/" - install -vDm 644 qemu-guest-agent.service -t "$pkgdir/usr/lib/systemd/system/" - install -vDm 755 "$srcdir/qemu-$pkgver/scripts/qemu-guest-agent/fsfreeze-hook" -t "$pkgdir/etc/qemu/" +package_qemu-hw-display-qxl() { + pkgdesc="QEMU QXL display device" + depends=(gcc-libs glibc pixman libpixman-1.so qemu-common qemu-ui-spice-core spice libspice-server.so) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-hw-display-virtio-gpu() { + pkgdesc="QEMU virtio-gpu display device" + depends=(glibc pixman libpixman-1.so qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-hw-display-virtio-gpu-gl() { + pkgdesc="QEMU virtio-gpu-gl display device" + depends=(glibc qemu-common virglrenderer) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-hw-display-virtio-gpu-pci() { + pkgdesc="QEMU virtio-gpu-pci display device" + depends=(qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-hw-display-virtio-gpu-pci-gl() { + pkgdesc="QEMU virtio-gpu-pci-gl display device" + depends=(qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-hw-display-virtio-vga() { + pkgdesc="QEMU virtio-vga display device" + depends=(qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-hw-display-virtio-vga-gl() { + pkgdesc="QEMU virtio-vga-gl display device" + depends=(qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-hw-s390x-virtio-gpu-ccw() { + pkgdesc="QEMU s390x-virtio-gpu-ccw display device" + depends=(qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-aarch64() { + pkgdesc="QEMU system emulator for AARCH64" + depends=("${_qemu_system_deps[@]}" edk2-armvirt systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-alpha() { + pkgdesc="QEMU system emulator for Alpha" + depends=("${_qemu_system_deps[@]}" systemd-libs libudev.so) + options=(!strip) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-arm() { + pkgdesc="QEMU system emulator for ARM" + depends=("${_qemu_system_deps[@]}" systemd-libs libudev.so) + options=(!strip) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-avr() { + pkgdesc="QEMU system emulator for AVR" + depends=("${_qemu_system_deps[@]}") + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-cris() { + pkgdesc="QEMU system emulator for CRIS" + depends=("${_qemu_system_deps[@]}") + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-hppa() { + pkgdesc="QEMU system emulator for HPPA" + depends=("${_qemu_system_deps[@]}" systemd-libs libudev.so) + options=(!strip) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-m68k() { + pkgdesc="QEMU system emulator for ColdFire (m68k)" + depends=("${_qemu_system_deps[@]}") + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-microblaze() { + pkgdesc="QEMU system emulator for Microblaze" + depends=("${_qemu_system_deps[@]}") + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-mips() { + pkgdesc="QEMU system emulator for MIPS" + depends=("${_qemu_system_deps[@]}" systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-nios2() { + pkgdesc="QEMU system emulator for nios2" + depends=("${_qemu_system_deps[@]}") + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-or1k() { + pkgdesc="QEMU system emulator for OpenRisc32" + depends=("${_qemu_system_deps[@]}") + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-ppc() { + pkgdesc="QEMU system emulator for PPC" + # NOTE: will require openbios + depends=("${_qemu_system_deps[@]}" systemd-libs libudev.so) + options=(!strip) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-riscv() { + pkgdesc="QEMU system emulator for RISC-V" + depends=("${_qemu_system_deps[@]}" systemd-libs libudev.so) + options=(!strip) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-rx() { + pkgdesc="QEMU system emulator for RX" + depends=("${_qemu_system_deps[@]}") + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-s390x() { + pkgdesc="QEMU system emulator for S390" + depends=("${_qemu_system_deps[@]}") + options=(!strip) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-sh4() { + pkgdesc="QEMU system emulator for SH4" + depends=("${_qemu_system_deps[@]}" systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-sparc() { + pkgdesc="QEMU system emulator for SPARC" + # NOTE: will require openbios + depends=("${_qemu_system_deps[@]}" systemd-libs libudev.so) + options=(!strip) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-tricore() { + pkgdesc="QEMU system emulator for tricore" + depends=("${_qemu_system_deps[@]}") + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-x86() { + pkgdesc="QEMU system emulator for x86" + depends=("${_qemu_system_deps[@]}" edk2-ovmf seabios systemd-libs libudev.so) + options=(!strip) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-system-xtensa() { + pkgdesc="QEMU system emulator for Xtensa" + depends=("${_qemu_system_deps[@]}" systemd-libs libudev.so) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-hw-usb-host() { + pkgdesc="QEMU USB host device" + depends=(glibc libusb libusb-1.0.so qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-hw-usb-redirect() { + pkgdesc="QEMU usbredir device" + depends=(gcc-libs glibc qemu-common usbredir) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-hw-usb-smartcard() { + pkgdesc="QEMU USB smartcard device" + depends=(gcc-libs libcacard glib2 libglib-2.0.so glibc qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +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 pam libpam.so zlib zstd libzstd.so) + mv -v $pkgname/* "$pkgdir" +} + +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 pam libpam.so qemu-common) + mv -v $pkgname/* "$pkgdir" + install -vDm 644 $pkgbase-$pkgver/contrib/systemd/$pkgname.{service,socket} -t "$pkgdir/usr/lib/systemd/system/" +} + +package_qemu-tests() { + pkgdesc="QEMU tests" + depends=(qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +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 python qemu-common) + 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/" +} + +package_qemu-ui-curses() { + pkgdesc="QEMU curses UI driver" + depends=(gcc-libs glib2 libglib-2.0.so glibc ncurses libncursesw.so qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +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) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-ui-egl-headless() { + pkgdesc="QEMU EGL headless UI driver" + depends=(glibc libepoxy qemu-common qemu-ui-opengl) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-ui-gtk() { + pkgdesc="QEMU GTK UI driver" + depends=( + cairo + gcc-libs + 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 + qemu-ui-opengl + vte3 libvte-2.91.so + ) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-ui-opengl() { + pkgdesc="QEMU OpenGL UI driver" + depends=(glibc libepoxy mesa pixman libpixman-1.so qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-ui-sdl() { + pkgdesc="QEMU SDL UI driver" + depends=(glib2 libglib-2.0.so glibc libx11 pixman libpixman-1.so qemu-common sdl2_image sdl2) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-ui-spice-app() { + pkgdesc="QEMU spice app UI driver" + depends=(glib2 libgio-2.0.so libglib-2.0.so glibc qemu-common qemu-chardev-spice qemu-ui-spice-core) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-ui-spice-core() { + pkgdesc="QEMU spice core UI driver" + depends=(gcc-libs glibc pixman libpixman-1.so qemu-common qemu-ui-opengl spice libspice-server.so) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-user() { + pkgdesc="QEMU user mode emulation" + depends=(gcc-libs glib2 libglib-2.0.so libgmodule-2.0.so glibc gnutls liburing liburing.so qemu-common zlib) + mv -v $pkgname/* "$pkgdir" +} + +# package_qemu-user-static() { +# pkgdesc="QEMU static user mode emulation" +# depends=(glibc) +# mv -v $pkgname/* "$pkgdir" +# } + +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 libpixman-1.so mesa qemu-common virglrenderer) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-virtiofsd() { + pkgdesc="QEMU virtio-fs shared filesystem daemon" + depends=(gcc-libs glib2 libglib-2.0.so libgmodule-2.0.so glibc libcap-ng libcap-ng.so libseccomp libseccomp.so qemu-common) + mv -v $pkgname/* "$pkgdir" +} + +package_qemu-base() { + pkgdesc="A basic QEMU setup for headless environments" + depends=( + qemu-common + qemu-audio-spice + qemu-block-{curl,dmg,nfs,ssh} + qemu-chardev-spice + qemu-hw-display-{qxl,virtio-gpu{,-{gl,pci,pci-gl}}} + qemu-hw-display-virtio-vga{,-gl} + qemu-hw-s390x-virtio-gpu-ccw + qemu-hw-usb-{host,redirect,smartcard} + qemu-img + qemu-pr-helper + qemu-system-x86 + qemu-tools + qemu-ui-{curses,spice-{app,core}} + qemu-virtiofsd + ) + optdepends=("${_qemu_optdepends[@]}") + # TODO: remove conflicts/provides/replaces for qemu-headless after 2022-10-01 + conflicts=(qemu qemu-headless) + provides=(qemu=$pkgver qemu-headless) + replaces=(qemu-headless) +} + +package_qemu-desktop() { + pkgdesc="A QEMU setup for desktop environments" + depends=( + qemu-common + qemu-audio-{alsa,dbus,jack,oss,pa,sdl,spice} + qemu-block-{curl,dmg,nfs,ssh} + qemu-chardev-spice + qemu-hw-display-{qxl,virtio-gpu{,-{gl,pci,pci-gl}}} + qemu-hw-display-virtio-vga{,-gl} + qemu-hw-s390x-virtio-gpu-ccw + qemu-hw-usb-{host,redirect,smartcard} + qemu-img + qemu-pr-helper + qemu-system-x86 + qemu-tools + qemu-ui-{curses,dbus,egl-headless,gtk,opengl,sdl,spice-{app,core}} + qemu-vhost-user-gpu + qemu-virtiofsd + ) + optdepends=("${_qemu_optdepends[@]}") + conflicts=(qemu) + provides=(qemu=$pkgver) + replaces=('qemu<7') +} + +package_qemu-emulators-full() { + pkgdesc="All QEMU user mode and system emulators" + depends=( + qemu-system-{aarch64,alpha,arm,avr,cris,hppa,m68k,microblaze,mips,nios2,or1k,ppc,riscv,rx,s390x,sh4,sparc,tricore,x86,xtensa} + qemu-user + ) + # TODO: remove conflicts/provides/replaces after 2022-10-01 + conflicts=(qemu-arch-extra qemu-headless-arch-extra) + provides=(qemu-arch-extra qemu-headless-arch-extra) + replaces=(qemu-arch-extra qemu-headless-arch-extra) +} + +package_qemu-full() { + pkgdesc="A full QEMU setup" + depends=( + qemu-common + qemu-audio-{alsa,dbus,jack,oss,pa,sdl,spice} + qemu-block-{curl,dmg,gluster,iscsi,nfs,ssh} + qemu-chardev-{baum,spice} + qemu-docs + 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,cris,hppa,m68k,microblaze,mips,nios2,or1k,ppc,riscv,rx,s390x,sh4,sparc,tricore,x86,xtensa} + qemu-tests + qemu-tools + qemu-ui-{curses,dbus,egl-headless,gtk,opengl,sdl,spice-{app,core}} + qemu-user + qemu-vhost-user-gpu + qemu-virtiofsd + ) + optdepends=("${_qemu_optdepends[@]}") + conflicts=(qemu) + provides=(qemu=$pkgver) } # vim:set ts=2 sw=2 et: diff --git a/extra/qemu/bridge.conf b/extra/qemu/bridge.conf new file mode 100644 index 000000000..a573665d3 --- /dev/null +++ b/extra/qemu/bridge.conf @@ -0,0 +1 @@ +allow virbr0 diff --git a/extra/qemu/qemu-common.install b/extra/qemu/qemu-common.install new file mode 100644 index 000000000..3f6eaaace --- /dev/null +++ b/extra/qemu/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/extra/qemu/qemu-ga.conf b/extra/qemu/qemu-ga.conf new file mode 100644 index 000000000..09fed0eb1 --- /dev/null +++ b/extra/qemu/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/extra/qemu/qemu-guest-agent.service b/extra/qemu/qemu-guest-agent.service deleted file mode 100644 index abbb6ab9d..000000000 --- a/extra/qemu/qemu-guest-agent.service +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=QEMU Guest Agent -ConditionPathExists=/dev/virtio-ports/org.qemu.guest_agent.0 - -[Service] -ExecStart=/usr/bin/qemu-ga - -[Install] -WantedBy=multi-user.target diff --git a/extra/qemu/qemu-sysusers.conf b/extra/qemu/qemu-sysusers.conf new file mode 100644 index 000000000..fc3ced96f --- /dev/null +++ b/extra/qemu/qemu-sysusers.conf @@ -0,0 +1,2 @@ +u qemu - "QEMU user" - - +m qemu kvm diff --git a/extra/qemu/qemu.install b/extra/qemu/qemu.install deleted file mode 100644 index d90269ecf..000000000 --- a/extra/qemu/qemu.install +++ /dev/null @@ -1,8 +0,0 @@ -# Arg 1: the new package version -post_install() { - # trigger events on modules files when already loaded - for _f in /sys/devices/virtual/misc/vhost-net; do - [[ -e "$_f" ]] && udevadm trigger "$_f" - done - : -}