summaryrefslogtreecommitdiff
path: root/app-emulation/virtualbox-bin/virtualbox-bin-6.1.18.142142-r1.ebuild
blob: f41e57d20ca858c54326fe84103afecd528c4240 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=6

inherit xdg-utils gnome2 pax-utils udev unpacker eapi7-ver

MAIN_PV="$(ver_cut 1-3)"
MY_PV="${MAIN_PV}"

KEYWORDS="~amd64"

VBOX_BUILD_ID="$(ver_cut 4)"
VBOX_PV="${MY_PV}-${VBOX_BUILD_ID}"
MY_P="VirtualBox-${VBOX_PV}-Linux"

EXTP_PV="${VBOX_PV}"
EXTP_PN="Oracle_VM_VirtualBox_Extension_Pack"
EXTP_P="${EXTP_PN}-${EXTP_PV}"

DESCRIPTION="Family of powerful x86 virtualization products for enterprise and home use"
HOMEPAGE="https://www.virtualbox.org/"
SRC_URI="amd64? ( https://download.virtualbox.org/virtualbox/${MY_PV}/${MY_P}_amd64.run )
	https://download.virtualbox.org/virtualbox/${MY_PV}/${EXTP_P}.vbox-extpack -> ${EXTP_P}.tar.gz"

LICENSE="GPL-2 PUEL"
SLOT="0"
IUSE=""
RESTRICT="mirror"

DEPEND="app-arch/unzip"

RDEPEND="
	!!app-emulation/virtualbox
	!!app-emulation/virtualbox-additions
	!!app-emulation/virtualbox-extpack-oracle
	!!app-emulation/virtualbox-guest-additions
	acct-group/vboxusers
	~app-emulation/virtualbox-modules-${MAIN_PV}
	dev-libs/expat
	dev-libs/glib
	dev-libs/libxml2
	media-libs/fontconfig
	media-libs/freetype
	media-libs/libpng
	media-libs/libsdl[X]
	sys-fs/lvm2
	x11-libs/libXcursor
	x11-libs/libXext
	x11-libs/libXfixes
	x11-libs/libXft
	x11-libs/libXi
	x11-libs/libXinerama
	x11-libs/libXrandr
	x11-libs/libXrender
	x11-libs/libXau
	x11-libs/libX11
	x11-libs/libXt
	x11-libs/libXmu
	x11-libs/libSM
	x11-libs/libICE
	x11-libs/libXdmcp"

S="${WORKDIR}"

QA_PREBUILT="opt/VirtualBox/*"

src_unpack() {
	unpack_makeself ${MY_P}_${ARCH}.run
	unpack ./VirtualBox.tar.bz2

	mkdir "${S}"/${EXTP_PN} || die
	pushd "${S}"/${EXTP_PN} &>/dev/null || die
	unpack ${EXTP_P}.tar.gz
	popd &>/dev/null || die
}

src_configure() {
	:;
}

src_compile() {
	:;
}

