summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
authorRyszard Knop2018-02-08 18:40:13 +0100
committerRyszard Knop2018-02-08 18:40:13 +0100
commite07b610f20ddd6680d1adaab046051370aae1857 (patch)
tree1af239031d54e6d675820e23a1d6d0c1097a8ed0 /PKGBUILD
downloadaur-e07b610f20ddd6680d1adaab046051370aae1857.tar.gz
Initial commit (and hopefully the only one)
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD223
1 files changed, 223 insertions, 0 deletions
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..69561b3fd35b
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,223 @@
+# Maintainer: Vaporeon <vaporeon@vaporeon.io>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Sébastien "Seblu" Luttringer <seblu@seblu.net>
+
+pkgbase=qemu-patched-vfiomsitest
+pkgname=(qemu-patched-vfiomsitest qemu-patched-vfiomsitest-headless
+ qemu-patched-vfiomsitest-block-{iscsi,rbd,gluster} qemu-patched-vfiomsitest-guest-agent)
+_pkgname=qemu
+pkgdesc="A generic and open source machine emulator and virtualizer - Patched for extra functionality"
+pkgver=2.11.0
+pkgrel=3
+arch=(x86_64)
+license=(GPL2 LGPL2.1)
+url="http://wiki.qemu.org/"
+_headlessdeps=(seabios gnutls libpng libaio numactl jemalloc xfsprogs libnfs
+ lzo snappy curl vde2 libcap-ng spice libcacard usbredir)
+depends=(virglrenderer sdl2 vte3 libpulse "${_headlessdeps[@]}")
+makedepends=(spice-protocol python2 ceph libiscsi glusterfs)
+source=("$url/download/${_pkgname}-${pkgver}.tar.xz"{,.sig}
+ qemu-ga.service
+ 65-kvm.rules
+ allow_elf64.patch
+ cpu-pinning.patch
+ audio-improvements.patch
+ v2_qemu_zen_smt_cache.patch
+ v4_ivshmem.patch
+ vfio-msi-1.patch
+ vfio-msi-2.patch
+ vfio-msi-3.patch
+ vfio-msi-4.patch
+ vfio-msi-5.patch)
+sha256sums=('c9d34a79024eae080ce3853aa9afe503824520eefb440190383003081ce7f437'
+ 'SKIP'
+ 'c39bcde4a09165e64419fd2033b3532378bba84d509d39e2d51694d44c1f8d88'
+ 'a66f0e791b16b03b91049aac61a25950d93e962e1b2ba64a38c6ad7f609b532c'
+ '13a6d9e678bdc9e1f051006cfd0555f5a80582368f54c8a1bb5a78ece3832ac4'
+ '8d4a7e35ab1a0a465f737cf60fc0392afc430e22354a40a89505f8766a3a3ee8'
+ '23338655345d0ee535f34acc124f1ddd75e5ad4483e2bd87294b7ac4fe3fa859'
+ 'adf3f389849e92c5ea4c4cee0abf1ac5df61a176d296e9263ac773194ba86e57'
+ '4acbbd8834dc5782feb86795748f37e1b1aa4f61b54303234ea4f13bd4c0e068'
+ '9e7b0c7e54ae0f5a9288b1e65421ecec3f369e5ac34a8660c516897419090c07'
+ 'f6c12889551a22a2a6d78d106022b47a652987b9b0ab3fbd7494a86400491e26'
+ 'bbeacc088f39d5baf42281bac1efa930a8eb3277a455e858a8edafdd021b3446'
+ 'e8935e9e318f4d497ecade9a4b667ed494feba6304b1b4f08f9fd18c9a53c3fa'
+ '8f105c549f565f61b1e4f6e2f91109620721cc0d5fd88407aebfdba55440ddf8')
+validpgpkeys=('CEACC9E15534EBABB82D3FA03353C9CEF108B584')
+
+case $CARCH in
+ i?86) _corearch=i386 ;;
+ x86_64) _corearch=x86_64 ;;
+esac
+
+prepare() {
+ mkdir build-{full,headless}
+
+ cd ${_pkgname}-${pkgver}
+ sed -i 's/vte-2\.90/vte-2.91/g' configure
+
+ patch -p1 < ../allow_elf64.patch
+ patch -p1 < ../cpu-pinning.patch
+ patch -p0 < ../audio-improvements.patch
+ patch -p1 < ../v2_qemu_zen_smt_cache.patch
+ patch -p1 < ../v4_ivshmem.patch
+
+ # Experimental VFIO MSI interrupt patches, please read before using:
+ # https://redd.it/7vsfv7 and on the QEMU mailing list:
+ # https://lists.gnu.org/archive/html/qemu-devel/2018-02/msg01543.html
+ patch -p1 < ../vfio-msi-1.patch
+ patch -p1 < ../vfio-msi-2.patch
+ patch -p1 < ../vfio-msi-3.patch
+ patch -p1 < ../vfio-msi-4.patch
+ patch -p1 < ../vfio-msi-5.patch
+}
+
+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
+}
+
+_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 \
+ --target-list=x86_64-softmmu,x86_64-linux-user \
+ --with-gtkabi=3.0 \
+ --with-sdlabi=2.0 \
+ --enable-modules \
+ --enable-jemalloc \
+ "${@:2}"
+
+ make
+)
+
+package_qemu-patched-vfiomsitest() {
+ provides=(qemu-headless qemu)
+ conflicts=(qemu-headless qemu)
+ replaces=(qemu-kvm)
+
+ _package full
+}
+
+package_qemu-patched-vfiomsitest-headless() {
+ pkgdesc="QEMU without GUI"
+ depends=("${_headlessdeps[@]}")
+ conflicts=(qemu-headless)
+ _package headless
+}
+
+_package() {
+ optdepends+=('ovmf: Tianocore UEFI firmware for qemu'
+ 'samba: SMB/CIFS server support'
+ 'qemu-patched-vfiomsitest-block-iscsi: iSCSI block support'
+ 'qemu-patched-vfiomsitest-block-rbd: RBD block support'
+ 'qemu-patched-vfiomsitest-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
+
+ cd ../share/qemu
+ for _blob in *; do
+ [[ -f $_blob ]] || continue
+
+ case $_blob in
+ # provided by seabios package
+ bios.bin|acpi-dsdt.aml|bios-256k.bin|vgabios-cirrus.bin|vgabios-qxl.bin|\
+ vgabios-stdvga.bin|vgabios-vmware.bin) rm "$_blob"; continue ;;
+
+ # iPXE ROMs
+ efi-*|pxe-*) continue ;;
+
+ # core blobs
+ kvmvapic.bin|linuxboot*|multiboot.bin|sgabios.bin|vgabios*) continue ;;
+
+ # Trace events definitions
+ trace-events*) continue ;;
+
+ # Logos
+ *.bmp|*.svg) continue ;;
+ esac
+ done
+}
+
+package_qemu-patched-vfiomsitest-block-iscsi() {
+ pkgdesc="QEMU iSCSI block module"
+ depends=(glib2 libiscsi jemalloc)
+ conflicts=(qemu-block-iscsi)
+ provides=(qemu-block-iscsi)
+
+ install -D build-full/block-iscsi.so "$pkgdir/usr/lib/qemu/block-iscsi.so"
+}
+
+package_qemu-patched-vfiomsitest-block-rbd() {
+ pkgdesc="QEMU RBD block module"
+ depends=(glib2 ceph)
+ conflicts=(qemu-block-rbd)
+ provides=(qemu-block-rbd)
+
+ install -D build-full/block-rbd.so "$pkgdir/usr/lib/qemu/block-rbd.so"
+}
+
+package_qemu-patched-vfiomsitest-block-gluster() {
+ pkgdesc="QEMU GlusterFS block module"
+ depends=(glib2 glusterfs)
+ conflicts=(qemu-block-gluster)
+ provides=(qemu-block-gluster)
+
+ install -D build-full/block-gluster.so "$pkgdir/usr/lib/qemu/block-gluster.so"
+}
+
+package_qemu-patched-vfiomsitest-guest-agent() {
+ pkgdesc="QEMU Guest Agent"
+ depends=(gcc-libs glib2)
+ conflicts=(qemu-guest-agent)
+ provides=(qemu-guest-agent)
+
+ install -D build-full/qemu-ga "$pkgdir/usr/bin/qemu-ga"
+ install -Dm644 qemu-ga.service "$pkgdir/usr/lib/systemd/system/qemu-ga.service"
+ install -Dm755 "$srcdir/${_pkgname}-${pkgver}/scripts/qemu-guest-agent/fsfreeze-hook" "$pkgdir/etc/qemu/fsfreeze-hook"
+}
+
+# vim:set ts=2 sw=2 et: