# Maintainer (Arch:qemu): Tobias Powalowski # Contributor (Arch:qemu): Sébastien "Seblu" Luttringer # Maintainer: Luke Shumaker # Contributor: Márcio Silva _pkgbase=qemu pkgname=(qemu-user-static qemu-user-static-binfmt) pkgdesc="A generic and open source machine emulator and virtualizer" pkgver=2.11.0 pkgrel=3.parabola1 arch=(x86_64) arch+=(i686 armv7h) license=(GPL2 LGPL2.1) url="http://wiki.qemu.org/" makedepends=(pixman-static glib2-static pcre-static python2) source=("$url/download/${_pkgbase}-${pkgver}.tar.bz2"{,.sig} 0001-linux-user-Use-if-to-only-call-validate_guest_space-.patch 0002-linux-user-Rename-validate_guest_space-init_guest_co.patch 0003-linux-user-init_guest_space-Clean-up-if-we-can-t-ini.patch 0004-linux-user-init_guest_space-Correctly-handle-guest_s.patch 0005-linux-user-init_guest_space-Clarify-page-alignment-l.patch 0006-linux-user-init_guest_commpage-Add-a-comment-about-s.patch 0007-linux-user-init_guest_space-Clean-up-control-flow-a-.patch 0008-linux-user-init_guest_space-Don-t-try-to-align-if-we.patch 0009-linux-user-init_guest_space-Add-a-comment-about-sear.patch 0010-linux-user-init_guest_space-Try-to-make-ARM-space-co.patch allow_elf64.patch) sha256sums=('c4f034c7665a84a1c3be72c8da37f3c31ec063475699df062ab646d8b2e17fcb' 'SKIP' '9953a8debd9456adb4f5968817fa89da4d4542e44980a5533ccf86371d819845' 'a977e9295daa14a9c73258cf16399eb5af66382217f8a4e69951ec044131a7ce' 'dba2cfeb24841d45936091319957ee6f65e481da3c761791d410d3b8e6799998' '75b3bda6752c4bf17488489f898767b6772b10ecc5d1f0a5bc1bd831e99a31e3' '731895a8ed6f6d322bb60764b01cf09e0ea762d7d53fc01e91c2d2aecfdc8844' '69b37040f52ef86b86c7c2952eb3f85f3c67d7adf289c43fdac8c71827c6e5b9' '76f88850b0f52450eecb80029ffe16db6f418cec3b58231aca354cc20bbfb16a' '76944d84990cc76e47c381849c683a346c5234bcebbe4c24334d0fd8368482db' '7845867348fd380def28c7fe023e54cee8ff88cd6754aae3ab3472149cfbde51' '1953e7cac58c23526d007d8559410e0042d4a7c1b8cbd5f4c0543f7f876436dd' '13a6d9e678bdc9e1f051006cfd0555f5a80582368f54c8a1bb5a78ece3832ac4') validpgpkeys=('CEACC9E15534EBABB82D3FA03353C9CEF108B584') case $CARCH in i?86) _corearch=i386 ;; x86_64) _corearch=x86_64 ;; esac prepare() { mkdir build-static mkdir -p extra-arch-static/usr/{bin,share/qemu} cd ${_pkgbase}-${pkgver} sed -i 's/vte-2\.90/vte-2.91/g' configure # https://bugs.launchpad.net/qemu/+bug/1740219 # https://lists.nongnu.org/archive/html/qemu-devel/2017-12/msg05237.html local patchfile for patchfile in ../????-linux-user-*.patch; do patch -p1 < "$patchfile" done patch -p1 < ../allow_elf64.patch } build() { local flags=( --static --disable-system # disable building qemu-system-$CPU, we only want qemu-$CPU --disable-guest-agent # disable building qemu-ga --disable-tools # disable building the qemu-{io,nbd,img} tools --disable-blobs # disable installing firmware files used by system --disable-docs --disable-modules # modules imply dynamic linking # jemalloc-static isn't packaged --disable-jemalloc # These libraries are only used for system or tools, but even # though that's disabled, libqemuutil.a still tries to link # against them unless we specifically tell it not to (the linkage # would be removed at the final linker's tree-shaking). --disable-gcrypt --disable-nettle ) _build static "${flags[@]}" \ --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" ../${_pkgbase}-${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-user-static() { pkgdesc="QEMU user-mode emulation (static binaries)" provides=("qemu-static=$pkgver") replaces=(qemu-static) conflicts=(qemu-static) _package static rm -vr -- \ "$pkgdir"/usr/lib/ \ "$pkgdir"/usr/share/ local prog for prog in "$pkgdir"/usr/bin/*; do mv -nT -- "$prog" "${prog%-static}-static" done } _package() { options=(!strip) make -C build-$1 DESTDIR="$pkgdir" install "${@:2}" cd "$pkgdir"/usr/bin tidy_strip } package_qemu-user-static-binfmt() { pkgdesc="binfmt registration for QEMU user-mode emulation" depends=("qemu-user-static=$pkgver") provides=("binfmt-qemu-static=$pkgver") replaces=('binfmt-qemu-static') conflicts=('binfmt-qemu-static') cd ${_pkgbase}-${pkgver} install -d "$pkgdir"/usr/lib/binfmt.d < scripts/qemu-binfmt-conf.sh \ sed -e 's/^CHECK=.*/CHECK=qemu_check_systemd/' \ -e 's/^BINFMT_SET=.*/BINFMT_SET=qemu_generate_systemd/' \ | sh /dev/stdin \ --qemu-path /usr/bin \ --exportdir "$pkgdir"/usr/lib/binfmt.d \ --credential yes # add the "-static" suffix sed -i 's/:[^:]*$/-static&/' -- "$pkgdir"/usr/lib/binfmt.d/*.conf }