# Maintainer: Jesus E. pkgbase=qemu-legacy pkgname=(qemu-legacy qemu-headless-legacy qemu-arch-extra-legacy qemu-headless-arch-extra-legacy qemu-block-iscsi-legacy qemu-guest-agent-legacy) pkgdesc="A generic and free machine emulator and virtualizer (legacy version)" pkgver=5.2.0 _debver=5.2 _debrel=11 pkgrel=1 arch=(i686 x86_64) license=(GPL-2 LGPL-2.1) url='https://wiki.qemu.org/' _headlessdeps=(seabios gnutls libpng libaio numactl libnfs lzo snappy curl vde2 libcap-ng spice usbredir libslirp libssh dtc libseccomp libsndio sdl2 virglrenderer) depends=(vte "${_headlessdeps[@]}") makedepends=(spice-protocol python libiscsi python-sphinx xfsprogs ninja quilt) source=("https://wiki.qemu.org/download/qemu-${pkgver}.tar.bz2" "https://deb.debian.org/debian/pool/main/q/qemu/qemu_${_debver}+dfsg-${_debrel}+deb11u3.debian.tar.xz" "65-kvm.rules" "sndio.patch" "qemu-ga.initd" "qemu-ga.conf" "qemu-ga.run") sha512sums=('f0c450a2a4723c33473e5af5a51b0c006fe04685758863b076f2cf11352c08a0693650579811667f6411f7e572c92892624390a0f26878b08419d79c15ff0e86' '295be9761eb6c1aa9f2dd86eb81b53791010af41da89adf062011724b6c5ea5bcc4c5a9c7f968472e7c7d6a582e2f485663b357c0013309bd7d618165ba94ad1' '13a097ee0ac9f740ad3de8d24c71bdb9a655dc18e3afc1bac990643a120a3ec9de45be887a89ef840e5a88c2f4dc8e3a3a435fd3185b1884d57d6c292864e7c5' 'a42221d80b89020d0067d80908a62de0fa3ef0f012a8497b275d1bde055b4caf215b4afc17c8d8ace37a02742694a1c89873d18678e0d16e69e47840c169ace9' '2ca4d73b79871d5f25d4630e09341847df7ed86867a0340af5d4deb88a7d653f694767acdb95a336aadd722b109f39b93e59bc268bf476748d65175c55010afb' '00b4f6774fd6f864344bc087ff0fafdd485293527db2a4bef0ca2ba37639383f56977c794687c345b705462c2ad442062205938ec9e5e79647aeba2f9f530537' '70654a9f14c6fec9b8a07ba26a2b0405ad560a405f4c86607e5d08a39a0395bc8f03c1d463d42bc42dca2cc95e4f0cbf34d0e4eb74717740b2679ff6cf0985f6') case $CARCH in i?86) _corearch=i386 ;; x86_64) _corearch=x86_64 ;; esac prepare() { mkdir build-{full,headless} mkdir -p extra-arch-{full,headless}/usr/{bin,share/qemu} cd qemu-${pkgver} if [[ ${pkgver%.*} = ${_debver%+*} ]]; then # Debian patches export QUILT_PATCHES=debian/patches export QUILT_REFRESH_ARGS='-p ab --no-timestamps --no-index' export QUILT_DIFF_ARGS='--no-timestamps' mv "$srcdir"/debian . # Doesn't apply rm -v debian/patches/skip-meson-pc-bios.diff || true quilt push -av fi patch -p1 < $srcdir/sndio.patch } build() { _build full \ --audio-drv-list="sndio alsa sdl" _build headless \ --audio-drv-list="sndio alsa sdl" \ --disable-gtk \ --disable-vte } _build() ( cd build-$1 ../qemu-${pkgver}/configure \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --libexecdir=/usr/libexec/qemu \ --smbd=/usr/sbin/smbd \ --enable-modules \ --enable-sdl \ --enable-slirp=system \ --enable-xfsctl \ --disable-smartcard \ "${@:2}" ninja ) package_qemu-legacy() { optdepends=('qemu-arch-extra-legacy: extra architectures support' 'sndio: audio and MIDI server support') provides=(qemu-headless-legacy) conflicts=(qemu-headless-legacy) replaces=(qemu-kvm) _package full for i in COPYING{,.LIB} LICENSE; do install -Dm644 "$srcdir/qemu-$pkgver/$i" "$pkgdir/usr/share/licenses/$pkgname/$i" done } package_qemu-headless-legacy() { pkgdesc="QEMU without GUI (legacy version)" depends=("${_headlessdeps[@]}") optdepends=('qemu-headless-arch-extra-legacy: extra architectures support' 'sndio: audio and MIDI server support') _package headless for i in COPYING{,.LIB} LICENSE; do install -Dm644 "$srcdir/qemu-$pkgver/$i" "$pkgdir/usr/share/licenses/$pkgname/$i" done } _package() { optdepends+=('samba: SMB/CIFS server support' 'qemu-block-iscsi-legacy: iSCSI block support') install=qemu.install options=(!strip !emptydirs) DESTDIR="$pkgdir" ninja -C build-$1 install "${@:2}" # udev rules install -Dm644 65-kvm.rules "$pkgdir/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 ../libexec/qemu/qemu-bridge-helper # remove split block modules rm qemu/block-iscsi.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 seabios package bios.bin|bios-256k.bin|vgabios-cirrus.bin|vgabios-qxl.bin|\ vgabios-stdvga.bin|vgabios-vmware.bin|vgabios-virtio.bin|vgabios-bochs-display.bin|\ vgabios-ramfb.bin) rm "$_blob"; continue ;; # 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-legacy() { pkgdesc="QEMU for foreign architectures (legacy version)" depends=(qemu-legacy) provides=(qemu-headless-arch-extra-legacy) conflicts=(qemu-headless-arch-extra-legacy) options=(!strip) mv extra-arch-full/usr "$pkgdir" for i in COPYING{,.LIB} LICENSE; do install -Dm644 "$srcdir/qemu-$pkgver/$i" "$pkgdir/usr/share/licenses/$pkgname/$i" done } package_qemu-headless-arch-extra-legacy() { pkgdesc="QEMU without GUI, for foreign architectures (legacy version)" depends=(qemu-headless-legacy) options=(!strip) mv extra-arch-headless/usr "$pkgdir" for i in COPYING{,.LIB} LICENSE; do install -Dm644 "$srcdir/qemu-$pkgver/$i" "$pkgdir/usr/share/licenses/$pkgname/$i" done } package_qemu-block-iscsi-legacy() { pkgdesc="QEMU iSCSI block module (legacy version)" depends=(glib2 libiscsi) install -D build-full/block-iscsi.so "$pkgdir/usr/lib/qemu/block-iscsi.so" for i in COPYING{,.LIB} LICENSE; do install -Dm644 "$srcdir/qemu-$pkgver/$i" "$pkgdir/usr/share/licenses/$pkgname/$i" done } package_qemu-guest-agent-legacy() { pkgdesc="QEMU Guest Agent (legacy version)" depends=(gcc-libs glib2 libeudev) backup=(etc/sv/qemu-ga/conf) install -D build-full/qga/qemu-ga "$pkgdir/usr/sbin/qemu-ga" install -Dm755 "$srcdir/qemu-$pkgver/scripts/qemu-guest-agent/fsfreeze-hook" "$pkgdir/etc/qemu/fsfreeze-hook" install -Dm755 "$srcdir/qemu-ga.initd" "$pkgdir/etc/init.d/qemu-ga" install -Dm644 "$srcdir/qemu-ga.conf" "$pkgdir/etc/sv/qemu-ga/conf" install -Dm755 "$srcdir/qemu-ga.run" "$pkgdir/etc/sv/qemu-ga/run" for i in COPYING{,.LIB} LICENSE; do install -Dm644 "$srcdir/qemu-$pkgver/$i" "$pkgdir/usr/share/licenses/$pkgname/$i" done }