Annotation of /trunk/extras/virtualbox/virtualbox-4.2.22-r1.smage2
Parent Directory | Revision Log
Revision 20434 -
(hide annotations)
(download)
Wed Jan 15 09:07:14 2014 UTC (10 years, 8 months ago) by niro
File size: 22276 byte(s)
Wed Jan 15 09:07:14 2014 UTC (10 years, 8 months ago) by niro
File size: 22276 byte(s)
auto added: ver bump to 4.2.22-r1
1 | niro | 20434 | # $Id$ |
2 | |||
3 | PNAME="virtualbox" | ||
4 | PVER="4.2.22" | ||
5 | PBUILD="r1" | ||
6 | |||
7 | SPLIT_PACKAGES="virtualbox-common virtualbox xf86-video-virtualbox xf86-input-virtualbox virtualbox-guest-additions virtualbox-extension-vnc" | ||
8 | |||
9 | PCAT="app-emulation" | ||
10 | HOMEPAGE="http://www.virtualbox.de/" | ||
11 | |||
12 | # driver modules for xorg-server version | ||
13 | XORG_VER="1.13" # fox xorg-1.14 it is 1.13 too! | ||
14 | |||
15 | # use upstream suggested hardening=1 or not=0 | ||
16 | VBOX_HARDENING=0 | ||
17 | |||
18 | VBOX_DEPEND=">= dev-libs/libidl-0.8.14 | ||
19 | >= media-libs/alsa-lib-1.0.27 | ||
20 | >= media-libs/libsdl-1.2.15 | ||
21 | >= media-sound/libpulse-3.0 | ||
22 | >= x11-libs/qt4-core-4.8 | ||
23 | >= x11-libs/qt4-gui-4.8 | ||
24 | >= x11-libs/qt4-opengl-4.8 | ||
25 | >= sys-apps/dbus-1.6 | ||
26 | >= x11-libs/libXcursor-1 | ||
27 | >= virtual/opengl | ||
28 | >= virtual/glut | ||
29 | >= dev-lang/python-2.7 | ||
30 | >= net-misc/bridge-utils-1.5 | ||
31 | >= sys-apps/usermode-utilities-2007 | ||
32 | >= virtual/kernel-sources" | ||
33 | ADDITIONS_DEPEND=">= x11-libs/libXmu-1 | ||
34 | >= x11-libs/libXt-1 | ||
35 | >= x11-apps/xrandr-1.4 | ||
36 | >= x11-apps/xrefresh-1 | ||
37 | >= fake/devsystem | ||
38 | >= virtual/kernel-sources" | ||
39 | XLIBS_DEPEND=">= x11-libs/libXdmcp-1 | ||
40 | >= x11-libs/libSM-1.1 | ||
41 | >= x11-libs/libICE-1 | ||
42 | >= x11-libs/libXau-1 | ||
43 | >= x11-libs/libXdmcp-1 | ||
44 | >= x11-libs/libX11-1.6 | ||
45 | >= x11-libs/libXfixes-5 | ||
46 | >= x11-libs/libXext-1.1" | ||
47 | VIDEO_DEPEND=">= x11-libs/libXcomposite-0.4 | ||
48 | >= x11-libs/libdrm-2.4.45" | ||
49 | # vboxmouse_drv only needed with xorg =< 1.10 | ||
50 | # for xorg-1.11 upstream suggest the normal mouse driver | ||
51 | if [[ ${XORG_VER//.} < 111 ]] | ||
52 | then | ||
53 | INPUT_DEPEND="" | ||
54 | else | ||
55 | INPUT_DEPEND=">= x11-drivers/xf86-input-mouse-1.7" | ||
56 | fi | ||
57 | XORG_VIDEO_ABI_DEPEND="== virtual/X-ABI-VIDEODRV-14" | ||
58 | XORG_INPUT_ABI_DEPEND="== virtual/X-ABI-XINPUT-19" | ||
59 | VNC_DEPEND=">= net-libs/libvncserver-0.9" | ||
60 | |||
61 | SDEPEND="${VBOX_DEPEND} | ||
62 | ${ADDITIONS_DEPEND} | ||
63 | ${XLIBS_DEPEND} | ||
64 | ${XORG_VIDEO_ABI_DEPEND} | ||
65 | ${XORG_INPUT_ABI_DEPEND} | ||
66 | ${VIDEO_DEPEND} | ||
67 | ${INPUT_DEPEND} | ||
68 | ${VNC_DEPEND} | ||
69 | >= dev-lang/bin86-0.16 | ||
70 | >= dev-lang/dev86-0.16 | ||
71 | >= dev-util/iasl-2013 | ||
72 | >= dev-libs/libxml2-2.7 | ||
73 | >= dev-util/desktop-file-utils-0.21 | ||
74 | >= virtual/sed | ||
75 | >= x11-proto/fontsproto-2 | ||
76 | >= x11-proto/renderproto-0.11 | ||
77 | >= x11-proto/xineramaproto-1.2 | ||
78 | >= x11-proto/randrproto-1.3 | ||
79 | >= x11-proto/xproto-7 | ||
80 | >= x11-proto/xextproto-7 | ||
81 | >= x11-proto/kbproto-1 | ||
82 | >= x11-proto/inputproto-2 | ||
83 | >= x11-proto/xf86driproto-2.1 | ||
84 | >= app-cdr/cdrtools-2.01 | ||
85 | >= app-arch/makeself-2.1.5 | ||
86 | >= virtual/java-jdk | ||
87 | >= net-misc/curl-7.30 | ||
88 | >= net-nds/libldap-2.4" | ||
89 | |||
90 | SRCFILE="VirtualBox-${PVER}.tar.bz2" | ||
91 | SRCDIR="${BUILDDIR}/VirtualBox-${PVER}" | ||
92 | |||
93 | # virtual box additions for guest clients | ||
94 | VBOX_ADDITIONS_PVER="${PVER}" | ||
95 | VBOX_ADDITIONS_ISO="VBoxGuestAdditions_${VBOX_ADDITIONS_PVER}.iso" | ||
96 | VBOX_USER_MANUAL_PVER="${PVER}" | ||
97 | VBOX_USER_MANUAL="UserManual.pdf" | ||
98 | |||
99 | # wrapper revision | ||
100 | VW_REV=1.9 | ||
101 | # config-tool revision | ||
102 | VC_REV=1.20 | ||
103 | # guest-config-tool revision | ||
104 | VGC_REV=1.2 | ||
105 | # vboxguest.service revision | ||
106 | VGS_REV=1.2 | ||
107 | |||
108 | # extension PVER - for postinstall | ||
109 | EXTPVER="${PVER}" | ||
110 | |||
111 | # needed for postinstall | ||
112 | SPECIAL_VARS="VBOX_USER_MANUAL EXTPVER" | ||
113 | |||
114 | sminclude mtools xdg qt4 systemd | ||
115 | |||
116 | SRC_URI=( | ||
117 | http://download.virtualbox.org/${PNAME}/${PVER}/${SRCFILE} | ||
118 | http://download.virtualbox.org/${PNAME}/${VBOX_ADDITIONS_PVER}/${VBOX_ADDITIONS_ISO} | ||
119 | http://download.virtualbox.org/${PNAME}/${VBOX_USER_MANUAL_PVER}/${VBOX_USER_MANUAL} | ||
120 | mirror://${PNAME}/${PVER}/${SRCFILE} | ||
121 | mirror://${PNAME}/${SRCFILE} | ||
122 | mirror://${PNAME}/${VBOX_ADDITIONS_PVER}/${VBOX_ADDITIONS_ISO} | ||
123 | mirror://${PNAME}/${VBOX_USER_MANUAL_PVER}/${VBOX_USER_MANUAL} | ||
124 | mirror://${PNAME}/${PNAME}-wrapper.sh-${VW_REV} | ||
125 | mirror://${PNAME}/${PNAME}-config.sh-${VC_REV} | ||
126 | mirror://${PNAME}/${PNAME}-guest-config.sh-${VGC_REV} | ||
127 | mirror://${PNAME}/interfaces | ||
128 | mirror://${PNAME}/xorg.conf.vbox | ||
129 | mirror://${PNAME}/vboxclient.desktop | ||
130 | mirror://${PNAME}/vboxguest.service-${VGS_REV} | ||
131 | mirror://${PNAME}/${PNAME}-1.5.4-magellan.patch | ||
132 | mirror://${PNAME}/${PNAME}-4.2.6-magellan-branding.patch | ||
133 | mirror://${PNAME}/${PNAME}-4.0.0-magellan-os-icons.patch | ||
134 | mirror://${PNAME}/${PNAME}-4.0.10-additions-magellan.patch | ||
135 | mirror://${PNAME}/${PNAME}-4.0.0-vboxdrv-magellan.patch | ||
136 | mirror://${PNAME}/${PNAME}-4.0.10-routines-magellan.patch | ||
137 | mirror://${PNAME}/${PNAME}-4.1.51_svn40321-as-needed.patch | ||
138 | mirror://${PNAME}/${PNAME}-4.2.6-installer-magellan.patch | ||
139 | ) | ||
140 | |||
141 | UP2DATE="updatecmd http://www.virtualbox.de/wiki/Downloads | grep 'for Linux' | sed 's/.*ox\ \(.*\)\ for.*/\1/'" | ||
142 | |||
143 | split_info_virtualbox-common() | ||
144 | { | ||
145 | DESCRIPTION="Common configuration files used by virtualbox and guest-addtions." | ||
146 | PCAT="app-emulation" | ||
147 | DEPEND="" | ||
148 | } | ||
149 | |||
150 | split_info_virtualbox() | ||
151 | { | ||
152 | DESCRIPTION="VirtualBox is a general-purpose full virtualizer for x86 hardware." | ||
153 | PCAT="app-emulation" | ||
154 | DEPEND="== app-emulation/virtualbox-common-${PVER} | ||
155 | ${VBOX_DEPEND}" | ||
156 | } | ||
157 | |||
158 | split_info_virtualbox-guest-additions() | ||
159 | { | ||
160 | DESCRIPTION="VirtualBox kernel modules and user-space tools for Linux guests." | ||
161 | PCAT="app-emulation" | ||
162 | # vboxmouse_drv only needed with xorg =< 1.10 | ||
163 | # for xorg-1.11 upstream suggest the normal mouse driver | ||
164 | if [[ ${XORG_VER//.} < 111 ]] | ||
165 | then | ||
166 | DEPEND="== app-emulation/virtualbox-common-${PVER} | ||
167 | == x11-drivers/xf86-video-virtualbox-${PVER} | ||
168 | == x11-drivers/xf86-input-virtualbox-${PVER} | ||
169 | ${XLIBS_DEPEND} | ||
170 | ${ADDITIONS_DEPEND}" | ||
171 | else | ||
172 | DEPEND="== app-emulation/virtualbox-common-${PVER} | ||
173 | == x11-drivers/xf86-video-virtualbox-${PVER} | ||
174 | ${INPUT_DEPEND} | ||
175 | ${XLIBS_DEPEND} | ||
176 | ${ADDITIONS_DEPEND}" | ||
177 | fi | ||
178 | } | ||
179 | |||
180 | split_info_xf86-video-virtualbox() | ||
181 | { | ||
182 | DESCRIPTION="VirtualBox X11 video driver." | ||
183 | PCAT="x11-drivers" | ||
184 | DEPEND="${XLIBS_DEPEND} | ||
185 | ${VIDEO_DEPEND} | ||
186 | ${XORG_VIDEO_ABI_DEPEND}" | ||
187 | } | ||
188 | |||
189 | split_info_xf86-input-virtualbox() | ||
190 | { | ||
191 | DESCRIPTION="VirtualBox X11 mouse driver." | ||
192 | PCAT="x11-drivers" | ||
193 | |||
194 | # vboxmouse_drv only needed with xorg =< 1.10 | ||
195 | # for xorg-1.11 upstream suggest the normal mouse driver | ||
196 | if [[ ${XORG_VER//.} < 111 ]] | ||
197 | then | ||
198 | DEPEND="${XORG_INPUT_ABI_DEPEND}" | ||
199 | else | ||
200 | DEPEND="${XORG_INPUT_ABI_DEPEND} | ||
201 | ${INPUT_DEPEND}" | ||
202 | # virtualize this package! | ||
203 | PKGTYPE="virtual" | ||
204 | fi | ||
205 | } | ||
206 | |||
207 | split_info_virtualbox-extension-vnc() | ||
208 | { | ||
209 | DESCRIPTION="VirtualBox iVNC extension pack." | ||
210 | PCAT="app-emulation" | ||
211 | DEPEND="== app-emulation/virtualbox-${PVER} | ||
212 | ${VNC_DEPEND}" | ||
213 | } | ||
214 | |||
215 | src_prepare() | ||
216 | { | ||
217 | munpack ${SRCFILE} || die | ||
218 | cd ${SRCDIR} | ||
219 | |||
220 | # fix issues with --as-needed | ||
221 | mpatch ${PNAME}-4.1.51_svn40321-as-needed.patch || die | ||
222 | |||
223 | # add magellan support to VBoxSysInfo.sh | ||
224 | mpatch ${PNAME}-1.5.4-magellan.patch || die | ||
225 | |||
226 | # magellan-branding, enables "magellan" guest-definitions | ||
227 | mpatch ${PNAME}-4.2.6-magellan-branding.patch || die | ||
228 | |||
229 | # magellan-branding, adds magellan icons used in branding patch | ||
230 | mpatch -Np1 ${PNAME}-4.0.0-magellan-os-icons.patch || die | ||
231 | |||
232 | # add magellan support to additions installers | ||
233 | mpatch ${PNAME}-4.0.10-additions-magellan.patch || die | ||
234 | |||
235 | # add magellan support to vboxdrv and webservice installer | ||
236 | mpatch ${PNAME}-4.0.0-vboxdrv-magellan.patch || die | ||
237 | |||
238 | # add magellan support to balloon-driver, routines webservice rc | ||
239 | mpatch ${PNAME}-4.0.10-routines-magellan.patch || die | ||
240 | |||
241 | # add magellan support to more installer files like | ||
242 | # module check script and vboxautostart service | ||
243 | mpatch ${PNAME}-4.2.6-installer-magellan.patch || die | ||
244 | |||
245 | # fixes compile issues with qt on magellan | ||
246 | # create a fake qtdir to fix /usr/include/qt issue without patching | ||
247 | install -d ${SRCDIR}/qt || die | ||
248 | ln -snf ${QTDIR}/bin ${SRCDIR}/qt || die | ||
249 | ln -snf ${QTDIR}/$(mlibdir) ${SRCDIR}/qt/lib || die | ||
250 | ln -snf ${QTDIR}/include/qt ${SRCDIR}/qt/include || die | ||
251 | |||
252 | # do not build testcases to save compile time | ||
253 | local MCONFIG="${SRCDIR}/LocalConfig.kmk" | ||
254 | mclearconfig -b | ||
255 | maddconfig -b 'VBOX_WITH_TESTCASES =' | ||
256 | maddconfig -b 'VBOX_WITH_TESTSUITE =' | ||
257 | maddconfig -b 'VBOX_WITH_REGISTRATION_REQUEST =' | ||
258 | maddconfig -b 'VBOX_WITH_UPDATE_REQUEST =' | ||
259 | # tell vbox where to find java | ||
260 | maddconfig -b "VBOX_JAVA_HOME = ${JAVA_HOME}" | ||
261 | maddconfig -b 'VBOX_WITH_ORIGIN :=' | ||
262 | maddconfig -b "VBOX_PATH_APP_PRIVATE_ARCH := /usr/$(mlibdir)/virtualbox" | ||
263 | maddconfig -b 'VBOX_PATH_SHARED_LIBS := $(VBOX_PATH_APP_PRIVATE_ARCH)' | ||
264 | maddconfig -b 'VBOX_WITH_RUNPATH := $(VBOX_PATH_APP_PRIVATE_ARCH)' | ||
265 | maddconfig -b 'VBOX_PATH_APP_PRIVATE := /usr/share/virtualbox' | ||
266 | maddconfig -b 'VBOX_PATH_APP_DOCS = $(VBOX_PATH_PACKAGE_DOCS)' | ||
267 | } | ||
268 | |||
269 | src_compile() | ||
270 | { | ||
271 | cd ${SRCDIR} | ||
272 | |||
273 | local myopts | ||
274 | [[ ${VBOX_HARDENING} = 0 ]] && myopts+=" --disable-hardening" | ||
275 | |||
276 | # use our fake qt dir and enable pulseaudio support, but don't build docs | ||
277 | ./configure --with-qt-dir="${SRCDIR}/qt" --enable-pulse --disable-docs --enable-vnc ${myopts} || die | ||
278 | source ./env.sh || die | ||
279 | kmk all || die | ||
280 | |||
281 | # build rdesktop-vrdp | ||
282 | cd ${SRCDIR}/src/VBox/RDP/client | ||
283 | # fix keymap path | ||
284 | sed -i 's:/opt/VirtualBox:/usr/share/virtualbox:' Makefile.kmk || die | ||
285 | kmk all || die | ||
286 | |||
287 | # build VNC extension pack | ||
288 | cd ${SRCDIR}/src/VBox/ExtPacks/VNC | ||
289 | kmk packing || die | ||
290 | } | ||
291 | |||
292 | src_install_virtualbox-common() | ||
293 | { | ||
294 | cd ${SRCDIR} | ||
295 | |||
296 | local MCONFIG | ||
297 | |||
298 | # configfile needed by serveral tools | ||
299 | MCONFIG="/etc/vbox/vbox.cfg" | ||
300 | minstalldir /etc/vbox || die | ||
301 | mclearconfig || die | ||
302 | maddconfig "INSTALL_DIR=/usr/$(mlibdir)/virtualbox" || die | ||
303 | |||
304 | # versionfile needed by virtualbox-config && virtualbox-guest-config | ||
305 | MCONFIG="/usr/$(mlibdir)/virtualbox/version" | ||
306 | minstalldir /usr/$(mlibdir)/virtualbox || die | ||
307 | mclearconfig || die | ||
308 | maddconfig "${PVER%%_*}" || die | ||
309 | } | ||
310 | |||
311 | src_install_virtualbox() | ||
312 | { | ||
313 | # virtualbox installs binaries in x86 or amd64 out dir | ||
314 | local myarch | ||
315 | case ${ARCH} in | ||
316 | i*86) myarch=x86;; | ||
317 | x86_64) myarch=amd64;; | ||
318 | esac | ||
319 | |||
320 | cd ${SRCDIR}/out/linux.${myarch}/release/bin | ||
321 | |||
322 | # move binaries to dest | ||
323 | minstalldir /usr/$(mlibdir)/${PNAME} || die | ||
324 | mcopy -a \* /usr/$(mlibdir)/${PNAME} || die | ||
325 | |||
326 | # prune unneeded stuff | ||
327 | rm -vf ${BINDIR}/usr/$(mlibdir)/${PNAME}/tst* || die | ||
328 | mdelete -r /usr/$(mlibdir)/${PNAME}/testcase || die | ||
329 | mdelete -r /usr/$(mlibdir)/${PNAME}/sdk || die | ||
330 | mdelete -r /usr/$(mlibdir)/${PNAME}/dtrace || die | ||
331 | mdelete -r /usr/$(mlibdir)/${PNAME}/helpers || die | ||
332 | mdelete -r /usr/$(mlibdir)/${PNAME}/scripts || die | ||
333 | mdelete /usr/$(mlibdir)/${PNAME}/VBox.sh || die | ||
334 | mdelete /usr/$(mlibdir)/${PNAME}/vboxkeyboard.tar.bz2 || die | ||
335 | mdelete /usr/$(mlibdir)/${PNAME}/rdesktop-vrdp.tar.gz || die | ||
336 | |||
337 | # remove additions | ||
338 | mdelete -r /usr/$(mlibdir)/${PNAME}/additions || die | ||
339 | |||
340 | # remove VNC extpack which comes with an extra package | ||
341 | mdelete -r /usr/$(mlibdir)/${PNAME}/ExtensionPacks/VNC || die | ||
342 | |||
343 | # move vrdp keymaps to the right place | ||
344 | minstalldir /usr/share/${PNAME} || die | ||
345 | mv -v ${BINDIR}/usr/$(mlibdir)/${PNAME}/rdesktop-vrdp-keymaps ${BINDIR}/usr/share/${PNAME}/ || die | ||
346 | |||
347 | # VRDPAuth only works with this | ||
348 | mlink VBoxAuth.so /usr/$(mlibdir)/${PNAME}/VRDPAuth.so || die | ||
349 | |||
350 | # fix permissions | ||
351 | mchmod 0755 /usr/$(mlibdir)/${PNAME}/\*.so || die | ||
352 | |||
353 | # fix permissions | ||
354 | mchown root:vboxusers /usr/$(mlibdir)/${PNAME}/VirtualBox || die | ||
355 | mchown root:vboxusers /usr/$(mlibdir)/${PNAME}/VBoxBFE || die | ||
356 | mchown root:vboxusers /usr/$(mlibdir)/${PNAME}/VBoxSDL || die | ||
357 | mchown root:vboxusers /usr/$(mlibdir)/${PNAME}/VBoxHeadless || die | ||
358 | mchown root:vboxusers /usr/$(mlibdir)/${PNAME}/VBoxManage || die | ||
359 | mchown root:vboxusers /usr/$(mlibdir)/${PNAME}/VBoxSVC || die | ||
360 | mchown root:vboxusers /usr/$(mlibdir)/${PNAME}/VBoxXPCOMIPCD || die | ||
361 | mchown root:vboxusers /usr/$(mlibdir)/${PNAME}/VBoxTunctl || die | ||
362 | mchown root:vboxusers /usr/$(mlibdir)/${PNAME}/VBoxNetAdpCtl || die | ||
363 | mchown root:vboxusers /usr/$(mlibdir)/${PNAME}/VBoxNetDHCP || die | ||
364 | mchown root:vboxusers /usr/$(mlibdir)/${PNAME}/VBoxNetAdpCtl || die | ||
365 | mchown root:vboxusers /usr/$(mlibdir)/${PNAME}/VBoxTestOGL || die | ||
366 | mchown root:vboxusers /usr/$(mlibdir)/${PNAME}/VBoxExtPackHelperApp || die | ||
367 | |||
368 | if [[ ${VBOX_HARDENING} = 1 ]] | ||
369 | then | ||
370 | # virtualbox needs now suid-bits to run | ||
371 | mchmod 4750 /usr/$(mlibdir)/${PNAME}/VirtualBox || die | ||
372 | mchmod 4750 /usr/$(mlibdir)/${PNAME}/VBoxBFE || die | ||
373 | mchmod 4750 /usr/$(mlibdir)/${PNAME}/VBoxSDL || die | ||
374 | mchmod 4750 /usr/$(mlibdir)/${PNAME}/VBoxHeadless || die | ||
375 | mchmod 4750 /usr/$(mlibdir)/${PNAME}/VBoxNetAdpCtl || die | ||
376 | mchmod 4750 /usr/$(mlibdir)/${PNAME}/VBoxNetDHCP || die | ||
377 | fi | ||
378 | |||
379 | # supply a additions.iso for client guest | ||
380 | minstalldir /usr/$(mlibdir)/${PNAME}/additions || die | ||
381 | minstallfile -s ${VBOX_ADDITIONS_ISO} /usr/$(mlibdir)/${PNAME}/additions/${VBOX_ADDITIONS_ISO/_${VBOX_ADDITIONS_PVER}/} || die | ||
382 | |||
383 | # install a wrapper for some apps | ||
384 | minstalldir /usr/bin || die | ||
385 | minstallexec -s ${PNAME}-wrapper.sh-${VW_REV} /usr/bin/virtualbox || die | ||
386 | minstallexec -s ${PNAME}-wrapper.sh-${VW_REV} /usr/bin/vboxmanage || die | ||
387 | minstallexec -s ${PNAME}-wrapper.sh-${VW_REV} /usr/bin/vboxsdl || die | ||
388 | minstallexec -s ${PNAME}-wrapper.sh-${VW_REV} /usr/bin/vboxbfe || die | ||
389 | minstallexec -s ${PNAME}-wrapper.sh-${VW_REV} /usr/bin/vboxvrdp || die | ||
390 | minstallexec -s ${PNAME}-wrapper.sh-${VW_REV} /usr/bin/vboxheadless || die | ||
391 | minstallexec -s ${PNAME}-wrapper.sh-${VW_REV} /usr/bin/vboxballoonctrl || die | ||
392 | minstallexec -s ${PNAME}-wrapper.sh-${VW_REV} /usr/bin/vboxautostart || die | ||
393 | |||
394 | # virtualbox-config | ||
395 | minstalldir /usr/sbin || die | ||
396 | minstallexec -s ${PNAME}-config.sh-${VC_REV} /usr/sbin/${PNAME}-config || die | ||
397 | |||
398 | # other needed applinks | ||
399 | mlink /usr/$(mlibdir)/${PNAME}/VBoxTunctl /usr/bin/vboxtunctl || die | ||
400 | |||
401 | # fix libdir | ||
402 | local i | ||
403 | for i in virtualbox vboxmanage vboxsdl vboxbfe vboxvrdp vboxheadless | ||
404 | do | ||
405 | sed -i "s:^\(LIBDIR=\).*:\1/usr/$(mlibdir):" ${BINDIR}/usr/bin/${i} || die | ||
406 | done | ||
407 | sed -i "s:^\(LIBDIR=\).*:\1/usr/$(mlibdir):" ${BINDIR}/usr/sbin/${PNAME}-config || die | ||
408 | |||
409 | # install a udev rule | ||
410 | local MCONFIG="/usr/lib/udev/rules.d/60-virtualbox.rules" | ||
411 | minstalldir /usr/lib/udev/rules.d || die | ||
412 | mclearconfig || die | ||
413 | maddconfig 'KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660" ENV{ACL_MANAGE}="1"' || die | ||
414 | # solves some problems with usb support on guest systems | ||
415 | maddconfig 'SUBSYSTEM=="usb_device", ACTION=="add", RUN="/usr/lib/udev/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers"' || die | ||
416 | maddconfig 'SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN="/usr/lib/udev/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers"' || die | ||
417 | maddconfig 'SUBSYSTEM=="usb_device", ACTION=="remove", RUN="/usr/lib/udev/VBoxCreateUSBNode.sh --remove $major $minor"' || die | ||
418 | maddconfig 'SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN="/usr/lib/udev/VBoxCreateUSBNode.sh --remove $major $minor"' || die | ||
419 | |||
420 | # symlink helperscript to udev | ||
421 | minstalldir /usr/lib/udev || die | ||
422 | mlink /usr/$(mlibdir)/virtualbox/VBoxCreateUSBNode.sh /usr/lib/udev/ || die | ||
423 | |||
424 | # install modules autoload file | ||
425 | local MCONFIG="/etc/modules-load.d/virtualbox.conf" | ||
426 | minstalldir /etc/modules-load.d || die | ||
427 | mclearconfig || die | ||
428 | maddconfig "vboxnetflt" || die | ||
429 | maddconfig "vboxnetadp" || die | ||
430 | maddconfig "vboxpci" || die | ||
431 | maddconfig "vboxdrv" || die | ||
432 | |||
433 | # install a nice destop entry | ||
434 | minstallpixmap ${SRCDIR}/src/VBox/Frontends/VirtualBox/images/OSE/VirtualBox_64px.png ${PNAME}.png || die | ||
435 | minstall_desktop_icon \ | ||
436 | --name VirtualBox \ | ||
437 | --file ${PNAME} \ | ||
438 | --comment "Run and manage virtual machines" \ | ||
439 | --exec ${PNAME} \ | ||
440 | --icon ${PNAME}.png \ | ||
441 | --vendor innotek \ | ||
442 | --categories System,Emulator \ | ||
443 | || die | ||
444 | |||
445 | # docs | ||
446 | cd ${SRCDIR} | ||
447 | minstalldocs ChangeLog COPYING || die | ||
448 | |||
449 | # install usermanual and let virtualbox find it | ||
450 | minstallfile -s ${VBOX_USER_MANUAL} /usr/share/doc/${PNAME}-${PVER} || die | ||
451 | mlink /usr/share/doc/${PNAME}-${PVER}/${VBOX_USER_MANUAL} /usr/$(mlibdir)/${PNAME} || die | ||
452 | } | ||
453 | |||
454 | src_install_virtualbox-guest-additions() | ||
455 | { | ||
456 | # virtualbox installs binaries in x86 or amd64 out dir | ||
457 | local myarch | ||
458 | case ${ARCH} in | ||
459 | i*86) myarch=x86;; | ||
460 | x86_64) myarch=amd64;; | ||
461 | esac | ||
462 | |||
463 | cd ${SRCDIR}/out/linux.${myarch}/release/bin/additions | ||
464 | |||
465 | minstalldir /sbin || die | ||
466 | minstallexec mount.vboxsf /sbin || die | ||
467 | mchmod 4755 /sbin/mount.vboxsf || die | ||
468 | |||
469 | minstalldir /usr/sbin || die | ||
470 | minstallexec VBoxService /usr/sbin/vboxguest-service || die | ||
471 | mchmod 4755 /usr/sbin/vboxguest-service || die | ||
472 | |||
473 | minstalldir /usr/bin || die | ||
474 | minstallexec VBoxControl /usr/bin || die | ||
475 | minstallexec VBoxClient /usr/bin || die | ||
476 | minstallexec ${SRCDIR}/src/VBox/Additions/x11/Installer/98vboxadd-xclient /usr/bin/VBoxClient-all || die | ||
477 | |||
478 | # udev rule for vboxdrv | ||
479 | local MCONFIG="/lib/udev/rules.d/60-virtualbox-guest-addition.rules" | ||
480 | minstalldir /lib/udev/rules.d || die | ||
481 | mclearconfig || die | ||
482 | maddconfig 'KERNEL=="vboxguest", OWNER="vboxguest", GROUP="vboxguest", MODE="0660"' || die | ||
483 | maddconfig 'KERNEL=="vboxuser", OWNER="vboxguest", GROUP="vboxguest", MODE="0660"' || die | ||
484 | |||
485 | # install modules autoload file | ||
486 | local MCONFIG="/etc/modules-load.d/virtualbox-guest-additions.conf" | ||
487 | minstalldir /etc/modules-load.d || die | ||
488 | mclearconfig || die | ||
489 | maddconfig "vboxguest" || die | ||
490 | maddconfig "vboxsf" || die | ||
491 | maddconfig "vboxvideo" || die | ||
492 | |||
493 | # VBoxClient autostart file | ||
494 | minstalldir /etc/xdg/autostart || die | ||
495 | minstallfile -s vboxclient.desktop /etc/xdg/autostart || die | ||
496 | |||
497 | # sample xorg.conf | ||
498 | minstalldir /usr/share/doc/${PNAME}-${PVER} | ||
499 | minstallfile -s xorg.conf.vbox /usr/share/doc/${PNAME}-${PVER} || die | ||
500 | |||
501 | # install systemd unit | ||
502 | minstallunit vboxguest.service-${VGS_REV} vboxguest.service || die | ||
503 | |||
504 | # install additions sources | ||
505 | minstalldir /usr/$(mlibdir)/virtualbox/additions || die | ||
506 | mcopy -a ${SRCDIR}/out/linux.${myarch}/release/bin/additions/src /usr/$(mlibdir)/virtualbox/additions || die | ||
507 | |||
508 | # virtualbox-guest-config | ||
509 | minstalldir /usr/sbin || die | ||
510 | minstallexec -s virtualbox-guest-config.sh-${VGC_REV} /usr/sbin/virtualbox-guest-config || die | ||
511 | } | ||
512 | |||
513 | src_install_xf86-video-virtualbox() | ||
514 | { | ||
515 | # virtualbox installs binaries in x86 or amd64 out dir | ||
516 | local myarch | ||
517 | case ${ARCH} in | ||
518 | i*86) myarch=x86;; | ||
519 | x86_64) myarch=amd64;; | ||
520 | esac | ||
521 | |||
522 | cd ${SRCDIR}/out/linux.${myarch}/release/bin/additions | ||
523 | |||
524 | # needed directories | ||
525 | minstalldir /usr/$(mlibdir)/dri || die | ||
526 | minstalldir /usr/$(mlibdir)/xorg/modules/drivers || die | ||
527 | minstalldir /usr/src/vboxvideo || die | ||
528 | |||
529 | # install xorg server module | ||
530 | minstallfile vboxvideo_drv_${XORG_VER//.}.so /usr/$(mlibdir)/xorg/modules/drivers/vboxvideo_drv.so || die | ||
531 | |||
532 | # install guest opengl driver | ||
533 | minstallfile VBoxOGL\* /usr/$(mlibdir) || die | ||
534 | |||
535 | # install guest dri driver | ||
536 | mlink /usr/$(mlibdir)/VBoxOGL.so /usr/$(mlibdir)/dri/vboxvideo_dri.so | ||
537 | } | ||
538 | |||
539 | # vboxmouse_drv only needed with xorg =< 1.10 | ||
540 | # for xorg-1.11 upstream suggest the normal mouse driver | ||
541 | if [[ ${XORG_VER//.} < 111 ]] | ||
542 | then | ||
543 | src_install_xf86-input-virtualbox() | ||
544 | { | ||
545 | # virtualbox installs binaries in x86 or amd64 out dir | ||
546 | local myarch | ||
547 | case ${ARCH} in | ||
548 | i*86) myarch=x86;; | ||
549 | x86_64) myarch=amd64;; | ||
550 | esac | ||
551 | |||
552 | cd ${SRCDIR}/out/linux.${myarch}/release/bin/additions | ||
553 | |||
554 | # needed directories | ||
555 | minstalldir /usr/$(mlibdir)/xorg/modules/input || die | ||
556 | |||
557 | # install xorg server module | ||
558 | minstallfile vboxmouse_drv_${XORG_VER//.}.so /usr/$(mlibdir)/xorg/modules/input/vboxmouse_drv.so || die | ||
559 | |||
560 | # install xorg conf | ||
561 | minstalldir /etc/X11/xorg.conf.d || die | ||
562 | minstallfile ${SRCDIR}/src/VBox/Additions/x11/Installer/50-vboxmouse.conf /etc/X11/xorg.conf.d || die | ||
563 | |||
564 | # install udev rules | ||
565 | minstalludevrule ${SRCDIR}/src/VBox/Additions/linux/installer/70-xorg-vboxmouse.rules || die | ||
566 | } | ||
567 | else | ||
568 | src_install_xf86-input-virtualbox() | ||
569 | { | ||
570 | echo "doing nothing" | ||
571 | } | ||
572 | postinstall_xf86-input-virtualbox() | ||
573 | { | ||
574 | echo | ||
575 | echo "'x11-drivers/xf86-input-virtualbox' is not needed with >=xorg-server-1.11 anymore." | ||
576 | echo "The standard xf86-input-mouse driver was installed and supports all needed features." | ||
577 | echo "This is a transition package only. Please uninstall 'xf86-input-virtualbox' now." | ||
578 | echo | ||
579 | } | ||
580 | fi | ||
581 | |||
582 | src_install_virtualbox-extension-vnc() | ||
583 | { | ||
584 | # virtualbox installs binaries in x86 or amd64 out dir | ||
585 | local myarch | ||
586 | case ${ARCH} in | ||
587 | i*86) myarch=x86;; | ||
588 | x86_64) myarch=amd64;; | ||
589 | esac | ||
590 | |||
591 | cd ${SRCDIR}/out/linux.${myarch}/release/packages | ||
592 | |||
593 | # move binaries to dest | ||
594 | minstalldir /usr/share/virtualbox/extensions || die | ||
595 | minstallfile VNC-\*.vbox-extpack /usr/share/virtualbox/extensions/VNC-${PVER}.vbox-extpack || die | ||
596 | } | ||
597 | |||
598 | preinstall_virtualbox() | ||
599 | { | ||
600 | # adds virtualbox group | ||
601 | mgroupadd vboxusers | ||
602 | |||
603 | # remove old udev cruft | ||
604 | if [ -f ${MROOT}/usr/lib/udev/rules.d/10-virtualbox.rules ] | ||
605 | then | ||
606 | rm ${MROOT}/usr/lib/udev/rules.d/10-virtualbox.rules | ||
607 | fi | ||
608 | } | ||
609 | |||
610 | postinstall_virtualbox() | ||
611 | { | ||
612 | echo | ||
613 | echo "Please run virtualbox-config and add your users the 'vboxusers' group." | ||
614 | echo "For more information consult the user manual found at" | ||
615 | echo " http://virtualbox.de/download/${VBOX_USER_MANUAL}" | ||
616 | echo "or /usr/share/docs/${PNAME}-${PVER}/${VBOX_USER_MANUAL}" | ||
617 | echo | ||
618 | if [[ -d ${MROOT}/usr/$(mlibdir)/virtualbox/ExtensionPacks ]] | ||
619 | then | ||
620 | echo "ExtensionPacks directory exists!" | ||
621 | echo "Make sure that you have a version of the extension-pack installed that matches virtualbox." | ||
622 | echo "If you experience segfaults, uninstall the extension-packs first before filing a bug." | ||
623 | echo | ||
624 | fi | ||
625 | } | ||
626 | |||
627 | postinstall_xf86-video-virtualbox() | ||
628 | { | ||
629 | echo "The DRM module was not installed." | ||
630 | echo "To use it, install app-emulation/virtualbox-guest-additions" | ||
631 | echo "and run 'virtualbox-guest-config' afterwards'" | ||
632 | } | ||
633 | |||
634 | preinstall_virtualbox-guest-additions() | ||
635 | { | ||
636 | # adds vboxguest user/group | ||
637 | ${MLIBDIR}/mgroupadd vboxguest | ||
638 | ${MLIBDIR}/museradd -o "-g vboxguest -d /var/run/vboxguest -s /bin/sh" vboxguest | ||
639 | } | ||
640 | |||
641 | postinstall_virtualbox-guest-additions() | ||
642 | { | ||
643 | mstartunit vboxguest.service vboxguest-service | ||
644 | |||
645 | echo | ||
646 | echo "You need to compile the kernel modules manually." | ||
647 | echo "Run /usr/sbin/virtualbox-guest-config" | ||
648 | echo | ||
649 | } | ||
650 | |||
651 | postremove_virtualbox-guest-additions() | ||
652 | { | ||
653 | mstopunit vboxguest.service vboxguest-service | ||
654 | } | ||
655 | |||
656 | postinstall_virtualbox-extension-vnc() | ||
657 | { | ||
658 | if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] | ||
659 | then | ||
660 | /usr/$(mlibdir)/virtualbox/VBoxManage extpack install /usr/share/virtualbox/extensions/VNC-${EXTPVER}.vbox-extpack | ||
661 | else | ||
662 | echo "Please enter chroot of ${MROOT} and run:" | ||
663 | echo "vboxmanage extpack install /usr/share/virtualbox/extensions/VNC-${EXTPVER}.vbox-extpack" | ||
664 | fi | ||
665 | } | ||
666 | |||
667 | preremove_virtualbox-extension-vnc() | ||
668 | { | ||
669 | # remove installed extensionpacks in case no installer was found | ||
670 | if [[ -z $(find ${MROOT}/usr/share/virtualbox/extensions -name VNC-\*.vbox-extpack) ]] | ||
671 | then | ||
672 | if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] | ||
673 | then | ||
674 | /usr/$(mlibdir)/virtualbox/VBoxManage extpack uninstall VNC | ||
675 | else | ||
676 | echo "Please enter chroot of ${MROOT} and run:" | ||
677 | echo "vboxmanage extpack uninstall VNC" | ||
678 | fi | ||
679 | fi | ||
680 | } | ||
681 | |||
682 | preinstall_virtualbox-extension-vnc() | ||
683 | { | ||
684 | # remove already installed VNC extpacks, or a new one cannot be installed | ||
685 | if [[ ! -z $(find ${MROOT}/usr/share/virtualbox/ExtensionsPacks -name VNC) ]] | ||
686 | then | ||
687 | if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] | ||
688 | then | ||
689 | /usr/$(mlibdir)/virtualbox/VBoxManage extpack uninstall VNC | ||
690 | else | ||
691 | echo "Please enter chroot of ${MROOT} and run:" | ||
692 | echo "vboxmanage extpack uninstall VNC" | ||
693 | fi | ||
694 | fi | ||
695 | } |