diff options
author | Matthias Maier <tamiko@gentoo.org> | 2017-02-27 18:18:08 -0600 |
---|---|---|
committer | Matthias Maier <tamiko@gentoo.org> | 2017-02-27 23:06:02 -0600 |
commit | e6788f4442a0daaf2a75cc6302e5f0ef104c3624 (patch) | |
tree | 049d8805d62973ba6255cab1189753143663db5f /app-emulation/qemu | |
parent | sys-cluster/ceph: Revision bump, fix installation of python modules (diff) | |
download | gentoo-e6788f4442a0daaf2a75cc6302e5f0ef104c3624.tar.gz gentoo-e6788f4442a0daaf2a75cc6302e5f0ef104c3624.tar.bz2 gentoo-e6788f4442a0daaf2a75cc6302e5f0ef104c3624.zip |
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/qemu')
-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 530bcd9d71d6..d4a03a7f1c44 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 |