Cleanup and python 3.13
This commit is contained in:
4
app-emulation/fs-uae-launcher/Manifest
Normal file
4
app-emulation/fs-uae-launcher/Manifest
Normal 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
|
||||
@@ -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 = [
|
||||
66
app-emulation/fs-uae-launcher/fs-uae-launcher-3.1.70.ebuild
Normal file
66
app-emulation/fs-uae-launcher/fs-uae-launcher-3.1.70.ebuild
Normal 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"
|
||||
}
|
||||
14
app-emulation/fs-uae-launcher/metadata.xml
Normal file
14
app-emulation/fs-uae-launcher/metadata.xml
Normal 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>
|
||||
@@ -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
|
||||
|
||||
76
app-emulation/virtualbox/files/VirtualBox-python3.13.patch
Normal file
76
app-emulation/virtualbox/files/VirtualBox-python3.13.patch
Normal 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
|
||||
779
app-emulation/virtualbox/virtualbox-7.1.8.ebuild
Normal file
779
app-emulation/virtualbox/virtualbox-7.1.8.ebuild
Normal 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/ /\ /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
|
||||
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user