Gentoo Archives: gentoo-commits

From: Sam James <sam@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: app-emulation/virtualbox/
Date: Wed, 06 Jul 2022 02:06:12
Message-Id: 1657073140.c250435ca78aad838432b4b3ee02e42634b3b378.sam@gentoo
1 commit: c250435ca78aad838432b4b3ee02e42634b3b378
2 Author: Sam James <sam <AT> gentoo <DOT> org>
3 AuthorDate: Wed Jul 6 02:04:49 2022 +0000
4 Commit: Sam James <sam <AT> gentoo <DOT> org>
5 CommitDate: Wed Jul 6 02:05:40 2022 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c250435c
7
8 app-emulation/virtualbox: force Java 8 for wsimport
9
10 wsimport was dropped in Java 11+. We need to put the dep for 8
11 in DEPEND rather than (just?) BDEPEND for the eclass magic
12 to actually enforce the right env vars & java.
13
14 Thanks to Marcel for the pointers.
15
16 Closes: https://bugs.gentoo.org/832166
17 Thanks-to: Marcel Greter <bugzilla <AT> ocbnet.ch>
18 Signed-off-by: Sam James <sam <AT> gentoo.org>
19
20 .../virtualbox/virtualbox-6.1.34-r2.ebuild | 511 +++++++++++++++++++++
21 1 file changed, 511 insertions(+)
22
23 diff --git a/app-emulation/virtualbox/virtualbox-6.1.34-r2.ebuild b/app-emulation/virtualbox/virtualbox-6.1.34-r2.ebuild
24 new file mode 100644
25 index 000000000000..73fc49ceb444
26 --- /dev/null
27 +++ b/app-emulation/virtualbox/virtualbox-6.1.34-r2.ebuild
28 @@ -0,0 +1,511 @@
29 +# Copyright 2022 Gentoo Authors
30 +# Distributed under the terms of the GNU General Public License v2
31 +
32 +EAPI=8
33 +
34 +PYTHON_COMPAT=( python3_{8..10} )
35 +inherit desktop flag-o-matic java-pkg-opt-2 linux-info pax-utils python-single-r1 tmpfiles toolchain-funcs udev xdg
36 +
37 +MY_PN="VirtualBox"
38 +MY_PV="${PV/beta/BETA}"
39 +MY_PV="${MY_PV/rc/RC}"
40 +MY_P=${MY_PN}-${MY_PV}
41 +[[ "${PV}" == *a ]] && DIR_PV="$(ver_cut 1-3)"
42 +
43 +DESCRIPTION="Family of powerful x86 virtualization products for enterprise and home use"
44 +HOMEPAGE="https://www.virtualbox.org/"
45 +SRC_URI="https://download.virtualbox.org/virtualbox/${DIR_PV:-${MY_PV}}/${MY_P}.tar.bz2
46 + https://dev.gentoo.org/~polynomial-c/${PN}/patchsets/${PN}-6.1.12-patches-01.tar.xz"
47 +
48 +LICENSE="GPL-2 dtrace? ( CDDL )"
49 +SLOT="0/$(ver_cut 1-2)"
50 +[[ "${PV}" == *_beta* ]] || [[ "${PV}" == *_rc* ]] || \
51 +KEYWORDS="~amd64"
52 +IUSE="alsa debug doc dtrace headless java lvm +opus pam pax-kernel pch pulseaudio +opengl python +qt5 +sdk +udev vboxwebsrv vnc"
53 +
54 +COMMON_DEPEND="
55 + ${PYTHON_DEPS}
56 + !app-emulation/virtualbox-bin
57 + acct-group/vboxusers
58 + ~app-emulation/virtualbox-modules-${DIR_PV:-${PV}}
59 + dev-libs/libIDL
60 + >=dev-libs/libxslt-1.1.19
61 + net-misc/curl
62 + dev-libs/libxml2
63 + media-libs/libpng:0=
64 + media-libs/libvpx:0=
65 + sys-libs/zlib:=
66 + !headless? (
67 + media-libs/libsdl:0[X,video]
68 + x11-libs/libX11
69 + x11-libs/libxcb:=
70 + x11-libs/libXcursor
71 + x11-libs/libXext
72 + x11-libs/libXmu
73 + x11-libs/libXt
74 + opengl? (
75 + media-libs/libglvnd[X]
76 + virtual/glu
77 + )
78 + qt5? (
79 + dev-qt/qtcore:5
80 + dev-qt/qtgui:5
81 + dev-qt/qtprintsupport:5
82 + dev-qt/qtwidgets:5
83 + dev-qt/qtx11extras:5
84 + opengl? ( dev-qt/qtopengl:5 )
85 + x11-libs/libXinerama
86 + )
87 + )
88 + dev-libs/openssl:0=
89 + virtual/libcrypt:=
90 + lvm? ( sys-fs/lvm2 )
91 + opus? ( media-libs/opus )
92 + udev? ( >=virtual/udev-171 )
93 + vnc? ( >=net-libs/libvncserver-0.9.9 )
94 +"
95 +# We're stuck on JDK (and JRE, I guess?) 1.8 because of need for wsimport
96 +# with USE="vboxwebsrv java". Note that we have to put things in DEPEND,
97 +# not (only, anyway) BDEPEND, as the eclass magic to set the environment variables
98 +# based on *DEPEND doesn't work for BDEPEND at least right now. See bug #832166.
99 +DEPEND="
100 + ${COMMON_DEPEND}
101 + alsa? ( >=media-libs/alsa-lib-1.0.13 )
102 + !headless? (
103 + x11-libs/libXinerama
104 + opengl? ( virtual/opengl )
105 + )
106 + java? ( virtual/jdk:1.8 )
107 + pam? ( sys-libs/pam )
108 + pax-kernel? ( sys-apps/elfix )
109 + pulseaudio? ( media-sound/pulseaudio )
110 + qt5? ( dev-qt/linguist-tools:5 )
111 + vboxwebsrv? ( net-libs/gsoap[-gnutls(-)] )
112 +"
113 +BDEPEND="
114 + ${PYTHON_DEPS}
115 + >=dev-util/kbuild-0.1.9998.3127
116 + >=dev-lang/yasm-0.6.2
117 + sys-devel/bin86
118 + sys-libs/libcap
119 + sys-power/iasl
120 + virtual/pkgconfig
121 + doc? (
122 + app-text/docbook-sgml-dtd:4.4
123 + dev-texlive/texlive-basic
124 + dev-texlive/texlive-latex
125 + dev-texlive/texlive-latexrecommended
126 + dev-texlive/texlive-latexextra
127 + dev-texlive/texlive-fontsrecommended
128 + dev-texlive/texlive-fontsextra
129 + )
130 + java? ( virtual/jdk:1.8 )
131 +"
132 +RDEPEND="
133 + ${COMMON_DEPEND}
134 + java? ( virtual/jre:1.8 )
135 +"
136 +
137 +QA_TEXTRELS="
138 + usr/lib64/virtualbox/VMMR0.r0
139 +"
140 +
141 +QA_EXECSTACK="
142 + usr/lib64/virtualbox/iPxeBaseBin
143 + usr/lib64/virtualbox/VMMR0.r0
144 + usr/lib64/virtualbox/VBoxDDR0.r0
145 +"
146 +
147 +QA_WX_LOAD="
148 + usr/lib64/virtualbox/iPxeBaseBin
149 +"
150 +
151 +QA_PRESTRIPPED="
152 + /usr/lib64/virtualbox/VMMR0.r0
153 + /usr/lib64/virtualbox/VBoxDDR0.r0
154 +"
155 +
156 +S="${WORKDIR}/${MY_PN}-${DIR_PV:-${MY_PV}}"
157 +
158 +REQUIRED_USE="
159 + java? ( sdk )
160 + python? ( sdk )
161 + vboxwebsrv? ( java )
162 + ${PYTHON_REQUIRED_USE}
163 +"
164 +
165 +PATCHES=(
166 + "${FILESDIR}/${P}-vboxr0.patch"
167 + "${FILESDIR}/${PN}-6.1.34-python3.10.patch" #852152
168 +)
169 +
170 +pkg_pretend() {
171 + if ! use headless && ! use qt5 ; then
172 + einfo "No USE=\"qt5\" selected, this build will not include any Qt frontend."
173 + elif use headless && use qt5 ; then
174 + einfo "You selected USE=\"headless qt5\", defaulting to"
175 + einfo "USE=\"headless\", this build will not include any X11/Qt frontend."
176 + fi
177 +
178 + if ! use opengl ; then
179 + einfo "No USE=\"opengl\" selected, this build will lack"
180 + einfo "the OpenGL feature."
181 + fi
182 + if ! use python ; then
183 + einfo "You have disabled the \"python\" USE flag. This will only"
184 + einfo "disable the python bindings being installed."
185 + fi
186 +}
187 +
188 +pkg_setup() {
189 + java-pkg-opt-2_pkg_setup
190 + python-single-r1_pkg_setup
191 +
192 + tc-ld-disable-gold #bug 488176
193 + tc-export CC CXX LD AR RANLIB
194 + export HOST_CC="$(tc-getBUILD_CC)"
195 +}
196 +
197 +src_prepare() {
198 + # Remove shipped binaries (kBuild,yasm), see bug #232775
199 + rm -r kBuild/bin tools || die
200 +
201 + # Replace pointless GCC version check with something less stupid.
202 + # This is needed for the qt5 version check.
203 + sed -e 's@^check_gcc$@cc_maj="$(${CC} -dumpversion | cut -d. -f1)" ; cc_min="$(${CC} -dumpversion | cut -d. -f2)"@' \
204 + -i configure || die
205 +
206 + # Disable things unused or split into separate ebuilds
207 + sed -e "s@MY_LIBDIR@$(get_libdir)@" \
208 + "${FILESDIR}"/${PN}-5-localconfig > LocalConfig.kmk || die
209 +
210 + if ! use pch ; then
211 + # bug #753323
212 + printf '\n%s\n' "VBOX_WITHOUT_PRECOMPILED_HEADERS=1" \
213 + >> LocalConfig.kmk || die
214 + fi
215 +
216 + # Respect LDFLAGS
217 + sed -e "s@_LDFLAGS\.${ARCH}*.*=@& ${LDFLAGS}@g" \
218 + -i Config.kmk src/libs/xpcom18a4/Config.kmk || die
219 +
220 + # Do not use hard-coded ld (related to bug #488176)
221 + sed -e '/QUIET)ld /s@ld @$(LD) @' \
222 + -i src/VBox/Devices/PC/ipxe/Makefile.kmk || die
223 +
224 + # Use PAM only when pam USE flag is enbaled (bug #376531)
225 + if ! use pam ; then
226 + einfo "Disabling PAM removes the possibility to use the VRDP features."
227 + sed -i 's@^.*VBOX_WITH_PAM@#VBOX_WITH_PAM@' Config.kmk || die
228 + sed -i 's@\(.*/auth/Makefile.kmk.*\)@#\1@' \
229 + src/VBox/HostServices/Makefile.kmk || die
230 + fi
231 +
232 + # add correct java path
233 + if use java ; then
234 + sed "s@/usr/lib/jvm/java-6-sun@$(java-config -O)@" \
235 + -i "${S}"/Config.kmk || die
236 + java-pkg-opt-2_src_prepare
237 + fi
238 +
239 + # Only add nopie patch when we're on hardened
240 + if gcc-specs-pie ; then
241 + eapply "${FILESDIR}/050_virtualbox-5.2.8-nopie.patch"
242 + fi
243 +
244 + # Only add paxmark patch when we're on pax-kernel
245 + if use pax-kernel ; then
246 + eapply "${FILESDIR}"/virtualbox-5.2.8-paxmark-bldprogs.patch
247 + fi
248 +
249 + eapply "${FILESDIR}/${PN}-6.1.26-configure-include-qt5-path.patch" #805365
250 +
251 + eapply "${WORKDIR}/patches"
252 +
253 + default
254 +}
255 +
256 +doecho() {
257 + echo "$@"
258 + "$@" || die
259 +}
260 +
261 +src_configure() {
262 + local myconf=(
263 + --with-gcc="$(tc-getCC)"
264 + --with-g++="$(tc-getCXX)"
265 + --disable-dbus
266 + --disable-kmods
267 + $(usex alsa '' --disable-alsa)
268 + $(usex debug --build-debug '')
269 + $(usex doc '' --disable-docs)
270 + $(usex java '' --disable-java)
271 + $(usex lvm '' --disable-devmapper)
272 + $(usex opus '' --disable-libopus)
273 + $(usex pulseaudio '' --disable-pulse)
274 + $(usex python '' --disable-python)
275 + $(usex vboxwebsrv --enable-webservice '')
276 + $(usex vnc --enable-vnc '')
277 + )
278 + if ! use headless ; then
279 + myconf+=(
280 + $(usex opengl '' --disable-opengl)
281 + $(usex qt5 '' --disable-qt)
282 + )
283 + else
284 + myconf+=(
285 + --build-headless
286 + --disable-opengl
287 + )
288 + fi
289 + if use amd64 && ! has_multilib_profile ; then
290 + myconf+=( --disable-vmmraw )
291 + fi
292 + # not an autoconf script
293 + doecho ./configure "${myconf[@]}"
294 +}
295 +
296 +src_compile() {
297 + source ./env.sh || die
298 +
299 + # Force kBuild to respect C[XX]FLAGS and MAKEOPTS (bug #178529)
300 + MAKEJOBS=$(grep -Eo '(\-j|\-\-jobs)(=?|[[:space:]]*)[[:digit:]]+' <<< ${MAKEOPTS}) #'
301 + MAKELOAD=$(grep -Eo '(\-l|\-\-load-average)(=?|[[:space:]]*)[[:digit:]]+' <<< ${MAKEOPTS}) #'
302 + MAKEOPTS="${MAKEJOBS} ${MAKELOAD}"
303 + MAKE="kmk" emake \
304 + VBOX_BUILD_PUBLISHER=_Gentoo \
305 + TOOL_GXX3_CC="$(tc-getCC)" TOOL_GXX3_CXX="$(tc-getCXX)" \
306 + TOOL_GXX3_LD="$(tc-getCXX)" VBOX_GCC_OPT="${CXXFLAGS}" \
307 + TOOL_YASM_AS=yasm KBUILD_VERBOSE=2 \
308 + VBOX_WITH_VBOXIMGMOUNT=1 \
309 + all
310 +}
311 +
312 +src_install() {
313 + cd "${S}"/out/linux.${ARCH}/$(usex debug debug release)/bin || die
314 +
315 + local vbox_inst_path="/usr/$(get_libdir)/${PN}" each size ico icofile
316 +
317 + vbox_inst() {
318 + local binary="${1}"
319 + local perms="${2:-0750}"
320 + local path="${3:-${vbox_inst_path}}"
321 +
322 + [[ -n "${binary}" ]] || die "vbox_inst: No binary given!"
323 + [[ ${perms} =~ ^[[:digit:]]+{4}$ ]] || die "vbox_inst: perms must consist of four digits."
324 +
325 + insinto ${path}
326 + doins ${binary}
327 + fowners root:vboxusers ${path}/${binary}
328 + fperms ${perms} ${path}/${binary}
329 + }
330 +
331 + # Create configuration files
332 + insinto /etc/vbox
333 + newins "${FILESDIR}/${PN}-4-config" vbox.cfg
334 +
335 + # Set the correct libdir
336 + sed \
337 + -e "s@MY_LIBDIR@$(get_libdir)@" \
338 + -i "${ED}"/etc/vbox/vbox.cfg || die "vbox.cfg sed failed"
339 +
340 + # Install the wrapper script
341 + exeinto ${vbox_inst_path}
342 + newexe "${FILESDIR}/${PN}-ose-6-wrapper" "VBox"
343 + fowners root:vboxusers ${vbox_inst_path}/VBox
344 + fperms 0750 ${vbox_inst_path}/VBox
345 +
346 + # Install binaries and libraries
347 + insinto ${vbox_inst_path}
348 + doins -r components
349 +
350 + for each in VBox{Autostart,BalloonCtrl,BugReport,CpuReport,ExtPackHelperApp,Manage,SVC,Tunctl,VMMPreload,XPCOMIPCD} vboximg-mount *so *r0 iPxeBaseBin ; do
351 + vbox_inst ${each}
352 + done
353 +
354 + # These binaries need to be suid root.
355 + for each in VBox{Headless,Net{AdpCtl,DHCP,NAT}} ; do
356 + vbox_inst ${each} 4750
357 + done
358 +
359 + # Install EFI Firmware files (bug #320757)
360 + for each in VBoxEFI{32,64}.fd ; do
361 + vbox_inst ${each} 0644
362 + done
363 +
364 + # VBoxSVC and VBoxManage need to be pax-marked (bug #403453)
365 + # VBoxXPCOMIPCD (bug #524202)
366 + for each in VBox{Headless,Manage,SVC,XPCOMIPCD} ; do
367 + pax-mark -m "${ED}"${vbox_inst_path}/${each}
368 + done
369 +
370 + # Symlink binaries to the shipped wrapper
371 + for each in vbox{autostart,balloonctrl,bugreport,headless,manage} VBox{Autostart,BalloonCtrl,BugReport,Headless,Manage,VRDP} ; do
372 + dosym ${vbox_inst_path}/VBox /usr/bin/${each}
373 + done
374 + dosym ${vbox_inst_path}/VBoxTunctl /usr/bin/VBoxTunctl
375 + dosym ${vbox_inst_path}/vboximg-mount /usr/bin/vboximg-mount
376 +
377 + if use pam ; then
378 + # VRDPAuth only works with this (bug #351949)
379 + dosym VBoxAuth.so ${vbox_inst_path}/VRDPAuth.so
380 + fi
381 +
382 + # set an env-variable for 3rd party tools
383 + echo -n "VBOX_APP_HOME=${vbox_inst_path}" > "${T}/90virtualbox"
384 + doenvd "${T}/90virtualbox"
385 +
386 + if ! use headless ; then
387 + vbox_inst rdesktop-vrdp
388 + vbox_inst VBoxSDL 4750
389 + pax-mark -m "${ED}"${vbox_inst_path}/VBoxSDL
390 +
391 + for each in vboxsdl VBoxSDL ; do
392 + dosym ${vbox_inst_path}/VBox /usr/bin/${each}
393 + done
394 +
395 + if use qt5 ; then
396 + vbox_inst VirtualBox
397 + vbox_inst VirtualBoxVM 4750
398 + for each in VirtualBox{,VM} ; do
399 + pax-mark -m "${ED}"${vbox_inst_path}/${each}
400 + done
401 +
402 + if use opengl ; then
403 + vbox_inst VBoxTestOGL
404 + pax-mark -m "${ED}"${vbox_inst_path}/VBoxTestOGL
405 + fi
406 +
407 + for each in virtualbox{,vm} VirtualBox{,VM} ; do
408 + dosym ${vbox_inst_path}/VBox /usr/bin/${each}
409 + done
410 +
411 + insinto /usr/share/${PN}
412 + doins -r nls
413 + doins -r UnattendedTemplates
414 +
415 + domenu ${PN}.desktop
416 + fi
417 +
418 + pushd "${S}"/src/VBox/Artwork/OSE &>/dev/null || die
419 + for size in 16 32 48 64 128 ; do
420 + newicon -s ${size} ${PN}-${size}px.png ${PN}.png
421 + done
422 + newicon ${PN}-48px.png ${PN}.png
423 + doicon -s scalable ${PN}.svg
424 + popd &>/dev/null || die
425 + pushd "${S}"/src/VBox/Artwork/other &>/dev/null || die
426 + for size in 16 24 32 48 64 72 96 128 256 512 ; do
427 + for ico in hdd ova ovf vbox{,-extpack} vdi vdh vmdk ; do
428 + icofile="${PN}-${ico}-${size}px.png"
429 + if [[ -f "${icofile}" ]] ; then
430 + newicon -s ${size} ${icofile} ${PN}-${ico}.png
431 + fi
432 + done
433 + done
434 + popd &>/dev/null || die
435 + fi
436 +
437 + if use lvm ; then
438 + vbox_inst VBoxVolInfo 4750
439 + dosym ${vbox_inst_path}/VBoxVolInfo /usr/bin/VBoxVolInfo
440 + fi
441 +
442 + if use sdk ; then
443 + insinto ${vbox_inst_path}
444 + doins -r sdk
445 +
446 + if use java ; then
447 + java-pkg_regjar "${ED}/${vbox_inst_path}/sdk/bindings/xpcom/java/vboxjxpcom.jar"
448 + java-pkg_regso "${ED}/${vbox_inst_path}/libvboxjxpcom.so"
449 + fi
450 + fi
451 +
452 + if use udev ; then
453 + local udevdir="$(get_udevdir)"
454 + local udev_file="VBoxCreateUSBNode.sh"
455 + local rules_file="10-virtualbox.rules"
456 +
457 + insinto ${udevdir}
458 + doins ${udev_file}
459 + fowners root:vboxusers ${udevdir}/${udev_file}
460 + fperms 0750 ${udevdir}/${udev_file}
461 +
462 + insinto ${udevdir}/rules.d
463 + sed "s@%UDEVDIR%@${udevdir}@" "${FILESDIR}"/${rules_file} \
464 + > "${T}"/${rules_file} || die
465 + doins "${T}"/${rules_file}
466 + fi
467 +
468 + if use vboxwebsrv ; then
469 + vbox_inst vboxwebsrv
470 + dosym ${vbox_inst_path}/VBox /usr/bin/vboxwebsrv
471 + newinitd "${FILESDIR}"/vboxwebsrv-initd vboxwebsrv
472 + newconfd "${FILESDIR}"/vboxwebsrv-confd vboxwebsrv
473 + fi
474 +
475 + # Remove dead symlinks (bug #715338)
476 + find "${ED}"/usr/$(get_libdir)/${PN} -xtype l -delete || die
477 +
478 + # Fix version string in extensions or else they don't get accepted
479 + # by the virtualbox host process (see bug #438930)
480 + find ExtensionPacks -type f -name "ExtPack.xml" -print0 \
481 + | xargs --no-run-if-empty --null sed -i '/Version/s@_Gentoo@@' \
482 + || die
483 +
484 + local extensions_dir="${vbox_inst_path}/ExtensionPacks"
485 +
486 + if use vnc ; then
487 + insinto ${extensions_dir}
488 + doins -r ExtensionPacks/VNC
489 + fi
490 +
491 + if use dtrace ; then
492 + insinto ${extensions_dir}
493 + doins -r ExtensionPacks/Oracle_VBoxDTrace_Extension_Pack
494 + fi
495 +
496 + if use doc ; then
497 + dodoc UserManual.pdf
498 + fi
499 +
500 + newtmpfiles "${FILESDIR}"/${PN}-vboxusb_tmpfilesd ${PN}-vboxusb.conf
501 +}
502 +
503 +pkg_postinst() {
504 + xdg_pkg_postinst
505 +
506 + if use udev ; then
507 + udevadm control --reload-rules \
508 + && udevadm trigger --subsystem-match=usb
509 + fi
510 +
511 + tmpfiles_process virtualbox-vboxusb.conf
512 +
513 + if ! use headless && use qt5 ; then
514 + elog "To launch VirtualBox just type: \"virtualbox\"."
515 + fi
516 + elog "You must be in the vboxusers group to use VirtualBox."
517 + elog ""
518 + elog "The latest user manual is available for download at:"
519 + elog "http://download.virtualbox.org/virtualbox/${DIR_PV:-${PV}}/UserManual.pdf"
520 + elog ""
521 + elog "For advanced networking setups you should emerge:"
522 + elog "net-misc/bridge-utils and sys-apps/usermode-utilities"
523 + elog ""
524 + elog "Starting with version 4.0.0, ${PN} has USB-1 support."
525 + elog "For USB-2 support, PXE-boot ability and VRDP support please emerge"
526 + elog " app-emulation/virtualbox-extpack-oracle"
527 + elog "package."
528 + elog "Starting with version 5.0.0, ${PN} no longer has the \"additions\" and"
529 + elog "the \"extension\" USE flag. For installation of the guest additions ISO"
530 + elog "image, please emerge"
531 + elog " app-emulation/virtualbox-additions"
532 + elog "and for the USB2, USB3, VRDP and PXE boot ROM modules, please emerge"
533 + elog " app-emulation/virtualbox-extpack-oracle"
534 + if ! use udev ; then
535 + elog ""
536 + elog "WARNING!"
537 + elog "Without USE=udev, USB devices will likely not work in ${PN}."
538 + fi
539 +}