added extra/qemu

This commit is contained in:
Kevin Mihelich 2016-10-15 15:45:40 +00:00
parent 54f725f147
commit 167bf2e2e2
5 changed files with 246 additions and 0 deletions

2
extra/qemu/65-kvm.rules Normal file
View file

@ -0,0 +1,2 @@
KERNEL=="kvm", GROUP="kvm", MODE="0660"
KERNEL=="vhost-net", GROUP="kvm", MODE="0660", TAG+="uaccess", OPTIONS+="static_node=vhost-net"

224
extra/qemu/PKGBUILD Normal file
View file

@ -0,0 +1,224 @@
# $Id$
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
# Contributor: Sébastien "Seblu" Luttringer <seblu@seblu.net>
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - remove seabios depend, revert not installing qemu seabios files
# - remove numactl and spice (make)depends
# - define ARM _corearchs
buildarch=28
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"
pkgver=2.7.0
pkgrel=2
arch=(i686 x86_64)
license=(GPL2 LGPL2.1)
url="http://wiki.qemu.org/"
_headlessdeps=(gnutls libpng libaio jemalloc xfsprogs libnfs
lzo snappy curl vde2 libcap-ng usbredir)
depends=(virglrenderer sdl2 vte3 brltty "${_headlessdeps[@]}")
makedepends=(python2 ceph libiscsi glusterfs)
source=("$url/download/${pkgname}-${pkgver}.tar.bz2"
qemu.sysusers
qemu-ga.service
65-kvm.rules)
sha256sums=('326e739506ba690daf69fc17bd3913a6c313d9928d743bd8eddb82f403f81e53'
'dd43e2ef062b071a0b9d0d5ea54737f41600ca8a84a8aefbebb1ff09f978acfb'
'0b4f3283973bb3bc876735f051d8eaab68f0065502a3a5012141fad193538ea1'
'60dcde5002c7c0b983952746e6fb2cf06d6c5b425d64f340f819356e561e7fc7')
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
}
build() {
_build full \
--audio-drv-list="pa alsa sdl"
_build headless \
--audio-drv-list= \
--disable-bluez \
--disable-sdl \
--disable-gtk \
--disable-vte \
--disable-opengl \
--disable-virglrenderer \
--disable-brlapi
}
_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"
install -Dm644 qemu.sysusers "$pkgdir/usr/lib/sysusers.d/qemu.conf"
# 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
kvmvapic.bin|linuxboot.bin|multiboot.bin|sgabios.bin|vgabios*) continue ;;
# Trace events definitions
trace-events) continue ;;
# 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"
}
# vim:set ts=2 sw=2 et:

View file

@ -0,0 +1,8 @@
[Unit]
Description=QEMU Guest Agent
[Service]
ExecStart=/usr/bin/qemu-ga
[Install]
WantedBy=multi-user.target

11
extra/qemu/qemu.install Normal file
View file

@ -0,0 +1,11 @@
# Arg 1: the new package version
post_install() {
# create kvm group
systemd-sysusers qemu.conf
# trigger events on modules files when already loaded
for _f in /sys/devices/virtual/misc/{kvm,vhost-net}; do
[[ -e "$_f" ]] && udevadm trigger "$_f"
done
:
}

1
extra/qemu/qemu.sysusers Normal file
View file

@ -0,0 +1 @@
g kvm 78 -