summaryrefslogtreecommitdiff
path: root/app-emulation/virtualbox-guest-additions
diff options
context:
space:
mode:
Diffstat (limited to 'app-emulation/virtualbox-guest-additions')
-rw-r--r--app-emulation/virtualbox-guest-additions/Manifest4
-rw-r--r--app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-6.1.48.ebuild288
-rw-r--r--app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-7.0.12.ebuild294
3 files changed, 586 insertions, 0 deletions
diff --git a/app-emulation/virtualbox-guest-additions/Manifest b/app-emulation/virtualbox-guest-additions/Manifest
index ff27a097e70e..3c79e83bb25a 100644
--- a/app-emulation/virtualbox-guest-additions/Manifest
+++ b/app-emulation/virtualbox-guest-additions/Manifest
@@ -7,10 +7,14 @@ AUX virtualbox-guest-additions-8.initd-r1 547 BLAKE2B 1b26fc26e95baa74d551f8a9cf
AUX virtualbox-guest-additions.service 411 BLAKE2B f5f1c24a94764ca72a04879c27cd9fdc1e0c8a1440ac87674dad44a1493a9347e6e2b351ae2b71e050ba06ae9848168220d62981a9e0c984ea68bf48ea06b485 SHA512 b6226146f3591a778551e94ae2661e2ae3c6b761d20600d741eaaa03f43f0a2b841d2a44d9eec3a3768edb23b021cee94c7849d998ee4104ad60dad2df88df83
AUX xorg.conf.vbox 274 BLAKE2B 3a3035fcbdbd5810c54505f5a5e6deefa1540e5e01a038babb62a40bd5b2de2dc5b228cabe55612d92a522e6ae92aa7ff4ff2ab26772c3b54ce95ebac4e7fc5a SHA512 ac2b14970dc6667ceec2dbdae52bc92cbad4aff020898ede156454e8a8a703354f15c7e19cfbd2bdd15e251493fd05cacfe814cabee0f9b4cf155e44860ed4c9
DIST VirtualBox-6.1.46.tar.bz2 166045588 BLAKE2B 041fad30d7cbe524cfd5c865b225c00df7715a6648ed0d8f7ee3ca4be0d0dabcb324c676ba2ea78288cde89ed8e5412fae75e31bb49f623de2acddb8f10d6ee1 SHA512 695ca4d41ff10d0581e4cffe4a0ec80e0fe380f4c7d5d51ee4d21aeb61646c26edd60301e541894e71c3323e2d7207e23299938c18ee45631afd1e0851946e77
+DIST VirtualBox-6.1.48.tar.bz2 165960987 BLAKE2B c981e390ae518b829970827f6032fb19a93685fb58835a9d489c6e14cc60a5c14c65b0a3da5adae7818e73e1b0e558e8fa803160cb67847f18565bb78d656e97 SHA512 fff759f3871e4e8962536002f2bc13e5150a927e280493f5cb0abf06466ce66e45f4c6ef43489b5b3ed8682d8a3ac0eb6fb3dd7c4144924c81612553ec71a95f
DIST VirtualBox-7.0.10.tar.bz2 175450841 BLAKE2B 49eaa14f716f021f1ecec1ad48a2aa8a3a758cbd9b03cf30d65ddcf5aba11842b0ea8bc2c4d477084a4cea318dc302a4ed426ec9f675a1fe675c5f18c48796c7 SHA512 2870d39385f66557281edf1368db68cd69d6a9bebc30d52511929462d0ac210cec49dd8531a280c6facff22ba6e4808477fbf3d09abf998d863a007fc7f2c3bd
+DIST VirtualBox-7.0.12.tar.bz2 175644088 BLAKE2B 507cbf7b1a8a807bd2602e74bc19a59cb177b9b2bdefa1be582e520666360a42510ca501f20c354746a0f1dadf61fe29135e3edc867e611bfe60a9405cb2bbce SHA512 9fe4511442eba788d02f932f5e98cfcc5aa4ebed41c00bd7333cf7e3f5de787e458f1f56930978283f041f403652c803143335fe9120ab63a2c113ca7b3f588f
DIST virtualbox-patches-6.1.36.tar.bz2 2733 BLAKE2B dcfebfeca4873d382441515d48b4dfee9343bc7c83ea3cbb5002dbf7975143a79fae9a701b67dc35505e9ca03ff1b6293cb7c3279c4fdfda8ad21ba5fb9b7e87 SHA512 1bed5cdefbf8e7c4b0d9092ba4961ecf2262f27f35c71a91ef6f2e8fe8a1d92ed74f06bafbf58d70ba7165d933997f58073f4d4f4051e3ba5c0339b729066f57
DIST virtualbox-patches-7.0.8.tar.bz2 2733 BLAKE2B 044dfe02a5bd5e757091318b394b0e5918677b5bbce9caef4a18d4d8df54821559f0df6ffbdd6f52d4934bc4018e9c9d908571c5d3d8804fd3b0f22a7a1aed84 SHA512 93a06aa3f9508d3a8743ca8494a958159b5bc3fd7a0a08ff23414d05c4f31084cf0f1c82a3866e222c83e6996ba004546f0bd33c6eb9a90eec8e548b8b3f2fbf
EBUILD virtualbox-guest-additions-6.1.46.ebuild 7513 BLAKE2B 03710cc1587aef146cecde50915f7181e7251956605c5f84e069265c9918a583a8ac3d12af5ca9ce88f7e025a55327dddd779c8f8fb94dc12097d45db96ae5a1 SHA512 7ffb5b6e835519b566612a040301b1aae87d5542c65d6c5ff6b6d647fe85c585ba3e24c380dba9f26dbbf06404c182bdbb332e77adf78f6084f7ce7219812268
+EBUILD virtualbox-guest-additions-6.1.48.ebuild 7515 BLAKE2B de9b6a457ccb4d78c4d0dd92b3edf6b51dd75179d309b1ef57c4898e2024590c54c7bff93fd29cafa3d7d4fa7b7293506957183cad47bc4ad0803f05da834e67 SHA512 2dba618288947fab91690e72003f6f74157210aa05cbe0d4e84b26dff221506210aa57a8b7256f242c783415e08531223dccf85aea90513a9cc27bbdd3f5717d
EBUILD virtualbox-guest-additions-7.0.10-r1.ebuild 7923 BLAKE2B dd8f77c7a3d573f2d44681da44da38cf8624a176ba0c8e207fdfe36f3c6418bd91ac41c674d108f8b7742a096e1ebb3f6dada0c6bcc1e84bb794d9f1bb7c59d4 SHA512 98fcba920871098e3ca5352c3d604082b104cf461a582ebb53880bd1bc63537cc192145c4cf11a5a413414980462bc63cd8a5b87a035a0eb847c87cb995ac899
EBUILD virtualbox-guest-additions-7.0.10.ebuild 7837 BLAKE2B 8635995d24c5257a9e635c90ff33204a5d12e1ed57bf48b31e41bdbf87c5b06be31907188fe08a73d92462d94b380aa26ed45ea4d7fc03c19adb9ce1eafc1d84 SHA512 a8555e77239e78d8480be113826ad0ba60ad343dbf14b967d8c606924b6d3b07424e02d7235556b9f4234c53ae711a32d49dde354a7bb67957b082bac556427c
+EBUILD virtualbox-guest-additions-7.0.12.ebuild 7839 BLAKE2B c1a57e60a4618810442b3a731c47f4aae4a8fd613c4acfad95736dbc2227edec6141ddf928864901294df73798739bf8c0b63ceebff6e9c11d56652deb927703 SHA512 77e1c29b10a76590c81978e7c9118673cc5ba3d364a39218135c82ce63608d33240a95a6cb4ea37722240623793a6c2349bf38ed989c2e2b626e167795ef2946
MISC metadata.xml 255 BLAKE2B 9386ef3bdb55211441f303528b31f8ccd9ad9039744400e859574a424fa1f366a989fe78f5c10038f3dd9b06a6a389e4a7e643b3eac0dc93a79ac4cc3b4c5423 SHA512 6c158e12464285afd44b70d0653b65f65da1c523fc2b1b07eb6d2dec56f58234bb31cb9dc36238cd6dfc20031b4d58c04e7c1678cc9f917194403ad8a209513f
diff --git a/app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-6.1.48.ebuild b/app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-6.1.48.ebuild
new file mode 100644
index 000000000000..35c42213697c
--- /dev/null
+++ b/app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-6.1.48.ebuild
@@ -0,0 +1,288 @@
+# Copyright 2022-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit edo linux-mod-r1 systemd toolchain-funcs udev
+
+MY_PN="VirtualBox"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="VirtualBox kernel modules and user-space tools for Gentoo guests"
+HOMEPAGE="https://www.virtualbox.org/"
+SRC_URI="https://download.virtualbox.org/virtualbox/${PV}/${MY_P}.tar.bz2
+ https://gitweb.gentoo.org/proj/virtualbox-patches.git/snapshot/virtualbox-patches-6.1.36.tar.bz2"
+S="${WORKDIR}/${MY_PN}-${PV}"
+
+LICENSE="GPL-2"
+SLOT="0/$(ver_cut 1-2)"
+KEYWORDS="~amd64 ~x86"
+IUSE="X +dbus"
+
+# automount Error: VBoxServiceAutoMountWorker: Group "vboxsf" does not exist
+RDEPEND="
+ acct-group/vboxguest
+ acct-group/vboxsf
+ acct-user/vboxguest
+ sys-libs/pam
+ sys-libs/zlib
+ dbus? ( sys-apps/dbus )
+ X? (
+ x11-apps/xrandr
+ x11-apps/xrefresh
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXmu
+ x11-libs/libXt
+ )
+"
+DEPEND="
+ ${RDEPEND}
+ X? (
+ x11-base/xorg-proto
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libXau
+ x11-libs/libXdmcp
+ )
+"
+BDEPEND="
+ >=dev-util/kbuild-0.1.9998.3127
+ <=dev-util/kbuild-0.1.9998.3500
+ >=dev-lang/yasm-0.6.2
+ sys-devel/bin86
+ sys-power/iasl
+"
+PDEPEND="
+ X? ( x11-drivers/xf86-video-vboxvideo )
+"
+
+PATCHES=(
+ "${FILESDIR}"/virtualbox-guest-additions-7.0.8-fix-gcc13.patch
+)
+
+DOCS=() # Don't install the default README file during einstalldocs
+
+VBOX_MOD_SRC_DIR="out/linux.${ARCH}/release/bin/additions/src"
+CONFIG_CHECK="DRM_TTM"
+
+src_prepare() {
+ eapply "${PATCHES[@]}"
+
+ # Remove shipped binaries (kBuild,yasm), see bug #232775
+ rm -r kBuild/bin tools || die
+
+ # Provide kernel sources
+ pushd src/VBox/Additions &>/dev/null || die
+ ebegin "Extracting guest kernel module sources"
+ kmk GuestDrivers-src vboxguest-src vboxsf-src vboxvideo-src &>/dev/null
+ eend $? || die
+ popd &>/dev/null || die
+
+ # PaX fixes (see bug #298988)
+ eapply -d "${VBOX_MOD_SRC_DIR}" -- "${FILESDIR}"/vboxguest-6.1.36-log-use-c99.patch
+
+ # Disable things unused or splitted into separate ebuilds
+ cp "${FILESDIR}/${PN}-5-localconfig" LocalConfig.kmk || die
+ use X || echo "VBOX_WITH_X11_ADDITIONS :=" >> LocalConfig.kmk
+
+ # Remove pointless GCC version check
+ sed -e '/^check_gcc$/d' -i configure || die
+
+ # Respect LDFLAGS (bug #759100)
+ sed -i -e '/TEMPLATE_VBOXR3EXE_LDFLAGS.linux[ ]*=/ s/$/ $(CCLDFLAGS)/' Config.kmk
+
+ eapply "${WORKDIR}/virtualbox-patches-6.1.36/patches"
+ eapply_user
+}
+
+src_configure() {
+ tc-export AR CC CXX LD RANLIB
+
+ # Build the user-space tools, warnings are harmless
+ local myconf=(
+ --with-gcc="$(tc-getCC)"
+ --with-g++="$(tc-getCXX)"
+
+ --nofatal
+ --disable-xpcom
+ --disable-sdl-ttf
+ --disable-pulse
+ --disable-alsa
+ $(usev !dbus --disable-dbus)
+ --target-arch=${ARCH}
+ --with-linux="${KV_OUT_DIR}"
+ --build-headless
+ )
+
+ # bug #843437
+ # Respect LDFLAGS (bug #759100)
+ # Cannot use LDFLAGS here because they also get passed to $(LD)
+ cat >> LocalConfig.kmk <<-EOF || die
+ CFLAGS=${CFLAGS}
+ CXXFLAGS=${CXXFLAGS}
+ CCLDFLAGS=${LDFLAGS}
+ EOF
+
+ edo ./configure "${myconf[@]}"
+}
+
+src_compile() {
+ source ./env.sh || die
+
+ # Force kBuild to respect C[XX]FLAGS and MAKEOPTS (bug #178529)
+ MAKEJOBS=$(grep -Eo '(\-j|\-\-jobs)(=?|[[:space:]]*)[[:digit:]]+' <<< ${MAKEOPTS})
+ MAKELOAD=$(grep -Eo '(\-l|\-\-load-average)(=?|[[:space:]]*)[[:digit:]]+' <<< ${MAKEOPTS})
+ MAKEOPTS="${MAKEJOBS} ${MAKELOAD}"
+
+ local myemakeargs=(
+ VBOX_BUILD_PUBLISHER=_Gentoo
+ VBOX_ONLY_ADDITIONS=1
+
+ KBUILD_VERBOSE=2
+
+ AS="$(tc-getCC)"
+ CC="$(tc-getCC)"
+ CXX="$(tc-getCXX)"
+ LD="$(tc-getCC)"
+
+ TOOL_GCC3_CC="$(tc-getCC)"
+ TOOL_GCC3_CXX="$(tc-getCXX)"
+ TOOL_GCC3_LD="$(tc-getCC)"
+ TOOL_GCC3_AS="$(tc-getCC)"
+ TOOL_GCC3_AR="$(tc-getAR)"
+ TOOL_GCC3_OBJCOPY="$(tc-getOBJCOPY)"
+ #TOOL_GCC3_LD_SYSMOD="$(tc-getCC)"
+
+ TOOL_GXX3_CC="$(tc-getCC)"
+ TOOL_GXX3_CXX="$(tc-getCXX)"
+ TOOL_GXX3_LD="$(tc-getCXX)"
+ TOOL_GXX3_AS="$(tc-getCXX)"
+ TOOL_GXX3_AR="$(tc-getAR)"
+ TOOL_GXX3_OBJCOPY="$(tc-getOBJCOPY)"
+ #TOOL_GXX3_LD_SYSMOD="$(tc-getCXX)"
+
+ TOOL_GCC3_CFLAGS="${CFLAGS}"
+ TOOL_GCC3_CXXFLAGS="${CXXFLAGS}"
+ VBOX_GCC_OPT="${CXXFLAGS}"
+ VBOX_NM="$(tc-getNM)"
+ TOOL_YASM_AS=yasm
+ )
+
+ MAKE="kmk" emake "${myemakeargs[@]}"
+
+ # 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)
+ # Move this here for bug 836037
+ local modargs=( KERN_DIR="${KV_OUT_DIR}" KERN_VER="${KV_FULL}" )
+ local modlist=( vboxguest vboxsf )
+ use X && modlist+=( vboxvideo )
+ modlist=( "${modlist[@]/%/=misc:${VBOX_MOD_SRC_DIR}}" )
+ linux-mod-r1_src_compile
+}
+
+src_install() {
+ linux-mod-r1_src_install
+
+ insinto /etc/modprobe.d # 485996
+ newins - vboxsf.conf <<-EOF
+ # modprobe.d configuration file for VBOXSF
+
+ # Internal Aliases - Do not edit
+ # ------------------------------
+ alias fs-vboxsf vboxsf
+ EOF
+
+ cd out/linux.${ARCH}/release/bin/additions || die
+
+ insinto /sbin
+ newins mount.vboxsf mount.vboxsf
+ fperms 4755 /sbin/mount.vboxsf
+
+ if use dbus; then
+ newinitd "${FILESDIR}"/${PN}-8.initd-r1 ${PN}
+ else
+ newinitd <(sed 's/ dbus\>//' "${FILESDIR}"/${PN}-8.initd-r1) ${PN}
+ fi
+
+ insinto /usr/sbin/
+ newins VBoxService vboxguest-service
+ fperms 0755 /usr/sbin/vboxguest-service
+
+ insinto /usr/bin
+ doins VBoxControl
+ fperms 0755 /usr/bin/VBoxControl
+
+ # VBoxClient user service and xrandr wrapper
+ if use X ; then
+ doins VBoxClient
+ fperms 0755 /usr/bin/VBoxClient
+ doins VBoxDRMClient
+ fperms 4755 /usr/bin/VBoxDRMClient
+
+ pushd "${S}"/src/VBox/Additions/x11/Installer &>/dev/null || die
+ newins 98vboxadd-xclient VBoxClient-all
+ fperms 0755 /usr/bin/VBoxClient-all
+ popd &>/dev/null || die
+ fi
+
+ # udev rule for vboxdrv
+ local udev_rules_dir="/lib/udev/rules.d"
+ dodir ${udev_rules_dir}
+ echo 'KERNEL=="vboxguest", OWNER="vboxguest", GROUP="vboxguest", MODE="0660"' \
+ >> "${ED}/${udev_rules_dir}/60-virtualbox-guest-additions.rules" \
+ || die
+ echo 'KERNEL=="vboxuser", OWNER="vboxguest", GROUP="vboxguest", MODE="0660"' \
+ >> "${ED}/${udev_rules_dir}/60-virtualbox-guest-additions.rules" \
+ || die
+
+ # VBoxClient autostart file
+ insinto /etc/xdg/autostart
+ doins "${FILESDIR}"/vboxclient.desktop
+
+ # sample xorg.conf
+ dodoc "${FILESDIR}"/xorg.conf.vbox
+ docompress -x "${ED}"/usr/share/doc/${PF}/xorg.conf.vbox
+
+ systemd_dounit "${FILESDIR}/${PN}.service"
+}
+
+pkg_postinst() {
+ linux-mod-r1_pkg_postinst
+ udev_reload
+ if ! use X ; then
+ elog "use flag X is off, enable it to install the"
+ elog "X Window System video driver."
+ fi
+ elog ""
+ elog "Please add users to the \"vboxguest\" group so they can"
+ elog "benefit from seamless mode, auto-resize and clipboard."
+ elog ""
+ elog "The vboxsf group has been added to make automount services work."
+ elog "These services are part of the shared folders support."
+ elog ""
+ elog "Please add:"
+ elog "/etc/init.d/${PN}"
+ elog "to the default runlevel in order to start"
+ elog "needed services."
+ elog "To use the VirtualBox X driver, use the following"
+ elog "file as your /etc/X11/xorg.conf:"
+ elog " /usr/share/doc/${PF}/xorg.conf.vbox"
+ elog ""
+ elog "An autostart .desktop file has been installed to start"
+ elog "VBoxClient in desktop sessions."
+ elog ""
+ elog "You can mount shared folders with:"
+ elog " mount -t vboxsf <shared_folder_name> <mount_point>"
+ elog ""
+ elog "Warning:"
+ elog "this ebuild is only needed if you are running gentoo"
+ elog "inside a VirtualBox Virtual Machine, you don't need"
+ elog "it to run VirtualBox itself."
+ elog ""
+}
+
+pkg_postrm() {
+ udev_reload
+}
diff --git a/app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-7.0.12.ebuild b/app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-7.0.12.ebuild
new file mode 100644
index 000000000000..877db42ca620
--- /dev/null
+++ b/app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-7.0.12.ebuild
@@ -0,0 +1,294 @@
+# Copyright 2022-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit edo linux-mod-r1 systemd toolchain-funcs udev
+
+MY_PN="VirtualBox"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="VirtualBox kernel modules and user-space tools for Gentoo guests"
+HOMEPAGE="https://www.virtualbox.org/"
+SRC_URI="https://download.virtualbox.org/virtualbox/${PV}/${MY_P}.tar.bz2
+ https://gitweb.gentoo.org/proj/virtualbox-patches.git/snapshot/virtualbox-patches-7.0.8.tar.bz2"
+S="${WORKDIR}/${MY_PN}-${PV}"
+
+# Reminder: see the LICENSE related comment in app-emulation/virtualbox-additions ebuild
+LICENSE="GPL-3 LGPL-2.1+ MIT || ( GPL-3 CDDL )"
+SLOT="0/$(ver_cut 1-2)"
+KEYWORDS="~amd64 ~x86"
+IUSE="+dbus gui"
+
+# automount Error: VBoxServiceAutoMountWorker: Group "vboxsf" does not exist
+# TODO: find out what this is, remove comment if obsolete
+
+RDEPEND="
+ acct-group/vboxguest
+ acct-group/vboxsf
+ acct-user/vboxguest
+ sys-libs/pam
+ sys-libs/zlib
+ dbus? ( sys-apps/dbus )
+ gui? (
+ x11-apps/xrandr
+ x11-apps/xrefresh
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXmu
+ x11-libs/libXt
+ )
+"
+# some libs here are indirect dependencies, and also needed at compile time.
+# keeping them in DEPEND to avoid warnings from qa-vdb.
+DEPEND="
+ ${RDEPEND}
+ gui? (
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libXau
+ x11-libs/libXdmcp
+ x11-base/xorg-proto
+ )
+"
+BDEPEND="
+ >=dev-lang/yasm-0.6.2
+ >=dev-util/kbuild-0.1.9998.3127
+ sys-devel/bin86
+ sys-power/iasl
+"
+PDEPEND="
+ gui? ( x11-drivers/xf86-video-vboxvideo )
+"
+
+PATCHES=(
+ "${FILESDIR}"/virtualbox-guest-additions-7.0.8-fix-gcc13.patch
+)
+
+DOCS=() # Don't install the default README file during einstalldocs
+
+VBOX_MOD_SRC_DIR="out/linux.${ARCH}/release/bin/additions/src"
+CONFIG_CHECK="DRM_TTM"
+
+src_prepare() {
+ eapply "${PATCHES[@]}"
+
+ # Remove shipped binaries (kBuild,yasm), see bug #232775
+ rm -r kBuild/bin tools || die
+
+ # Provide kernel sources
+ pushd src/VBox/Additions &>/dev/null || die
+ ebegin "Extracting guest kernel module sources"
+ kmk GuestDrivers-src vboxguest-src vboxsf-src vboxvideo-src &>/dev/null
+ eend $? || die
+ popd &>/dev/null || die
+
+ # PaX fixes (see bug #298988)
+ eapply -d "${VBOX_MOD_SRC_DIR}" -- "${FILESDIR}"/vboxguest-6.1.36-log-use-c99.patch
+
+ # Disable things unused or splitted into separate ebuilds
+ cp "${FILESDIR}/${PN}-5-localconfig" LocalConfig.kmk || die
+ if ! use gui; then
+ echo "VBOX_WITH_X11_ADDITIONS :=" >> LocalConfig.kmk || die
+ fi
+
+ # Remove pointless GCC version check
+ sed -e '/ check_gcc$/d' -i configure || die
+
+ # Respect LDFLAGS (bug #759100)
+ sed -i -e '/TEMPLATE_VBoxR3Exe_LDFLAGS.linux[ ]*=/ s/$/ $(CCLDFLAGS)/' Config.kmk || die
+
+ eapply "${WORKDIR}/virtualbox-patches-7.0.8/patches"
+ eapply_user
+}
+
+src_configure() {
+ tc-export AR CC CXX LD RANLIB
+
+ # Build the user-space tools, warnings are harmless
+ local myconf=(
+ --with-gcc="$(tc-getCC)"
+ --with-g++="$(tc-getCXX)"
+
+ --nofatal
+ --disable-xpcom
+ --disable-sdl-ttf
+ --disable-pulse
+ --disable-alsa
+ $(usev !dbus --disable-dbus)
+ --target-arch=${ARCH}
+ --with-linux="${KV_OUT_DIR}"
+ --build-headless
+ )
+
+ # bug #843437
+ # Respect LDFLAGS (bug #759100)
+ # Cannot use LDFLAGS here because they also get passed to $(LD)
+ cat >> LocalConfig.kmk <<-EOF || die
+ CFLAGS=${CFLAGS}
+ CXXFLAGS=${CXXFLAGS}
+ CCLDFLAGS=${LDFLAGS}
+ EOF
+
+ edo ./configure "${myconf[@]}"
+}
+
+src_compile() {
+ source ./env.sh || die
+
+ # Force kBuild to respect C[XX]FLAGS and MAKEOPTS (bug #178529)
+ MAKEJOBS=$(grep -Eo '(\-j|\-\-jobs)(=?|[[:space:]]*)[[:digit:]]+' <<< ${MAKEOPTS})
+ MAKELOAD=$(grep -Eo '(\-l|\-\-load-average)(=?|[[:space:]]*)[[:digit:]]+' <<< ${MAKEOPTS})
+ MAKEOPTS="${MAKEJOBS} ${MAKELOAD}"
+
+ local myemakeargs=(
+ VBOX_BUILD_PUBLISHER=_Gentoo
+ VBOX_ONLY_ADDITIONS=1
+
+ KBUILD_VERBOSE=2
+
+ AS="$(tc-getCC)"
+ CC="$(tc-getCC)"
+ CXX="$(tc-getCXX)"
+ LD="$(tc-getCC)"
+
+ TOOL_GCC3_CC="$(tc-getCC)"
+ TOOL_GCC3_CXX="$(tc-getCXX)"
+ TOOL_GCC3_LD="$(tc-getCC)"
+ TOOL_GCC3_AS="$(tc-getCC)"
+ TOOL_GCC3_AR="$(tc-getAR)"
+ TOOL_GCC3_OBJCOPY="$(tc-getOBJCOPY)"
+ #TOOL_GCC3_LD_SYSMOD="$(tc-getCC)"
+
+ TOOL_GXX3_CC="$(tc-getCC)"
+ TOOL_GXX3_CXX="$(tc-getCXX)"
+ TOOL_GXX3_LD="$(tc-getCXX)"
+ TOOL_GXX3_AS="$(tc-getCXX)"
+ TOOL_GXX3_AR="$(tc-getAR)"
+ TOOL_GXX3_OBJCOPY="$(tc-getOBJCOPY)"
+ #TOOL_GXX3_LD_SYSMOD="$(tc-getCXX)"
+
+ TOOL_GCC3_CFLAGS="${CFLAGS}"
+ TOOL_GCC3_CXXFLAGS="${CXXFLAGS}"
+ VBOX_GCC_OPT="${CXXFLAGS}"
+ VBOX_NM="$(tc-getNM)"
+ TOOL_YASM_AS=yasm
+ )
+
+ MAKE="kmk" emake "${myemakeargs[@]}"
+
+ # 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)
+ # Move this here for bug 836037
+ local modargs=( KERN_DIR="${KV_OUT_DIR}" KERN_VER="${KV_FULL}" )
+ local modlist=( vboxguest vboxsf )
+ use gui && modlist+=( vboxvideo )
+ modlist=( "${modlist[@]/%/=misc:${VBOX_MOD_SRC_DIR}}" )
+ linux-mod-r1_src_compile
+}
+
+src_install() {
+ linux-mod-r1_src_install
+
+ insinto /etc/modprobe.d # 485996
+ newins - vboxsf.conf <<-EOF
+ # modprobe.d configuration file for VBOXSF
+
+ # Internal Aliases - Do not edit
+ # ------------------------------
+ alias fs-vboxsf vboxsf
+ EOF
+
+ cd out/linux.${ARCH}/release/bin/additions || die
+
+ insinto /sbin
+ newins mount.vboxsf mount.vboxsf
+ fperms 4755 /sbin/mount.vboxsf
+
+ if use dbus; then
+ newinitd "${FILESDIR}"/${PN}-8.initd-r1 ${PN}
+ else
+ newinitd <(sed 's/ dbus\>//' "${FILESDIR}"/${PN}-8.initd-r1) ${PN}
+ fi
+
+ insinto /usr/sbin/
+ newins VBoxService vboxguest-service
+ fperms 0755 /usr/sbin/vboxguest-service
+
+ insinto /usr/bin
+ doins VBoxControl
+ fperms 0755 /usr/bin/VBoxControl
+
+ # VBoxClient user service and xrandr wrapper
+ if use gui ; then
+ doins VBoxClient
+ fperms 0755 /usr/bin/VBoxClient
+ doins VBoxDRMClient
+ fperms 4755 /usr/bin/VBoxDRMClient
+
+ pushd "${S}"/src/VBox/Additions/x11/Installer &>/dev/null || die
+ newins 98vboxadd-xclient VBoxClient-all
+ fperms 0755 /usr/bin/VBoxClient-all
+ popd &>/dev/null || die
+ fi
+
+ # udev rule for vboxdrv
+ local udev_rules_dir="/lib/udev/rules.d"
+ dodir ${udev_rules_dir}
+ echo 'KERNEL=="vboxguest", OWNER="vboxguest", GROUP="vboxguest", MODE="0660"' \
+ >> "${ED}/${udev_rules_dir}/60-virtualbox-guest-additions.rules" \
+ || die
+ echo 'KERNEL=="vboxuser", OWNER="vboxguest", GROUP="vboxguest", MODE="0660"' \
+ >> "${ED}/${udev_rules_dir}/60-virtualbox-guest-additions.rules" \
+ || die
+
+ # VBoxClient autostart file
+ insinto /etc/xdg/autostart
+ doins "${FILESDIR}"/vboxclient.desktop
+
+ # sample xorg.conf
+ dodoc "${FILESDIR}"/xorg.conf.vbox
+ docompress -x "${ED}"/usr/share/doc/${PF}/xorg.conf.vbox
+
+ systemd_dounit "${FILESDIR}/${PN}.service"
+}
+
+pkg_postinst() {
+ linux-mod-r1_pkg_postinst
+ udev_reload
+ if ! use gui ; then
+ elog "use flag gui is off, enable it to install the"
+ elog "X Window System video driver."
+ fi
+ elog ""
+ elog "Please add users to the \"vboxguest\" group so they can"
+ elog "benefit from seamless mode, auto-resize and clipboard."
+ elog ""
+ elog "The vboxsf group has been added to make automount services work."
+ elog "These services are part of the shared folders support."
+ elog ""
+ elog "Please add:"
+ elog "/etc/init.d/${PN}"
+ elog "to the default runlevel in order to start"
+ elog "needed services."
+ elog "To use the VirtualBox X driver, use the following"
+ elog "file as your /etc/X11/xorg.conf:"
+ elog " /usr/share/doc/${PF}/xorg.conf.vbox"
+ elog ""
+ elog "An autostart .desktop file has been installed to start"
+ elog "VBoxClient in desktop sessions."
+ elog ""
+ elog "You can mount shared folders with:"
+ elog " mount -t vboxsf <shared_folder_name> <mount_point>"
+ elog ""
+ elog "Warning:"
+ elog "this ebuild is only needed if you are running gentoo"
+ elog "inside a VirtualBox Virtual Machine, you don't need"
+ elog "it to run VirtualBox itself."
+ elog ""
+}
+
+pkg_postrm() {
+ udev_reload
+}