From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 10843138252 for ; Tue, 10 May 2016 21:24:14 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 5B34C21C082; Tue, 10 May 2016 21:24:11 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id DF3D321C082 for ; Tue, 10 May 2016 21:24:10 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id AC07634092D for ; Tue, 10 May 2016 21:24:08 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id E941E336 for ; Tue, 10 May 2016 21:24:05 +0000 (UTC) From: "Ian Stakenvicius" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Ian Stakenvicius" Message-ID: <1462915439.2c0ee347b81c3abfe84ef030a87621079f2ce8ce.axs@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: x11-drivers/xf86-video-virtualbox/ X-VCS-Repository: repo/gentoo X-VCS-Files: x11-drivers/xf86-video-virtualbox/xf86-video-virtualbox-5.0.20-r1.ebuild X-VCS-Directories: x11-drivers/xf86-video-virtualbox/ X-VCS-Committer: axs X-VCS-Committer-Name: Ian Stakenvicius X-VCS-Revision: 2c0ee347b81c3abfe84ef030a87621079f2ce8ce X-VCS-Branch: master Date: Tue, 10 May 2016 21:24:05 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 073623d6-78f4-4200-8f8b-9f5e39852316 X-Archives-Hash: c7ba5adf0231ad6d322f610d87e01f94 commit: 2c0ee347b81c3abfe84ef030a87621079f2ce8ce Author: Ian Stakenvicius gentoo org> AuthorDate: Tue May 10 21:22:24 2016 +0000 Commit: Ian Stakenvicius gentoo org> CommitDate: Tue May 10 21:23:59 2016 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2c0ee347 x11-drivers/xf86-video-virtualbox: build vboxdrv.ko objects a little differently This is an attempt at preventing bug 582078. With DRM_TTM enabled in the kernel (choosing the DRM module for any of the other VMs will include it), and a sufficient vmalloc= specified to the kernel (at least 1.5x the amount of gpu memory provided), the module will load into the kernel. Tests on an x86 vm and 4.1.23 kernel resulted in PANICs; YMMV. Package-Manager: portage-2.2.26 .../xf86-video-virtualbox-5.0.20-r1.ebuild | 216 +++++++++++++++++++++ 1 file changed, 216 insertions(+) diff --git a/x11-drivers/xf86-video-virtualbox/xf86-video-virtualbox-5.0.20-r1.ebuild b/x11-drivers/xf86-video-virtualbox/xf86-video-virtualbox-5.0.20-r1.ebuild new file mode 100644 index 0000000..8784c04 --- /dev/null +++ b/x11-drivers/xf86-video-virtualbox/xf86-video-virtualbox-5.0.20-r1.ebuild @@ -0,0 +1,216 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 + +PYTHON_COMPAT=( python2_7 ) +inherit eutils linux-mod multilib python-single-r1 versionator toolchain-funcs + +MY_PV="${PV/beta/BETA}" +MY_PV="${MY_PV/rc/RC}" +MY_P=VirtualBox-${MY_PV} +DESCRIPTION="VirtualBox video driver" +HOMEPAGE="http://www.virtualbox.org/" +SRC_URI="http://download.virtualbox.org/virtualbox/${MY_PV}/${MY_P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="dri" + +RDEPEND=">=x11-base/xorg-server-1.7:=[-minimal] + x11-libs/libXcomposite" +DEPEND="${RDEPEND} + >=dev-util/kbuild-0.1.9998_pre20131130 + ${PYTHON_DEPS} + >=dev-lang/yasm-0.6.2 + >=sys-devel/gcc-4.9.0 + sys-power/iasl + x11-proto/fontsproto + x11-proto/randrproto + x11-proto/renderproto + x11-proto/resourceproto + x11-proto/scrnsaverproto + x11-proto/xextproto + x11-proto/xineramaproto + x11-proto/xproto + x11-libs/libXdmcp + x11-libs/libXau + x11-libs/libX11 + x11-libs/libXfixes + x11-libs/libXext + dri? ( x11-proto/xf86driproto + >=x11-libs/libdrm-2.4.5 )" + +REQUIRED_USE=( "${PYTHON_REQUIRED_USE}" ) + +BUILD_TARGETS="all" +BUILD_TARGET_ARCH="${ARCH}" +S="${WORKDIR}/${MY_P}" +MODULES_SRC_DIR="${S}/src/VBox/Additions/linux/drm" +MODULE_NAMES="vboxvideo(misc:${MODULES_SRC_DIR}:${MODULES_SRC_DIR})" + +PATCHES=( + # Ugly hack to build the opengl part of the video driver + "${FILESDIR}/${PN}-2.2.0-enable-opengl.patch" + + # unset useless/problematic checks in configure + "${FILESDIR}/${PN}-5.0.0_beta3-configure_checks.patch" +) + +QA_TEXTRELS_x86="usr/lib/VBoxOGL.so" + +pkg_setup() { + if [ "${MERGE_TYPE}" != "binary" ]; then + version_is_at_least 4.9 $(gcc-version) || die "Please set gcc 4.9 or higher as active in gcc-config to build ${PN}" + fi + + CONFIG_CHECK="~DRM ~DRM_TTM" + linux-mod_pkg_setup + BUILD_PARAMS="KERN_DIR=${KV_OUT_DIR} KERNOUT=${KV_OUT_DIR}" + + python-single-r1_pkg_setup +} + +src_prepare() { + # Prepare the vboxvideo_drm Makefiles and build dir + eapply "${FILESDIR}"/${P}-Makefile.module.kms.patch + + # Remove shipped binaries (kBuild,yasm), see bug #232775 + rm -r kBuild/bin tools || die + + # Disable things unused or splitted into separate ebuilds + cp "${FILESDIR}/${PN}-5-localconfig" LocalConfig.kmk || die + + default + + # link with lazy on hardened #394757 + sed '/^TEMPLATE_VBOXR3EXE_LDFLAGS.linux/s/$/ -Wl,-z,lazy/' \ + -i Config.kmk || die +} + +src_configure() { + # build the user-space tools, warnings are harmless + local cmd=( + ./configure + --nofatal + --disable-xpcom + --disable-sdl-ttf + --disable-pulse + --disable-alsa + --with-gcc="$(tc-getCC)" + --with-g++="$(tc-getCXX)" + --target-arch=${ARCH} + --with-linux="${KV_OUT_DIR}" + --build-headless + ) + echo "${cmd[@]}" + "${cmd[@]}" || die "configure failed" + source ./env.sh + export VBOX_GCC_OPT="${CFLAGS} ${CPPFLAGS}" +} + +src_compile() { + local each targets=( + Runtime + Additions/common/VBoxGuestLib + GuestHost/OpenGL + Additions/x11/x11stubs + Additions/common/crOpenGL + Additions/x11/vboxvideo + ) + + # need to use the upstream build system to create necessary objects properly + use dri && targets+=( Additions/linux/drm ) + + for each in ${targets[@]} ; do + pushd "${S}"/src/VBox/${each} $>/dev/null || die + MAKE="kmk" \ + emake TOOL_YASM_AS=yasm \ + VBOX_USE_SYSTEM_XORG_HEADERS=1 \ + KBUILD_PATH="${S}/kBuild" \ + KBUILD_VERBOSE=2 + popd &>/dev/null || die + done + + if use dri; then + local objdir="out/linux.${ARCH}/release/obj/vboxvideo_drm" + # We need a Makefile, so use Makefile.module.kms + ln -s Makefile.module.kms "${MODULES_SRC_DIR}"/Makefile || die + # All of these are expected to be in $(KBUILD_EXTMOD)/ so symlink them into place + targets=( + include + src/VBox/Runtime/r0drv + src/VBox/Installer/linux/Makefile.include.{head,foot}er + out/linux.${ARCH}/release/{product,version,revision}-generated.h + ) + for each in ${targets[@]} ; do + ln -s "${S}"/${each} \ + "${MODULES_SRC_DIR}"/${each##*/} || die + done + # see the vboxvideo_drm_SOURCES list in Makefile.kmk for the below, + # and replace '..' with 'dt' + targets=( + dt/dt/common/VBoxVideo/HGSMIBase.o + dt/dt/common/VBoxVideo/Modesetting.o + dt/dt/common/VBoxVideo/VBVABase.o + dt/dt/dt/GuestHost/HGSMI/HGSMICommon.o + dt/dt/dt/GuestHost/HGSMI/HGSMIMemAlloc.o + dt/dt/dt/Runtime/common/alloc/heapoffset.o + ) + for each in ${targets[@]} ; do + ln -s "${S}"/${objdir}/${each} \ + "${MODULES_SRC_DIR}" || die + ln -s "${S}"/${objdir}/${each}.dep \ + "${MODULES_SRC_DIR}" || die + done + + # Now creating the kernel modules. We must do this _after_ + # we compiled the user-space tools as we need two of the + # automatically generated header files. (>=3.2.0) + pushd "${MODULES_SRC_DIR}" &>/dev/null || die + linux-mod_src_compile + popd &>/dev/null || die + fi +} + +src_install() { + if use dri; then + pushd "${MODULES_SRC_DIR}" &>/dev/null || die + linux-mod_src_install + popd &>/dev/null || die + fi + + cd "${S}/out/linux.${ARCH}/release/bin/additions" || die + insinto /usr/$(get_libdir)/xorg/modules/drivers + newins vboxvideo_drv_system.so vboxvideo_drv.so + + # Guest OpenGL driver + insinto /usr/$(get_libdir) + doins -r VBoxOGL* + + if use dri ; then + dosym /usr/$(get_libdir)/VBoxOGL.so \ + /usr/$(get_libdir)/dri/vboxvideo_dri.so + fi +} + +pkg_postinst() { + elog "You need to edit the file /etc/X11/xorg.conf and set:" + elog "" + elog " Driver \"vboxvideo\"" + elog "" + elog "in the Graphics device section (Section \"Device\")" + elog "" + if use dri; then + elog "To use the kernel drm video driver, please add:" + elog "\"${MODULE_NAMES%(*}\" to:" + if has_version sys-apps/openrc ; then + elog "/etc/conf.d/modules" + else + elog "/etc/modules.autoload.d/kernel-${KV_MAJOR}.${KV_MINOR}" + fi + elog "" + fi +}