src_install() {
	# create virtualbox configurations files
	insinto /etc/vbox
	newins "${FILESDIR}/${PN}-config" vbox.cfg

	newmenu "${FILESDIR}"/${PN}.desktop-2 ${PN}.desktop

	# set up symlinks (bug #572012)
	dosym ../../../../opt/VirtualBox/virtualbox.xml /usr/share/mime/packages/virtualbox.xml

	local size ico icofile
	for size in 16 24 32 48 64 72 96 128 256 ; do
		pushd "${S}"/icons/${size}x${size} &>/dev/null || die
		if [[ -f "virtualbox.png" ]] ; then
			doicon -s ${size} virtualbox.png
		fi
		for ico in hdd ova ovf vbox{,-extpack} vdi vdh vmdk ; do
			icofile="virtualbox-${ico}.png"
			if [[ -f "${icofile}" ]] ; then
				doicon -s ${size} ${icofile}
			fi
		done
		popd &>/dev/null || die
	done
	doicon -s scalable "${S}"/icons/scalable/virtualbox.svg
	insinto /usr/share/pixmaps
	newins "${S}"/icons/48x48/virtualbox.png ${PN}.png

	pushd "${S}"/${EXTP_PN} &>/dev/null || die
	insinto /opt/VirtualBox/ExtensionPacks/${EXTP_PN}
	doins -r linux.${ARCH}
	doins ExtPack* PXE-Intel.rom
	popd &>/dev/null || die
	rm -rf "${S}"/${EXTP_PN}

	insinto /opt/VirtualBox
	dodir /opt/bin

	doins UserManual.pdf
	doins -r additions

	doins kchmviewer VirtualBox.chm
	fowners root:vboxusers /opt/VirtualBox/kchmviewer
	fperms 0750 /opt/VirtualBox/kchmviewer

	rm -rf src rdesktop* deffiles install* routines.sh runlevel.sh \
		vboxdrv.sh VBox.sh VBox.png vboxnet.sh additions VirtualBox.desktop \
		VirtualBox.tar.bz2 LICENSE VBoxSysInfo.sh rdesktop* vboxwebsrv \
		webtest kchmviewer sdk VirtualBox.chm vbox-create-usb-node.sh \
		90-vbox-usb.fdi uninstall.sh vboxshell.py vboxdrv-pardus.py \
		VBoxPython*.so virtualbox.desktop

	doins -r * || die

	# create symlinks for working around unsupported $ORIGIN/.. in VBoxC.so (setuid)
	dosym ../VBoxVMM.so /opt/VirtualBox/components/VBoxVMM.so
	dosym ../VBoxRT.so /opt/VirtualBox/components/VBoxRT.so
	dosym ../VBoxDDU.so /opt/VirtualBox/components/VBoxDDU.so
	dosym ../VBoxXPCOM.so /opt/VirtualBox/components/VBoxXPCOM.so

	local each
	for each in VirtualBox{,VM} ; do
		fowners root:vboxusers /opt/VirtualBox/${each}
		fperms 0750 /opt/VirtualBox/${each}
		pax-mark -m "${ED%/}"/opt/VirtualBox/${each}
	done

	for each in VBox{Autostart,BalloonCtrl,BugReport,DTrace,VolInfo,Manage,SVC,XPCOMIPCD,Tunctl,TestOGL,ExtPackHelperApp} ; do
		fowners root:vboxusers /opt/VirtualBox/${each}
		fperms 0750 /opt/VirtualBox/${each}
		pax-mark -m "${ED%/}"/opt/VirtualBox/${each}
	done

	# VBoxNetAdpCtl and VBoxNetDHCP binaries need to be suid root in any case..
	for each in VBoxNet{AdpCtl,DHCP,NAT} ; do
		fowners root:vboxusers /opt/VirtualBox/${each}
		fperms 4750 /opt/VirtualBox/${each}
		pax-mark -m "${ED%/}"/opt/VirtualBox/${each}
	done

	# Hardened build: Mark selected binaries set-user-ID-on-execution
	for each in VBox{SDL,Headless} ; do
		fowners root:vboxusers /opt/VirtualBox/${each}
		fperms 4510 /opt/VirtualBox/${each}
		pax-mark -m "${ED%/}"/opt/VirtualBox/${each}
	done

	dosym ../VirtualBox/VBox.sh /opt/bin/VirtualBox
	dosym ../VirtualBox/VBox.sh /opt/bin/VBoxSDL

	exeinto /opt/VirtualBox
	newexe "${FILESDIR}/${PN}-3-wrapper" "VBox.sh"
	fowners root:vboxusers /opt/VirtualBox/VBox.sh
	fperms 0750 /opt/VirtualBox/VBox.sh

	dosym ../VirtualBox/VBox.sh /opt/bin/VBoxManage
	dosym ../VirtualBox/VBox.sh /opt/bin/VBoxVRDP
	dosym ../VirtualBox/VBox.sh /opt/bin/VBoxHeadless
	dosym ../VirtualBox/VBoxTunctl /opt/bin/VBoxTunctl

	# set an env-variable for 3rd party tools
	echo -n "VBOX_APP_HOME=/opt/VirtualBox" > "${T}/90virtualbox"
	doenvd "${T}/90virtualbox"

	local udevdir="$(get_udevdir)"
	insinto ${udevdir}/rules.d
	doins "${FILESDIR}"/10-virtualbox.rules
	sed "s@%UDEVDIR%@${udevdir}@" \
		-i "${ED%/}"${udevdir}/rules.d/10-virtualbox.rules || die
	# move udev scripts into ${udevdir} (bug #372491)
	mv "${ED%/}"/opt/VirtualBox/VBoxCreateUSBNode.sh "${ED%/}"${udevdir} || die
	fperms 0750 ${udevdir}/VBoxCreateUSBNode.sh
}

pkg_postinst() {
	xdg_icon_cache_update
	xdg_desktop_database_update
	xdg_mimeinfo_database_update
	udevadm control --reload-rules && udevadm trigger --subsystem-match=usb
}

pkg_postrm() {
	xdg_icon_cache_update
	xdg_desktop_database_update
	xdg_mimeinfo_database_update
}