Magellan Linux

Annotation of /trunk/extras/virtualbox/virtualbox-4.2.22-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 20434 - (hide annotations) (download)
Wed Jan 15 09:07:14 2014 UTC (10 years, 5 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     }