void-packages/srcpkgs/qemu/template
Érico Nogueira ac0bf8bd58 qemu: restore mremap-efault patch.
This was deleted in b393370212, but was
still necessary. Without it, qemu in user mode has the wrong return
value for mremap, which leads to infinite looping in some
situations (afaik only with musl).  This could be observed with
qemu-user-static when crossbuilding webkit2gtk for armv*-musl, where
strace(1) showed infinite looping:

mremap(0x6525a000, 4096, 8192, 0^C)       = -1 ENOMEM (Out of memory)

The command being used was:

/usr/bin/qemu-arm-static -L /usr/arm-linux-musleabihf -E LD_LIBRARY_PATH=/usr/arm-linux-musleabihf/usr/lib:.libs: /builddir/webkitgtk-2.32.1/build/Source/WebKit/tmp-introspecth0go8pvu/WebKit2-4.0 --introspect-dump=/builddir/webkitgtk-2.32.1/build/Source/WebKit/tmp-introspecth0go8pvu/functions.txt,/builddir/webkitgtk-2.32.1/build/Source/WebKit/tmp-introspecth0go8pvu/dump.xml
2021-05-11 14:47:10 -03:00

98 lines
3.4 KiB
Bash

# Template file for 'qemu'
# This package should be updated together with qemu-user-static
pkgname=qemu
version=6.0.0
revision=2
build_style=configure
hostmakedepends="gettext pkg-config perl python3 automake libtool flex
python3-Sphinx texinfo ninja"
makedepends="libpng-devel libjpeg-turbo-devel pixman-devel snappy-devel
libuuid-devel libX11-devel alsa-lib-devel libaio-devel gnutls-devel
libsasl-devel libglib-devel ncurses-devel libseccomp-devel nss-devel
libcurl-devel xfsprogs-devel libcap-ng-devel libcap-devel vde2-devel usbredir-devel
libbluetooth-devel libssh2-devel libusb-devel pulseaudio-devel libnfs-devel
libzstd-devel $(vopt_if sdl2 'SDL2-devel SDL2_image-devel')
$(vopt_if gtk3 "gtk+3-devel vte3-devel")
$(vopt_if spice spice-devel) $(vopt_if virgl virglrenderer-devel)
$(vopt_if opengl 'libepoxy-devel libdrm-devel MesaLib-devel')
$(vopt_if iscsi 'libiscsi-devel')
$(vopt_if smartcard libcacard-devel) $(vopt_if numa 'libnuma-devel')
$(vopt_if spice 'pcsclite-devel')"
short_desc="Open Source Processor Emulator"
maintainer="Helmut Pozimski <helmut@pozimski.eu>"
license="GPL-2.0-or-later, LGPL-2.1-or-later"
homepage="https://www.qemu.org"
distfiles="https://wiki.qemu.org/download/qemu-${version}.tar.bz2"
checksum=7d306a03c67c0b667d21b55e1b172f5e55a9af5ee09cbd739fb2395aeca7860c
ignore_elf_dirs="/usr/share/qemu"
nostrip_files="hppa-firmware.img openbios-ppc openbios-sparc32 openbios-sparc64
palcode-clipper s390-ccw.img s390-netboot.img u-boot.e500 opensbi-riscv32-generic-fw_dynamic.elf
opensbi-riscv64-generic-fw_dynamic.elf"
# FIXME
make_check=extended
build_options="gtk3 opengl sdl2 spice virgl smartcard numa iscsi"
build_options_default="opengl gtk3 virgl sdl2 numa iscsi"
desc_option_sdl2="Enable SDL (2.x) video output"
desc_option_spice="Enable support for SPICE"
desc_option_virgl="Enable support for VirGL (A Virtual 3D GPU renderer)"
desc_option_smartcard="Enable smartcard support"
desc_option_numa="Enable support for host NUMA"
desc_option_iscsi="Enable support for iSCSI"
case "$XBPS_TARGET_MACHINE" in
i686*|x86_64*|ppc64le*) build_options_default+=" spice";;
aarch64-musl) CFLAGS="-D_LINUX_SYSINFO_H";;
esac
if [ -z "$CROSS_BUILD" ]; then
build_options_default+=" smartcard"
fi
pre_configure() {
vsed -i 's/__u64/unsigned long/' linux-user/host/aarch64/hostdep.h
}
do_configure() {
local args=
if [ "$CROSS_BUILD" ]; then
args+=" --cross-prefix=${XBPS_CROSS_TRIPLET}-"
export LIBTOOL=libtool
fi
unset CPP
local want_sdl="--disable-sdl"
local audio_sdl=""
if [ "$build_option_sdl2" ]; then
want_sdl="--enable-sdl"
audio_sdl=",sdl"
fi
./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/libexec \
--enable-kvm --audio-drv-list=alsa,pa${audio_sdl} \
--disable-xen --enable-tpm \
--enable-vhost-net --enable-vnc-png --enable-virtfs \
--enable-libusb --disable-glusterfs --enable-snappy --enable-usb-redir \
--enable-pie --localstatedir=/var --enable-docs \
$(vopt_enable virgl virglrenderer) $(vopt_enable opengl) $(vopt_enable spice) \
${want_sdl} \
$(vopt_enable smartcard) \
$(vopt_if gtk3 "--enable-gtk") ${args}
}
do_install() {
make DESTDIR=${DESTDIR} install
# qemu-bridge-helper must be setuid for non privileged users.
chmod u+s ${DESTDIR}/usr/libexec/qemu-bridge-helper
vsv qemu-ga
}
qemu-ga_package() {
short_desc="QEMU Guest Agent"
pkg_install() {
vmove usr/bin/qemu-ga
vmove etc/sv/qemu-ga
}
}