app-emulation/qemu: update to 6.1.0

Update app-emulation/qemu to 6.1.0, mainly to address security issues
like CVE-2021-3682 .
This commit is contained in:
Dongsu Park 2021-12-02 13:01:16 +01:00
parent 2093afe3eb
commit ce3f18f6fa
12 changed files with 162 additions and 215 deletions

View File

@ -1 +1 @@
DIST qemu-5.2.0.tar.xz 106902800 BLAKE2B 4413d5591cbabf80faba5b0b7347ee7749ff0a71af44bdf7f64b1995e17ecf1f3df539fa8e63959e0d50cd0502a41a2921e60cc6d078ed8ab5b09ab4b86d4ed7 SHA512 bddd633ce111471ebc651e03080251515178808556b49a308a724909e55dac0be0cc0c79c536ac12d239678ae94c60100dc124be9b9d9538340c03a2f27177f3 DIST qemu-6.1.0.tar.xz 111258808 BLAKE2B 412eecf6d39debd6089b26d3b22e5d25c6c8c30d2eaf31b17c25cc2b3a1b10794a30218dfb151c78801aa295255aa974b297f1fe05b93f14334f203c2af5ccee SHA512 3378ae21c75b77ee6a759827f1fcf7b2a50a0fef07e3b0e89117108022a8d8655fa977e4d65596f4f24f7c735c6594d44b0c6f69732ea4465e88a7406b1d5d3c

View File

@ -1,2 +0,0 @@
KERNEL=="kvm", GROUP="kvm", MODE="0660"
KERNEL=="vhost-net", GROUP="kvm", MODE="0660", OPTIONS+="static_node=vhost-net"

View File

