summaryrefslogtreecommitdiff
path: root/app-emulation
diff options
context:
space:
mode:
authorMatthias Maier <tamiko@gentoo.org>2017-02-27 18:18:08 -0600
committerMatthias Maier <tamiko@gentoo.org>2017-02-27 23:06:02 -0600
commite6788f4442a0daaf2a75cc6302e5f0ef104c3624 (patch)
tree049d8805d62973ba6255cab1189753143663db5f /app-emulation
parent94b05cdca212da1ed1dccd797a815e9a08fd1aa3 (diff)
downloadgentoo-e6788f4442a0daaf2a75cc6302e5f0ef104c3624.tar.gz
gentoo-e6788f4442a0daaf2a75cc6302e5f0ef104c3624.tar.xz
app-emulation/qemu: ebuild maintenance (2.8.0-r5)
This commit addresses several bugs in the current dependency handling. - Almost all dependencies that were exclusively listed in SOFTMMU_LIBS_DEPEND are needed for qemu user targets as well. This is evidenced by trying to compile qemu with USE="* -static -static-softmmu -static-user" QEMU_USER_TARGETS="*" QEMU_SOFTMMU_TARGETS="" in a minimal stage-3 environment. The only remaining dependencies (exclusive for softmmu system targets) are - always build qemu-tools - restructure dependencies, bug #611084 Package-Manager: Portage-2.3.3, Repoman-2.3.1
Diffstat (limited to 'app-emulation')
-rw-r--r--app-emulation/qemu/qemu-2.8.0-r5.ebuild (renamed from app-emulation/qemu/qemu-2.8.0-r4.ebuild)155
1 files changed, 78 insertions, 77 deletions
diff --git a/app-emulation/qemu/qemu-2.8.0-r4.ebuild b/app-emulation/qemu/qemu-2.8.0-r5.ebuild
index 530bcd9d71d..d4a03a7f1c4 100644
--- a/app-emulation/qemu/qemu-2.8.0-r4.ebuild
+++ b/app-emulation/qemu/qemu-2.8.0-r5.ebuild
@@ -1,7 +1,7 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-EAPI="5"
+EAPI="6"
PYTHON_COMPAT=( python2_7 )
PYTHON_REQ_USE="ncurses,readline"
@@ -25,19 +25,20 @@ HOMEPAGE="http://www.qemu.org http://www.linux-kvm.org"
LICENSE="GPL-2 LGPL-2 BSD-2"
SLOT="0"
-IUSE="accessibility +aio alsa bluetooth bzip2 +caps +curl debug +fdt glusterfs \
-gnutls gtk gtk2 infiniband iscsi +jpeg \
-kernel_linux kernel_FreeBSD lzo ncurses nfs nls numa opengl +pin-upstream-blobs
-+png pulseaudio python \
-rbd sasl +seccomp sdl sdl2 selinux smartcard snappy spice ssh static static-softmmu
-static-user systemtap tci test +threads usb usbredir vde +vhost-net \
-virgl virtfs +vnc vte xattr xen xfs"
-
-COMMON_TARGETS="aarch64 alpha arm cris i386 m68k microblaze microblazeel mips
-mips64 mips64el mipsel or32 ppc ppc64 s390x sh4 sh4eb sparc sparc64
-x86_64"
-IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS} lm32 moxie ppcemb tricore unicore32 xtensa xtensaeb"
-IUSE_USER_TARGETS="${COMMON_TARGETS} armeb mipsn32 mipsn32el ppc64abi32 ppc64le sparc32plus tilegx"
+IUSE="accessibility +aio alsa bluetooth bzip2 +caps +curl debug +fdt
+ glusterfs gnutls gtk gtk2 infiniband iscsi +jpeg kernel_linux
+ kernel_FreeBSD lzo ncurses nfs nls numa opengl +pin-upstream-blobs +png
+ pulseaudio python rbd sasl +seccomp sdl sdl2 selinux smartcard snappy
+ spice ssh static systemtap tci test +threads usb usbredir vde
+ +vhost-net virgl virtfs +vnc vte xattr xen xfs"
+
+COMMON_TARGETS="aarch64 alpha arm cris i386 m68k microblaze microblazeel
+ mips mips64 mips64el mipsel or32 ppc ppc64 s390x sh4 sh4eb sparc
+ sparc64 x86_64"
+IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS}
+ lm32 moxie ppcemb tricore unicore32 xtensa xtensaeb"
+IUSE_USER_TARGETS="${COMMON_TARGETS}
+ armeb mipsn32 mipsn32el ppc64abi32 ppc64le sparc32plus tilegx"
use_softmmu_targets=$(printf ' qemu_softmmu_targets_%s' ${IUSE_SOFTMMU_TARGETS})
use_user_targets=$(printf ' qemu_user_targets_%s' ${IUSE_USER_TARGETS})
@@ -52,32 +53,35 @@ REQUIRED_USE="${PYTHON_REQUIRED_USE}
qemu_softmmu_targets_ppc? ( fdt )
qemu_softmmu_targets_ppc64? ( fdt )
sdl2? ( sdl )
- static? ( static-softmmu static-user )
- static-softmmu? ( !alsa !pulseaudio !bluetooth !opengl !gtk !gtk2 )
+ static? ( !alsa !pulseaudio !bluetooth !opengl !gtk !gtk2 )
virtfs? ( xattr )
vte? ( gtk )"
+# Dependencies required for qemu tools (qemu-nbd, qemu-img, qemu-io, ...)
+# and user/softmmu targets (qemu-*, qemu-system-*).
+#
# Yep, you need both libcap and libcap-ng since virtfs only uses libcap.
#
# The attr lib isn't always linked in (although the USE flag is always
# respected). This is because qemu supports using the C library's API
# when available rather than always using the extranl library.
#
-# Older versions of gnutls are supported, but it's simpler to just require
-# the latest versions. This is also why we require nettle.
-#
-# TODO: Split out tools deps into another var. e.g. bzip2 is only used by
-# system binaries and tools, not user binaries.
-COMMON_LIB_DEPEND=">=dev-libs/glib-2.0[static-libs(+)]
- sys-libs/zlib[static-libs(+)]
- bzip2? ( app-arch/bzip2[static-libs(+)] )
- xattr? ( sys-apps/attr[static-libs(+)] )"
-SOFTMMU_LIB_DEPEND="${COMMON_LIB_DEPEND}
+# To configure and compile qemu user targets or tools alone the following
+# dependencies are not strictly necessary:
+# alsa? ( >=media-libs/alsa-lib-1.0.13 )
+# fdt? ( >=sys-apps/dtc-1.4.0[static-libs(+)] )
+# pulseaudio? ( media-sound/pulseaudio )
+# seccomp? ( >=sys-libs/libseccomp-2.1.0[static-libs(+)] )
+# but these are so few it is not worth the effort to separate this list.
+TARGETS_DEPEND="
+ >=dev-libs/glib-2.0[static-libs(+)]
>=x11-libs/pixman-0.28.0[static-libs(+)]
+ sys-libs/zlib[static-libs(+)]
accessibility? ( app-accessibility/brltty[static-libs(+)] )
aio? ( dev-libs/libaio[static-libs(+)] )
alsa? ( >=media-libs/alsa-lib-1.0.13 )
bluetooth? ( net-wireless/bluez )
+ bzip2? ( app-arch/bzip2[static-libs(+)] )
caps? ( sys-libs/libcap-ng[static-libs(+)] )
curl? ( >=net-misc/curl-7.15.4[static-libs(+)] )
fdt? ( >=sys-apps/dtc-1.4.0[static-libs(+)] )
@@ -114,6 +118,7 @@ SOFTMMU_LIB_DEPEND="${COMMON_LIB_DEPEND}
)
png? ( media-libs/libpng:0=[static-libs(+)] )
pulseaudio? ( media-sound/pulseaudio )
+ python? ( ${PYTHON_DEPS} )
rbd? ( sys-cluster/ceph[static-libs(+)] )
sasl? ( dev-libs/cyrus-sasl[static-libs(+)] )
sdl? (
@@ -134,13 +139,16 @@ SOFTMMU_LIB_DEPEND="${COMMON_LIB_DEPEND}
>=app-emulation/spice-0.12.0[static-libs(+)]
)
ssh? ( >=net-libs/libssh2-1.2.8[static-libs(+)] )
- usb? ( >=virtual/libusb-1-r2[static-libs(+)] )
+ systemtap? ( dev-util/systemtap )
usbredir? ( >=sys-apps/usbredir-0.6[static-libs(+)] )
+ usb? ( >=virtual/libusb-1-r2[static-libs(+)] )
vde? ( net-misc/vde[static-libs(+)] )
virgl? ( media-libs/virglrenderer[static-libs(+)] )
virtfs? ( sys-libs/libcap )
+ xattr? ( sys-apps/attr[static-libs(+)] )
+ xen? ( app-emulation/xen-tools:= )
xfs? ( sys-fs/xfsprogs[static-libs(+)] )"
-USER_LIB_DEPEND="${COMMON_LIB_DEPEND}"
+
X86_FIRMWARE_DEPEND="
>=sys-firmware/ipxe-1.0.0_p20130624
pin-upstream-blobs? (
@@ -153,14 +161,11 @@ X86_FIRMWARE_DEPEND="
sys-firmware/sgabios
sys-firmware/vgabios
)"
+
CDEPEND="
- !static-softmmu? ( $(printf "%s? ( ${SOFTMMU_LIB_DEPEND//\[static-libs(+)]} ) " ${use_softmmu_targets}) )
- !static-user? ( $(printf "%s? ( ${USER_LIB_DEPEND//\[static-libs(+)]} ) " ${use_user_targets}) )
+ !static? ( ${TARGETS_DEPEND//\[static-libs(+)]} )
qemu_softmmu_targets_i386? ( ${X86_FIRMWARE_DEPEND} )
- qemu_softmmu_targets_x86_64? ( ${X86_FIRMWARE_DEPEND} )
- python? ( ${PYTHON_DEPS} )
- systemtap? ( dev-util/systemtap )
- xen? ( app-emulation/xen-tools:= )"
+ qemu_softmmu_targets_x86_64? ( ${X86_FIRMWARE_DEPEND} )"
DEPEND="${CDEPEND}
dev-lang/perl
=dev-lang/python-2*
@@ -168,15 +173,39 @@ DEPEND="${CDEPEND}
virtual/pkgconfig
kernel_linux? ( >=sys-kernel/linux-headers-2.6.35 )
gtk? ( nls? ( sys-devel/gettext ) )
- static-softmmu? ( $(printf "%s? ( ${SOFTMMU_LIB_DEPEND} ) " ${use_softmmu_targets}) )
- static-user? ( $(printf "%s? ( ${USER_LIB_DEPEND} ) " ${use_user_targets}) )
+ static? ( ${TARGETS_DEPEND} )
test? (
dev-libs/glib[utils]
sys-devel/bc
)"
RDEPEND="${CDEPEND}
- selinux? ( sec-policy/selinux-qemu )
-"
+ selinux? ( sec-policy/selinux-qemu )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.5.0-cflags.patch
+ "${FILESDIR}"/${PN}-2.5.0-sysmacros.patch
+ "${FILESDIR}"/${PN}-2.7.0-CVE-2016-8669-1.patch #597108
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2016-9908.patch #601826
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2016-9912.patch #602630
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2016-10028.patch #603444
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2016-10155.patch #606720
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-2615.patch #608034
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-2630.patch #609396
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5525-1.patch #606264
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5525-2.patch
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5552.patch #606722
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5578.patch #607000
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5579.patch #607100
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5667.patch #607766
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5856.patch #608036
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5857.patch #608038
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5898.patch #608520
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5931.patch #608728
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5973.patch #609334
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5987.patch #609398
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-6058.patch #609638
+ "${FILESDIR}"/${PN}-2.8.0-CVE-2017-2620.patch #609206
+)
STRIP_MASK="/usr/share/qemu/palcode-clipper"
@@ -186,8 +215,7 @@ QA_PREBUILT="
usr/share/qemu/openbios-sparc32
usr/share/qemu/palcode-clipper
usr/share/qemu/s390-ccw.img
- usr/share/qemu/u-boot.e500
-"
+ usr/share/qemu/u-boot.e500"
QA_WX_LOAD="usr/bin/qemu-i386
usr/bin/qemu-x86_64
@@ -332,29 +360,7 @@ src_prepare() {
-e 's/^(C|OP_C|HELPER_C)FLAGS=/\1FLAGS+=/' \
Makefile Makefile.target || die
- epatch "${FILESDIR}"/${PN}-2.5.0-cflags.patch
- epatch "${FILESDIR}"/${PN}-2.5.0-sysmacros.patch
- epatch "${FILESDIR}"/${PN}-2.7.0-CVE-2016-8669-1.patch #597108
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2016-9908.patch #601826
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2016-9912.patch #602630
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2016-10028.patch #603444
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2016-10155.patch #606720
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-2615.patch #608034
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-2630.patch #609396
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5525-1.patch #606264
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5525-2.patch
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5552.patch #606722
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5578.patch #607000
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5579.patch #607100
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5667.patch #607766
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5856.patch #608036
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5857.patch #608038
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5898.patch #608520
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5931.patch #608728
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5973.patch #609334
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-5987.patch #609398
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-6058.patch #609638
- epatch "${FILESDIR}"/${PN}-2.8.0-CVE-2017-2620.patch #609206
+ default
# Fix ld and objcopy being called directly
tc-export AR LD OBJCOPY
@@ -362,8 +368,6 @@ src_prepare() {
# Verbose builds
MAKEOPTS+=" V=1"
- epatch_user
-
# Run after we've applied all patches.
handle_locales
}
@@ -377,7 +381,6 @@ qemu_src_configure() {
local buildtype=$1
local builddir="${S}/${buildtype}-build"
- local static_flag="static-${buildtype}"
mkdir "${builddir}"
@@ -477,6 +480,7 @@ qemu_src_configure() {
conf_opts+=(
--disable-linux-user
--enable-system
+ --disable-tools
--with-system-pixman
--audio-drv-list="${audio_opts}"
)
@@ -488,9 +492,9 @@ qemu_src_configure() {
--disable-linux-user
--disable-system
--disable-blobs
+ --enable-tools
$(use_enable bzip2)
)
- static_flag="static"
;;
esac
@@ -503,7 +507,7 @@ qemu_src_configure() {
# We always want to attempt to build with PIE support as it results
# in a more secure binary. But it doesn't work with static or if
# the current GCC doesn't have PIE support.
- if use ${static_flag}; then
+ if use static; then
conf_opts+=( --static --disable-pie )
else
gcc-specs-pie && conf_opts+=( --enable-pie )
@@ -546,7 +550,7 @@ src_configure() {
[[ -n ${softmmu_targets} ]] && qemu_src_configure "softmmu"
[[ -n ${user_targets} ]] && qemu_src_configure "user"
- [[ -z ${softmmu_targets}${user_targets} ]] && qemu_src_configure "tools"
+ qemu_src_configure "tools"
}
src_compile() {
@@ -560,10 +564,8 @@ src_compile() {
default
fi
- if [[ -z ${softmmu_targets}${user_targets} ]]; then
- cd "${S}/tools-build"
- default
- fi
+ cd "${S}/tools-build"
+ default
}
src_test() {
@@ -633,6 +635,7 @@ EOF
done
cat "${FILESDIR}"/qemu-binfmt.initd.tail >>"${out}" || die
}
+
src_install() {
if [[ -n ${user_targets} ]]; then
cd "${S}/user-build"
@@ -663,10 +666,8 @@ src_install() {
fi
fi
- if [[ -z ${softmmu_targets}${user_targets} ]]; then
- cd "${S}/tools-build"
- emake DESTDIR="${ED}" install
- fi
+ cd "${S}/tools-build"
+ emake DESTDIR="${ED}" install
# Disable mprotect on the qemu binaries as they use JITs to be fast #459348
pushd "${ED}"/usr/bin >/dev/null