249 lines
7.3 KiB
Bash
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
|
|
}
|