Last active
November 20, 2018 13:06
-
-
Save PedroHLC/e91f5af53b2a671a1433d705ab9c09e5 to your computer and use it in GitHub Desktop.
Intel HAXM patch applied to QEMU
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Maintainer: Frederic Bezies <[email protected]> | |
# Contributor: ajs124 < aur at ajs124 dot de> | |
# Contributor: Devin Cofer <ranguvar{AT]archlinux[DOT}us> | |
# Contributor: Tobias Powalowski <[email protected]> | |
# Contributor: Sébastien "Seblu" Luttringer <[email protected]> | |
pkgbase=qemu-haxm-git | |
_gitname=qemu | |
pkgname=(qemu-haxm-git qemu-haxm-headless-git qemu-haxm-arch-extra-git qemu-haxm-headless-arch-extra-git qemu-haxm-block-{iscsi-git,rbd-git,gluster-git} qemu-haxm-guest-agent-git) | |
pkgdesc="A generic and open source machine emulator and virtualizer. Git version. Intel HAXM patch applied." | |
pkgver=v2.12.1.r1.g860b93ff0f | |
pkgrel=1 | |
epoch=5 | |
arch=(i686 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=(dtc virglrenderer sdl2 vte3 libpulse "${_headlessdeps[@]}") | |
makedepends=(spice-protocol python2 ceph libiscsi glusterfs git) | |
source=("${_gitname}::git+https://github.com/kryptoslogic/qemu.git#branch=haxm-linux" | |
qemu-ga.service | |
65-kvm.rules) | |
sha256sums=('SKIP' | |
'0b4f3283973bb3bc876735f051d8eaab68f0065502a3a5012141fad193538ea1' | |
'60dcde5002c7c0b983952746e6fb2cf06d6c5b425d64f340f819356e561e7fc7') | |
case $CARCH in | |
i?86) _corearch=i386 ;; | |
x86_64) _corearch=x86_64 ;; | |
esac | |
pkgver() { | |
cd "${srcdir}/${_gitname}" | |
git describe --long | sed 's/\([^-]*-g\)/r\1/;s/-/./g' | |
} | |
prepare() { | |
cd "${srcdir}/${_gitname}" | |
mkdir build-{full,headless} | |
mkdir -p extra-arch-{full,headless}/usr/{bin,share/qemu} | |
#cd "${srcdir}/${_gitname}" | |
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 | |
} | |
_build() ( | |
cd ${srcdir}/${_gitname}/build-$1 | |
# qemu vs. make 4 == bad | |
export ARFLAGS=rv | |
# http://permalink.gmane.org/gmane.comp.emulators.qemu/238740 | |
export CFLAGS+=" -fPIC" | |
../configure \ | |
--prefix=/usr \ | |
--sysconfdir=/etc \ | |
--localstatedir=/var \ | |
--libexecdir=/usr/lib/qemu \ | |
--python=/usr/bin/python2 \ | |
--smbd=/usr/bin/smbd \ | |
--with-sdlabi=2.0 \ | |
--enable-hax \ | |
--enable-modules \ | |
--enable-jemalloc \ | |
--disable-werror \ | |
"${@:2}" | |
make | |
) | |
package_qemu-haxm-git() { | |
optdepends=('qemu-haxm-arch-extra-git: extra architectures support') | |
conflicts=('qemu-haxm-headless' 'qemu' 'kvm' 'kvm-git' 'qemu-spice') | |
provides=('qemu-headless' 'qemu' 'qemu-kvm' 'qemu-spice') | |
replaces=(qemu-kvm) | |
_package full | |
} | |
package_qemu-haxm-headless-git() { | |
pkgdesc="QEMU without GUI. Git version." | |
depends=("${_headlessdeps[@]}") | |
optdepends=('qemu-haxm-headless-arch-extra-git: extra architectures support') | |
conflicts=('qemu-headless') | |
_package headless | |
} | |
_package() { | |
optdepends+=('ovmf: Tianocore UEFI firmware for qemu' | |
'samba: SMB/CIFS server support' | |
'qemu-haxm-block-iscsi-git: iSCSI block support' | |
'qemu-haxm-block-rbd-git: RBD block support' | |
'qemu-haxm-block-gluster-git: glusterfs block support') | |
install=qemu.install | |
options=(!strip) | |
make -C ${srcdir}/${_gitname}/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/$_gitname/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|acpi-dsdt.aml|bios-256k.bin|vgabios-cirrus.bin|vgabios-qxl.bin|\ | |
vgabios-stdvga.bin|vgabios-bochs-display.bin|vgabios-ramfb.bin|vgabios-vmware.bin|vgabios-virtio.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 | |
mv "$_blob" "$srcdir/$_gitname/extra-arch-$1/usr/share/qemu" | |
done | |
} | |
package_qemu-haxm-arch-extra-git() { | |
pkgdesc="QEMU for foreign architectures. Git version." | |
depends=(qemu) | |
provides=(qemu-arch-extra) | |
conflicts=(qemu-arch-extra) | |
options=(!strip) | |
mv $srcdir/$_gitname/extra-arch-full/usr "$pkgdir" | |
} | |
package_qemu-haxm-headless-arch-extra-git() { | |
pkgdesc="QEMU without GUI, for foreign architectures. Git version." | |
depends=(qemu-headless) | |
options=(!strip) | |
conflicts=(qemu-headless-arch-extra) | |
provides=(qemu-headless-arch-extra) | |
mv $srcdir/$_gitname/extra-arch-headless/usr "$pkgdir" | |
} | |
package_qemu-haxm-block-iscsi-git() { | |
pkgdesc="QEMU iSCSI block module. Git version." | |
depends=(glib2 libiscsi jemalloc) | |
conflicts=(qemu-block-iscsi) | |
provides=(qemu-block-iscsi) | |
install -D $srcdir/$_gitname/build-full/block-iscsi.so "$pkgdir/usr/lib/qemu/block-iscsi.so" | |
} | |
package_qemu-haxm-block-rbd-git() { | |
pkgdesc="QEMU RBD block module. Git version." | |
depends=(glib2 ceph) | |
conflicts=(qemu-block-rbd) | |
provides=(qemu-block-rbd) | |
install -D $srcdir/$_gitname/build-full/block-rbd.so "$pkgdir/usr/lib/qemu/block-rbd.so" | |
} | |
package_qemu-haxm-block-gluster-git() { | |
pkgdesc="QEMU GlusterFS block module. Git version." | |
depends=(glib2 glusterfs) | |
conflicts=(qemu-block-gluster) | |
provides=(qemu-block-gluster) | |
install -D $srcdir/$_gitname/build-full/block-gluster.so "$pkgdir/usr/lib/qemu/block-gluster.so" | |
} | |
package_qemu-haxm-guest-agent-git() { | |
pkgdesc="QEMU Guest Agent. Git version." | |
depends=(gcc-libs glib2) | |
conflicts=(qemu-guest-agent) | |
provides=(qemu-guest-agent) | |
install -D $srcdir/$_gitname/build-full/qemu-ga "$pkgdir/usr/bin/qemu-ga" | |
install -Dm644 $srcdir/qemu-ga.service "$pkgdir/usr/lib/systemd/system/qemu-ga.service" | |
install -Dm755 "$srcdir/$_gitname/scripts/qemu-guest-agent/fsfreeze-hook" "$pkgdir/etc/qemu/fsfreeze-hook" | |
} | |
# vim:set ts=2 sw=2 et: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment