1 # Maintainer: David Runge <dvzrv@archlinux.org>
2 # Contributor: Tobias Powalowski <tpowa@archlinux.org>
3 # Contributor: Sébastien "Seblu" Luttringer <seblu@seblu.net>
8 qemu-audio-{alsa,dbus,jack,oss,pa,sdl,spice}
9 qemu-block-{curl,dmg,gluster,iscsi,nfs,ssh}
10 qemu-chardev-{baum,spice}
13 qemu-hw-display-{qxl,virtio-{gpu{,-{gl,pci,pci-gl}},vga{,-gl}}}
14 qemu-hw-s390x-virtio-gpu-ccw
15 qemu-hw-usb-{host,redirect,smartcard}
18 qemu-system-{aarch64,alpha,arm,avr,cris,hppa,loongarch64,m68k,microblaze,mips,nios2,or1k,ppc,riscv,rx,s390x,sh4,sparc,tricore,x86,xtensa}
19 qemu-system-{alpha,arm,hppa,microblaze,ppc,riscv,s390x,sparc,x86}-firmware
22 qemu-ui-{curses,dbus,egl-headless,gtk,opengl,sdl,spice-{app,core}}
23 qemu-user{,-static}{,-binfmt}
25 qemu-{base,desktop,emulators-full,full}
29 pkgdesc="A generic and open source machine emulator and virtualizer"
31 url="https://www.qemu.org/"
32 license=(GPL2 LGPL2.1)
33 # TODO: consider providing rdma-core
34 # TODO: consider providing lzfse
35 # TODO: package systemtap
36 # TODO: package openbios for qemu-system-{ppc,sparc}
37 # TODO: package /usr/share/qemu/{efi,pxe}-* for qemu (ipxe)
38 # TODO: package /usr/share/qemu/slof.bin for qemu-system-ppc (slof)
84 python-sphinx_rtd_theme
99 https://download.qemu.org/qemu-$pkgver.tar.xz{,.sig}
104 99-qemu-guest-agent.rules
106 sha512sums=('1f31d1e653dec2d35f1b7a5468ee3f471553b48eca8c8afafffcf9243c6b2260e78a5b73da3fe567f9b85d4133573eebd397747b3aec501fb24076263eb07b27'
108 '7b412ffa5dcda47b0a4ec9e2c5e5e1d9eaaaf0a087b7ea3ead3e706ba4c9cafb919beadd088a0299b6f7aab753b81a5eafb545b4842ee5f26646d16544dd02a7'
109 '6e838773d63ae0ffdffe2b891bf611d8f5f3c67a9bc4cbbedf8363c150c2c9971c8e44d92270bc581af40eb0ece02192760bcdd6aee229fff55635f3a4825afa'
110 '985c2c7a6b5217c87a15b45368089ee91b2f9027b070f9eafa448a18b27ae0d9edd964d52e134b9c1f4aeef4d6aae88afd3f454551ca898affef7f9d28b99b8f'
111 'bdf05f99407491e27a03aaf845b7cc8acfa2e0e59968236f10ffc905e5e3d5e8569df496fd71c887da2b5b8d1902494520c7da2d3a8258f7fd93a881dd610c99'
112 '93b905046fcea8a0a89513b9259c222494ab3b91319dde23baebcb40dc17376a56661b159b99785d6e816831974a0f3cbd7b2f7d89e5fc3c258f88f4492f3839')
113 b2sums=('9b54aae10fe09691a26e68374723ded5fdda6409673b4de9461a25ee060cfd03968a16ddeadc21d48b9262e53aa6d4e5eb645376969f97c65807fad19607b04f'
115 'b1eca364aa60f130ff5e649f5d004d3fcb75356d3421a4542efdfc410d39b40d9434d15e1dd7bbdbd315cb72b5290d3ea5f77f9c41961a5601cd28ef7bbe72e8'
116 '2102e4a34e11e406e9606c97e026e7b92e887e296a7f77b9cede1b37119d0df33735f3588628167b2b8e32244c196c491bfab623e2caddac9014d445aa2a6d98'
117 '69177b962d2fda20cafdbc6226fd017b5ca5a0f69f866d055dc1c744b7b2955059f47c693cfb5b4c863ec159569fdabd4327ab4b8a95566a68cd8ce38e339c7a'
118 '3559fe9c4f744194939770047a0a02d07ff791c845a80726d0bc7b8c4801ed5f11150e7d5adab813844b3dab1cf38c3a5a87fb6efbb8fc9dccdda9fa56409ed8'
119 'a9a2bdfeeb44eb86cbe88ac7c65f72800bdb2fd5cecb02f3a258cf9470b52832180aab43c89d481f7fd4d067342a9a27dd6c8a94d625b95d6e2b912e47d274e7')
120 validpgpkeys=('CEACC9E15534EBABB82D3FA03353C9CEF108B584') # Michael Roth <flukshun@gmail.com>
128 glib2 libgio-2.0.so libglib-2.0.so libgmodule-2.0.so
134 libjpeg-turbo libjpeg.so
137 libseccomp libseccomp.so
144 pixman libpixman-1.so
145 qemu-common=$pkgver-$pkgrel
152 _qemu_common_optdepends=(
153 'qemu-user-static: for static user mode emulation of QEMU targets'
154 'samba: for SMB/CIFS server support'
157 _qemu_desktop_optdepends=(
158 "${_qemu_common_optdepends[@]}"
159 'qemu-block-gluster: for Gluster block driver'
160 'qemu-block-iscsi: for iSCSI block driver'
161 'qemu-chardev-baum: for Baum chardev driver'
162 'qemu-docs: for documentation'
163 'qemu-system-aarch64: for AARCH64 system emulator'
164 'qemu-system-alpha: for Alpha system emulator'
165 'qemu-system-arm: for ARM system emulator'
166 'qemu-system-avr: for AVR system emulator'
167 'qemu-system-cris: for CRIS system emulator'
168 'qemu-system-hppa: for HPPA system emulator'
169 'qemu-system-m68k: for ColdFire (m68k) system emulator'
170 'qemu-system-microblaze: for Microblaze system emulator'
171 'qemu-system-mips: for MIPS system emulator'
172 'qemu-system-nios2: for nios2 system emulator'
173 'qemu-system-or1k: for OpenRisc32 system emulator'
174 'qemu-system-ppc: for PPC system emulator'
175 'qemu-system-riscv: for RISC-V system emulator'
176 'qemu-system-rx: for RX system emulator'
177 'qemu-system-s390x: for S390 system emulator'
178 'qemu-system-sh4: for SH4 system emulator'
179 'qemu-system-sparc: for SPARC system emulator'
180 'qemu-system-tricore: for tricore system emulator'
181 'qemu-system-xtensa: for Xtensa system emulator'
182 'qemu-tests: for QEMU tests'
183 'qemu-user: for user mode emulation of QEMU targets'
184 'qemu-user-static: for static user mode emulation of QEMU targets'
185 'samba: for SMB/CIFS server support'
188 _qemu_base_optdepends=(
189 "${_qemu_desktop_optdepends[@]}"
190 'qemu-audio-alsa: for ALSA audio driver'
191 'qemu-audio-dbus: for D-Bus audio driver'
192 'qemu-audio-jack: for JACK audio driver'
193 'qemu-audio-oss: for OSS audio driver'
194 'qemu-audio-pa: for PulseAudio audio driver'
195 'qemu-audio-sdl: for SDL audio driver'
196 'qemu-ui-dbus: for D-Bus UI driver'
197 'qemu-ui-egl-headless: for EGL headless UI driver'
198 'qemu-ui-gtk: for GTK UI driver'
199 'qemu-ui-opengl: for OpenGL UI driver'
200 'qemu-ui-sdl: for SDL UI driver'
201 'qemu-user: for user mode emulation of QEMU targets'
202 'qemu-vhost-user-gpu: for vhost-user-gpu display device'
206 local p="$1" f d; shift
208 d="$srcdir/$p/${f#$pkgdir/}"
209 mkdir -p "$(dirname "$d")"
211 rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
217 # extract licenses for TCG
218 sed -n '1,23p' $pkgbase-$pkgver/tcg/tcg-internal.h > tcg.LICENSE.MIT
219 sed -n '1,23p' $pkgbase-$pkgver/tcg/arm/tcg-target.c.inc > tcg-arm.LICENSE.MIT
220 sed -n '1,23p' $pkgbase-$pkgver/tcg/tci/tcg-target.h > tci.LICENSE.MIT
222 # install qemu-pr-helper.socket to sockets.target
223 sed -e 's/multi-user.target/sockets.target/g' -i $pkgbase-$pkgver/contrib/systemd/qemu-pr-helper.socket
227 mkdir -vp build-static
231 local common_configure_options=(
234 --libexecdir=/usr/lib/qemu
236 --docdir=/usr/share/doc/qemu
238 local configure_options=(
239 "${common_configure_options[@]}"
245 --with-coroutine=ucontext
247 local configure_static_options=(
248 "${common_configure_options[@]}"
261 --disable-install-blobs
266 --disable-linux-io-uring
269 --disable-qom-cast-debug
275 --disable-vhost-crypto
276 --disable-vhost-kernel
288 ../$pkgbase-$pkgver/configure "${configure_static_options[@]}"
292 # Build only minimal debug info to reduce size
298 ../$pkgbase-$pkgver/configure "${configure_options[@]}"
304 package_qemu-common() {
305 local binfmt_conf_options=(
307 --exportdir "$pkgdir/usr/lib/binfmt.d/"
308 --qemu-path "/usr/bin"
314 depends=(gcc-libs glibc glib2 libglib-2.0.so libgmodule-2.0.so hicolor-icon-theme libcap-ng libcap-ng.so numactl libnuma.so)
316 etc/$pkgbase/bridge.conf
317 etc/sasl2/$pkgbase.conf
319 install=$pkgname.install
321 # install static binaries
322 meson install -C build-static --destdir "$pkgdir"
323 install -vdm 755 "$pkgdir/usr/lib/binfmt.d/"
324 $pkgbase-$pkgver/scripts/qemu-binfmt-conf.sh "${binfmt_conf_options[@]}"
326 # rename static binaries to prevent name conflicts
327 for _src in "$pkgdir/usr/bin/qemu-"*; do
328 mv -v "$_src" "$pkgdir/usr/bin/$(basename "$_src")-static"
330 # modify and rename binfmt.d configs to prevent name conflicts
331 for _conf in "$pkgdir/usr/lib/binfmt.d/"*; do
332 _exe_name="$(basename "${_conf/.conf/}")"
333 _new_exe_name="${_exe_name}-static"
334 _new_conf_name="${_conf/.conf/-static.conf}"
335 sed -e "s|usr/bin/${_exe_name}|usr/bin/${_new_exe_name}|" "$_conf" > "${_new_conf_name}"
338 # install default binaries
339 meson install -C build --destdir "$pkgdir"
341 install -vdm 755 "$pkgdir/usr/lib/binfmt.d/"
342 $pkgbase-$pkgver/scripts/qemu-binfmt-conf.sh "${binfmt_conf_options[@]}"
344 install -vDm 644 bridge.conf -t "$pkgdir/etc/$pkgbase/"
345 install -vDm 644 $pkgbase-$pkgver/$pkgbase.sasl "$pkgdir/etc/sasl2/$pkgbase.conf"
346 install -vDm 644 $pkgbase-$pkgver/LICENSE *LICENSE* -t "$pkgdir/usr/share/licenses/$pkgbase/"
347 install -vDm 644 $pkgbase-sysusers.conf "$pkgdir/usr/lib/sysusers.d/$pkgbase.conf"
349 # bridge_helper needs suid: https://bugs.archlinux.org/task/32565
350 chmod u+s "$pkgdir/usr/lib/qemu/qemu-bridge-helper"
352 # remoe invalid directory
353 rm -frv "$pkgdir/var"
355 # remove unneeded files
356 find "$pkgdir" -name .buildinfo -delete
358 # remove files provided by seabios
359 rm -fv "$pkgdir/usr/share/$pkgbase/"{bios,vgabios}*
361 # remove files provided by edk2-{aarch64,arm,ovmf}
362 rm -fv "$pkgdir/usr/share/$pkgbase/"edk2-*
363 rm -frv "$pkgdir/usr/share/$pkgbase/firmware"
366 # create man page symlinks for all system emulators
367 cd "$pkgdir/usr/share/man/man1"
368 for _name in qemu-system-{aarch64,alpha,arm,avr,cris,hppa,i386,loongarch64,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
369 ln -sv $pkgbase.1.gz "$pkgdir/usr/share/man/man1/$_name.1.gz"
374 # pick files for all split packages
377 _pick qemu-guest-agent usr/bin/qemu-ga
378 _pick qemu-guest-agent usr/share/man/man8/qemu-ga.8*
380 _pick qemu-audio-alsa usr/lib/qemu/audio-alsa.so
381 _pick qemu-audio-dbus usr/lib/qemu/audio-dbus.so
382 _pick qemu-audio-jack usr/lib/qemu/audio-jack.so
383 _pick qemu-audio-oss usr/lib/qemu/audio-oss.so
384 _pick qemu-audio-pa usr/lib/qemu/audio-pa.so
385 _pick qemu-audio-sdl usr/lib/qemu/audio-sdl.so
386 _pick qemu-audio-spice usr/lib/qemu/audio-spice.so
388 _pick qemu-block-curl usr/lib/qemu/block-curl.so
389 _pick qemu-block-dmg usr/lib/qemu/block-dmg*.so
390 _pick qemu-block-gluster usr/lib/qemu/block-gluster.so
391 _pick qemu-block-iscsi usr/lib/qemu/block-iscsi.so
392 _pick qemu-block-nfs usr/lib/qemu/block-nfs.so
393 _pick qemu-block-ssh usr/lib/qemu/block-ssh.so
395 _pick qemu-chardev-baum usr/lib/qemu/chardev-baum.so
396 _pick qemu-chardev-spice usr/lib/qemu/chardev-spice.so
398 _pick qemu-docs usr/share/doc/qemu
400 _pick qemu-hw-display-qxl usr/lib/qemu/hw-display-qxl.so
401 _pick qemu-hw-display-virtio-gpu usr/lib/qemu/hw-display-virtio-gpu.so
402 _pick qemu-hw-display-virtio-gpu-gl usr/lib/qemu/hw-display-virtio-gpu-gl.so
403 _pick qemu-hw-display-virtio-gpu-pci usr/lib/qemu/hw-display-virtio-gpu-pci.so
404 _pick qemu-hw-display-virtio-gpu-pci-gl usr/lib/qemu/hw-display-virtio-gpu-pci-gl.so
405 _pick qemu-hw-display-virtio-vga usr/lib/qemu/hw-display-virtio-vga.so
406 _pick qemu-hw-display-virtio-vga-gl usr/lib/qemu/hw-display-virtio-vga-gl.so
408 _pick qemu-hw-usb-host usr/lib/qemu/hw-usb-host.so
409 _pick qemu-hw-usb-redirect usr/lib/qemu/hw-usb-redirect.so
410 _pick qemu-hw-usb-smartcard usr/lib/qemu/hw-usb-smartcard.so
412 _pick qemu-img usr/bin/qemu-{img,io,nbd,storage-daemon}
413 _pick qemu-img usr/share/man/man1/qemu-{img,storage-daemon}.1*
414 _pick qemu-img usr/share/man/man7/qemu-storage-daemon-qmp-ref.7*
415 _pick qemu-img usr/share/man/man8/qemu-nbd.8*
417 _pick qemu-pr-helper usr/bin/qemu-pr-helper
418 _pick qemu-pr-helper usr/share/man/man8/qemu-pr-helper.8*
420 _pick qemu-hw-s390x-virtio-gpu-ccw usr/lib/qemu/hw-s390x-virtio-gpu-ccw.so
422 _pick qemu-system-aarch64 usr/bin/qemu-system-aarch64
423 _pick qemu-system-aarch64 usr/share/man/man1/qemu-system-aarch64.1*
425 _pick qemu-system-alpha usr/bin/qemu-system-alpha
426 _pick qemu-system-alpha usr/share/man/man1/qemu-system-alpha.1*
428 _pick qemu-system-alpha-firmware usr/share/qemu/palcode-clipper
430 _pick qemu-system-arm usr/bin/qemu-system-arm
431 _pick qemu-system-arm usr/share/man/man1/qemu-system-arm.1*
433 _pick qemu-system-arm-firmware usr/share/qemu/npcm7xx_bootrom.bin
435 _pick qemu-system-avr usr/bin/qemu-system-avr
436 _pick qemu-system-avr usr/share/man/man1/qemu-system-avr.1*
438 _pick qemu-system-cris usr/bin/qemu-system-cris
439 _pick qemu-system-cris usr/share/man/man1/qemu-system-cris.1*
441 _pick qemu-system-hppa usr/bin/qemu-system-hppa
442 _pick qemu-system-hppa usr/share/man/man1/qemu-system-hppa.1*
444 _pick qemu-system-hppa-firmware usr/share/qemu/hppa-firmware.img
446 _pick qemu-system-loongarch64 usr/bin/qemu-system-loongarch64
447 _pick qemu-system-loongarch64 usr/share/man/man1/qemu-system-loongarch64.1*
449 _pick qemu-system-m68k usr/bin/qemu-system-m68k
450 _pick qemu-system-m68k usr/share/man/man1/qemu-system-m68k.1*
452 _pick qemu-system-microblaze usr/bin/qemu-system-microblaze{,el}
453 _pick qemu-system-microblaze usr/share/man/man1/qemu-system-microblaze{,el}.1*
455 _pick qemu-system-microblaze-firmware usr/share/qemu/petalogix-*.dtb
457 _pick qemu-system-mips usr/bin/qemu-system-mips{,64,64el,el}
458 _pick qemu-system-mips usr/share/man/man1/qemu-system-mips{,64,64el,el}.1*
460 _pick qemu-system-nios2 usr/bin/qemu-system-nios2
461 _pick qemu-system-nios2 usr/share/man/man1/qemu-system-nios2.1*
463 _pick qemu-system-or1k usr/bin/qemu-system-or1k
464 _pick qemu-system-or1k usr/share/man/man1/qemu-system-or1k.1*
466 _pick qemu-system-ppc usr/bin/qemu-system-ppc{,64}
467 _pick qemu-system-ppc usr/share/man/man1/qemu-system-ppc{,64}.1*
469 _pick qemu-system-ppc-firmware usr/share/qemu/{bamboo,canyonlands}.dtb
470 # NOTE: needs to be replaced by openbios
471 _pick qemu-system-ppc-firmware usr/share/qemu/openbios-ppc
472 _pick qemu-system-ppc-firmware usr/share/qemu/qemu_vga.ndrv
473 _pick qemu-system-ppc-firmware usr/share/qemu/skiboot.lid
474 # NOTE: needs to be replaced by slof
475 _pick qemu-system-ppc-firmware usr/share/qemu/slof.bin
476 _pick qemu-system-ppc-firmware usr/share/qemu/u-boot.e500
477 _pick qemu-system-ppc-firmware usr/share/qemu/u-boot-sam460-20100605.bin
479 _pick qemu-system-riscv usr/bin/qemu-system-riscv{32,64}
480 _pick qemu-system-riscv usr/share/man/man1/qemu-system-riscv{32,64}.1*
482 _pick qemu-system-riscv-firmware usr/share/qemu/opensbi-riscv{32,64}*.bin
484 _pick qemu-system-rx usr/bin/qemu-system-rx
485 _pick qemu-system-rx usr/share/man/man1/qemu-system-rx.1*
487 _pick qemu-system-s390x usr/bin/qemu-system-s390x
488 _pick qemu-system-s390x usr/share/man/man1/qemu-system-s390x.1*
490 _pick qemu-system-s390x-firmware usr/share/qemu/s390-{ccw,netboot}.img
492 _pick qemu-system-sh4 usr/bin/qemu-system-sh4{,eb}
493 _pick qemu-system-sh4 usr/share/man/man1/qemu-system-sh4{,eb}.1*
495 _pick qemu-system-sparc usr/bin/qemu-system-sparc{,64}
496 _pick qemu-system-sparc usr/share/man/man1/qemu-system-sparc{,64}.1*
498 # NOTE: needs to be replaced by openbios
499 _pick qemu-system-sparc-firmware usr/share/qemu/openbios-sparc{32,64}
500 _pick qemu-system-sparc-firmware usr/share/qemu/QEMU,{cgthree,tcx}.bin
502 _pick qemu-system-tricore usr/bin/qemu-system-tricore
503 _pick qemu-system-tricore usr/share/man/man1/qemu-system-tricore.1*
505 _pick qemu-system-x86 usr/bin/qemu-system-{i386,x86_64}
506 _pick qemu-system-x86 usr/lib/qemu/accel-tcg-{i386,x86_64}.so
507 _pick qemu-system-x86 usr/share/man/man1/qemu-system-{i386,x86_64}.1*
509 _pick qemu-system-x86-firmware usr/share/qemu/{kvmvapic,linuxboot,multiboot{,_dma},pvh}.bin
510 _pick qemu-system-x86-firmware usr/share/qemu/qboot.rom
512 _pick qemu-system-xtensa usr/bin/qemu-system-xtensa{,eb}
513 _pick qemu-system-xtensa usr/share/man/man1/qemu-system-xtensa{,eb}.1*
515 _pick qemu-tests usr/lib/qemu/accel-qtest-*.so
517 _pick qemu-tools usr/bin/{elf2dmp,qemu-{edid,keymap}}
518 _pick qemu-tools usr/share/qemu/trace-events-all
520 _pick qemu-ui-curses usr/lib/qemu/ui-curses.so
521 _pick qemu-ui-dbus usr/lib/qemu/ui-dbus.so
522 _pick qemu-ui-egl-headless usr/lib/qemu/ui-egl-headless.so
523 _pick qemu-ui-gtk usr/lib/qemu/ui-gtk.so
524 _pick qemu-ui-opengl usr/lib/qemu/ui-opengl.so
525 _pick qemu-ui-sdl usr/lib/qemu/ui-sdl.so
526 _pick qemu-ui-spice-app usr/lib/qemu/ui-spice-app.so
527 _pick qemu-ui-spice-core usr/lib/qemu/ui-spice-core.so
529 _pick qemu-user-static usr/bin/qemu-*-static
530 _pick qemu-user-static-binfmt usr/lib/binfmt.d/*-static.conf
532 _pick qemu-user usr/bin/qemu-{aarch64{,_be},alpha,arm{,eb},cris,hexagon,hppa,i386,loongarch64,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}}
533 _pick qemu-user-binfmt usr/lib/binfmt.d/*.conf
535 _pick qemu-vhost-user-gpu usr/lib/qemu/vhost-user-gpu
536 _pick qemu-vhost-user-gpu usr/share/qemu/vhost-user/50-qemu-gpu.json
540 package_qemu-audio-alsa() {
541 pkgdesc="QEMU ALSA audio driver"
542 depends=(alsa-lib libasound.so glibc qemu-common=$pkgver-$pkgrel)
543 mv -v $pkgname/* "$pkgdir"
546 package_qemu-audio-dbus() {
547 pkgdesc="QEMU D-Bus audio driver"
548 depends=(gcc-libs glib2 libgio-2.0.so libgobject-2.0.so libglib-2.0.so glibc qemu-common=$pkgver-$pkgrel)
549 mv -v $pkgname/* "$pkgdir"
552 package_qemu-audio-jack() {
553 pkgdesc="QEMU JACK audio driver"
554 depends=(jack libjack.so glibc qemu-common=$pkgver-$pkgrel)
555 mv -v $pkgname/* "$pkgdir"
558 package_qemu-audio-oss() {
559 pkgdesc="QEMU OSS audio driver"
560 depends=(glibc qemu-common=$pkgver-$pkgrel)
561 mv -v $pkgname/* "$pkgdir"
564 package_qemu-audio-pa() {
565 pkgdesc="QEMU PulseAudio audio driver"
566 depends=(glibc libpulse libpulse.so qemu-common=$pkgver-$pkgrel)
567 mv -v $pkgname/* "$pkgdir"
570 package_qemu-audio-sdl() {
571 pkgdesc="QEMU SDL audio driver"
572 depends=(glibc qemu-common=$pkgver-$pkgrel sdl2)
573 mv -v $pkgname/* "$pkgdir"
576 package_qemu-audio-spice() {
577 pkgdesc="QEMU spice audio driver"
578 depends=(glibc qemu-common=$pkgver-$pkgrel qemu-ui-spice-core=$pkgver-$pkgrel spice libspice-server.so)
579 mv -v $pkgname/* "$pkgdir"
582 package_qemu-block-curl() {
583 pkgdesc="QEMU curl block driver"
584 depends=(curl libcurl.so gcc-libs glibc qemu-common=$pkgver-$pkgrel)
585 mv -v $pkgname/* "$pkgdir"
588 package_qemu-block-dmg() {
589 pkgdesc="QEMU DMG block driver"
590 depends=(bzip2 libbz2.so glibc qemu-common=$pkgver-$pkgrel)
591 mv -v $pkgname/* "$pkgdir"
594 package_qemu-block-gluster() {
595 pkgdesc="QEMU Gluster block driver"
596 depends=(glibc glusterfs qemu-common=$pkgver-$pkgrel)
597 mv -v $pkgname/* "$pkgdir"
600 package_qemu-block-iscsi() {
601 pkgdesc="QEMU iSCSI block driver"
602 depends=(gcc-libs glibc libiscsi qemu-common=$pkgver-$pkgrel)
603 mv -v $pkgname/* "$pkgdir"
606 package_qemu-block-nfs() {
607 pkgdesc="QEMU NFS block driver"
608 depends=(gcc-libs glibc libnfs qemu-common=$pkgver-$pkgrel)
609 mv -v $pkgname/* "$pkgdir"
612 package_qemu-block-ssh() {
613 pkgdesc="QEMU SSH block driver"
614 depends=(gcc-libs glibc libssh libssh.so qemu-common=$pkgver-$pkgrel)
615 mv -v $pkgname/* "$pkgdir"
618 package_qemu-chardev-baum() {
619 pkgdesc="QEMU Baum chardev driver"
620 depends=(brltty libbrlapi.so gcc-libs glibc qemu-common=$pkgver-$pkgrel)
621 mv -v $pkgname/* "$pkgdir"
624 package_qemu-chardev-spice() {
625 pkgdesc="QEMU spice chardev driver"
626 depends=(libspice-server.so glibc qemu-common=$pkgver-$pkgrel qemu-ui-spice-core=$pkgver-$pkgrel)
627 mv -v $pkgname/* "$pkgdir"
630 package_qemu-docs() {
631 pkgdesc+=" - documentation"
632 mv -v $pkgname/* "$pkgdir"
635 package_qemu-guest-agent() {
636 pkgdesc="QEMU Guest Agent"
637 depends=(gcc-libs glib2 libglib-2.0.so libgmodule-2.0.so glibc liburing liburing.so numactl libnuma.so sh systemd-libs libudev.so)
639 etc/$pkgbase/$pkgbase-ga.conf
640 etc/$pkgbase/fsfreeze-hook
642 install=$pkgname.install
643 mv -v $pkgname/* "$pkgdir"
644 install -vDm 644 $pkgbase-$pkgver/contrib/systemd/$pkgname.service -t "$pkgdir/usr/lib/systemd/system/"
645 install -vDm 644 99-$pkgname.rules -t "$pkgdir/usr/lib/udev/rules.d/"
646 install -vDm 644 $pkgbase-ga.conf -t "$pkgdir/etc/$pkgbase/"
647 install -vDm 755 $pkgbase-$pkgver/scripts/$pkgname/fsfreeze-hook -t "$pkgdir/etc/$pkgbase/"
648 install -vdm 755 "$pkgdir/etc/$pkgbase/fsfreeze-hook.d"
651 package_qemu-hw-display-qxl() {
652 pkgdesc="QEMU QXL display device"
653 depends=(gcc-libs glibc pixman libpixman-1.so qemu-common=$pkgver-$pkgrel qemu-ui-spice-core=$pkgver-$pkgrel spice libspice-server.so)
654 mv -v $pkgname/* "$pkgdir"
657 package_qemu-hw-display-virtio-gpu() {
658 pkgdesc="QEMU virtio-gpu display device"
659 depends=(glibc pixman libpixman-1.so qemu-common=$pkgver-$pkgrel)
660 mv -v $pkgname/* "$pkgdir"
663 package_qemu-hw-display-virtio-gpu-gl() {
664 pkgdesc="QEMU virtio-gpu-gl display device"
665 depends=(glibc qemu-common=$pkgver-$pkgrel virglrenderer)
666 mv -v $pkgname/* "$pkgdir"
669 package_qemu-hw-display-virtio-gpu-pci() {
670 pkgdesc="QEMU virtio-gpu-pci display device"
671 depends=(qemu-common=$pkgver-$pkgrel)
672 mv -v $pkgname/* "$pkgdir"
675 package_qemu-hw-display-virtio-gpu-pci-gl() {
676 pkgdesc="QEMU virtio-gpu-pci-gl display device"
677 depends=(qemu-common=$pkgver-$pkgrel)
678 mv -v $pkgname/* "$pkgdir"
681 package_qemu-hw-display-virtio-vga() {
682 pkgdesc="QEMU virtio-vga display device"
683 depends=(qemu-common=$pkgver-$pkgrel)
684 mv -v $pkgname/* "$pkgdir"
687 package_qemu-hw-display-virtio-vga-gl() {
688 pkgdesc="QEMU virtio-vga-gl display device"
689 depends=(qemu-common=$pkgver-$pkgrel)
690 mv -v $pkgname/* "$pkgdir"
693 package_qemu-hw-s390x-virtio-gpu-ccw() {
694 pkgdesc="QEMU s390x-virtio-gpu-ccw display device"
695 depends=(qemu-common=$pkgver-$pkgrel)
696 mv -v $pkgname/* "$pkgdir"
699 package_qemu-system-aarch64() {
700 pkgdesc="QEMU system emulator for AARCH64"
701 depends=("${_qemu_system_deps[@]}" edk2-aarch64 systemd-libs libudev.so)
702 mv -v $pkgname/* "$pkgdir"
705 package_qemu-system-alpha() {
706 pkgdesc="QEMU system emulator for Alpha"
707 depends=("${_qemu_system_deps[@]}" qemu-system-alpha-firmware=$pkgver-$pkgrel systemd-libs libudev.so)
708 mv -v $pkgname/* "$pkgdir"
711 package_qemu-system-alpha-firmware() {
712 pkgdesc="Firmware for QEMU system emulator for Alpha"
714 mv -v $pkgname/* "$pkgdir"
717 package_qemu-system-arm() {
718 pkgdesc="QEMU system emulator for ARM"
719 depends=("${_qemu_system_deps[@]}" edk2-arm qemu-system-arm-firmware=$pkgver-$pkgrel systemd-libs libudev.so)
720 mv -v $pkgname/* "$pkgdir"
723 package_qemu-system-arm-firmware() {
724 pkgdesc="Firmware for QEMU system emulator for ARM"
726 mv -v $pkgname/* "$pkgdir"
729 package_qemu-system-avr() {
730 pkgdesc="QEMU system emulator for AVR"
731 depends=("${_qemu_system_deps[@]}")
732 mv -v $pkgname/* "$pkgdir"
735 package_qemu-system-cris() {
736 pkgdesc="QEMU system emulator for CRIS"
737 depends=("${_qemu_system_deps[@]}")
738 mv -v $pkgname/* "$pkgdir"
741 package_qemu-system-hppa() {
742 pkgdesc="QEMU system emulator for HPPA"
743 depends=("${_qemu_system_deps[@]}" qemu-system-hppa-firmware=$pkgver-$pkgrel systemd-libs libudev.so)
744 mv -v $pkgname/* "$pkgdir"
747 package_qemu-system-hppa-firmware() {
748 pkgdesc="Firmware for QEMU system emulator for HPPA"
750 mv -v $pkgname/* "$pkgdir"
753 package_qemu-system-loongarch64() {
754 pkgdesc="QEMU system emulator for LoongArch64"
755 depends=("${_qemu_system_deps[@]}" systemd-libs)
756 mv -v $pkgname/* "$pkgdir"
759 package_qemu-system-m68k() {
760 pkgdesc="QEMU system emulator for ColdFire (m68k)"
761 depends=("${_qemu_system_deps[@]}")
762 mv -v $pkgname/* "$pkgdir"
765 package_qemu-system-microblaze() {
766 pkgdesc="QEMU system emulator for Microblaze"
767 depends=("${_qemu_system_deps[@]}" qemu-system-microblaze-firmware=$pkgver-$pkgrel)
768 mv -v $pkgname/* "$pkgdir"
771 package_qemu-system-microblaze-firmware() {
772 pkgdesc="Firmware for QEMU system emulator for Microblaze"
774 mv -v $pkgname/* "$pkgdir"
777 package_qemu-system-mips() {
778 pkgdesc="QEMU system emulator for MIPS"
779 depends=("${_qemu_system_deps[@]}" systemd-libs libudev.so)
780 mv -v $pkgname/* "$pkgdir"
783 package_qemu-system-nios2() {
784 pkgdesc="QEMU system emulator for nios2"
785 depends=("${_qemu_system_deps[@]}")
786 mv -v $pkgname/* "$pkgdir"
789 package_qemu-system-or1k() {
790 pkgdesc="QEMU system emulator for OpenRisc32"
791 depends=("${_qemu_system_deps[@]}" systemd-libs)
792 mv -v $pkgname/* "$pkgdir"
795 package_qemu-system-ppc() {
796 pkgdesc="QEMU system emulator for PPC"
797 depends=("${_qemu_system_deps[@]}" qemu-system-ppc-firmware=$pkgver-$pkgrel systemd-libs libudev.so)
798 mv -v $pkgname/* "$pkgdir"
801 package_qemu-system-ppc-firmware() {
802 pkgdesc="Firmware for QEMU system emulator for PPC"
804 mv -v $pkgname/* "$pkgdir"
807 package_qemu-system-riscv() {
808 pkgdesc="QEMU system emulator for RISC-V"
809 depends=("${_qemu_system_deps[@]}" qemu-system-riscv-firmware=$pkgver-$pkgrel systemd-libs libudev.so)
810 mv -v $pkgname/* "$pkgdir"
813 package_qemu-system-riscv-firmware() {
814 pkgdesc="Firmware for QEMU system emulator for RISC-V"
816 mv -v $pkgname/* "$pkgdir"
819 package_qemu-system-rx() {
820 pkgdesc="QEMU system emulator for RX"
821 depends=("${_qemu_system_deps[@]}")
822 mv -v $pkgname/* "$pkgdir"
825 package_qemu-system-s390x() {
826 pkgdesc="QEMU system emulator for S390"
827 depends=("${_qemu_system_deps[@]}" qemu-system-s390x-firmware=$pkgver-$pkgrel)
828 mv -v $pkgname/* "$pkgdir"
831 package_qemu-system-s390x-firmware() {
832 pkgdesc="Firmware for QEMU system emulator for S390"
834 mv -v $pkgname/* "$pkgdir"
837 package_qemu-system-sh4() {
838 pkgdesc="QEMU system emulator for SH4"
839 depends=("${_qemu_system_deps[@]}" systemd-libs libudev.so)
840 mv -v $pkgname/* "$pkgdir"
843 package_qemu-system-sparc() {
844 pkgdesc="QEMU system emulator for SPARC"
845 depends=("${_qemu_system_deps[@]}" qemu-system-sparc-firmware=$pkgver-$pkgrel systemd-libs libudev.so)
846 mv -v $pkgname/* "$pkgdir"
849 package_qemu-system-sparc-firmware() {
850 pkgdesc="Firmware for QEMU system emulator for SPARC"
852 # NOTE: will require openbios
853 mv -v $pkgname/* "$pkgdir"
856 package_qemu-system-tricore() {
857 pkgdesc="QEMU system emulator for tricore"
858 depends=("${_qemu_system_deps[@]}")
859 mv -v $pkgname/* "$pkgdir"
862 package_qemu-system-x86() {
863 pkgdesc="QEMU system emulator for x86"
864 depends=("${_qemu_system_deps[@]}" edk2-ovmf qemu-system-x86-firmware=$pkgver-$pkgrel seabios systemd-libs libudev.so)
865 mv -v $pkgname/* "$pkgdir"
868 package_qemu-system-x86-firmware() {
869 pkgdesc="Firmware for QEMU system emulator for x86"
871 mv -v $pkgname/* "$pkgdir"
874 package_qemu-system-xtensa() {
875 pkgdesc="QEMU system emulator for Xtensa"
876 depends=("${_qemu_system_deps[@]}" systemd-libs libudev.so)
877 mv -v $pkgname/* "$pkgdir"
880 package_qemu-hw-usb-host() {
881 pkgdesc="QEMU USB host device"
882 depends=(glibc libusb libusb-1.0.so qemu-common=$pkgver-$pkgrel)
883 mv -v $pkgname/* "$pkgdir"
886 package_qemu-hw-usb-redirect() {
887 pkgdesc="QEMU usbredir device"
888 depends=(gcc-libs glibc qemu-common=$pkgver-$pkgrel usbredir)
889 mv -v $pkgname/* "$pkgdir"
892 package_qemu-hw-usb-smartcard() {
893 pkgdesc="QEMU USB smartcard device"
894 depends=(gcc-libs libcacard glib2 libglib-2.0.so glibc qemu-common=$pkgver-$pkgrel)
895 mv -v $pkgname/* "$pkgdir"
899 pkgdesc="QEMU tooling for manipulating disk images"
900 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)
901 mv -v $pkgname/* "$pkgdir"
904 package_qemu-pr-helper() {
905 pkgdesc="QEMU persistent reservation utility"
906 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)
907 mv -v $pkgname/* "$pkgdir"
908 install -vDm 644 $pkgbase-$pkgver/contrib/systemd/$pkgname.{service,socket} -t "$pkgdir/usr/lib/systemd/system/"
911 package_qemu-tests() {
913 depends=(qemu-common=$pkgver-$pkgrel)
914 mv -v $pkgname/* "$pkgdir"
917 package_qemu-tools() {
919 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)
920 mv -v $pkgname/* "$pkgdir"
921 install -vDm 644 $pkgbase-$pkgver/scripts/dump-guest-memory.py -t "$pkgdir/usr/share/$pkgbase/"
922 install -vDm 755 $pkgbase-$pkgver/scripts/simpletrace.py -t "$pkgdir/usr/share/$pkgbase/"
923 install -vDm 644 $pkgbase-$pkgver/scripts/tracetool/*.py -t "$pkgdir/usr/share/$pkgbase/tracetool/"
924 install -vDm 644 $pkgbase-$pkgver/scripts/tracetool/backend/*.py -t "$pkgdir/usr/share/$pkgbase/tracetool/backend/"
925 install -vDm 644 $pkgbase-$pkgver/scripts/tracetool/format/*.py -t "$pkgdir/usr/share/$pkgbase/tracetool/format/"
928 package_qemu-ui-curses() {
929 pkgdesc="QEMU curses UI driver"
930 depends=(gcc-libs glib2 libglib-2.0.so glibc ncurses libncursesw.so qemu-common=$pkgver-$pkgrel)
931 mv -v $pkgname/* "$pkgdir"
934 package_qemu-ui-dbus() {
935 pkgdesc="QEMU D-Bus UI driver"
936 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)
937 mv -v $pkgname/* "$pkgdir"
940 package_qemu-ui-egl-headless() {
941 pkgdesc="QEMU EGL headless UI driver"
942 depends=(glibc libepoxy qemu-common=$pkgver-$pkgrel qemu-ui-opengl=$pkgver-$pkgrel)
943 mv -v $pkgname/* "$pkgdir"
946 package_qemu-ui-gtk() {
947 pkgdesc="QEMU GTK UI driver"
950 gdk-pixbuf2 libgdk_pixbuf-2.0.so
951 glib2 libgobject-2.0.so libglib-2.0.so
953 gtk3 libgdk-3.so libgtk-3.so
956 pixman libpixman-1.so
957 qemu-common=$pkgver-$pkgrel
961 mv -v $pkgname/* "$pkgdir"
964 package_qemu-ui-opengl() {
965 pkgdesc="QEMU OpenGL UI driver"
966 depends=(gcc-libs glibc libepoxy mesa pixman libpixman-1.so qemu-common=$pkgver-$pkgrel)
967 mv -v $pkgname/* "$pkgdir"
970 package_qemu-ui-sdl() {
971 pkgdesc="QEMU SDL UI driver"
972 depends=(glib2 libglib-2.0.so glibc libx11 pixman libpixman-1.so qemu-common=$pkgver-$pkgrel sdl2_image sdl2)
973 mv -v $pkgname/* "$pkgdir"
976 package_qemu-ui-spice-app() {
977 pkgdesc="QEMU spice app UI driver"
978 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)
979 mv -v $pkgname/* "$pkgdir"
982 package_qemu-ui-spice-core() {
983 pkgdesc="QEMU spice core UI driver"
984 depends=(gcc-libs glibc pixman libpixman-1.so qemu-common=$pkgver-$pkgrel qemu-ui-opengl=$pkgver-$pkgrel spice libspice-server.so)
985 mv -v $pkgname/* "$pkgdir"
988 package_qemu-user() {
989 pkgdesc="QEMU user mode emulation"
990 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)
991 optdepends=('qemu-user-binfmt: for binary format rules')
992 mv -v $pkgname/* "$pkgdir"
995 package_qemu-user-binfmt() {
996 pkgdesc="Binary format rules for QEMU user mode emulation"
997 depends=(qemu-user=$pkgver-$pkgrel)
998 provides=(qemu-user-binfmt-provider)
999 conflicts=(qemu-user-binfmt-provider)
1000 mv -v $pkgname/* "$pkgdir"
1003 package_qemu-user-static() {
1004 pkgdesc="QEMU static user mode emulation"
1006 optdepends=('qemu-user-static-binfmt: for binary format rules')
1007 mv -v $pkgname/* "$pkgdir"
1010 package_qemu-user-static-binfmt() {
1011 pkgdesc="Binary format rules for QEMU static user mode emulation"
1012 depends=(qemu-user-static=$pkgver-$pkgrel)
1013 provides=(qemu-user-binfmt-provider)
1014 conflicts=(qemu-user-binfmt-provider)
1015 mv -v $pkgname/* "$pkgdir"
1018 package_qemu-vhost-user-gpu() {
1019 pkgdesc="QEMU vhost-user-gpu display device"
1020 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)
1021 mv -v $pkgname/* "$pkgdir"
1024 package_qemu-base() {
1025 pkgdesc="A basic QEMU setup for headless environments"
1027 qemu-common=$pkgver-$pkgrel
1028 qemu-audio-spice=$pkgver-$pkgrel
1029 qemu-block-{curl,dmg,nfs,ssh}=$pkgver-$pkgrel
1030 qemu-chardev-spice=$pkgver-$pkgrel
1031 qemu-hw-display-{qxl,virtio-gpu{,-{gl,pci,pci-gl}}}=$pkgver-$pkgrel
1032 qemu-hw-display-virtio-vga{,-gl}=$pkgver-$pkgrel
1033 qemu-hw-s390x-virtio-gpu-ccw=$pkgver-$pkgrel
1034 qemu-hw-usb-{host,redirect,smartcard}=$pkgver-$pkgrel
1035 qemu-img=$pkgver-$pkgrel
1036 qemu-pr-helper=$pkgver-$pkgrel
1037 qemu-system-x86=$pkgver-$pkgrel
1038 qemu-tools=$pkgver-$pkgrel
1039 qemu-ui-{curses,spice-{app,core}}=$pkgver-$pkgrel
1042 optdepends=("${_qemu_base_optdepends[@]}")
1043 # TODO: remove conflicts/provides/replaces for qemu-headless after 2022-10-01
1044 conflicts=(qemu qemu-headless)
1045 provides=(qemu=$pkgver qemu-headless)
1046 replaces=(qemu-headless)
1049 package_qemu-desktop() {
1050 pkgdesc="A QEMU setup for desktop environments"
1052 qemu-common=$pkgver-$pkgrel
1053 qemu-audio-{alsa,dbus,jack,oss,pa,sdl,spice}=$pkgver-$pkgrel
1054 qemu-block-{curl,dmg,nfs,ssh}=$pkgver-$pkgrel
1055 qemu-chardev-spice=$pkgver-$pkgrel
1056 qemu-hw-display-{qxl,virtio-gpu{,-{gl,pci,pci-gl}}}=$pkgver-$pkgrel
1057 qemu-hw-display-virtio-vga{,-gl}=$pkgver-$pkgrel
1058 qemu-hw-s390x-virtio-gpu-ccw=$pkgver-$pkgrel
1059 qemu-hw-usb-{host,redirect,smartcard}=$pkgver-$pkgrel
1060 qemu-img=$pkgver-$pkgrel
1061 qemu-pr-helper=$pkgver-$pkgrel
1062 qemu-system-x86=$pkgver-$pkgrel
1063 qemu-tools=$pkgver-$pkgrel
1064 qemu-ui-{curses,dbus,egl-headless,gtk,opengl,sdl,spice-{app,core}}=$pkgver-$pkgrel
1065 qemu-vhost-user-gpu=$pkgver-$pkgrel
1068 optdepends=("${_qemu_desktop_optdepends[@]}")
1070 provides=(qemu=$pkgver)
1074 package_qemu-emulators-full() {
1075 pkgdesc="All QEMU user mode and system emulators"
1077 qemu-system-{aarch64,alpha,arm,avr,cris,hppa,loongarch64,m68k,microblaze,mips,nios2,or1k,ppc,riscv,rx,s390x,sh4,sparc,tricore,x86,xtensa}=$pkgver-$pkgrel
1078 qemu-user=$pkgver-$pkgrel
1080 # TODO: remove conflicts/provides/replaces after 2022-10-01
1081 conflicts=(qemu-arch-extra qemu-headless-arch-extra)
1082 provides=(qemu-arch-extra qemu-headless-arch-extra)
1083 replaces=(qemu-arch-extra qemu-headless-arch-extra)
1086 package_qemu-full() {
1087 pkgdesc="A full QEMU setup"
1089 qemu-common=$pkgver-$pkgrel
1090 qemu-audio-{alsa,dbus,jack,oss,pa,sdl,spice}=$pkgver-$pkgrel
1091 qemu-block-{curl,dmg,gluster,iscsi,nfs,ssh}=$pkgver-$pkgrel
1092 qemu-chardev-{baum,spice}=$pkgver-$pkgrel
1093 qemu-docs=$pkgver-$pkgrel
1094 qemu-hw-display-{qxl,virtio-{gpu{,-{gl,pci,pci-gl}},vga{,-gl}}}=$pkgver-$pkgrel
1095 qemu-hw-s390x-virtio-gpu-ccw=$pkgver-$pkgrel
1096 qemu-hw-usb-{host,redirect,smartcard}=$pkgver-$pkgrel
1097 qemu-img=$pkgver-$pkgrel
1098 qemu-pr-helper=$pkgver-$pkgrel
1099 qemu-system-{aarch64,alpha,arm,avr,cris,hppa,loongarch64,m68k,microblaze,mips,nios2,or1k,ppc,riscv,rx,s390x,sh4,sparc,tricore,x86,xtensa}=$pkgver-$pkgrel
1100 qemu-tests=$pkgver-$pkgrel
1101 qemu-tools=$pkgver-$pkgrel
1102 qemu-ui-{curses,dbus,egl-headless,gtk,opengl,sdl,spice-{app,core}}=$pkgver-$pkgrel
1103 qemu-user=$pkgver-$pkgrel
1104 qemu-vhost-user-gpu=$pkgver-$pkgrel
1107 optdepends=("${_qemu_common_optdepends[@]}")
1109 provides=(qemu=$pkgver)
1112 # vim:set ts=2 sw=2 et: