Files
extra/qemu-legacy/PKGBUILD
2025-06-22 20:39:04 -05:00

249 lines
7.3 KiB
Bash

# Maintainer: Jesus E. <heckyel@riseup.net>
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
}