You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
358 lines
10 KiB
358 lines
10 KiB
# Copyright 1999-2015 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Id$
|
|
|
|
EAPI=5
|
|
|
|
PYTHON_COMPAT=( python2_7 )
|
|
|
|
inherit eutils fdo-mime gnome2 pax-utils python-r1 udev unpacker versionator
|
|
|
|
MAIN_PV="$(get_version_component_range 1-3)"
|
|
if [[ ${PV} = *_beta* ]] || [[ ${PV} = *_rc* ]] ; then
|
|
MY_PV="${MAIN_PV}_$(get_version_component_range 5)"
|
|
MY_PV="${MY_PV/beta/BETA}"
|
|
MY_PV="${MY_PV/rc/RC}"
|
|
else
|
|
MY_PV="${MAIN_PV}"
|
|
fi
|
|
VBOX_BUILD_ID="$(get_version_component_range 4)"
|
|
VBOX_PV="${MY_PV}-${VBOX_BUILD_ID}"
|
|
MY_P="VirtualBox-${VBOX_PV}-Linux"
|
|
# needed as sometimes the extpack gets another build ID
|
|
EXTP_PV="${VBOX_PV}"
|
|
EXTP_PN="Oracle_VM_VirtualBox_Extension_Pack"
|
|
EXTP_P="${EXTP_PN}-${EXTP_PV}"
|
|
# needed as sometimes the SDK gets another build ID
|
|
SDK_PV="${VBOX_PV}"
|
|
SDK_P="VirtualBoxSDK-${SDK_PV}"
|
|
|
|
DESCRIPTION="Family of powerful x86 virtualization products for enterprise as well as home use"
|
|
HOMEPAGE="http://www.virtualbox.org/"
|
|
SRC_URI="amd64? ( http://download.virtualbox.org/virtualbox/${MY_PV}/${MY_P}_amd64.run )
|
|
x86? ( http://download.virtualbox.org/virtualbox/${MY_PV}/${MY_P}_x86.run )
|
|
http://download.virtualbox.org/virtualbox/${MY_PV}/${EXTP_P}.vbox-extpack -> ${EXTP_P}.tar.gz"
|
|
|
|
LICENSE="GPL-2 PUEL"
|
|
SLOT="0"
|
|
KEYWORDS="~amd64 ~x86"
|
|
IUSE="+additions +chm headless python vboxwebsrv rdesktop-vrdp"
|
|
RESTRICT="mirror"
|
|
|
|
if [[ "${PV}" != *beta* ]] ; then
|
|
SRC_URI+="
|
|
sdk? ( http://download.virtualbox.org/virtualbox/${MY_PV}/${SDK_P}.zip )"
|
|
IUSE+=" sdk"
|
|
fi
|
|
|
|
DEPEND="app-arch/unzip
|
|
${PYTHON_DEPS}"
|
|
|
|
RDEPEND="!!app-emulation/virtualbox
|
|
!app-emulation/virtualbox-additions
|
|
~app-emulation/virtualbox-modules-${MAIN_PV}
|
|
!headless? (
|
|
x11-libs/libXcursor
|
|
media-libs/libsdl[X]
|
|
x11-libs/libXrender
|
|
x11-libs/libXfixes
|
|
media-libs/libpng
|
|
x11-libs/libXi
|
|
x11-libs/libXrandr
|
|
x11-libs/libXinerama
|
|
x11-libs/libXft
|
|
media-libs/freetype
|
|
media-libs/fontconfig
|
|
x11-libs/libXext
|
|
dev-libs/glib
|
|
chm? ( dev-libs/expat )
|
|
)
|
|
x11-libs/libXt
|
|
dev-libs/libxml2
|
|
x11-libs/libXau
|
|
x11-libs/libX11
|
|
x11-libs/libXmu
|
|
x11-libs/libSM
|
|
x11-libs/libICE
|
|
x11-libs/libXdmcp
|
|
python? ( ${PYTHON_DEPS} )"
|
|
|
|
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
|
|
S=${WORKDIR}
|
|
|
|
QA_TEXTRELS_amd64="opt/VirtualBox/VBoxVMM.so"
|
|
QA_TEXTRELS_x86="opt/VirtualBox/VBoxGuestPropSvc.so
|
|
opt/VirtualBox/VBoxSDL.so
|
|
opt/VirtualBox/VBoxDbg.so
|
|
opt/VirtualBox/VBoxSharedFolders.so
|
|
opt/VirtualBox/VBoxDD2.so
|
|
opt/VirtualBox/VBoxOGLrenderspu.so
|
|
opt/VirtualBox/VBoxPython.so
|
|
opt/VirtualBox/VBoxPython2_7.so
|
|
opt/VirtualBox/VBoxDD.so
|
|
opt/VirtualBox/VBoxVRDP.so
|
|
opt/VirtualBox/VBoxDDU.so
|
|
opt/VirtualBox/VBoxREM64.so
|
|
opt/VirtualBox/VBoxSharedClipboard.so
|
|
opt/VirtualBox/VBoxHeadless.so
|
|
opt/VirtualBox/VBoxRT.so
|
|
opt/VirtualBox/VRDPAuth.so
|
|
opt/VirtualBox/VBoxREM.so
|
|
opt/VirtualBox/VBoxSettings.so
|
|
opt/VirtualBox/VBoxKeyboard.so
|
|
opt/VirtualBox/VBoxSharedCrOpenGL.so
|
|
opt/VirtualBox/VBoxVMM.so
|
|
opt/VirtualBox/VirtualBox.so
|
|
opt/VirtualBox/VBoxOGLhosterrorspu.so
|
|
opt/VirtualBox/components/VBoxC.so
|
|
opt/VirtualBox/components/VBoxSVCM.so
|
|
opt/VirtualBox/VBoxREM32.so
|
|
opt/VirtualBox/VBoxXPCOMC.so
|
|
opt/VirtualBox/VBoxOGLhostcrutil.so
|
|
opt/VirtualBox/VBoxNetDHCP.so
|
|
opt/VirtualBox/VBoxGuestControlSvc.so"
|
|
QA_PRESTRIPPED="opt/VirtualBox/VBoxDD.so
|
|
opt/VirtualBox/VBoxDD2.so
|
|
opt/VirtualBox/VBoxDDU.so
|
|
opt/VirtualBox/VBoxDbg.so
|
|
opt/VirtualBox/VBoxGuestControlSvc.so
|
|
opt/VirtualBox/VBoxGuestPropSvc.so
|
|
opt/VirtualBox/VBoxHeadless
|
|
opt/VirtualBox/VBoxHeadless.so
|
|
opt/VirtualBox/VBoxKeyboard.so
|
|
opt/VirtualBox/VBoxManage
|
|
opt/VirtualBox/VBoxNetAdpCtl
|
|
opt/VirtualBox/VBoxNetDHCP
|
|
opt/VirtualBox/VBoxNetDHCP.so
|
|
opt/VirtualBox/VBoxOGLhostcrutil.so
|
|
opt/VirtualBox/VBoxOGLhosterrorspu.so
|
|
opt/VirtualBox/VBoxOGLrenderspu.so
|
|
opt/VirtualBox/VBoxPython.so
|
|
opt/VirtualBox/VBoxPython2_7.so
|
|
opt/VirtualBox/VBoxREM.so
|
|
opt/VirtualBox/VBoxREM32.so
|
|
opt/VirtualBox/VBoxREM64.so
|
|
opt/VirtualBox/VBoxRT.so
|
|
opt/VirtualBox/VBoxSDL
|
|
opt/VirtualBox/VBoxSDL.so
|
|
opt/VirtualBox/VBoxSVC
|
|
opt/VirtualBox/VBoxSettings.so
|
|
opt/VirtualBox/VBoxSharedClipboard.so
|
|
opt/VirtualBox/VBoxSharedCrOpenGL.so
|
|
opt/VirtualBox/VBoxSharedFolders.so
|
|
opt/VirtualBox/VBoxTestOGL
|
|
opt/VirtualBox/VBoxTunctl
|
|
opt/VirtualBox/VBoxVMM.so
|
|
opt/VirtualBox/VBoxVRDP.so
|
|
opt/VirtualBox/VBoxXPCOM.so
|
|
opt/VirtualBox/VBoxXPCOMC.so
|
|
opt/VirtualBox/VBoxXPCOMIPCD
|
|
opt/VirtualBox/VRDPAuth.so
|
|
opt/VirtualBox/VirtualBox
|
|
opt/VirtualBox/VirtualBox.so
|
|
opt/VirtualBox/accessible/libqtaccessiblewidgets.so
|
|
opt/VirtualBox/components/VBoxC.so
|
|
opt/VirtualBox/components/VBoxSVCM.so
|
|
opt/VirtualBox/components/VBoxXPCOMIPCC.so
|
|
opt/VirtualBox/kchmviewer
|
|
opt/VirtualBox/libQtCoreVBox.so.4
|
|
opt/VirtualBox/libQtGuiVBox.so.4
|
|
opt/VirtualBox/libQtNetworkVBox.so.4
|
|
opt/VirtualBox/libQtOpenGLVBox.so.4
|
|
opt/VirtualBox/vboxwebsrv"
|
|
|
|
PYTHON_UPDATER_IGNORE="1"
|
|
|
|
src_unpack() {
|
|
unpack_makeself ${MY_P}_${ARCH}.run
|
|
unpack ./VirtualBox.tar.bz2
|
|
|
|
mkdir "${S}"/${EXTP_PN} || die
|
|
pushd "${S}"/${EXTP_PN} &>/dev/null || die
|
|
unpack ${EXTP_P}.tar.gz
|
|
popd &>/dev/null || die
|
|
|
|
if [[ "${PV}" != *beta* ]] && use sdk ; then
|
|
unpack VirtualBoxSDK-${SDK_PV}.zip
|
|
fi
|
|
}
|
|
|
|
src_configure() {
|
|
:;
|
|
}
|
|
|
|
src_compile() {
|
|
:;
|
|
}
|
|
|
|
src_install() {
|
|
# create virtualbox configurations files
|
|
insinto /etc/vbox
|
|
newins "${FILESDIR}/${PN}-config" vbox.cfg
|
|
|
|
if ! use headless ; then
|
|
pushd "${S}"/icons &>/dev/null || die
|
|
for size in * ; do
|
|
if [ -f "${size}/virtualbox.png" ] ; then
|
|
insinto "/usr/share/icons/hicolor/${size}/apps"
|
|
newins "${size}/virtualbox.png" ${PN}.png
|
|
fi
|
|
done
|
|
dodir /usr/share/pixmaps
|
|
cp "48x48/virtualbox.png" "${D}/usr/share/pixmaps/${PN}.png" \
|
|
|| die
|
|
popd &>/dev/null || die
|
|
|
|
newmenu "${FILESDIR}"/${PN}.desktop-2 ${PN}.desktop
|
|
fi
|
|
|
|
pushd "${S}"/${EXTP_PN} &>/dev/null || die
|
|
insinto /opt/VirtualBox/ExtensionPacks/${EXTP_PN}
|
|
doins -r linux.${ARCH}
|
|
doins ExtPack* PXE-Intel.rom
|
|
popd &>/dev/null || die
|
|
rm -rf "${S}"/${EXTP_PN}
|
|
|
|
insinto /opt/VirtualBox
|
|
dodir /opt/bin
|
|
|
|
doins UserManual.pdf
|
|
|
|
if [[ "${PV}" != *beta* ]] && use sdk ; then
|
|
doins -r sdk
|
|
fi
|
|
|
|
if use additions; then
|
|
doins -r additions
|
|
fi
|
|
|
|
if use vboxwebsrv; then
|
|
doins vboxwebsrv
|
|
fowners root:vboxusers /opt/VirtualBox/vboxwebsrv
|
|
fperms 0750 /opt/VirtualBox/vboxwebsrv
|
|
dosym /opt/VirtualBox/VBox.sh /opt/bin/vboxwebsrv
|
|
newinitd "${FILESDIR}"/vboxwebsrv-initd vboxwebsrv
|
|
newconfd "${FILESDIR}"/vboxwebsrv-confd vboxwebsrv
|
|
fi
|
|
|
|
if use rdesktop-vrdp; then
|
|
doins rdesktop-vrdp
|
|
doins -r rdesktop-vrdp-keymaps
|
|
fperms 0750 /opt/VirtualBox/rdesktop-vrdp
|
|
dosym /opt/VirtualBox/rdesktop-vrdp /opt/bin/rdesktop-vrdp
|
|
fi
|
|
|
|
if ! use headless && use chm; then
|
|
doins kchmviewer VirtualBox.chm
|
|
fowners root:vboxusers /opt/VirtualBox/kchmviewer
|
|
fperms 0750 /opt/VirtualBox/kchmviewer
|
|
fi
|
|
|
|
# This ebuild / package supports only py2.7. Where py3 comes is unknown.
|
|
# The compile phase makes VBoxPython2_[4-7].so.
|
|
# py3 support would presumably require a binary pre-compiled by py3.
|
|
use python && doins VBoxPython.so VBoxPython2_7.so
|
|
|
|
rm -rf src rdesktop* deffiles install* routines.sh runlevel.sh \
|
|
vboxdrv.sh VBox.sh VBox.png vboxnet.sh additions VirtualBox.desktop \
|
|
VirtualBox.tar.bz2 LICENSE VBoxSysInfo.sh rdesktop* vboxwebsrv \
|
|
webtest kchmviewer VirtualBox.chm vbox-create-usb-node.sh \
|
|
90-vbox-usb.fdi uninstall.sh vboxshell.py vboxdrv-pardus.py \
|
|
VBoxPython?_*.so
|
|
|
|
if use headless ; then
|
|
rm -rf VBoxSDL VirtualBox VBoxKeyboard.so
|
|
fi
|
|
|
|
doins -r * || die
|
|
|
|
# create symlinks for working around unsupported $ORIGIN/.. in VBoxC.so (setuid)
|
|
dosym /opt/VirtualBox/VBoxVMM.so /opt/VirtualBox/components/VBoxVMM.so
|
|
dosym /opt/VirtualBox/VBoxREM.so /opt/VirtualBox/components/VBoxREM.so
|
|
dosym /opt/VirtualBox/VBoxRT.so /opt/VirtualBox/components/VBoxRT.so
|
|
dosym /opt/VirtualBox/VBoxDDU.so /opt/VirtualBox/components/VBoxDDU.so
|
|
dosym /opt/VirtualBox/VBoxXPCOM.so /opt/VirtualBox/components/VBoxXPCOM.so
|
|
|
|
local each
|
|
for each in VBox{Manage,SVC,XPCOMIPCD,Tunctl,NetAdpCtl,NetDHCP,NetNAT,TestOGL,ExtPackHelperApp}; do
|
|
fowners root:vboxusers /opt/VirtualBox/${each}
|
|
fperms 0750 /opt/VirtualBox/${each}
|
|
pax-mark -m "${D}"/opt/VirtualBox/${each}
|
|
done
|
|
# VBoxNetAdpCtl and VBoxNetDHCP binaries need to be suid root in any case..
|
|
fperms 4750 /opt/VirtualBox/VBoxNetAdpCtl
|
|
fperms 4750 /opt/VirtualBox/VBoxNetDHCP
|
|
fperms 4750 /opt/VirtualBox/VBoxNetNAT
|
|
|
|
if ! use headless ; then
|
|
# Hardened build: Mark selected binaries set-user-ID-on-execution
|
|
for each in VBox{SDL,Headless} VirtualBox; do
|
|
fowners root:vboxusers /opt/VirtualBox/${each}
|
|
fperms 4510 /opt/VirtualBox/${each}
|
|
pax-mark -m "${D}"/opt/VirtualBox/${each}
|
|
done
|
|
|
|
dosym /opt/VirtualBox/VBox.sh /opt/bin/VirtualBox
|
|
dosym /opt/VirtualBox/VBox.sh /opt/bin/VBoxSDL
|
|
else
|
|
# Hardened build: Mark selected binaries set-user-ID-on-execution
|
|
fowners root:vboxusers /opt/VirtualBox/VBoxHeadless
|
|
fperms 4510 /opt/VirtualBox/VBoxHeadless
|
|
pax-mark -m "${D}"/opt/VirtualBox/VBoxHeadless
|
|
fi
|
|
|
|
exeinto /opt/VirtualBox
|
|
newexe "${FILESDIR}/${PN}-3-wrapper" "VBox.sh"
|
|
fowners root:vboxusers /opt/VirtualBox/VBox.sh
|
|
fperms 0750 /opt/VirtualBox/VBox.sh
|
|
|
|
dosym /opt/VirtualBox/VBox.sh /opt/bin/VBoxManage
|
|
dosym /opt/VirtualBox/VBox.sh /opt/bin/VBoxVRDP
|
|
dosym /opt/VirtualBox/VBox.sh /opt/bin/VBoxHeadless
|
|
dosym /opt/VirtualBox/VBoxTunctl /opt/bin/VBoxTunctl
|
|
|
|
# set an env-variable for 3rd party tools
|
|
echo -n "VBOX_APP_HOME=/opt/VirtualBox" > "${T}/90virtualbox"
|
|
doenvd "${T}/90virtualbox"
|
|
|
|
local udevdir="$(get_udevdir)"
|
|
insinto ${udevdir}/rules.d
|
|
doins "${FILESDIR}"/10-virtualbox.rules
|
|
sed "s@%UDEVDIR%@${udevdir}@" \
|
|
-i "${D}"${udevdir}/rules.d/10-virtualbox.rules || die
|
|
# move udev scripts into ${udevdir} (bug #372491)
|
|
mv "${D}"/opt/VirtualBox/VBoxCreateUSBNode.sh "${D}"${udevdir} || die
|
|
fperms 0750 ${udevdir}/VBoxCreateUSBNode.sh
|
|
}
|
|
|
|
pkg_postinst() {
|
|
fdo-mime_desktop_database_update
|
|
|
|
gnome2_icon_cache_update
|
|
|
|
udevadm control --reload-rules && udevadm trigger --subsystem-match=usb
|
|
|
|
elog ""
|
|
if ! use headless ; then
|
|
elog "To launch VirtualBox just type: \"VirtualBox\""
|
|
elog ""
|
|
fi
|
|
elog "You must be in the vboxusers group to use VirtualBox."
|
|
elog ""
|
|
elog "For advanced networking setups you should emerge:"
|
|
elog "net-misc/bridge-utils and sys-apps/usermode-utilities"
|
|
elog ""
|
|
elog "Please visit http://www.virtualbox.org/wiki/Editions for"
|
|
elog "an overview about the different features of ${PN}"
|
|
elog "and virtualbox-ose"
|
|
if [ -e "${ROOT}/etc/udev/rules.d/10-virtualbox.rules" ] ; then
|
|
elog ""
|
|
elog "Please remove \"${ROOT}/etc/udev/rules.d/10-virtualbox.rules\""
|
|
elog "or else USB in ${PN} won't work."
|
|
fi
|
|
}
|
|
|
|
pkg_postrm() {
|
|
fdo-mime_desktop_database_update
|
|
}
|