@ -1,40 +0,0 @@
-Wall -Wextra compains about unused arguments,
causes safe-stack to be mis-detected.
--- a/configure
+++ b/configure
@@ -2293,7 +2293,7 @@ fi
cat > $TMPC << EOF
#include <stdint.h>
#include <stdio.h>
-int main(int argc, char *argv[]) {
+int main(void) {
return printf("%zu", SIZE_MAX);
}
EOF
@@ -4911,7 +4911,7 @@ fi
if test "$safe_stack" = "yes"; then
cat > $TMPC << EOF
-int main(int argc, char *argv[])
+int main(void)
{
#if ! __has_feature(safe_stack)
#error SafeStack Disabled
@@ -4933,7 +4933,7 @@ EOF
fi
else
cat > $TMPC << EOF
-int main(int argc, char *argv[])
+int main(void)
{
#if defined(__has_feature)
#if __has_feature(safe_stack)
@@ -5283,7 +5283,7 @@ static const int Z = 1;
#define TAUT(X) ((X) == Z)
#define PAREN(X, Y) (X == Y)
#define ID(X) (X)
-int main(int argc, char *argv[])
+int main(void)
{
int x = 0, y = 0;
x = ID(x);

View File

@ -1,16 +0,0 @@
Se absolute filename in files like
/usr/share/qemu/firmware/50-edk2-x86_64-secure.json
Bug: https://bugs.gentoo.org/766743
Patch-by: Jannik Glückert
--- a/pc-bios/descriptors/meson.build
+++ b/pc-bios/descriptors/meson.build
@@ -8,7 +8,7 @@ foreach f: [
]
configure_file(input: files(f),
output: f,
- configuration: {'DATADIR': qemu_datadir},
+ configuration: {'DATADIR': get_option('prefix') / qemu_datadir},
install: get_option('install_blobs'),
install_dir: qemu_datadir / 'firmware')
endforeach

View File

@ -1,73 +0,0 @@
From bbd2d5a8120771ec59b86a80a1f51884e0a26e53 Mon Sep 17 00:00:00 2001
From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Date: Mon, 14 Dec 2020 16:09:38 +0100
Subject: [PATCH] build: -no-pie is no functional linker flag
Recent binutils changes dropping unsupported options [1] caused a build
issue in regard to the optionroms.
ld -m elf_i386 -T /<<PKGBUILDDIR>>/pc-bios/optionrom//flat.lds -no-pie \
-s -o multiboot.img multiboot.o
ld.bfd: Error: unable to disambiguate: -no-pie (did you mean --no-pie ?)
This isn't really a regression in ld.bfd, filing the bug upstream
revealed that this never worked as a ld flag [2] - in fact it seems we
were by accident setting --nmagic).
Since it never had the wanted effect this usage of LDFLAGS_NOPIE, should be
droppable without any effect. This also is the only use-case of LDFLAGS_NOPIE
in .mak, therefore we can also remove it from being added there.
[1]: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=983d925d
[2]: https://sourceware.org/bugzilla/show_bug.cgi?id=27050#c5
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Message-Id: <20201214150938.1297512-1-christian.ehrhardt@canonical.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 3 ---
pc-bios/optionrom/Makefile | 1 -
2 files changed, 4 deletions(-)
--- a/configure
+++ b/configure
@@ -2137,7 +2137,6 @@ EOF
# Check we support --no-pie first; we will need this for building ROMs.
if compile_prog "-Werror -fno-pie" "-no-pie"; then
CFLAGS_NOPIE="-fno-pie"
- LDFLAGS_NOPIE="-no-pie"
fi
if test "$static" = "yes"; then
@@ -2153,7 +2152,6 @@ if test "$static" = "yes"; then
fi
elif test "$pie" = "no"; then
CONFIGURE_CFLAGS="$CFLAGS_NOPIE $CONFIGURE_CFLAGS"
- CONFIGURE_LDFLAGS="$LDFLAGS_NOPIE $CONFIGURE_LDFLAGS"
elif compile_prog "-Werror -fPIE -DPIE" "-pie"; then
CONFIGURE_CFLAGS="-fPIE -DPIE $CONFIGURE_CFLAGS"
CONFIGURE_LDFLAGS="-pie $CONFIGURE_LDFLAGS"
@@ -6714,7 +6712,6 @@ echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
echo "GLIB_LIBS=$glib_libs" >> $config_host_mak
echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
-echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
echo "EXESUF=$EXESUF" >> $config_host_mak
echo "HOST_DSOSUF=$HOST_DSOSUF" >> $config_host_mak
diff --git a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile
index 084fc10f05..30771f8d17 100644
--- a/pc-bios/optionrom/Makefile
+++ b/pc-bios/optionrom/Makefile
@@ -41,7 +41,6 @@ override CFLAGS += $(call cc-option, $(Wa)-32)
LD_I386_EMULATION ?= elf_i386
override LDFLAGS = -m $(LD_I386_EMULATION) -T $(SRC_DIR)/flat.lds
-override LDFLAGS += $(LDFLAGS_NOPIE)
all: multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin pvh.bin
--
2.30.0

View File

@ -1,23 +0,0 @@
https://bugs.gentoo.org/759310
--- a/configure
+++ b/configure
@@ -521,6 +521,7 @@ ld="${LD-${cross_prefix}ld}"
ranlib="${RANLIB-${cross_prefix}ranlib}"
nm="${NM-${cross_prefix}nm}"
strip="${STRIP-${cross_prefix}strip}"
+strings="${STRINGS-${cross_prefix}strings}"
windres="${WINDRES-${cross_prefix}windres}"
pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
query_pkg_config() {
@@ -2265,9 +2266,9 @@ int main(int argc, char *argv[]) {
EOF
if compile_object ; then
- if strings -a $TMPO | grep -q BiGeNdIaN ; then
+ if $strings -a $TMPO | grep -q BiGeNdIaN ; then
bigendian="yes"
- elif strings -a $TMPO | grep -q LiTtLeEnDiAn ; then
+ elif $strings -a $TMPO | grep -q LiTtLeEnDiAn ; then
bigendian="no"
else
echo big/little test failed

View File

@ -0,0 +1,14 @@
Allow MAKE='make V=1' and similar.
https://bugs.gentoo.org/795678
--- a/configure
+++ b/configure
@@ -1953,7 +1953,7 @@ if test -z "$python"
then
error_exit "Python not found. Use --python=/path/to/python"
fi
-if ! has "$make"
+if ! has $make
then
error_exit "GNU make ($make) not found"
fi

View File

@ -0,0 +1,21 @@
commit 080832e4f4801a28bd1170c49e61f6a0f5f05d03
Author: Paolo Bonzini <pbonzini@redhat.com>
Date: Tue Sep 7 12:45:12 2021 +0200
ebpf: only include in system emulators
eBPF files are being included in user emulators, which is useless and
also breaks compilation because ebpf/trace-events is only processed
if a system emulator is included in the build.
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/566
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
diff --git a/ebpf/meson.build b/ebpf/meson.build
index 9cd0635370..2dd0fd8948 100644
--- a/ebpf/meson.build
+++ b/ebpf/meson.build
@@ -1 +1 @@
-common_ss.add(when: libbpf, if_true: files('ebpf_rss.c'), if_false: files('ebpf_rss-stub.c'))
+softmmu_ss.add(when: libbpf, if_true: files('ebpf_rss.c'), if_false: files('ebpf_rss-stub.c'))

View File

@ -0,0 +1,26 @@
Forward-ported from original patch for 5.2.0.
diff --git a/configure b/configure
index da2501489f..4660ee3ee5 100755
--- a/configure
+++ b/configure
@@ -516,6 +516,7 @@ ld="${LD-${cross_prefix}ld}"
ranlib="${RANLIB-${cross_prefix}ranlib}"
nm="${NM-${cross_prefix}nm}"
strip="${STRIP-${cross_prefix}strip}"
+strings="${STRINGS-${cross_prefix}strings}"
windres="${WINDRES-${cross_prefix}windres}"
pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
query_pkg_config() {
@@ -2380,9 +2381,9 @@ int main(int argc, char *argv[])
EOF
if compile_prog ; then
- if strings -a $TMPE | grep -q BiGeNdIaN ; then
+ if $strings -a $TMPE | grep -q BiGeNdIaN ; then
bigendian="yes"
- elif strings -a $TMPE | grep -q LiTtLeEnDiAn ; then
+ elif $strings -a $TMPE | grep -q LiTtLeEnDiAn ; then
bigendian="no"
else
echo big/little test failed

View File

@ -1,17 +0,0 @@
Set absolute filename in files like
/usr/share/qemu/firmware/50-edk2-x86_64-secure.json
Bug: https://bugs.gentoo.org/766743
Bug: https://bugs.launchpad.net/qemu/+bug/1913012
Patch-by: Jannik Glückert
--- a/pc-bios/descriptors/meson.build
+++ b/pc-bios/descriptors/meson.build
@@ -9,7 +9,7 @@ if install_edk2_blobs
]
configure_file(input: files(f),
output: f,
- configuration: {'DATADIR': qemu_datadir},
+ configuration: {'DATADIR': get_option('prefix') / qemu_datadir},
install: get_option('install_blobs'),
install_dir: qemu_datadir / 'firmware')
endforeach

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> <!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata> <pkgmetadata>
<maintainer type="person"> <maintainer type="person">
<email>tamiko@gentoo.org</email> <email>tamiko@gentoo.org</email>
<name>Matthias Maier</name> <name>Matthias Maier</name>
</maintainer> </maintainer>
<maintainer type="person"> <maintainer type="person">
<email>slyfox@gentoo.org</email> <email>zlogene@gentoo.org</email>
<name>Sergei Trofimovich</name> <name>Mikle Kolyada</name>
</maintainer> </maintainer>
<maintainer type="project"> <maintainer type="project">
<email>virtualization@gentoo.org</email> <email>virtualization@gentoo.org</email>
@ -17,9 +17,11 @@
<flag name="accessibility">Adds support for braille displays using brltty</flag> <flag name="accessibility">Adds support for braille displays using brltty</flag>
<flag name="aio">Enables support for Linux's Async IO</flag> <flag name="aio">Enables support for Linux's Async IO</flag>
<flag name="alsa">Enable alsa output for sound emulation</flag> <flag name="alsa">Enable alsa output for sound emulation</flag>
<flag name="bpf">Enable eBPF support for RSS implementation.</flag>
<flag name="capstone">Enable disassembly support with <pkg>dev-libs/capstone</pkg></flag> <flag name="capstone">Enable disassembly support with <pkg>dev-libs/capstone</pkg></flag>
<flag name="curl">Support ISOs / -cdrom directives via HTTP or HTTPS.</flag> <flag name="curl">Support ISOs / -cdrom directives via HTTP or HTTPS.</flag>
<flag name="fdt">Enables firmware device tree support</flag> <flag name="fdt">Enables firmware device tree support</flag>
<flag name="fuse">Enables FUSE block device export</flag>
<flag name="glusterfs">Enables GlusterFS cluster fileystem via <flag name="glusterfs">Enables GlusterFS cluster fileystem via
<pkg>sys-cluster/glusterfs</pkg></flag> <pkg>sys-cluster/glusterfs</pkg></flag>
<flag name="gnutls">Enable TLS support for the VNC console server. <flag name="gnutls">Enable TLS support for the VNC console server.
@ -39,7 +41,7 @@
When the blobs are different, random corruption/bugs/crashes/etc... may be observed.</flag> When the blobs are different, random corruption/bugs/crashes/etc... may be observed.</flag>
<flag name="plugins">Enable qemu plugin API via shared library loading.</flag> <flag name="plugins">Enable qemu plugin API via shared library loading.</flag>
<flag name="pulseaudio">Enable pulseaudio output for sound emulation</flag> <flag name="pulseaudio">Enable pulseaudio output for sound emulation</flag>
<flag name="rbd">Enable rados block device backend support, see http://ceph.newdream.net/wiki/QEMU-RBD</flag> <flag name="rbd">Enable rados block device backend support, see https://docs.ceph.com/en/mimic/rbd/qemu-rbd/</flag>
<flag name="sdl">Enable the SDL-based console</flag> <flag name="sdl">Enable the SDL-based console</flag>
<flag name="sdl-image">SDL Image support for icons</flag> <flag name="sdl-image">SDL Image support for icons</flag>
<flag name="slirp">Enable TCP/IP in hypervisor via <pkg>net-libs/libslirp</pkg></flag> <flag name="slirp">Enable TCP/IP in hypervisor via <pkg>net-libs/libslirp</pkg></flag>
@ -54,10 +56,10 @@
<flag name="usb">Enable USB passthrough via <pkg>dev-libs/libusb</pkg></flag> <flag name="usb">Enable USB passthrough via <pkg>dev-libs/libusb</pkg></flag>
<flag name="usbredir">Use <pkg>sys-apps/usbredir</pkg> to redirect USB devices to another machine over TCP</flag> <flag name="usbredir">Use <pkg>sys-apps/usbredir</pkg> to redirect USB devices to another machine over TCP</flag>
<flag name="vde">Enable VDE-based networking</flag> <flag name="vde">Enable VDE-based networking</flag>
<flag name="vhost-net">Enable accelerated networking using vhost-net, see http://www.linux-kvm.org/page/VhostNet</flag> <flag name="vhost-net">Enable accelerated networking using vhost-net, see https://www.linux-kvm.org/page/VhostNet</flag>
<flag name="vhost-user-fs">Enable shared file system access using the FUSE protocol carried over virtio.</flag> <flag name="vhost-user-fs">Enable shared file system access using the FUSE protocol carried over virtio.</flag>
<flag name="virgl">Enable experimental Virgil 3d (virtual software GPU)</flag> <flag name="virgl">Enable experimental Virgil 3d (virtual software GPU)</flag>
<flag name="virtfs">Enable VirtFS via virtio-9p-pci / fsdev. See http://wiki.qemu.org/Documentation/9psetup</flag> <flag name="virtfs">Enable VirtFS via virtio-9p-pci / fsdev. See https://wiki.qemu.org/Documentation/9psetup</flag>
<flag name="vte">Enable terminal support (<pkg>x11-libs/vte</pkg>) in the GTK+ interface</flag> <flag name="vte">Enable terminal support (<pkg>x11-libs/vte</pkg>) in the GTK+ interface</flag>
<flag name="xattr">Add support for getting and setting POSIX extended attributes, through <flag name="xattr">Add support for getting and setting POSIX extended attributes, through
<pkg>sys-apps/attr</pkg>. Requisite for the virtfs backend.</flag> <pkg>sys-apps/attr</pkg>. Requisite for the virtfs backend.</flag>

View File

@ -3,13 +3,13 @@
EAPI="7" EAPI="7"
PYTHON_COMPAT=( python{3_6,3_7} ) PYTHON_COMPAT=( python3_{7,8,9,10} )
PYTHON_REQ_USE="ncurses,readline" PYTHON_REQ_USE="ncurses,readline"
FIRMWARE_ABI_VERSION="4.0.0-r50" FIRMWARE_ABI_VERSION="6.1.0"
inherit eutils linux-info toolchain-funcs multilib python-r1 \ inherit linux-info toolchain-funcs python-r1 udev fcaps readme.gentoo-r1 \
udev fcaps readme.gentoo-r1 pax-utils l10n xdg-utils pax-utils xdg-utils
if [[ ${PV} = *9999* ]]; then if [[ ${PV} = *9999* ]]; then
EGIT_REPO_URI="https://git.qemu.org/git/qemu.git" EGIT_REPO_URI="https://git.qemu.org/git/qemu.git"
@ -23,17 +23,17 @@ if [[ ${PV} = *9999* ]]; then
SRC_URI="" SRC_URI=""
else else
SRC_URI="https://download.qemu.org/${P}.tar.xz" SRC_URI="https://download.qemu.org/${P}.tar.xz"
KEYWORDS="amd64 arm64 ~ppc ~ppc64 x86" KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~x86"
fi fi
DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools" DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools"
HOMEPAGE="http://www.qemu.org http://www.linux-kvm.org" HOMEPAGE="https://www.qemu.org https://www.linux-kvm.org"
LICENSE="GPL-2 LGPL-2 BSD-2" LICENSE="GPL-2 LGPL-2 BSD-2"
SLOT="0" SLOT="0"
IUSE="accessibility +aio alsa bzip2 capstone +caps +curl debug doc IUSE="accessibility +aio alsa bpf bzip2 capstone +caps +curl debug +doc
+fdt glusterfs gnutls gtk infiniband iscsi io-uring +fdt fuse glusterfs gnutls gtk infiniband iscsi io-uring
jack jemalloc +jpeg kernel_linux jack jemalloc +jpeg kernel_linux
kernel_FreeBSD lzo multipath kernel_FreeBSD lzo multipath
ncurses nfs nls numa opengl +oss +pin-upstream-blobs ncurses nfs nls numa opengl +oss +pin-upstream-blobs
@ -43,14 +43,52 @@ IUSE="accessibility +aio alsa bzip2 capstone +caps +curl debug doc
usbredir vde +vhost-net vhost-user-fs virgl virtfs +vnc vte xattr xen usbredir vde +vhost-net vhost-user-fs virgl virtfs +vnc vte xattr xen
xfs zstd" xfs zstd"
COMMON_TARGETS="aarch64 alpha arm cris hppa i386 m68k microblaze microblazeel COMMON_TARGETS="
mips mips64 mips64el mipsel nios2 or1k ppc ppc64 riscv32 riscv64 s390x aarch64
sh4 sh4eb sparc sparc64 x86_64 xtensa xtensaeb" alpha
IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS} arm
avr lm32 moxie rx tricore unicore32" cris
IUSE_USER_TARGETS="${COMMON_TARGETS} hppa
aarch64_be armeb mipsn32 mipsn32el ppc64abi32 ppc64le sparc32plus i386
tilegx" m68k
microblaze
microblazeel
mips
mips64
mips64el
mipsel
nios2
or1k
ppc
ppc64
riscv32
riscv64
s390x
sh4
sh4eb
sparc
sparc64
x86_64
xtensa
xtensaeb
"
IUSE_SOFTMMU_TARGETS="
${COMMON_TARGETS}
avr
rx
tricore
"
IUSE_USER_TARGETS="
${COMMON_TARGETS}
aarch64_be
armeb
hexagon
mipsn32
mipsn32el
ppc64abi32
ppc64le
sparc32plus
"
use_softmmu_targets=$(printf ' qemu_softmmu_targets_%s' ${IUSE_SOFTMMU_TARGETS}) use_softmmu_targets=$(printf ' qemu_softmmu_targets_%s' ${IUSE_SOFTMMU_TARGETS})
use_user_targets=$(printf ' qemu_user_targets_%s' ${IUSE_USER_TARGETS}) use_user_targets=$(printf ' qemu_user_targets_%s' ${IUSE_USER_TARGETS})
@ -67,9 +105,11 @@ REQUIRED_USE="${PYTHON_REQUIRED_USE}
qemu_softmmu_targets_ppc? ( fdt ) qemu_softmmu_targets_ppc? ( fdt )
qemu_softmmu_targets_riscv32? ( fdt ) qemu_softmmu_targets_riscv32? ( fdt )
qemu_softmmu_targets_riscv64? ( fdt ) qemu_softmmu_targets_riscv64? ( fdt )
static? ( static-user !alsa !gtk !jack !opengl !pulseaudio !plugins !rbd !snappy ) sdl-image? ( sdl )
static? ( static-user !alsa !gtk !jack !opengl !pulseaudio !plugins !rbd !snappy !udev )
static-user? ( !plugins ) static-user? ( !plugins )
vhost-user-fs? ( caps seccomp ) vhost-user-fs? ( caps seccomp )
virgl? ( opengl )
virtfs? ( caps xattr ) virtfs? ( caps xattr )
vte? ( gtk ) vte? ( gtk )
multipath? ( udev ) multipath? ( udev )
@ -102,11 +142,13 @@ SOFTMMU_TOOLS_DEPEND="
) )
aio? ( dev-libs/libaio[static-libs(+)] ) aio? ( dev-libs/libaio[static-libs(+)] )
alsa? ( >=media-libs/alsa-lib-1.0.13 ) alsa? ( >=media-libs/alsa-lib-1.0.13 )
bpf? ( dev-libs/libbpf:= )
bzip2? ( app-arch/bzip2[static-libs(+)] ) bzip2? ( app-arch/bzip2[static-libs(+)] )
capstone? ( dev-libs/capstone:= ) capstone? ( dev-libs/capstone:= )
caps? ( sys-libs/libcap-ng[static-libs(+)] ) caps? ( sys-libs/libcap-ng[static-libs(+)] )
curl? ( >=net-misc/curl-7.15.4[static-libs(+)] ) curl? ( >=net-misc/curl-7.15.4[static-libs(+)] )
fdt? ( >=sys-apps/dtc-1.5.0[static-libs(+)] ) fdt? ( >=sys-apps/dtc-1.5.0[static-libs(+)] )
fuse? ( >=sys-fs/fuse-3.1:3[static-libs(+)] )
glusterfs? ( >=sys-cluster/glusterfs-3.4.0[static-libs(+)] ) glusterfs? ( >=sys-cluster/glusterfs-3.4.0[static-libs(+)] )
gnutls? ( gnutls? (
dev-libs/nettle:=[static-libs(+)] dev-libs/nettle:=[static-libs(+)]
@ -128,14 +170,17 @@ SOFTMMU_TOOLS_DEPEND="
jpeg? ( virtual/jpeg:0=[static-libs(+)] ) jpeg? ( virtual/jpeg:0=[static-libs(+)] )
lzo? ( dev-libs/lzo:2[static-libs(+)] ) lzo? ( dev-libs/lzo:2[static-libs(+)] )
multipath? ( sys-fs/multipath-tools ) multipath? ( sys-fs/multipath-tools )
ncurses? ( sys-libs/ncurses:=[unicode(+),static-libs(+)] ) ncurses? (
sys-libs/ncurses:=[unicode(+)]
sys-libs/ncurses:=[static-libs(+)]
)
nfs? ( >=net-fs/libnfs-1.9.3:=[static-libs(+)] ) nfs? ( >=net-fs/libnfs-1.9.3:=[static-libs(+)] )
numa? ( sys-process/numactl[static-libs(+)] ) numa? ( sys-process/numactl[static-libs(+)] )
opengl? ( opengl? (
virtual/opengl virtual/opengl
media-libs/libepoxy[static-libs(+)] media-libs/libepoxy[static-libs(+)]
media-libs/mesa[static-libs(+)] media-libs/mesa[static-libs(+)]
media-libs/mesa[egl,gbm] media-libs/mesa[egl(+),gbm(+)]
) )
png? ( media-libs/libpng:0=[static-libs(+)] ) png? ( media-libs/libpng:0=[static-libs(+)] )
pulseaudio? ( media-sound/pulseaudio ) pulseaudio? ( media-sound/pulseaudio )
@ -155,7 +200,7 @@ SOFTMMU_TOOLS_DEPEND="
>=app-emulation/spice-0.12.0[static-libs(+)] >=app-emulation/spice-0.12.0[static-libs(+)]
) )
ssh? ( >=net-libs/libssh-0.8.6[static-libs(+)] ) ssh? ( >=net-libs/libssh-0.8.6[static-libs(+)] )
udev? ( virtual/libudev[static-libs(+)] ) udev? ( virtual/libudev:= )
usb? ( >=virtual/libusb-1-r2[static-libs(+)] ) usb? ( >=virtual/libusb-1-r2[static-libs(+)] )
usbredir? ( >=sys-apps/usbredir-0.6[static-libs(+)] ) usbredir? ( >=sys-apps/usbredir-0.6[static-libs(+)] )
vde? ( net-misc/vde[static-libs(+)] ) vde? ( net-misc/vde[static-libs(+)] )
@ -166,25 +211,28 @@ SOFTMMU_TOOLS_DEPEND="
zstd? ( >=app-arch/zstd-1.4.0[static-libs(+)] ) zstd? ( >=app-arch/zstd-1.4.0[static-libs(+)] )
" "
EDK2_OVMF_VERSION="202105"
SEABIOS_VERSION="1.14.0"
X86_FIRMWARE_DEPEND=" X86_FIRMWARE_DEPEND="
pin-upstream-blobs? ( pin-upstream-blobs? (
~sys-firmware/edk2-ovmf-201905[binary] ~sys-firmware/edk2-ovmf-${EDK2_OVMF_VERSION}[binary]
~sys-firmware/ipxe-1.0.0_p20190728[binary,qemu] ~sys-firmware/ipxe-1.21.1[binary,qemu]
~sys-firmware/seabios-1.12.0[binary,seavgabios] ~sys-firmware/seabios-${SEABIOS_VERSION}[binary,seavgabios]
~sys-firmware/sgabios-0.1_pre8[binary] ~sys-firmware/sgabios-0.1_pre10[binary]
) )
!pin-upstream-blobs? ( !pin-upstream-blobs? (
sys-firmware/edk2-ovmf >=sys-firmware/edk2-ovmf-${EDK2_OVMF_VERSION}
sys-firmware/ipxe[qemu] sys-firmware/ipxe[qemu]
>=sys-firmware/seabios-1.10.2[seavgabios] >=sys-firmware/seabios-${SEABIOS_VERSION}[seavgabios]
sys-firmware/sgabios sys-firmware/sgabios
)" )"
PPC_FIRMWARE_DEPEND=" PPC_FIRMWARE_DEPEND="
pin-upstream-blobs? ( pin-upstream-blobs? (
~sys-firmware/seabios-1.12.0[binary,seavgabios] ~sys-firmware/seabios-${SEABIOS_VERSION}[binary,seavgabios]
) )
!pin-upstream-blobs? ( !pin-upstream-blobs? (
>=sys-firmware/seabios-1.10.2[seavgabios] >=sys-firmware/seabios-${SEABIOS_VERSION}[seavgabios]
) )
" "
@ -193,7 +241,10 @@ BDEPEND="
dev-lang/perl dev-lang/perl
sys-apps/texinfo sys-apps/texinfo
virtual/pkgconfig virtual/pkgconfig
doc? ( dev-python/sphinx ) doc? (
dev-python/sphinx[${PYTHON_USEDEP}]
dev-python/sphinx_rtd_theme[${PYTHON_USEDEP}]
)
gtk? ( nls? ( sys-devel/gettext ) ) gtk? ( nls? ( sys-devel/gettext ) )
test? ( test? (
dev-libs/glib[utils] dev-libs/glib[utils]
@ -223,11 +274,10 @@ RDEPEND="${CDEPEND}
PATCHES=( PATCHES=(
"${FILESDIR}"/${PN}-2.11.1-capstone_include_path.patch "${FILESDIR}"/${PN}-2.11.1-capstone_include_path.patch
"${FILESDIR}"/${PN}-5.2.0-cleaner-werror.patch
"${FILESDIR}"/${PN}-5.2.0-disable-keymap.patch "${FILESDIR}"/${PN}-5.2.0-disable-keymap.patch
"${FILESDIR}"/${PN}-5.2.0-strings.patch "${FILESDIR}"/${PN}-6.0.0-make.patch
"${FILESDIR}"/${PN}-5.2.0-fix-firmware-path.patch "${FILESDIR}"/${PN}-6.1.0-strings.patch
"${FILESDIR}"/${PN}-5.2.0-no-pie-ld.patch "${FILESDIR}"/${P}-automagic-libbpf.patch
) )
QA_PREBUILT=" QA_PREBUILT="
@ -340,7 +390,7 @@ check_targets() {
local var=$1 mak=$2 local var=$1 mak=$2
local detected sorted local detected sorted
pushd "${S}"/default-configs/targets/ >/dev/null || die pushd "${S}"/configs/targets/ >/dev/null || die
# Force C locale until glibc is updated. #564936 # Force C locale until glibc is updated. #564936
detected=$(echo $(printf '%s\n' *-${mak}.mak | sed "s:-${mak}.mak::" | LC_COLLATE=C sort -u)) detected=$(echo $(printf '%s\n' *-${mak}.mak | sed "s:-${mak}.mak::" | LC_COLLATE=C sort -u))
@ -453,11 +503,13 @@ qemu_src_configure() {
conf_opts+=( conf_opts+=(
$(conf_notuser accessibility brlapi) $(conf_notuser accessibility brlapi)
$(conf_notuser aio linux-aio) $(conf_notuser aio linux-aio)
$(conf_softmmu bpf)
$(conf_notuser bzip2) $(conf_notuser bzip2)
$(conf_notuser capstone) $(conf_notuser capstone)
$(conf_notuser caps cap-ng) $(conf_notuser caps cap-ng)
$(conf_notuser curl) $(conf_notuser curl)
$(conf_notuser fdt) $(conf_notuser fdt)
$(conf_notuser fuse)
$(conf_notuser glusterfs) $(conf_notuser glusterfs)
$(conf_notuser gnutls) $(conf_notuser gnutls)
$(conf_notuser gnutls nettle) $(conf_notuser gnutls nettle)
@ -493,7 +545,7 @@ qemu_src_configure() {
$(conf_notuser vhost-user-fs) $(conf_notuser vhost-user-fs)
$(conf_tools vhost-user-fs virtiofsd) $(conf_tools vhost-user-fs virtiofsd)
$(conf_notuser virgl virglrenderer) $(conf_notuser virgl virglrenderer)
$(conf_notuser virtfs) $(conf_softmmu virtfs)
$(conf_notuser vnc) $(conf_notuser vnc)
$(conf_notuser vte) $(conf_notuser vte)
$(conf_notuser xen) $(conf_notuser xen)
@ -570,6 +622,9 @@ qemu_src_configure() {
tc-enables-pie && conf_opts+=( --enable-pie ) tc-enables-pie && conf_opts+=( --enable-pie )
fi fi
# Meson will not use a cross-file unless cross_prefix is set.
tc-is-cross-compiler && conf_opts+=( --cross-prefix="${CHOST}-" )
# Plumb through equivalent of EXTRA_ECONF to allow experiments # Plumb through equivalent of EXTRA_ECONF to allow experiments
# like bug #747928. # like bug #747928.
conf_opts+=( ${EXTRA_CONF_QEMU} ) conf_opts+=( ${EXTRA_CONF_QEMU} )
@ -720,7 +775,7 @@ src_install() {
[[ -e check-report.html ]] && dodoc check-report.html [[ -e check-report.html ]] && dodoc check-report.html
if use kernel_linux; then if use kernel_linux; then
udev_newrules "${FILESDIR}"/65-kvm.rules-r1 65-kvm.rules udev_newrules "${FILESDIR}"/65-kvm.rules-r2 65-kvm.rules
fi fi
if use python; then if use python; then
@ -798,7 +853,7 @@ src_install() {
firmware_abi_change() { firmware_abi_change() {
local pv local pv
for pv in ${REPLACING_VERSIONS}; do for pv in ${REPLACING_VERSIONS}; do
if ver_test $pv -lt ${FIRMWARE_ABI_VERSION}; then if ver_test ${pv} -lt ${FIRMWARE_ABI_VERSION}; then
return 0 return 0
fi fi
done done