# Maintainer (Arch:qemu): Tobias Powalowski # Contributor (Arch:qemu): Sébastien "Seblu" Luttringer # Maintainer: Luke Shumaker # Contributor: Márcio Silva # "Do I need to rebuild?" : A flowchart # # ,--> pixman-static ------------------------------------, # | 0.34.0-1.static2 | # qemu-user-static --+------------------------+----> pcre-static -----------+--> glibc # 2.12.0-1.static1 | | 8.42-1.static1 | 2.27-3 # `--> glib2-static -------+----> libffi-static ---------+ # 2.56.1-1.static1 | 3.2.1-2.static2 | # +----> libutil-linux-static --+ # | 2.32-3.static1 | # `----> zlib ------------------' # 1:1.2.11-2 _pkgbase=qemu pkgname=(qemu-user-static qemu-user-static-binfmt) pkgdesc="A generic and open source machine emulator and virtualizer" pkgver=3.1.0 pkgrel=1 pkgrel+=.static1 arch=(x86_64) arch+=(i686 armv7h) license=(GPL2 LGPL2.1) url="http://wiki.qemu.org/" depends=() makedepends=(pixman-static python glib2-static pcre-static) source=(https://download.qemu.org/qemu-$pkgver.tar.xz{,.sig} allow_elf64.patch) sha512sums=('7e8dae823937cfac2f0c60406bd3bdcb89df40313dab2a4bed327d5198f7fcc68ac8b31e44692caa09299cc71256ee0b8c17e4f49f78ada8043d424f5daf82fe' 'SKIP' 'b450625ff1e705f8c7eed9e2c0c4fe2179ca061df88a1a777c861c11d543c151cd0160f7f7227babdfe8b36000de084cbcb6fd7bf0f93d2f936c2e65082c82bf') 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 patch -p1 < ../allow_elf64.patch } build() { local flags=( --static --disable-system # disable building qemu-system-$CPU, we only want qemu-$CPU --enable-linux-user --disable-modules --disable-guest-agent # disable building qemu-ga --disable-guest-agent-msi --disable-tools # disable building the qemu-{io,nbd,img} tools --disable-blobs # disable installing firmware files used by system --disable-docs # 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/python3 \ --smbd=/usr/bin/smbd \ --with-sdlabi=2.0 \ --enable-modules \ --enable-jemalloc \ "${@:2}" make V=1 ) package_qemu-user-static() { pkgdesc="QEMU user-mode emulation (static binaries)" make -C build-static DESTDIR="$pkgdir" install "${@:2}" rm -fvr -- "$pkgdir"/{var,usr/lib,usr/share} local prog for prog in "$pkgdir"/usr/bin/*; do mv -vnT -- "$prog" "${prog%-static}-static" done } package_qemu-user-static-binfmt() { pkgdesc="binfmt registration for QEMU user-mode emulation" depends=("qemu-user-static=$pkgver") cd ${_pkgbase}-${pkgver} install -d "$pkgdir"/usr/lib/binfmt.d ./scripts/qemu-binfmt-conf.sh \ --qemu-path /usr/bin \ --systemd ALL \ --exportdir "$pkgdir"/usr/lib/binfmt.d \ --credential yes # add the "-static" suffix sed -i 's/:[^:]*$/-static&/' -- "$pkgdir"/usr/lib/binfmt.d/*.conf }