app-emulation/virtualbox-guest-additions: add 7.0.6

Signed-off-by: Viorel Munteanu <ceamac@gentoo.org>
This commit is contained in:
Viorel Munteanu
2023-01-18 22:13:52 +02:00
parent 33789c4f83
commit 7c19a658cf
2 changed files with 290 additions and 0 deletions

View File

@@ -1,4 +1,5 @@
DIST VirtualBox-6.1.40.tar.bz2 165769795 BLAKE2B 5c216f23422be3fc4f7760881c666c57a516d12726ed8ef040bbdf918f1af53c69d204b22949e25f751cbe788b00c810c49c27b7c51c1837fd1c503a3eff202c SHA512 0dace071fe58500d0912fe4da4751de6840752375039554a56c8c753a0880a419c4a1ed7f1b0ebc51230f7099ca3f5d987dc7b91ad4d98dbd75bf63e3c27e096
DIST VirtualBox-6.1.42.tar.bz2 165554573 BLAKE2B 8419793d9e4c4d0804baba926443a27259b012ab90d1bb27c8f9d90b018ddbef83d1cc47e9f5b88e6e247f22c186603584a5ddee4b0c04fe842eba56f3fd103a SHA512 a4861b44ee85d6d1d72ba1d19b5598873503feeb6d562cf7d8c770cc9b466741bdfa5abe74dc4e7952ff189d14c6caf60f584731492c38f688a360baba019ab2
DIST VirtualBox-7.0.4.tar.bz2 199658172 BLAKE2B 51bde109805e8f3e25f179a05fac532de7a428010955c7cc2a7c9e8c072246d69c5f51f8a51e39b6a1b9f246bd945edc38e0f0cc0630c357a5e9641c38dcac21 SHA512 70f2031c4897249177131795281bf6bd5a75166067d1921db70fd1e21f5638285b5a0c3298a7070e272ac2f093a60c35eb3cab4e5f7d16a68d17b211f637b0bc
DIST VirtualBox-7.0.6.tar.bz2 199512172 BLAKE2B cfe4d7abd57dfdb0294177759e80aa9fda797b9b5433f214771a57764cb23404450169e8c7c30cda13de85b8e02a37024584c7b1f0b5a44b10b100aa66b8d5c5 SHA512 f9db7a154e392f550f50abe774fc6263eb0b6f86dccc069f2c5012fedbe2debbf5b8ba62cca44ea0d5d5475652188176bfb888266f69197677b22854f02b64a0
DIST virtualbox-patches-6.1.36.tar.bz2 2733 BLAKE2B dcfebfeca4873d382441515d48b4dfee9343bc7c83ea3cbb5002dbf7975143a79fae9a701b67dc35505e9ca03ff1b6293cb7c3279c4fdfda8ad21ba5fb9b7e87 SHA512 1bed5cdefbf8e7c4b0d9092ba4961ecf2262f27f35c71a91ef6f2e8fe8a1d92ed74f06bafbf58d70ba7165d933997f58073f4d4f4051e3ba5c0339b729066f57

View File

@@ -0,0 +1,289 @@
# Copyright 2022-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit edo linux-mod 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}"
# 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 )
"
BUILD_TARGETS="all"
BUILD_TARGET_ARCH="${ARCH}"
VBOX_MOD_SRC_DIR="${S}/out/linux.${ARCH}/release/bin/additions/src"
MODULESD_VBOXSF_ALIASES=("fs-vboxsf vboxsf") # 485996
pkg_setup() {
export DISTCC_DISABLE=1 #674256
MODULE_NAMES="vboxguest(misc:${VBOX_MOD_SRC_DIR}/vboxguest:${VBOX_MOD_SRC_DIR}/vboxguest)
vboxsf(misc:${VBOX_MOD_SRC_DIR}/vboxsf:${VBOX_MOD_SRC_DIR}/vboxsf)"
use gui && MODULE_NAMES+=" vboxvideo(misc:${VBOX_MOD_SRC_DIR}/vboxvideo::${VBOX_MOD_SRC_DIR}/vboxvideo)"
linux-mod_pkg_setup
}
src_prepare() {
# 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)
pushd "${VBOX_MOD_SRC_DIR}" &>/dev/null || die
eapply "${FILESDIR}"/vboxguest-6.1.36-log-use-c99.patch
popd &>/dev/null || die
# 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-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
BUILD_PARAMS="KERN_DIR=/lib/modules/${KV_FULL}/build KERNOUT=${KV_OUT_DIR} KBUILD_EXTRA_SYMBOLS=${S}/Module.symvers"
linux-mod_src_compile
}
src_install() {
linux-mod_src_install
cd "${S}"/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_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() {
linux-mod_pkg_postrm
udev_reload
}