Cleanup and python 3.13

This commit is contained in:
Mario Fetka
2025-05-05 10:23:40 +02:00
parent 7c1ee4ca45
commit b56141d74d
121 changed files with 9006 additions and 479 deletions

View File

@@ -0,0 +1,4 @@
AUX fs-uae-launcher-3.0.0-ROMs.patch 626 BLAKE2B 2662476f496345e6dc2f169b8c3e6e579ba68c3c7c1d9c782ce2dff39394520bde6dc1a52d9d43f562bddec9dc28daa3d0e7e1e93f1da48a0a932e1415ad40ea SHA512 8b607f64cd1c66601f7fccf5332377a85e905a6d9ba9fadb9a7234d5f36c350590011141602e093ee7a30dce4c9c6c0e9928b8b7a0be716eeaa15aeff1eacce0
DIST fs-uae-launcher-3.1.70.tar.xz 7707368 BLAKE2B fce6e47b1e09fbfae4959cffe55fec5803aa4dca511af76d621fba2156eee5d76164c0ff5dfad75864b3c2fd5c0a8b5968181538d37b9a039ffd8ab037eeafa2 SHA512 6a4eca273ebd21f64ee0a863497fb39c8b17b6dba0b99a0122f33ea688fb2b341998280b3d0ab4cac2d913bc15834dfec3a1662331dea48933135a82e29f5a83
EBUILD fs-uae-launcher-3.1.70.ebuild 1766 BLAKE2B 41851f4fe6da67a487b3228bd27cafb41e6353a8777fd594bebd45afe0ea6358132443d3290b7a51a8023fdee7e1885fadf65d003142045d5cd25e56ea537ebe SHA512 5d6a87332cceb908f6d45e45f883dc155a3c9005a13abaf9fec5bc0f4d27a2f9258d0cc53be857e1267d60e2cf1be0797c4737917b8e5364449a4b6ec506ec0c
MISC metadata.xml 409 BLAKE2B 0e27dad4e68facd0066f0f7d02e859eef7147a16cffa734b74efce77eea44ed333052e3a2a9956c052d9c7e8459b50893b0af78eb2061d1c0a1eaf32597ee1d0 SHA512 a4cf13ffb131f6049cdbd83c16ee1114651450d874dca73f68dfa19686ab09021277e860068a4ed6e8318d9bb1b750f861cb2a693945bcd8d0d4eece7f576e94

View File

