2016-10-15 15:45:40 +00:00
|
|
|
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
|
|
|
|
# Contributor: Sébastien "Seblu" Luttringer <seblu@seblu.net>
|
|
|
|
|
|
|
|
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
|
2016-12-07 05:07:37 +00:00
|
|
|
# - remove numactl and seabios _headlessdeps, revert not installing qemu seabios files
|
2016-10-15 15:45:40 +00:00
|
|
|
# - define ARM _corearchs
|
|
|
|
|
2018-03-10 02:43:17 +00:00
|
|
|
buildarch=12
|
2016-10-15 15:45:40 +00:00
|
|
|
|
|
|
|
pkgbase=qemu
|
|
|
|
pkgname=(qemu qemu-headless qemu-arch-extra qemu-headless-arch-extra
|
|
|
|
qemu-block-{iscsi,rbd,gluster} qemu-guest-agent)
|
|
|
|
pkgdesc="A generic and open source machine emulator and virtualizer"
|
2018-08-24 23:07:51 +00:00
|
|
|
pkgver=3.0.0
|
2018-09-26 12:34:38 +00:00
|
|
|
pkgrel=2
|
2017-12-18 18:51:07 +00:00
|
|
|
arch=(x86_64)
|
2016-10-15 15:45:40 +00:00
|
|
|
license=(GPL2 LGPL2.1)
|
|
|
|
url="http://wiki.qemu.org/"
|
|
|
|
_headlessdeps=(gnutls libpng libaio jemalloc xfsprogs libnfs
|
2017-12-20 23:58:48 +00:00
|
|
|
lzo snappy curl vde2 libcap-ng spice libcacard usbredir)
|
|
|
|
depends=(virglrenderer sdl2 vte3 libpulse "${_headlessdeps[@]}")
|
2016-12-07 05:07:37 +00:00
|
|
|
makedepends=(spice-protocol python2 ceph libiscsi glusterfs)
|
2018-01-29 20:13:21 +00:00
|
|
|
source=(https://download.qemu.org/qemu-$pkgver.tar.xz{,.sig}
|
2016-10-15 15:45:40 +00:00
|
|
|
qemu-ga.service
|
2017-06-23 00:01:37 +00:00
|
|
|
65-kvm.rules
|
|
|
|
allow_elf64.patch)
|
2018-09-26 12:34:38 +00:00
|
|
|
sha512sums=('a764302f50b9aca4134bbbc1f361b98e71240cdc7b25600dfe733bf4cf17bd86000bd28357697b08f3b656899dceb9e459350b8d55557817444ed5d7fa380a5a'
|
2016-12-19 00:44:56 +00:00
|
|
|
'SKIP'
|
2018-09-26 12:34:38 +00:00
|
|
|
'269c0f0bacbd06a3d817fde02dce26c99d9f55c9e3b74bb710bd7e5cdde7a66b904d2eb794c8a605bf9305e4e3dee261a6e7d4ec9d9134144754914039f176e4'
|
|
|
|
'bdf05f99407491e27a03aaf845b7cc8acfa2e0e59968236f10ffc905e5e3d5e8569df496fd71c887da2b5b8d1902494520c7da2d3a8258f7fd93a881dd610c99'
|
|
|
|
'b450625ff1e705f8c7eed9e2c0c4fe2179ca061df88a1a777c861c11d543c151cd0160f7f7227babdfe8b36000de084cbcb6fd7bf0f93d2f936c2e65082c82bf')
|
2016-12-19 00:44:56 +00:00
|
|
|
validpgpkeys=('CEACC9E15534EBABB82D3FA03353C9CEF108B584')
|
2016-10-15 15:45:40 +00:00
|
|
|
|
|
|
|
case $CARCH in
|
|
|
|
i?86) _corearch=i386 ;;
|
|
|
|
x86_64) _corearch=x86_64 ;;
|
|
|
|
aarch64) _corearch=aarch64 ;;
|
|
|
|
arm*) _corearch=arm ;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
prepare() {
|
|
|
|
mkdir build-{full,headless}
|
|
|
|
mkdir -p extra-arch-{full,headless}/usr/{bin,share/qemu}
|
|
|
|
|
|
|
|
cd ${pkgname}-${pkgver}
|
|
|
|
sed -i 's/vte-2\.90/vte-2.91/g' configure
|
2017-06-23 00:01:37 +00:00
|
|
|
|
|
|
|
patch -p1 < ../allow_elf64.patch
|
2016-10-15 15:45:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
build() {
|
|
|
|
_build full \
|
|
|
|
--audio-drv-list="pa alsa sdl"
|
|
|
|
|
|
|
|
_build headless \
|
|
|
|
--audio-drv-list= \
|
|
|
|
--disable-bluez \
|
|
|
|
--disable-sdl \
|
|
|
|
--disable-gtk \
|
|
|
|
--disable-vte \
|
|
|
|
--disable-opengl \
|
2017-12-18 18:51:07 +00:00
|
|
|
--disable-virglrenderer
|
2016-10-15 15:45:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
_build() (
|
|
|
|
cd build-$1
|
|
|
|
|
|
|
|
# qemu vs. make 4 == bad
|
|
|
|
export ARFLAGS=rv
|
|
|
|
|
|
|
|
# http://permalink.gmane.org/gmane.comp.emulators.qemu/238740
|
|
|
|
export CFLAGS+=" -fPIC"
|
|
|
|
|
|
|
|
../${pkgname}-${pkgver}/configure \
|
|
|
|
--prefix=/usr \
|
|
|
|
--sysconfdir=/etc \
|
|
|
|
--localstatedir=/var \
|
|
|
|
--libexecdir=/usr/lib/qemu \
|
|
|
|
--python=/usr/bin/python2 \
|
|
|
|
--smbd=/usr/bin/smbd \
|
|
|
|
--with-gtkabi=3.0 \
|
|
|
|
--with-sdlabi=2.0 \
|
|
|
|
--enable-modules \
|
|
|
|
--enable-jemalloc \
|
|
|
|
"${@:2}"
|
|
|
|
|
|
|
|
make
|
|
|
|
)
|
|
|
|
|
|
|
|
package_qemu() {
|
|
|
|
optdepends=('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=("${_headlessdeps[@]}")
|
|
|
|
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-rbd: RBD block support'
|
|
|
|
'qemu-block-gluster: glusterfs block support')
|
|
|
|
install=qemu.install
|
|
|
|
options=(!strip)
|
|
|
|
|
|
|
|
make -C build-$1 DESTDIR="$pkgdir" 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
|
|
|
|
tidy_strip
|
|
|
|
|
|
|
|
# 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,rbd,gluster}.so
|
|
|
|
|
|
|
|
cd ../bin
|
|
|
|
tidy_strip
|
|
|
|
|
|
|
|
# remove extra arch
|
|
|
|
for _bin in qemu-*; do
|
|
|
|
[[ -f $_bin ]] || continue
|
|
|
|
|
|
|
|
case ${_bin#qemu-} in
|
|
|
|
# guest agent
|
|
|
|
ga) rm "$_bin"; continue ;;
|
|
|
|
|
|
|
|
# tools
|
|
|
|
img|io|nbd) 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
|
|
|
|
# iPXE ROMs
|
|
|
|
efi-*|pxe-*) continue ;;
|
|
|
|
|
|
|
|
# core blobs
|
2016-12-19 00:44:56 +00:00
|
|
|
kvmvapic.bin|linuxboot*|multiboot.bin|sgabios.bin|vgabios*) continue ;;
|
2016-10-15 15:45:40 +00:00
|
|
|
|
|
|
|
# Trace events definitions
|
2016-12-19 00:44:56 +00:00
|
|
|
trace-events*) continue ;;
|
2016-10-15 15:45:40 +00:00
|
|
|
|
|
|
|
# Logos
|
|
|
|
*.bmp|*.svg) continue ;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
mv "$_blob" "$srcdir/extra-arch-$1/usr/share/qemu"
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
package_qemu-arch-extra() {
|
|
|
|
pkgdesc="QEMU for foreign architectures"
|
|
|
|
depends=(qemu)
|
|
|
|
provides=(qemu-headless-arch-extra)
|
|
|
|
conflicts=(qemu-headless-arch-extra)
|
|
|
|
options=(!strip)
|
|
|
|
|
|
|
|
mv extra-arch-full/usr "$pkgdir"
|
|
|
|
}
|
|
|
|
|
|
|
|
package_qemu-headless-arch-extra() {
|
|
|
|
pkgdesc="QEMU without GUI, for foreign architectures"
|
|
|
|
depends=(qemu-headless)
|
|
|
|
options=(!strip)
|
|
|
|
|
|
|
|
mv extra-arch-headless/usr "$pkgdir"
|
|
|
|
}
|
|
|
|
|
|
|
|
package_qemu-block-iscsi() {
|
|
|
|
pkgdesc="QEMU iSCSI block module"
|
|
|
|
depends=(glib2 libiscsi jemalloc)
|
|
|
|
|
|
|
|
install -D build-full/block-iscsi.so "$pkgdir/usr/lib/qemu/block-iscsi.so"
|
|
|
|
}
|
|
|
|
|
|
|
|
package_qemu-block-rbd() {
|
|
|
|
pkgdesc="QEMU RBD block module"
|
|
|
|
depends=(glib2 ceph)
|
|
|
|
|
|
|
|
install -D build-full/block-rbd.so "$pkgdir/usr/lib/qemu/block-rbd.so"
|
|
|
|
}
|
|
|
|
|
|
|
|
package_qemu-block-gluster() {
|
|
|
|
pkgdesc="QEMU GlusterFS block module"
|
|
|
|
depends=(glib2 glusterfs)
|
|
|
|
|
|
|
|
install -D build-full/block-gluster.so "$pkgdir/usr/lib/qemu/block-gluster.so"
|
|
|
|
}
|
|
|
|
|
|
|
|
package_qemu-guest-agent() {
|
|
|
|
pkgdesc="QEMU Guest Agent"
|
|
|
|
depends=(gcc-libs glib2)
|
|
|
|
|
|
|
|
install -D build-full/qemu-ga "$pkgdir/usr/bin/qemu-ga"
|
|
|
|
install -Dm644 qemu-ga.service "$pkgdir/usr/lib/systemd/system/qemu-ga.service"
|
2017-03-14 12:41:59 +00:00
|
|
|
install -Dm755 "$srcdir/qemu-$pkgver/scripts/qemu-guest-agent/fsfreeze-hook" "$pkgdir/etc/qemu/fsfreeze-hook"
|
2016-10-15 15:45:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
# vim:set ts=2 sw=2 et:
|