mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-06 00:48:18 -07:00
Revert "app-emulation/virtualbox: drop 7.0.26-r1"
This reverts commit ee8f2a44d6.
Signed-off-by: Viorel Munteanu <ceamac@gentoo.org>
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
DIST VirtualBox-7.0.26.tar.bz2 174650718 BLAKE2B ba13a940b9566a5ac5b228bf29d49d4b9bf16a72da3212c305538711d363f1e6fddaa8717d4c46394ce488d2c1670874fece356740f421f44f6f40bd655f5551 SHA512 337f62438679f98b342213dbafdd3e07f7d7092a4205bfe388d64d1cc8224499621addea56b70d806c93290bb82e6150c07516e69250460a276e3b7a4484a9b6
|
||||
DIST VirtualBox-7.1.10.tar.bz2 233395034 BLAKE2B 8f451932a4b3cd5e4628f8dd45e9a2cfec6cfbc02fd4eeb7f4dedd473c9c022f57751e4ea78ab1edd6989c111a5c751da1c87662d24c971c3f673bedcf9d6f06 SHA512 841c539b30c964eec0e3a5eddc354bcec530aeed882507928c2f0a8675756c27a650cb3094a130d4f609e83a10f1273b40e9a765228586c3c8c90bb74d7872ad
|
||||
DIST VirtualBox-7.1.12.tar.bz2 214691769 BLAKE2B 7d316732c504b62e19cc0611242c24f12b93faccc6d7dbcc0ab6c63f01828f29c659fa4947cc0fb5443615320edea9b904e53ce68baf4ff4f62e73f99bf5bee9 SHA512 0996f59463a3c89e249b3fac0531f5814287afa6a279020b49f48740143fea1b1cf466508b7cfcb6f809d0046117022a67d836b67be3173a0d6cd2aadca6086e
|
||||
DIST VirtualBox-7.2.0_BETA2.tar.bz2 196983756 BLAKE2B efb80e894f0b86eb3c2bd040f485a61382798ad7a70a5fd69ccd8042f6b2ae000ff2fd294dd111518d4cf182f35756d4b3675da8619bcbecd72bd1bb9c9bc5cc SHA512 5d3463393e61435c0fcf389e77ef94d7f7d15c7c19e587e597113c041afc0b724771261663d489bc2631c917b9f44c584118dd37bf6fdf07983e7d8b999a4c3f
|
||||
@@ -5,6 +6,7 @@ DIST virtualbox-help-7.1.0.tar.xz 1631644 BLAKE2B 408748619d1e981b9d5b5e615baca7
|
||||
DIST virtualbox-help-7.1.10.tar.xz 8307956 BLAKE2B 7da5e31400431b19df136a16dcbb8a9307674ae3d25da6b4e546165f6d2d69b090f3f07ba356c2ac7efb7a6bf26d27751b70ce1a05d0e9bd081490a28135359a SHA512 f3d75ec4e5379c1ad99a24b2aebf9ad167020f2f59f9fcbd32fb41edfb283b6d26fcad82550223433d4f71b0df26d09ac56de906727faea6f25da9ad8c067ff6
|
||||
DIST virtualbox-help-7.1.12.tar.xz 8306480 BLAKE2B e19fe609dfbd2c7ab3f9374f1b28f7e461169411ff98328aed0de3353628730e1ce8255f580d99c3a425337900843560bf166151913d66ca4933718225befc99 SHA512 aa6ddc302cbefa26e9da19bec0da7520430ef9ae137c8a2658b201ee4712f1e8212f027ca8c78d27e8e70aa7b0c365f0445de47d61b725a2e4a840c6db41c7b2
|
||||
DIST virtualbox-help-7.2.0_beta2.tar.xz 8336656 BLAKE2B 5e107b6c21ec21f0ef21d96b73ecf916c5a7f5813865345085756ab798798cb0294dbed2f8c732f95f2c55d2e4abb82b596d873cacee9813e66d2e2d33513382 SHA512 b63a803b57cf5494155a41f0b0d765ee0bed049f48d279302364e575b8f1472bb89a1634a921625946671f933e25d69dee8ae4c65bb36f012d218c4beb659bfc
|
||||
DIST virtualbox-patches-7.0.22-r1.tar.bz2 6972 BLAKE2B e9116cb2ed874f9a0133e756b725a48ee665a412114d04195849f5930782c65678a2aaf581b9b02bc29001be4191116e322643232ee37de5cba0f2b5049b615f SHA512 be72b596f63229bd28b22c026108cf5a5c951f58343a709f158446593e6f872a81734dd83a838dd91c02c80854312e2cad81f3a525035db5ffabeb96729a8276
|
||||
DIST virtualbox-patches-7.1.10.tar.bz2 5966 BLAKE2B cde325931ed2b41c74c9fa070980c5a6988a658608b2899473991e58ebf995f3cfd8efd295c98181d879104249ffc021643315ffe7801d30ded663a61e442488 SHA512 82de81a6e63bbaae8a1467fe0f4b84a6a71ee3f3d2190d53215f0b0913f6d2e53623709e5063ba629798a844c0c29fa0f48aca72efc96e775d7b18f75c1de79f
|
||||
DIST virtualbox-patches-7.2.0_pre20250508.tar.bz2 5825 BLAKE2B de1168fea1df1c602e66fd61148084ec65713520a07abcbfb26f87cdf82063f31dc3a5816444dacb709e404b79500b03edf74b22a620d2661a91fae58cc4d87a SHA512 156471026c42fc4b6396f6f88b065a75994cc191834ef7bc11a2299914a668b2424428f2785b152645ccd3a33fe8d2bf3aa6f8345d0d9f313647ddcbb79362ca
|
||||
DIST virtualbox-patches-7.2.0_pre20250723.tar.bz2 6061 BLAKE2B 4375d45f892ab34390e572b1d35669fdcd54cc57f71ea5e4f74ae542fa22a952056551de011ef0c80374070111b3cd71ccc89bff02103e510225f599ce6b8736 SHA512 762889a568ada29bc439e8a89f7e809c6ab8a7d9bb4fb05483ae19e1d7fa0bf2c9d29f5f7e668e3a5c2227dd07db2eba8a5d3e024b7d6895bec530d137cf2e9e
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
When compiling with clang we get:
|
||||
|
||||
src/VBox/Devices/PC/ipxe/src/core/settings.c:310:8: error: fields must have a constant size: 'variable length array in structure' extension will never be supported
|
||||
|
||||
Apply this patch conditionally to disable rebuilding iPxeBiosBin.rom when using clang.
|
||||
|
||||
--- a/src/VBox/Devices/PC/ipxe/Makefile.kmk
|
||||
+++ b/src/VBox/Devices/PC/ipxe/Makefile.kmk
|
||||
@@ -45,7 +45,8 @@
|
||||
iPxeBiosBin_CLEAN = \
|
||||
$(iPxeBiosBin_0_OUTDIR)/iPxeBiosBin.c \
|
||||
|
||||
-if1of ($(KBUILD_TARGET), darwin os2 solaris win)
|
||||
+# Disable building on Linux if using clang
|
||||
+if1of ($(KBUILD_TARGET), darwin os2 solaris win linux)
|
||||
$$(iPxeBiosBin_0_OUTDIR)/iPxeBiosBin.c: $(PATH_SUB_CURRENT)/iPxeBiosBin.rom $(VBOX_BIN2C) | $$(dir $$@)
|
||||
$(call MSG_TOOL,bin2c,iPxeBiosBin,$<,$@)
|
||||
$(QUIET)$(VBOX_BIN2C) -min 32 -max 56 -mask 0x1ff -export NetBiosBinary $< $@
|
||||
691
app-emulation/virtualbox/virtualbox-7.0.26-r1.ebuild
Normal file
691
app-emulation/virtualbox/virtualbox-7.0.26-r1.ebuild
Normal file
@@ -0,0 +1,691 @@
|
||||
# Copyright 2022-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
# To add a new Python here:
|
||||
# 1. Patch src/libs/xpcom18a4/python/Makefile.kmk (copy the previous impl's logic)
|
||||
# Do NOT skip this part. It'll end up silently not-building the Python extension
|
||||
# or otherwise misbehaving if you do.
|
||||
#
|
||||
# 2. Then update PYTHON_COMPAT & set PYTHON_SINGLE_TARGET for testing w/ USE=python.
|
||||
#
|
||||
# May need to look at other distros (e.g. Arch Linux) to find patches for newer
|
||||
# Python versions as upstream tends to lag. Upstream may have patches on their
|
||||
# trunk branch but not release branch.
|
||||
#
|
||||
# See bug #785835, bug #856121.
|
||||
PYTHON_COMPAT=( python3_{11..12} )
|
||||
|
||||
inherit edo flag-o-matic java-pkg-opt-2 linux-info multilib optfeature pax-utils \
|
||||
python-single-r1 tmpfiles toolchain-funcs udev xdg
|
||||
|
||||
MY_PN="VirtualBox"
|
||||
MY_P=${MY_PN}-${PV}
|
||||
|
||||
DESCRIPTION="Family of powerful x86 virtualization products for enterprise and home use"
|
||||
HOMEPAGE="https://www.virtualbox.org/ https://github.com/VirtualBox/virtualbox"
|
||||
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.22-r1.tar.bz2
|
||||
"
|
||||
S="${WORKDIR}/${MY_PN}-${PV}"
|
||||
|
||||
LICENSE="GPL-2+ GPL-3 LGPL-2.1 MIT dtrace? ( CDDL )"
|
||||
SLOT="0/$(ver_cut 1-2)"
|
||||
KEYWORDS="amd64"
|
||||
IUSE="alsa dbus debug doc dtrace java lvm pam pch pulseaudio +opengl python +sdk +sdl test +udev vboxwebsrv vde +vmmraw vnc"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
unset WATCOM #856769
|
||||
|
||||
COMMON_DEPEND="
|
||||
acct-group/vboxusers
|
||||
~app-emulation/virtualbox-modules-${PV}
|
||||
dev-libs/libtpms
|
||||
dev-libs/libxml2:=
|
||||
dev-libs/openssl:0=
|
||||
media-libs/libpng:0=
|
||||
media-libs/libvpx:0=
|
||||
net-misc/curl
|
||||
sys-libs/zlib
|
||||
dbus? ( sys-apps/dbus )
|
||||
lvm? ( sys-fs/lvm2 )
|
||||
opengl? (
|
||||
media-libs/libglvnd[X]
|
||||
media-libs/vulkan-loader
|
||||
x11-libs/libX11
|
||||
x11-libs/libXt
|
||||
)
|
||||
pam? ( sys-libs/pam )
|
||||
python? ( ${PYTHON_DEPS} )
|
||||
sdl? (
|
||||
media-libs/libsdl2[X,video]
|
||||
x11-libs/libX11
|
||||
x11-libs/libXcursor
|
||||
x11-libs/libXt
|
||||
)
|
||||
vboxwebsrv? ( net-libs/gsoap[-gnutls(-),debug?] )
|
||||
vde? ( net-misc/vde )
|
||||
vnc? ( >=net-libs/libvncserver-0.9.9 )
|
||||
"
|
||||
# We're stuck on JDK (and JRE, I guess?) 1.8 because of need for wsimport
|
||||
# with USE="vboxwebsrv java". Note that we have to put things in DEPEND,
|
||||
# not (only, anyway) BDEPEND, as the eclass magic to set the environment variables
|
||||
# based on *DEPEND doesn't work for BDEPEND at least right now.
|
||||
#
|
||||
# There's a comment in Config.kmk about it
|
||||
# ("With Java 11 wsimport was removed, usually part of a separate install now.")
|
||||
# but it needs more investigation.
|
||||
#
|
||||
# See bug #878299 to track this issue.
|
||||
DEPEND="
|
||||
${COMMON_DEPEND}
|
||||
>=dev-libs/libxslt-1.1.19
|
||||
virtual/libcrypt:=
|
||||
alsa? ( >=media-libs/alsa-lib-1.0.13 )
|
||||
java? ( virtual/jdk:1.8 )
|
||||
opengl? (
|
||||
x11-base/xorg-proto
|
||||
x11-libs/libXcursor
|
||||
x11-libs/libXinerama
|
||||
x11-libs/libXmu
|
||||
x11-libs/libXrandr
|
||||
virtual/glu
|
||||
)
|
||||
sdl? ( x11-libs/libXinerama )
|
||||
pulseaudio? ( media-libs/libpulse )
|
||||
udev? ( >=virtual/udev-171 )
|
||||
"
|
||||
RDEPEND="
|
||||
${COMMON_DEPEND}
|
||||
java? ( virtual/jre:1.8 )
|
||||
"
|
||||
BDEPEND="
|
||||
>=app-arch/tar-1.34-r2
|
||||
>=dev-lang/yasm-0.6.2
|
||||
dev-libs/libIDL
|
||||
dev-util/glslang
|
||||
>=dev-build/kbuild-0.1.9998.3592
|
||||
sys-apps/which
|
||||
sys-devel/bin86
|
||||
sys-libs/libcap
|
||||
sys-power/iasl
|
||||
virtual/pkgconfig
|
||||
doc? (
|
||||
app-text/docbook-sgml-dtd:4.4
|
||||
app-text/docbook-xsl-ns-stylesheets
|
||||
dev-texlive/texlive-basic
|
||||
dev-texlive/texlive-latex
|
||||
dev-texlive/texlive-latexrecommended
|
||||
dev-texlive/texlive-latexextra
|
||||
dev-texlive/texlive-fontsrecommended
|
||||
dev-texlive/texlive-fontsextra
|
||||
)
|
||||
java? ( virtual/jdk:1.8 )
|
||||
python? (
|
||||
${PYTHON_DEPS}
|
||||
test? (
|
||||
$(python_gen_cond_dep '
|
||||
dev-python/pytest[${PYTHON_USEDEP}]
|
||||
')
|
||||
)
|
||||
)
|
||||
"
|
||||
|
||||
QA_FLAGS_IGNORED="
|
||||
usr/lib64/virtualbox/VBoxDDR0.r0
|
||||
usr/lib64/virtualbox/VMMR0.r0
|
||||
usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.r0
|
||||
usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.debug
|
||||
"
|
||||
|
||||
QA_TEXTRELS="
|
||||
usr/lib64/virtualbox/VMMR0.r0
|
||||
usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.r0
|
||||
"
|
||||
|
||||
QA_EXECSTACK="
|
||||
usr/lib64/virtualbox/iPxeBaseBin
|
||||
usr/lib64/virtualbox/VMMR0.r0
|
||||
usr/lib64/virtualbox/VBoxDDR0.r0
|
||||
usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.r0
|
||||
usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.debug
|
||||
"
|
||||
|
||||
QA_WX_LOAD="
|
||||
usr/lib64/virtualbox/iPxeBaseBin
|
||||
"
|
||||
|
||||
QA_PRESTRIPPED="
|
||||
usr/lib64/virtualbox/VMMR0.r0
|
||||
usr/lib64/virtualbox/VBoxDDR0.r0
|
||||
usr/lib64/virtualbox/ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack/linux.amd64/VBoxDTraceR0.r0
|
||||
"
|
||||
|
||||
REQUIRED_USE="
|
||||
java? ( sdk )
|
||||
python? ( sdk ${PYTHON_REQUIRED_USE} )
|
||||
vboxwebsrv? ( java )
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
# Downloaded patchset
|
||||
"${WORKDIR}"/virtualbox-patches-7.0.22-r1/patches
|
||||
)
|
||||
|
||||
pkg_pretend() {
|
||||
einfo
|
||||
einfo "QT 5 is going away. This build will not include any QT frontend."
|
||||
einfo "Please upgrade to virtualbox 7.1.x, which uses QT 6."
|
||||
einfo
|
||||
|
||||
if ! use opengl; then
|
||||
einfo "No USE=\"opengl\" selected, this build will lack"
|
||||
einfo "the OpenGL feature."
|
||||
fi
|
||||
|
||||
# 749273
|
||||
local d=${ROOT}
|
||||
for i in usr "$(get_libdir)"; do
|
||||
d="${d}/$i"
|
||||
if [[ "$(stat -L -c "%g %u" "${d}")" != "0 0" ]]; then
|
||||
die "${d} should be owned by root, VirtualBox will not start otherwise"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
java-pkg-opt-2_pkg_setup
|
||||
use python && python-single-r1_pkg_setup
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
if use python; then
|
||||
mkdir test
|
||||
cp "${FILESDIR}"/test_python.py test/
|
||||
python_fix_shebang test/test_python.py
|
||||
fi
|
||||
|
||||
# Only add nopie patch when we're on hardened
|
||||
if gcc-specs-pie; then
|
||||
eapply "${FILESDIR}"/050_virtualbox-5.2.8-nopie.patch
|
||||
fi
|
||||
|
||||
# Remove shipped binaries (kBuild, yasm) and tools, see bug #232775
|
||||
rm -r kBuild/bin || die
|
||||
# Remove everything in tools except kBuildUnits
|
||||
find tools -mindepth 1 -maxdepth 1 -name kBuildUnits -prune -o -exec rm -r {} \+ || die
|
||||
|
||||
# Disable things unused or split into separate ebuilds
|
||||
sed -e "s@MY_LIBDIR@$(get_libdir)@" \
|
||||
"${FILESDIR}"/${PN}-5-localconfig > LocalConfig.kmk || die
|
||||
|
||||
if ! use pch; then
|
||||
# bug #753323
|
||||
printf '\n%s\n' "VBOX_WITHOUT_PRECOMPILED_HEADERS=1" \
|
||||
>> LocalConfig.kmk || die
|
||||
fi
|
||||
|
||||
# bug #916002, #488176, #925347
|
||||
tc-ld-is-mold || tc-ld-force-bfd
|
||||
|
||||
# Respect LDFLAGS
|
||||
sed -e "s@_LDFLAGS\.${ARCH}*.*=@& ${LDFLAGS}@g" \
|
||||
-i Config.kmk src/libs/xpcom18a4/Config.kmk || die
|
||||
|
||||
# Do not use hard-coded ld (related to bug #488176)
|
||||
sed -e '/QUIET)ld /s@ld @$(LD) @' \
|
||||
-i src/VBox/Devices/PC/ipxe/Makefile.kmk || die
|
||||
|
||||
# Use PAM only when pam USE flag is enbaled (bug #376531)
|
||||
if ! use pam; then
|
||||
einfo "Disabling PAM removes the possibility to use the VRDP features."
|
||||
sed -i 's@^.*VBOX_WITH_PAM@#VBOX_WITH_PAM@' Config.kmk || die
|
||||
sed -i 's@\(.*/auth/Makefile.kmk.*\)@#\1@' \
|
||||
src/VBox/HostServices/Makefile.kmk || die
|
||||
echo -e "\nIPRT_WITHOUT_PAM=1" >> LocalConfig.kmk || die
|
||||
fi
|
||||
|
||||
# add correct java path
|
||||
if use java; then
|
||||
sed "s@/usr/lib/jvm/java-6-sun@$(java-config -O)@" \
|
||||
-i "${S}"/Config.kmk || die
|
||||
java-pkg-opt-2_src_prepare
|
||||
fi
|
||||
|
||||
#856811 #864274
|
||||
# cannot filter out only one flag, some combinations of these flags produce buggy executables
|
||||
for i in abm avx avx2 bmi bmi2 fma fma4 popcnt; do
|
||||
append-cflags $(test-flags-CC -mno-$i)
|
||||
append-cxxflags $(test-flags-CXX -mno-$i)
|
||||
done
|
||||
|
||||
# bug #940482
|
||||
filter-flags -fno-plt
|
||||
|
||||
# bug #908814
|
||||
filter-lto
|
||||
|
||||
# bug #843437
|
||||
cat >> LocalConfig.kmk <<-EOF || die
|
||||
CXXFLAGS=${CXXFLAGS}
|
||||
CFLAGS=${CFLAGS}
|
||||
EOF
|
||||
|
||||
if use sdl; then
|
||||
sed -i 's/sdl-config/sdl2-config/' configure || die
|
||||
echo -e "\nVBOX_WITH_VBOXSDL=1" >> LocalConfig.kmk || die
|
||||
fi
|
||||
|
||||
#443830
|
||||
echo -e "\nVBOX_WITH_VBOX_IMG=1" >> LocalConfig.kmk || die
|
||||
|
||||
if tc-is-clang; then
|
||||
# clang assembler chokes on comments starting with /
|
||||
sed -i -e '/^\//d' src/libs/xpcom18a4/nsprpub/pr/src/md/unix/os_Linux_x86_64.s || die
|
||||
|
||||
# clang does not support this extension
|
||||
eapply "${FILESDIR}"/${PN}-7.0.8-disable-rebuild-iPxeBiosBin.patch
|
||||
fi
|
||||
|
||||
# fix doc generation
|
||||
echo -e "\nVBOX_PATH_DOCBOOK=/usr/share/sgml/docbook/xsl-ns-stylesheets" >> LocalConfig.kmk || die
|
||||
# replace xhtml names with numeric equivalents
|
||||
find doc/manual -name \*.xml -exec sed -i \
|
||||
-e 's/ /\ /g' \
|
||||
-e 's/–/\–/g' \
|
||||
-e 's/←/\←/g' \
|
||||
-e 's/→/\→/g' \
|
||||
-e 's/↔/\↔/g' {} \+ || die
|
||||
|
||||
# fix help path #891879
|
||||
echo -e "\nVBOX_PATH_PACKAGE_DOCS=/usr/share/doc/${PF}" >> LocalConfig.kmk || die
|
||||
|
||||
# 489208
|
||||
# Cannot patch the whole text, many translations. Use sed instead to replace the command
|
||||
find src/VBox/Frontends/VirtualBox/nls -name \*.ts -exec sed -i \
|
||||
's/'[^&]*\(vboxdrv setup\|vboxconfig\)'/\'emerge -1 virtualbox-modules\'/' {} \+ || die
|
||||
sed -i "s:'/sbin/vboxconfig':'emerge -1 virtualbox-modules':" \
|
||||
src/VBox/Frontends/VirtualBox/src/main.cpp \
|
||||
src/VBox/VMM/VMMR3/VM.cpp || die
|
||||
|
||||
# 890561
|
||||
echo -e "\nVBOX_GTAR=gtar" >> LocalConfig.kmk || die
|
||||
|
||||
# because nls support depends on QT5, disable it
|
||||
cat >> LocalConfig.kmk <<-EOF || die
|
||||
VBOX_WITH_NLS :=
|
||||
VBOX_WITH_MAIN_NLS :=
|
||||
VBOX_WITH_PUEL_NLS :=
|
||||
VBOX_WITH_VBOXMANAGE_NLS :=
|
||||
VBOX_WITH_DOCS_QHELP :=
|
||||
EOF
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
tc-export AR CC CXX LD RANLIB
|
||||
export HOST_CC="$(tc-getBUILD_CC)"
|
||||
|
||||
# --enable-webservice is a no-op
|
||||
# webservice is automagically enabled if gsoap is found
|
||||
local myconf=(
|
||||
--with-gcc="$(tc-getCC)"
|
||||
--with-g++="$(tc-getCXX)"
|
||||
|
||||
--disable-kmods
|
||||
|
||||
$(usev !alsa --disable-alsa)
|
||||
$(usev !dbus --disable-dbus)
|
||||
$(usev debug --build-debug)
|
||||
$(usev !doc --disable-docs)
|
||||
$(usev !java --disable-java)
|
||||
$(usev !lvm --disable-devmapper)
|
||||
$(usev !pulseaudio --disable-pulse)
|
||||
$(usev !python --disable-python)
|
||||
$(usev !vboxwebsrv --with-gsoap-dir=/dev/null)
|
||||
$(usev vde --enable-vde)
|
||||
$(usev !vmmraw --disable-vmmraw)
|
||||
$(usev vnc --enable-vnc)
|
||||
)
|
||||
|
||||
if use sdl || use opengl; then
|
||||
myconf+=(
|
||||
--disable-qt
|
||||
$(usev !opengl --disable-opengl)
|
||||
$(usev !sdl --disable-sdl)
|
||||
)
|
||||
else
|
||||
myconf+=(
|
||||
--build-headless
|
||||
)
|
||||
fi
|
||||
|
||||
if use amd64 && ! has_multilib_profile; then
|
||||
myconf+=( --disable-vmmraw )
|
||||
fi
|
||||
|
||||
# not an autoconf script
|
||||
edo ./configure "${myconf[@]}"
|
||||
|
||||
# Force usage of chosen Python implementation
|
||||
# bug #856121, bug #785835
|
||||
sed -i \
|
||||
-e '/VBOX_WITH_PYTHON.*=/d' \
|
||||
-e '/VBOX_PATH_PYTHON_INC.*=/d' \
|
||||
-e '/VBOX_LIB_PYTHON.*=/d' \
|
||||
AutoConfig.kmk || die
|
||||
|
||||
if use python; then
|
||||
cat >> AutoConfig.kmk <<-EOF || die
|
||||
VBOX_WITH_PYTHON=$(usev python 1)
|
||||
VBOX_PATH_PYTHON_INC=$(python_get_includedir)
|
||||
VBOX_LIB_PYTHON=$(python_get_library_path)
|
||||
EOF
|
||||
|
||||
local mangled_python="${EPYTHON#python}"
|
||||
mangled_python="${mangled_python/.}"
|
||||
|
||||
# Stub out the script which defines what the Makefile ends up
|
||||
# building for. gen_python_deps.py gets called by the Makefile
|
||||
# with some args and it spits out a bunch of paths for a hardcoded
|
||||
# list of Pythons. We just override it with what we're actually using.
|
||||
# This minimises the amount of patching we have to do for new Pythons.
|
||||
cat > src/libs/xpcom18a4/python/gen_python_deps.py <<-EOF || die
|
||||
print("VBOX_PYTHON${mangled_python}_INC=$(python_get_includedir)")
|
||||
print("VBOX_PYTHON${mangled_python}_LIB=$(python_get_library_path)")
|
||||
print("VBOX_PYTHONDEF_INC=$(python_get_includedir)")
|
||||
print("VBOX_PYTHONDEF_LIB=$(python_get_library_path)")
|
||||
EOF
|
||||
|
||||
chmod +x src/libs/xpcom18a4/python/gen_python_deps.py || die
|
||||
else
|
||||
cat >> AutoConfig.kmk <<-EOF || die
|
||||
VBOX_WITH_PYTHON:=
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
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_WITH_VBOXIMGMOUNT=1
|
||||
|
||||
KBUILD_VERBOSE=2
|
||||
|
||||
AS="$(tc-getCC)"
|
||||
CC="$(tc-getCC)"
|
||||
CXX="$(tc-getCXX)"
|
||||
|
||||
TOOL_GCC3_CC="$(tc-getCC)"
|
||||
TOOL_GCC3_LD="$(tc-getCC)"
|
||||
TOOL_GCC3_AS="$(tc-getCC)"
|
||||
TOOL_GCC3_AR="$(tc-getAR)"
|
||||
TOOL_GCC3_OBJCOPY="$(tc-getOBJCOPY)"
|
||||
|
||||
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_GCC3_CFLAGS="${CFLAGS}"
|
||||
TOOL_GCC3_CXXFLAGS="${CXXFLAGS}"
|
||||
VBOX_GCC_OPT="${CXXFLAGS}"
|
||||
VBOX_NM="$(tc-getNM)"
|
||||
|
||||
TOOL_YASM_AS=yasm
|
||||
)
|
||||
|
||||
if use amd64 && has_multilib_profile; then
|
||||
myemakeargs+=(
|
||||
CC32="$(tc-getCC) -m32"
|
||||
CXX32="$(tc-getCXX) -m32"
|
||||
|
||||
TOOL_GCC32_CC="$(tc-getCC) -m32"
|
||||
TOOL_GCC32_CXX="$(tc-getCXX) -m32"
|
||||
TOOL_GCC32_LD="$(tc-getCC) -m32"
|
||||
TOOL_GCC32_AS="$(tc-getCC) -m32"
|
||||
TOOL_GCC32_AR="$(tc-getAR)"
|
||||
TOOL_GCC32_OBJCOPY="$(tc-getOBJCOPY)"
|
||||
|
||||
TOOL_GXX32_CC="$(tc-getCC) -m32"
|
||||
TOOL_GXX32_CXX="$(tc-getCXX) -m32"
|
||||
TOOL_GXX32_LD="$(tc-getCXX) -m32"
|
||||
TOOL_GXX32_AS="$(tc-getCXX) -m32"
|
||||
TOOL_GXX32_AR="$(tc-getAR)"
|
||||
TOOL_GXX32_OBJCOPY="$(tc-getOBJCOPY)"
|
||||
)
|
||||
fi
|
||||
|
||||
MAKE="kmk" emake "${myemakeargs[@]}" all
|
||||
}
|
||||
|
||||
src_test() {
|
||||
if use python; then
|
||||
local -x VBOX_PROGRAM_PATH="${S}"/out/linux.${ARCH}/$(usex debug debug release)/bin
|
||||
local -x VBOX_SDK_PATH="${VBOX_PROGRAM_PATH}"/sdk
|
||||
local -x PYTHONPATH="${VBOX_SDK_PATH}"/installer
|
||||
LD_LIBRARY_PATH="${VBOX_PROGRAM_PATH}" epytest test/
|
||||
fi
|
||||
}
|
||||
|
||||
src_install() {
|
||||
cd "${S}"/out/linux.${ARCH}/$(usex debug debug release)/bin || die
|
||||
|
||||
local vbox_inst_path="/usr/$(get_libdir)/${PN}" each size ico icofile
|
||||
|
||||
vbox_inst() {
|
||||
local binary="${1}"
|
||||
local perms="${2:-0750}"
|
||||
local path="${3:-${vbox_inst_path}}"
|
||||
|
||||
[[ -n "${binary}" ]] || die "vbox_inst: No binary given!"
|
||||
[[ ${perms} =~ ^[[:digit:]]+{4}$ ]] || die "vbox_inst: perms must consist of four digits."
|
||||
|
||||
insinto ${path}
|
||||
doins ${binary}
|
||||
fowners root:vboxusers ${path}/${binary}
|
||||
fperms ${perms} ${path}/${binary}
|
||||
}
|
||||
|
||||
# Create configuration files
|
||||
insinto /etc/vbox
|
||||
newins "${FILESDIR}/${PN}-4-config" vbox.cfg
|
||||
|
||||
# Set the correct libdir
|
||||
sed \
|
||||
-e "s@MY_LIBDIR@$(get_libdir)@" \
|
||||
-i "${ED}"/etc/vbox/vbox.cfg || die "vbox.cfg sed failed"
|
||||
|
||||
# Install the wrapper script
|
||||
exeinto ${vbox_inst_path}
|
||||
newexe "${FILESDIR}/${PN}-ose-6-wrapper" "VBox"
|
||||
fowners root:vboxusers ${vbox_inst_path}/VBox
|
||||
fperms 0750 ${vbox_inst_path}/VBox
|
||||
|
||||
# Install binaries and libraries
|
||||
insinto ${vbox_inst_path}
|
||||
doins -r components
|
||||
|
||||
for each in VBox{Autostart,BalloonCtrl,BugReport,CpuReport,ExtPackHelperApp,Manage,SVC,VMMPreload,XPCOMIPCD} \
|
||||
vboximg-mount vbox-img *so *r0; do
|
||||
vbox_inst ${each}
|
||||
done
|
||||
|
||||
# These binaries need to be suid root.
|
||||
for each in VBox{Headless,Net{AdpCtl,DHCP,NAT}} ; do
|
||||
vbox_inst ${each} 4750
|
||||
done
|
||||
|
||||
# Install EFI Firmware files (bug #320757)
|
||||
for each in VBoxEFI{32,64}.fd ; do
|
||||
vbox_inst ${each} 0644
|
||||
done
|
||||
|
||||
# VBoxSVC and VBoxManage need to be pax-marked (bug #403453)
|
||||
# VBoxXPCOMIPCD (bug #524202)
|
||||
for each in VBox{Headless,Manage,SVC,XPCOMIPCD} ; do
|
||||
pax-mark -m "${ED}"${vbox_inst_path}/${each}
|
||||
done
|
||||
|
||||
# Symlink binaries to the shipped wrapper
|
||||
for each in vbox{autostart,balloonctrl,bugreport,headless,manage} \
|
||||
VBox{Autostart,BalloonCtrl,BugReport,Headless,Manage,VRDP} ; do
|
||||
dosym ${vbox_inst_path}/VBox /usr/bin/${each}
|
||||
done
|
||||
dosym ${vbox_inst_path}/vboximg-mount /usr/bin/vboximg-mount
|
||||
dosym ${vbox_inst_path}/vbox-img /usr/bin/vbox-img
|
||||
|
||||
if use pam; then
|
||||
# VRDPAuth only works with this (bug #351949)
|
||||
dosym VBoxAuth.so ${vbox_inst_path}/VRDPAuth.so
|
||||
fi
|
||||
|
||||
# set an env-variable for 3rd party tools
|
||||
echo "VBOX_APP_HOME=${vbox_inst_path}" > "${T}/90virtualbox"
|
||||
# environment variables used during SDK binding installation
|
||||
echo "VBOX_SDK_PATH=${vbox_inst_path}/sdk" >> "${T}/90virtualbox"
|
||||
echo "VBOX_INSTALL_PATH=${vbox_inst_path}" >> "${T}/90virtualbox"
|
||||
doenvd "${T}/90virtualbox"
|
||||
|
||||
if use sdl; then
|
||||
vbox_inst VBoxSDL 4750
|
||||
pax-mark -m "${ED}"${vbox_inst_path}/VBoxSDL
|
||||
|
||||
for each in vboxsdl VBoxSDL ; do
|
||||
dosym ${vbox_inst_path}/VBox /usr/bin/${each}
|
||||
done
|
||||
fi
|
||||
|
||||
if use lvm; then
|
||||
vbox_inst VBoxVolInfo 4750
|
||||
dosym ${vbox_inst_path}/VBoxVolInfo /usr/bin/VBoxVolInfo
|
||||
fi
|
||||
|
||||
if use sdk; then
|
||||
insinto ${vbox_inst_path}
|
||||
doins -r sdk
|
||||
|
||||
if use java; then
|
||||
java-pkg_regjar "${ED}/${vbox_inst_path}/sdk/bindings/xpcom/java/vboxjxpcom.jar"
|
||||
java-pkg_regso "${ED}/${vbox_inst_path}/libvboxjxpcom.so"
|
||||
fi
|
||||
fi
|
||||
|
||||
if use udev; then
|
||||
local udevdir="$(get_udevdir)"
|
||||
local udev_file="VBoxCreateUSBNode.sh"
|
||||
local rules_file="10-virtualbox.rules"
|
||||
|
||||
insinto ${udevdir}
|
||||
doins ${udev_file}
|
||||
fowners root:vboxusers ${udevdir}/${udev_file}
|
||||
fperms 0750 ${udevdir}/${udev_file}
|
||||
|
||||
insinto ${udevdir}/rules.d
|
||||
sed "s@%UDEVDIR%@${udevdir}@" "${FILESDIR}"/${rules_file} \
|
||||
> "${T}"/${rules_file} || die
|
||||
doins "${T}"/${rules_file}
|
||||
fi
|
||||
|
||||
if use vboxwebsrv; then
|
||||
vbox_inst vboxwebsrv
|
||||
dosym ${vbox_inst_path}/VBox /usr/bin/vboxwebsrv
|
||||
newinitd "${FILESDIR}"/vboxwebsrv-initd vboxwebsrv
|
||||
newconfd "${FILESDIR}"/vboxwebsrv-confd vboxwebsrv
|
||||
fi
|
||||
|
||||
# Remove dead symlinks (bug #715338)
|
||||
find "${ED}"/usr/$(get_libdir)/${PN} -xtype l -delete || die
|
||||
|
||||
# Fix version string in extensions or else they don't get accepted
|
||||
# by the virtualbox host process (see bug #438930)
|
||||
find ExtensionPacks -type f -name "ExtPack.xml" -exec sed -i '/Version/s@_Gentoo@@' {} \+ || die
|
||||
|
||||
local extensions_dir="${vbox_inst_path}/ExtensionPacks"
|
||||
|
||||
if use vnc; then
|
||||
insinto ${extensions_dir}
|
||||
doins -r ExtensionPacks/VNC
|
||||
fi
|
||||
|
||||
if use dtrace; then
|
||||
insinto ${extensions_dir}
|
||||
doins -r ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack
|
||||
fi
|
||||
|
||||
if use doc; then
|
||||
dodoc UserManual.pdf
|
||||
docompress -x /usr/share/doc/${PF}
|
||||
fi
|
||||
|
||||
if use python; then
|
||||
local python_path_ext="${ED}/usr/$(get_libdir)/virtualbox/VBoxPython3.so"
|
||||
if [[ ! -x "${python_path_ext}" ]]; then
|
||||
eerror "Couldn't find ${python_path_ext}! Bindings were requested with USE=python"
|
||||
eerror "but none were installed. This may happen if support for a Python target"
|
||||
eerror "(listed in PYTHON_COMPAT in the ebuild) is incomplete within the Makefiles."
|
||||
die "Incomplete installation of Python bindings! File a bug with Gentoo!"
|
||||
fi
|
||||
|
||||
# 378871
|
||||
local installer_dir="${ED}/usr/$(get_libdir)/virtualbox/sdk/installer"
|
||||
pushd "${installer_dir}" &> /dev/null || die
|
||||
sed -e "s;%VBOX_INSTALL_PATH%;${vbox_inst_path};" \
|
||||
-e "s;%VBOX_SDK_PATH%;${vbox_inst_path}/sdk;" \
|
||||
-i vboxapi/__init__.py || die
|
||||
# insert shebang, the files come without one
|
||||
find vboxapi -name \*.py -exec sed -e "1 i\#! ${PYTHON}" -i {} \+ || die
|
||||
python_domodule vboxapi
|
||||
popd &> /dev/null || die
|
||||
sed -e "1 i\#! ${PYTHON}" -i vboxshell.py || die
|
||||
python_doscript vboxshell.py
|
||||
|
||||
# do not install the installer
|
||||
rm -r "${installer_dir}" || die
|
||||
fi
|
||||
|
||||
newtmpfiles "${FILESDIR}"/${PN}-vboxusb_tmpfilesd ${PN}-vboxusb.conf
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
xdg_pkg_postinst
|
||||
|
||||
if use udev; then
|
||||
udev_reload
|
||||
udevadm trigger --subsystem-match=usb
|
||||
fi
|
||||
|
||||
tmpfiles_process virtualbox-vboxusb.conf
|
||||
|
||||
elog "You must be in the vboxusers group to use VirtualBox."
|
||||
elog ""
|
||||
elog "The latest user manual is available for download at:"
|
||||
elog "https://download.virtualbox.org/virtualbox/${PV}/UserManual.pdf"
|
||||
elog ""
|
||||
|
||||
optfeature "Advanced networking setups" net-misc/bridge-utils sys-apps/usermode-utilities
|
||||
optfeature "USB2, USB3, PXE boot, and VRDP support" app-emulation/virtualbox-extpack-oracle
|
||||
optfeature "Guest additions ISO" app-emulation/virtualbox-additions
|
||||
|
||||
if ! use udev; then
|
||||
ewarn "Without USE=udev, USB devices will likely not work in ${PN}."
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
xdg_pkg_postrm
|
||||
|
||||
use udev && udev_reload
|
||||
}
|
||||
Reference in New Issue
Block a user