@@ -0,0 +1,14 @@
diff -Naur a/fsgs/amiga/roms.py b/fsgs/amiga/roms.py
--- a/fsgs/amiga/roms.py 2019-06-21 17:49:42.000000000 +0100
+++ b/fsgs/amiga/roms.py 2019-07-21 21:42:14.135600616 +0100
@@ -10,7 +10,9 @@
# amiga-os-130.rom (decrypted, patched)
# Kickstart v1.3 r34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[!]
# Kickstart v1.3 r34.5 (1987)(Commodore)(A500-A1000-A2000-CDTV)[o] (patch)
- "891e9a547772fe0c6c19b610baf8bc4ea7fcb785"
+ "891e9a547772fe0c6c19b610baf8bc4ea7fcb785",
+ # kick13.rom - from Upgrade Commodore Amiga 500 (1989)
+ "90933936cce43ca9bc6bf375662c076b27e3c458",
]
A500_1_2_KICKSTARTS = [

View File

@@ -0,0 +1,66 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..13} )
DISTUTILS_USE_PEP517=setuptools
DISTUTILS_SINGLE_IMPL=yes
inherit distutils-r1 xdg
DESCRIPTION="PyQt5-based launcher for FS-UAE"
HOMEPAGE="https://fs-uae.net/"
SRC_URI="https://fs-uae.net/files/FS-UAE-Launcher/Stable/${PV}/${P}.tar.xz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~ppc64"
IUSE="lha"
RESTRICT="test" # The test files are just boilerplate.
RDEPEND="
app-emulation/fs-uae
$(python_gen_cond_dep '
dev-python/pyqt5[${PYTHON_USEDEP},declarative,gui,network,opengl,widgets]
dev-python/pyopengl[${PYTHON_USEDEP}]
dev-python/requests[${PYTHON_USEDEP}]
lha? ( dev-python/lhafile[${PYTHON_USEDEP}] )
')
"
BDEPEND="
sys-devel/gettext
"
PATCHES=(
"${FILESDIR}"/${PN}-3.0.0-ROMs.patch
)
python_compile_all() {
emake mo
}
python_install_all() {
emake install-data DESTDIR="${D}" prefix="${EPREFIX}"/usr
mv "${ED}"/usr/share/doc/{${PN},${PF}} || die
}
pkg_postinst() {
xdg_pkg_postinst
elog "Some important information:"
elog
ewarn " - Do not use QtCurve, it will crash PyQt5!"
elog
elog " - By default, FS-UAE creates its directories under Documents/FS-UAE."
elog " If your Documents directory is not configured according to the XDG"
elog " user diretory spec, ~/FS-UAE will be used as a fallback."
elog
elog " - You can override this by putting the path to the desired base"
elog " directory in a special config file. The config file will be read"
elog " from ~/.config/fs-uae/base-dir by both FS-UAE and FS-UAE Launcher"
elog " if it exists."
elog
elog " Alternatively, you can start FS-UAE and/or FS-UAE Launcher with"
elog " --base-dir=/path/to/desired/dir"
}

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>chewi@gentoo.org</email>
<name>James Le Cuirot</name>
</maintainer>
<upstream>
<remote-id type="github">FrodeSolheim/fs-uae-launcher</remote-id>
</upstream>
<use>
<flag name="lha">Enable LHA archive support</flag>
</use>
</pkgmetadata>

View File

@@ -1,5 +1,6 @@
AUX 050_virtualbox-5.2.8-nopie.patch 13011 BLAKE2B 17e94f0abbf52f5ee33538e63078f4cfc641fd72fc558a0f51dc3de033f2e2a2b4c38bb680847e80b1fed558e6ae287a5e1d8059ae54f59a1409215fb2424900 SHA512 a5af5766b8be4adda6fb1e1901ef18c88c24f59ac311afc58cc6d02555562f934c46159aa956b109342fb9890b1bd4af747d600c34ba8a211feebb8c9fd15715
AUX 10-virtualbox.rules 576 BLAKE2B 11654424fdfe0276df88907476eda6ecdc84c2b2650c1d71a030009849c896ce34168daff8a29366109703f3d6756b40afa64f8a54f4ff6effedea80b4e9fc23 SHA512 12128375244e0fb090674e5a11cc70178f3c6208040830c009284addb91db7dc0a2d3cbd5d1056944782e936a63b0bcef03be0135683646c41d540413805f0ba
AUX VirtualBox-python3.13.patch 3562 BLAKE2B 7979cd4950eebca3579138950cd64b8177f2d3f93218f1b94c80975629f565438c8d495106050da58f7fe3c67d15ec3faf1e64356761eecc6839be32870c134c SHA512 dd7aaa25187d9e0eb8fb8cc3d17660757c898c0a372f36f9dadcd7a7c1626733976cf2cd8f64211a0b6a6d4723e0aee70f9ab40465523e17e3cb0d38c035bca4
AUX test_python.py 455 BLAKE2B 5b3295d568fcfb415673998682b8132a6eb396bd05b9a9498e795d446f0e1df7918a2324c4ca348e7ce3084853c2df03d82e6f0304da88fd93513a2f44e6df39 SHA512 8fb796424b37bf93880260655bd8d7e5ec0f8008d00593227a276fed7fff550f02cfbe0961f88f8eb55b17197241640e8c8c346b1cc3c07f1ca6257c7c591bf4
AUX vboxwebsrv-confd 559 BLAKE2B 979dc91678fac7277c69e482b07f8d46df6b4df92ffb37d5358be33aa08b01808776f95e915377f3b65dc8b89b54141e70f655847aeba4d0bd12cfceb72d8889 SHA512 47af05e5c8f496f9d55cb1240ab55b3c12f655fda14a3e9d904ada18ed6b748f599b2429133772ff4bcd1f363e5afa19ff5873f9e538aebce58eb88253ef4cab
AUX vboxwebsrv-initd 646 BLAKE2B d71673a3afea56aea69ab1d795d8b265bb5fc62296e35d6d28caaf600ca65da43006b6d69b58f6a05f7ca0301bafce2d983536db1c98ceb03ca880f5e7632023 SHA512 365bd3a9f5d8edeb921330eebf67b43f60b048d9869f8378fa68543ed6005320b06360590187631176c256d8ce49305b856a2e0c1dc20b42890e020a8c729719
@@ -16,9 +17,12 @@ AUX virtualbox-ose-6-wrapper 3578 BLAKE2B c150e578212435268de3c5fb0eea701bc843ec
AUX virtualbox-vboxusb_tmpfilesd 35 BLAKE2B 56937e236a0e4d1a2aa085271e8ae0af9553fdf7c3b804af4d3fda3aa8dbc32d63762fee90bc949390cb9cd67f2f0111894c8af084731dab6920ae1675c69a64 SHA512 72e4602f5f214f8833486f5c787c263a10390e8bdf65b5615d67c35ec44048f02add12fe43b19f9c57a9d2f12d768c52e54fcfb9052c0611d06cc988a698c171
DIST VirtualBox-7.1.4.tar.bz2 206218796 BLAKE2B 62a4f44b4eac2e1cb2c0bace5dfabf86c41b738d81aede3de75d88159a8d76158748eaae38ee3eedbc0f79b639a875f1ef6805a8ca7c95021f475935f54d7ef9 SHA512 97654339d509447e2604db01e29f9e810f59498a378e645f412cffb67022c4e547f205e8ebdac6ae33aaa8f7bc0f289bdca2e5a04b1fa31b4a05c191d7600a9c
DIST VirtualBox-7.1.6a.tar.bz2 205777317 BLAKE2B 584a53df603311bb1d49c8564bb05015426c678d58578327a73e1bb5d8ed4f0563a4edfaea13f3d41acc6902567572e67225cc9ea797b15489fb3d786d35c3f9 SHA512 fbb9487d531db6bf176e73f307ef1b65cc5263c8e5f38755cdc6bed41fe2906ffbd64076d42b8b505183d0ae054d8f6bccc522e981edd5a815e440066327cd3b
DIST VirtualBox-7.1.8.tar.bz2 215541146 BLAKE2B dbe8e432162ed29716e14a390be1fa14d13f861943bb2392f8de0cd8ec3dbb991588a8aafe47b2bd0884ca12932af78799d7b21a2b115d818702ccbed564dc97 SHA512 9c801309aac8eeea94279c6872892046cdf933dda0dc7493be5442a9dabbb6e5e513e116bb17d8fd225a6d6d37285f21c26e42daeb37c4335f3636b810f84dfb
DIST virtualbox-help-7.1.4.tar.xz 1586108 BLAKE2B e8219ed67b1db9a5e4d0271e25980fbcbfb8c72316dc4bd3337080c81082bb8ecad9c9317b5b9be77db1eeac42c567512a64fe86ae9bb6371dea8632e7afc9ab SHA512 185249fe2bdf2138a034c53e23eedb88cf487e1fb26a8bd623f0d75ea0d2ff4dff3484564a5b317703fb3f302ec7037cb0a49c7c3845e229fe2ac9e2c8c96af6
DIST virtualbox-help-7.1.6a.tar.xz 984912 BLAKE2B fe30248627e61f75c6486b7ff73b68027cf9804bfc2df9d331dfbcb93571fb6816d95a35a05719a136d6540035f3bb628f6c61a8ca6ed704d10738b4017f9ad8 SHA512 528b74c170b1ab13b05df03c104f735a67f79cce4d2c03f7094a3cf481f0a832586d07137cab746eeeaae475f671c17996cd3c3acd9f72b77d24bef9a9a403e6
DIST virtualbox-help-7.1.8.tar.xz 8308340 BLAKE2B 74a553dcf72306ab5168c403862c872d7de917f090a559fc06fc9a6bb344601ab5a78196e5ae13a9daed9150fc3b29e700fe6dbb4e589f8b3636fec6e9bb9ed5 SHA512 00613dead921bff77b16369b0267d06d668be7b56a12885cff4d050a1120d51de8576472b2dc069e93bf7cefcf4837ebe13d2d8c147953ad4484669df93d3e1e
DIST virtualbox-patches-7.1.4-r1.tar.bz2 6140 BLAKE2B dc84a0522629d06b72ff98e330e2c104e55185914238fed53d696399e43400a1c32979724c156479c3a67d2c64f7f8389d58a83242de559cf8dd89fbda0804e6 SHA512 3541ace61bd64f6ecb2f7b3aaa2383c33ae51682676eead78b267ff82d46e769117f074a534301e734408efa0e622d63e778085f06741223b35ed8caaacc003d
EBUILD virtualbox-7.1.4.ebuild 21865 BLAKE2B c4ab6c32a2320a1f9a3bc4c82d1138deb6ceee83dd32533e51c03102ec0afdd43ce47f53a7f2133717216fa7fc0afc7ffc4c912896844ec40d479f9f91de8e5a SHA512 a4fc1eb8ad68f6d540f177b589ed776e14bf597d6791d0ac15c389821ca8cadb9ea19243f60ded1551981c0b751545fcfe4f91d9b94325d8f8e3efc5ce130d12
EBUILD virtualbox-7.1.6a.ebuild 21877 BLAKE2B 2928931ce4299231947cdef1c5661ae28114a3f6101aeee76840aa27c35058bec128c7f2fd9bc4496730b9fb8b25c269deffd5c7b44943f722e08e33536062bb SHA512 bc95f07403c6191c41a18ab5c2baa64d07d7d31a9d0d300fcfd002d06b72b68cd38f58794e650aa2cdedced062586e24827e1991497e4dde42cee5da9dcb5e6a
EBUILD virtualbox-7.1.8.ebuild 22019 BLAKE2B ebb4e32bd3c423ab11745eec869b05298492b458ae1db1202ee10bc4d23dc728eaa2542c5926a54f4e845230a9685ac46ea156a6681de92bd2a4b80396999e4c SHA512 6c707838bcaf991342a2c391ed922d4578f08be4f6935b753ab306151fec14643c608e05595347b88a6fc5a703bf2d4c1550a42350f0409fb57b9b6d2eb26b8a
MISC metadata.xml 948 BLAKE2B c074e494d9affda91addd2355f8e71616602102b4cc151d2b45efd04754f1f92621ecd313dbe3baa44c3301f57b61e9cff780d445c2ea3d19ce3d9c8ae05213a SHA512 5338812da9334aedf08dd7a31a4a07c7bfa8232e8f0de6af9de9ac0f5585397cea16e66cb73d56632efa4cf21386782108182d803de6ff45c08082a13dc5fed9

View File

@@ -0,0 +1,76 @@
diff --git a/configure b/configure
index 65a39770f6f..465baafb1a5 100755
--- a/configure
+++ b/configure
@@ -2187,7 +2187,7 @@ extern "C" int main(void)
}
EOF
found=
- SUPPYTHONLIBS="python2.7 python2.6 python3.1 python3.2 python3.3 python3.4 python3.4m python3.5 python3.5m python3.6 python3.6m python3.7 python3.7m python3.8 python3.9 python3.10 python3.11 python3.12"
+ SUPPYTHONLIBS="python2.7 python2.6 python3.1 python3.2 python3.3 python3.4 python3.4m python3.5 python3.5m python3.6 python3.6m python3.7 python3.7m python3.8 python3.9 python3.10 python3.11 python3.12 python3.13"
for p in $PYTHONDIR; do
for d in $SUPPYTHONLIBS; do
for b in lib/x86_64-linux-gnu lib/i386-linux-gnu lib64 lib/64 lib; do
diff --git a/src/libs/xpcom18a4/python/gen_python_deps.py b/src/libs/xpcom18a4/python/gen_python_deps.py
index 1e5add1c5f0..cc62b689e13 100755
--- a/src/libs/xpcom18a4/python/gen_python_deps.py
+++ b/src/libs/xpcom18a4/python/gen_python_deps.py
@@ -29,7 +29,7 @@ if sys.version_info >= (3, 10):
else:
from distutils.version import StrictVersion as Version
-versions = ["2.6", "2.7", "3.1", "3.2", "3.2m", "3.3", "3.3m", "3.4", "3.4m", "3.5", "3.5m", "3.6", "3.6m", "3.7", "3.7m", "3.8", "3.9", "3.10", "3.11", "3.12" ]
+versions = ["2.6", "2.7", "3.1", "3.2", "3.2m", "3.3", "3.3m", "3.4", "3.4m", "3.5", "3.5m", "3.6", "3.6m", "3.7", "3.7m", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13" ]
prefixes = ["/usr", "/usr/local", "/opt", "/opt/local"]
known = {}
diff --git a/src/libs/xpcom18a4/python/Makefile.kmk b/src/libs/xpcom18a4/python/Makefile.kmk
index d3aea2dd2dd..fe6a1db9ee4 100644
--- a/src/libs/xpcom18a4/python/Makefile.kmk
+++ b/src/libs/xpcom18a4/python/Makefile.kmk
@@ -616,23 +616,23 @@ ifndef VBOX_ONLY_SDK
endif
endif
- ifdef VBOX_PYTHON311_INC
+ ifdef VBOX_PYTHON313_INC
#
- # Python 3.11 version (implicitly with pymalloc)
+ # Python 3.13 version (implicitly with pymalloc)
#
- DLLS += VBoxPython3_11
- VBoxPython3_11_EXTENDS = VBoxPythonBase
- VBoxPython3_11_EXTENDS_BY = appending
- VBoxPython3_11_INCS = $(VBOX_PYTHON311_INC)
- VBoxPython3_11_LIBS = $(VBOX_PYTHON311_LIB)
+ DLLS += VBoxPython3_13
+ VBoxPython3_13_EXTENDS = VBoxPythonBase
+ VBoxPython3_13_EXTENDS_BY = appending
+ VBoxPython3_13_INCS = $(VBOX_PYTHON313_INC)
+ VBoxPython3_13_LIBS = $(VBOX_PYTHON313_LIB)
ifdef VBOX_WITH_32_ON_64_MAIN_API
- ifdef VBOX_PYTHON311_LIB_X86
- DLLS += VBoxPython3_11_x86
- VBoxPython3_11_x86_EXTENDS = VBoxPythonBase_x86
- VBoxPython3_11_x86_EXTENDS_BY = appending
- VBoxPython3_11_x86_INCS = $(VBOX_PYTHON311_INC)
- VBoxPython3_11_x86_LIBS = $(VBOX_PYTHON311_LIB_X86)
+ ifdef VBOX_PYTHON313_LIB_X86
+ DLLS += VBoxPython3_13_x86
+ VBoxPython3_13_x86_EXTENDS = VBoxPythonBase_x86
+ VBoxPython3_13_x86_EXTENDS_BY = appending
+ VBoxPython3_13_x86_INCS = $(VBOX_PYTHON313_INC)
+ VBoxPython3_13_x86_LIBS = $(VBOX_PYTHON313_LIB_X86)
endif
endif
endif
@@ -700,7 +700,7 @@ ifndef VBOX_ONLY_SDK
# TODO: ASSUMING that we don't need a different headers for pymalloc
# ('m' builds < 3.8) and CRT malloc.
#
- VBOX_PYTHON_LIMITED_API_VER := $(firstword $(foreach ver, 35 36 37 38 39 310 311 312 34 33 \
+ VBOX_PYTHON_LIMITED_API_VER := $(firstword $(foreach ver, 35 36 37 38 39 310 313 312 34 33 \
,$(if-expr defined(VBOX_PYTHON$(ver)_INC),$(ver),)$(if-expr defined(VBOX_PYTHON$(ver)M_INC),$(ver)M,)))
ifneq ($(VBOX_PYTHON_LIMITED_API_VER),)
DLLS += VBoxPython3

View File

@@ -0,0 +1,779 @@
# 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_{10..13} )
inherit desktop 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}
HELP_PV=${PV}
DESCRIPTION="Family of powerful x86 virtualization products for enterprise and home use"
HOMEPAGE="https://www.virtualbox.org/"
SRC_URI="
https://download.virtualbox.org/virtualbox/${PV%*a}/${MY_P}.tar.bz2
https://gitweb.gentoo.org/proj/virtualbox-patches.git/snapshot/virtualbox-patches-7.1.4-r1.tar.bz2
gui? ( !doc? ( https://dev.gentoo.org/~ceamac/${CATEGORY}/${PN}/${PN}-help-${HELP_PV}.tar.xz ) )
"
S="${WORKDIR}/${MY_PN}-${PV%*a}"
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 +gui java lvm nls 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-arch/xz-utils
~app-emulation/virtualbox-modules-${PV%*a}
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 )
gui? (
dev-qt/qtbase:6[X,widgets]
dev-qt/qtscxml:6
dev-qt/qttools:6[assistant]
x11-libs/libX11
x11-libs/libXt
)
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/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:=
x11-libs/libXt
alsa? ( >=media-libs/alsa-lib-1.0.13 )
gui? (
x11-base/xorg-proto
x11-libs/libxcb:=
x11-libs/libXcursor
x11-libs/libXext
x11-libs/libXinerama
x11-libs/libXmu
x11-libs/libXrandr
)
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/libXcursor
x11-libs/libXinerama
)
pulseaudio? ( media-libs/libpulse )
udev? ( >=virtual/udev-171 )
"
RDEPEND="
${COMMON_DEPEND}
gui? ( x11-libs/libxcb:= )
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-doc/dita-ot-bin
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
dev-qt/qttools:6[assistant]
sys-libs/nss_wrapper
)
gui? ( dev-qt/qttools:6[linguist] )
nls? ( dev-qt/qttools:6[linguist] )
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.1.4-r1/patches
"${FILESDIR}"/VirtualBox-python3.13.patch
)
pkg_pretend() {
if ! use gui; then
einfo "No USE=\"gui\" selected, this build will not include any Qt frontend."
fi
if ! use opengl; then
einfo "No USE=\"opengl\" selected, this build will lack"
einfo "the OpenGL feature."
fi
if ! use nls && use gui; then
einfo "USE=\"gui\" also selects USE=\"nls\". This build"
einfo "will have NLS support."
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
# 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 does not support this extension
eapply "${FILESDIR}"/${PN}-7.1.0-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/&nbsp;/\&#160;/g' \
-e 's/&ndash;/\&#8211;/g' \
-e 's/&larr;/\&#8592;/g' \
-e 's/&rarr;/\&#8594;/g' \
-e 's/&harr;/\&#8596;/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/&apos;[^&]*\(vboxdrv setup\|vboxconfig\)&apos;/\&apos;emerge -1 virtualbox-modules\&apos;/' {} \+ || 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
if ! use nls && ! use gui; then
cat >> LocalConfig.kmk <<-EOF || die
VBOX_WITH_NLS :=
VBOX_WITH_MAIN_NLS :=
VBOX_WITH_PUEL_NLS :=
VBOX_WITH_VBOXMANAGE_NLS :=
EOF
fi
}
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 gui || use sdl || use opengl; then
myconf+=(
$(usev !opengl --disable-opengl)
$(usev !gui --disable-qt)
$(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
if use doc; then
# dita needs to write to ~/.fop and ~/.java
# but it ignores ${HOME} and tries to write to the real home of user portage
# resulting in a sandbox violation
# -Duser.home= does not work
# force using the temporary homedir with nss_wrapper
echo "${LOGNAME}::$(id -u):$(id -g):${USER}:${HOME}:/bin/bash" >> ~/passwd
echo "${LOGNAME}::$(id -g):" >> ~/group
local -x LD_PRELOAD=libnss_wrapper.so
local -x NSS_WRAPPER_PASSWD="${HOME}"/passwd
local -x NSS_WRAPPER_GROUP="${HOME}"/group
fi
MAKE="kmk" emake "${myemakeargs[@]}" all
}
src_test() {
if use python; then
local -x VBOX_APP_HOME="${S}"/out/linux.${ARCH}/$(usex debug debug release)
local -x VBOX_INSTALL_PATH="${VBOX_APP_HOME}"
local -x VBOX_PROGRAM_PATH="${VBOX_APP_HOME}"/bin
local -x VBOX_SDK_PATH="${VBOX_PROGRAM_PATH}"/sdk
local -x PYTHONPATH="${VBOX_SDK_PATH}"/installer/python/vboxapi/src
einfo "VBOX_APP_HOME ${VBOX_APP_HOME}"
einfo "VBOX_PROGRAM_PATH ${VBOX_PROGRAM_PATH}"
einfo "VBOX_SDK_PATH ${VBOX_SDK_PATH}"
einfo "PYTHONPATH ${PYTHONPATH}"
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} \
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 gui; then
vbox_inst VirtualBox
vbox_inst VirtualBoxVM 4750
for each in VirtualBox{,VM} ; do
pax-mark -m "${ED}"${vbox_inst_path}/${each}
done
for each in virtualbox{,vm} VirtualBox{,VM} ; do
dosym ${vbox_inst_path}/VBox /usr/bin/${each}
done
insinto /usr/share/${PN}
doins -r nls
doins -r UnattendedTemplates
domenu ${PN}.desktop
pushd "${S}"/src/VBox/Artwork/OSE &>/dev/null || die
for size in 16 32 48 64 128 ; do
newicon -s ${size} ${PN}-${size}px.png ${PN}.png
done
newicon ${PN}-48px.png ${PN}.png
doicon -s scalable ${PN}.svg
popd &>/dev/null || die
pushd "${S}"/src/VBox/Artwork/other &>/dev/null || die
for size in 16 24 32 48 64 72 96 128 256 512 ; do
for ico in hdd ova ovf vbox{,-extpack} vdi vdh vmdk ; do
icofile="${PN}-${ico}-${size}px.png"
if [[ -f "${icofile}" ]]; then
newicon -s ${size} ${icofile} ${PN}-${ico}.png
fi
done
done
popd &>/dev/null || die
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 UserManual.q{ch,hc}
docompress -x /usr/share/doc/${PF}
elif use gui; then
dodoc "${WORKDIR}"/${PN}-help-${HELP_PV}/UserManual.q{ch,hc}
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/python/vboxapi/src"
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
# upstream added a /bin/sh stub here
# use /usr/bin/python3, python_doscript will take care of it
sed -e '1 i #! /usr/bin/python3' -i vboxshell.py
python_doscript vboxshell.py
# do not install the installer
rm -r "${installer_dir%vboxapi*}" || 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
if use gui; then
elog "To launch VirtualBox just type: \"virtualbox\"."
fi
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
}