# Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 inherit xdg-utils gnome2 pax-utils udev unpacker eapi7-ver MAIN_PV="$(ver_cut 1-3)" MY_PV="${MAIN_PV}" KEYWORDS="~amd64" VBOX_BUILD_ID="$(ver_cut 4)" VBOX_PV="${MY_PV}-${VBOX_BUILD_ID}" MY_P="VirtualBox-${VBOX_PV}-Linux" EXTP_PV="${VBOX_PV}" EXTP_PN="Oracle_VM_VirtualBox_Extension_Pack" EXTP_P="${EXTP_PN}-${EXTP_PV}" DESCRIPTION="Family of powerful x86 virtualization products for enterprise and home use" HOMEPAGE="https://www.virtualbox.org/" SRC_URI="amd64? ( https://download.virtualbox.org/virtualbox/${MY_PV}/${MY_P}_amd64.run ) https://download.virtualbox.org/virtualbox/${MY_PV}/${EXTP_P}.vbox-extpack -> ${EXTP_P}.tar.gz" LICENSE="GPL-2 PUEL" SLOT="0" IUSE="" RESTRICT="mirror" DEPEND="app-arch/unzip" RDEPEND=" !!app-emulation/virtualbox !!app-emulation/virtualbox-additions !!app-emulation/virtualbox-extpack-oracle !!app-emulation/virtualbox-guest-additions acct-group/vboxusers ~app-emulation/virtualbox-modules-${MAIN_PV} dev-libs/expat dev-libs/glib dev-libs/libxml2 media-libs/fontconfig media-libs/freetype media-libs/libpng media-libs/libsdl[X] sys-fs/lvm2 x11-libs/libXcursor x11-libs/libXext x11-libs/libXfixes x11-libs/libXft x11-libs/libXi x11-libs/libXinerama x11-libs/libXrandr x11-libs/libXrender x11-libs/libXau x11-libs/libX11 x11-libs/libXt x11-libs/libXmu x11-libs/libSM x11-libs/libICE x11-libs/libXdmcp" S="${WORKDIR}" QA_PREBUILT="opt/VirtualBox/*" 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 } src_configure() { :; } src_compile() { :; } src_install() { # create virtualbox configurations files insinto /etc/vbox newins "${FILESDIR}/${PN}-config" vbox.cfg newmenu "${FILESDIR}"/${PN}.desktop-2 ${PN}.desktop # set up symlinks (bug #572012) dosym ../../../../opt/VirtualBox/virtualbox.xml /usr/share/mime/packages/virtualbox.xml local size ico icofile for size in 16 24 32 48 64 72 96 128 256 ; do pushd "${S}"/icons/${size}x${size} &>/dev/null || die if [[ -f "virtualbox.png" ]] ; then doicon -s ${size} virtualbox.png fi for ico in hdd ova ovf vbox{,-extpack} vdi vdh vmdk ; do icofile="virtualbox-${ico}.png" if [[ -f "${icofile}" ]] ; then doicon -s ${size} ${icofile} fi done popd &>/dev/null || die done doicon -s scalable "${S}"/icons/scalable/virtualbox.svg insinto /usr/share/pixmaps newins "${S}"/icons/48x48/virtualbox.png ${PN}.png 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 doins -r additions doins kchmviewer VirtualBox.chm fowners root:vboxusers /opt/VirtualBox/kchmviewer fperms 0750 /opt/VirtualBox/kchmviewer 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 sdk VirtualBox.chm vbox-create-usb-node.sh \ 90-vbox-usb.fdi uninstall.sh vboxshell.py vboxdrv-pardus.py \ VBoxPython*.so virtualbox.desktop doins -r * || die # create symlinks for working around unsupported $ORIGIN/.. in VBoxC.so (setuid) dosym ../VBoxVMM.so /opt/VirtualBox/components/VBoxVMM.so dosym ../VBoxRT.so /opt/VirtualBox/components/VBoxRT.so dosym ../VBoxDDU.so /opt/VirtualBox/components/VBoxDDU.so dosym ../VBoxXPCOM.so /opt/VirtualBox/components/VBoxXPCOM.so local each for each in VirtualBox{,VM} ; do fowners root:vboxusers /opt/VirtualBox/${each} fperms 0750 /opt/VirtualBox/VirtualBox fperms 4750 /opt/VirtualBox/VirtualBoxVM pax-mark -m "${ED%/}"/opt/VirtualBox/${each} done for each in VBox{Autostart,BalloonCtrl,BugReport,DTrace,VolInfo,Manage,SVC,XPCOMIPCD,Tunctl,TestOGL,ExtPackHelperApp} ; do fowners root:vboxusers /opt/VirtualBox/${each} fperms 0750 /opt/VirtualBox/${each} pax-mark -m "${ED%/}"/opt/VirtualBox/${each} done # VBoxNetAdpCtl and VBoxNetDHCP binaries need to be suid root in any case.. for each in VBoxNet{AdpCtl,DHCP,NAT} ; do fowners root:vboxusers /opt/VirtualBox/${each} fperms 4750 /opt/VirtualBox/${each} pax-mark -m "${ED%/}"/opt/VirtualBox/${each} done # Hardened build: Mark selected binaries set-user-ID-on-execution for each in VBox{SDL,Headless} ; do fowners root:vboxusers /opt/VirtualBox/${each} fperms 4510 /opt/VirtualBox/${each} pax-mark -m "${ED%/}"/opt/VirtualBox/${each} done dosym ../VirtualBox/VBox.sh /opt/bin/VirtualBox dosym ../VirtualBox/VBox.sh /opt/bin/VBoxSDL exeinto /opt/VirtualBox newexe "${FILESDIR}/${PN}-3-wrapper" "VBox.sh" fowners root:vboxusers /opt/VirtualBox/VBox.sh fperms 0750 /opt/VirtualBox/VBox.sh dosym ../VirtualBox/VBox.sh /opt/bin/VBoxManage dosym ../VirtualBox/VBox.sh /opt/bin/VBoxVRDP dosym ../VirtualBox/VBox.sh /opt/bin/VBoxHeadless dosym ../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 "${ED%/}"${udevdir}/rules.d/10-virtualbox.rules || die # move udev scripts into ${udevdir} (bug #372491) mv "${ED%/}"/opt/VirtualBox/VBoxCreateUSBNode.sh "${ED%/}"${udevdir} || die fperms 0750 ${udevdir}/VBoxCreateUSBNode.sh } pkg_postinst() { xdg_icon_cache_update xdg_desktop_database_update xdg_mimeinfo_database_update udevadm control --reload-rules && udevadm trigger --subsystem-match=usb } pkg_postrm() { xdg_icon_cache_update xdg_desktop_database_update xdg_mimeinfo_database_update }