Magellan Linux

Contents of /branches/magellan-next/extras/virtualbox/virtualbox-4.0.10-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 8087 - (show annotations) (download)
Thu Jun 30 19:07:30 2011 UTC (12 years, 10 months ago) by niro
File size: 15820 byte(s)
-Np1 for the icon patch is required
1 # $Id$
2
3 PNAME="virtualbox"
4 PVER="4.0.10"
5 PBUILD="r2"
6
7 PCATEGORIE="app-emulation"
8
9 HOMEPAGE="http://www.virtualbox.de/"
10
11 SDEPEND=">= dev-libs/libidl-0.8.14
12 >= media-libs/alsa-lib-1.0.24
13 >= media-libs/libsdl-1.2.14
14 >= x11-libs/qt4-core-4.6
15 >= x11-libs/qt4-gui-4.6
16 >= x11-libs/qt4-opengl-4.6
17 >= sys-apps/dbus-1.4
18 >= x11-libs/libXcursor-1
19 >= x11-libs/libXcomposite-0.4
20 >= x11-libs/libXfixes-5
21 >= x11-libs/libXmu-1
22 >= x11-libs/libX11-1.4
23 >= x11-libs/libXt-1
24 >= x11-libs/libXext-1.3
25 >= x11-libs/libXau-1
26 >= x11-libs/libXdmcp-1
27 >= x11-libs/libSM-1.1
28 >= x11-libs/libICE-1
29 >= x11-libs/libdrm-2.4.25
30 >= x11-apps/xrandr-1.3
31 >= x11-apps/xrefresh-1
32 >= virtual/opengl
33 >= virtual/glut
34 >= dev-lang/python-2.7
35 >= net-misc/bridge-utils-1.5
36 >= sys-apps/usermode-utilities-2007
37 >= dev-lang/bin86-0.16
38 >= dev-lang/dev86-0.16
39 >= dev-util/iasl-2009
40 >= dev-libs/libxml2-2.7
41 >= dev-util/desktop-file-utils-0.15
42 >= sys-apps/sed-4
43 >= x11-proto/fontsproto-2
44 >= x11-proto/renderproto-0.11
45 >= x11-proto/xineramaproto-1.2
46 >= x11-proto/randrproto-1.3
47 >= x11-proto/xproto-7
48 >= x11-proto/xextproto-7
49 >= x11-proto/kbproto-1
50 >= x11-proto/inputproto-2
51 >= x11-proto/xf86driproto-2.1
52 >= app-cdr/cdrtools-2.01
53 >= app-arch/makeself-2.1.5
54 >= virtual/java-jdk"
55
56 SRCFILE="VirtualBox-${PVER}.tar.bz2"
57 SRCDIR="${BUILDDIR}/VirtualBox-${PVER}_OSE"
58
59 # virtual box additions for guest clients
60 VBOX_ADDITIONS_ISO="VBoxGuestAdditions_${PVER}.iso"
61 VBOX_USER_MANUAL="UserManual.pdf"
62
63 # wrapper cvs revision
64 VW_CVS_REV=1.7
65 # config-tool cvs revision
66 VC_CVS_REV=1.14
67 # virtualbox-guest rc cvs revision
68 VG_CVS_REV=1.2
69
70 # needed for postinstall
71 SPECIAL_VARS="VBOX_USER_MANUAL"
72
73 sminclude mtools xdg qt4
74
75 SPLIT_PACKAGES="virtualbox xf86-video-virtualbox xf86-input-virtualbox virtualbox-guest-additions"
76
77 SRC_URI=(
78 http://download.virtualbox.org/${PNAME}/${PVER}/${SRCFILE}
79 http://download.virtualbox.org/${PNAME}/${PVER}/${VBOX_ADDITIONS_ISO}
80 http://download.virtualbox.org/${PNAME}/${PVER}/${VBOX_USER_MANUAL}
81 mirror://${PNAME}/${PVER}/${SRCFILE}
82 mirror://${PNAME}/${PVER}/${VBOX_ADDITIONS_ISO}
83 mirror://${PNAME}/${PVER}/${VBOX_USER_MANUAL}
84 mirror://${PNAME}/${PNAME}-wrapper.sh-${VW_CVS_REV}
85 mirror://${PNAME}/${PNAME}-config.sh-${VC_CVS_REV}
86 mirror://${PNAME}/interfaces
87 mirror://${PNAME}/vboxvideo.sh
88 mirror://${PNAME}/vboxguest.sh
89 mirror://${PNAME}/vboxsf.sh
90 mirror://${PNAME}/xorg.conf.vbox
91 mirror://${PNAME}/vboxclient.desktop
92 mirror://${PNAME}/virtualbox-guest.rc-${VG_CVS_REV}
93 mirror://${PNAME}/${PNAME}-1.5.4-magellan.patch
94 mirror://${PNAME}/${PNAME}-4.0.10-magellan-branding.patch
95 mirror://${PNAME}/${PNAME}-4.0.0-magellan-os-icons.patch
96 mirror://${PNAME}/${PNAME}-3.1.4-additions-magellan.patch
97 mirror://${PNAME}/${PNAME}-4.0.0-vboxdrv-magellan.patch
98 mirror://${PNAME}/${PNAME}-4.0.10-routines-magellan.patch
99 )
100
101 UP2DATE="updatecmd http://www.virtualbox.de/wiki/Downloads | grep 'for Linux' | sed 's/.*ox\ \(.*\)\ for.*/\1/'"
102
103 split_info_virtualbox()
104 {
105 DESCRIPTION="VirtualBox is a general-purpose full virtualizer for x86 hardware."
106 DEPEND=">= dev-libs/libidl-0.8.10
107 >= media-libs/alsa-lib-1.0.21
108 >= media-libs/libsdl-1.2.14
109 >= x11-libs/qt4-core-4.6
110 >= x11-libs/qt4-gui-4.6
111 >= x11-libs/qt4-opengl-4.6
112 >= sys-apps/dbus-1.4
113 >= x11-libs/libXcursor-1
114 >= virtual/opengl
115 >= virtual/glut
116 >= dev-lang/python-2.6
117 >= net-misc/bridge-utils-1.4
118 >= sys-apps/usermode-utilities-2007"
119
120 preinstall()
121 {
122 # adds virtualbox group
123 ${MLIBDIR}/mgroupadd virtualbox
124 }
125
126 postinstall()
127 {
128 echo
129 echo "Please run virtualbox-config and add your users the 'virtualbox' group."
130 echo "For more information consult the user manual found at"
131 echo " http://virtualbox.de/download/${VBOX_USER_MANUAL}"
132 echo "or /usr/share/docs/${PNAME}-${PVER}/${VBOX_USER_MANUAL}"
133 echo
134 }
135 }
136
137 split_info_virtualbox-guest-additions()
138 {
139 DESCRIPTION="VirtualBox kernel modules and user-space tools for Linux guests."
140 DEPEND="== x11-drivers/xf86-video-virtualbox-${PVER}
141 == x11-drivers/xf86-input-virtualbox-${PVER}
142 >= x11-libs/libXmu-1
143 >= x11-libs/libX11-1.3
144 >= x11-libs/libXt-1
145 >= x11-libs/libXext-1.1
146 >= x11-libs/libXau-1
147 >= x11-libs/libXdmcp-1
148 >= x11-libs/libSM-1.1
149 >= x11-libs/libICE-1
150 >= x11-apps/xrandr-1.3
151 >= x11-apps/xrefresh-1
152 >= fake/devsystem26
153 >= virtual/kernel-sources"
154
155 preinstall()
156 {
157 # adds vboxguest user/group
158 ${MLIBDIR}/mgroupadd vboxguest
159 ${MLIBDIR}/museradd -o "-g vboxguest -d /var/run/vboxguest -s /bin/sh" vboxguest
160
161 mstartservice virtualbox vboxguest-service
162 }
163
164 postinstall()
165 {
166 mstopservice virtualbox vboxguest-service
167 }
168 }
169
170 split_info_xf86-video-virtualbox()
171 {
172 DESCRIPTION="VirtualBox X11 video driver."
173 PCATEGORIE="x11-drivers"
174 DEPEND=">= x11-base/xorg-server-1.8
175 >= x11-libs/libXdmcp-1
176 >= x11-libs/libXcomposite-0.4
177 >= x11-libs/libXau-1
178 >= x11-libs/libX11-1.3
179 >= x11-libs/libXfixes-4
180 >= x11-libs/libXext-1.1
181 >= x11-libs/libdrm-2.4.20"
182
183 unset preinstall
184 unset postinstall
185 }
186
187 split_info_xf86-input-virtualbox()
188 {
189 DESCRIPTION="VirtualBox X11 mouse driver."
190 PCATEGORIE="x11-drivers"
191 DEPEND=">= x11-base/xorg-server-1.8"
192
193 unset preinstall
194 unset postinstall
195 }
196
197 src_prepare()
198 {
199 munpack ${SRCFILE} || die
200 cd ${SRCDIR}
201
202 # add magellan support to VBoxSysInfo.sh
203 mpatch ${PNAME}-1.5.4-magellan.patch || die
204
205 # magellan-branding, enables "magellan" guest-definitions
206 mpatch ${PNAME}-4.0.10-magellan-branding.patch || die
207
208 # magellan-branding, adds magellan icons used in branding patch
209 mpatch -Np1 ${PNAME}-4.0.0-magellan-os-icons.patch || die
210
211 # add magellan support to additions installers
212 mpatch ${PNAME}-3.1.4-additions-magellan.patch || die
213
214 # add magellan support to vboxdrv and webservice installer
215 mpatch ${PNAME}-4.0.0-vboxdrv-magellan.patch || die
216
217 # add magellan support to balloon-driver, routines webservice rc
218 mpatch ${PNAME}-4.0.10-routines-magellan.patch || die
219
220 # fixes compile issues with qt on magellan
221 # create a fake qtdir to fix /usr/include/qt issue without patching
222 install -d ${SRCDIR}/qt || die
223 ln -snf ${QTDIR}/bin ${SRCDIR}/qt || die
224 ln -snf ${QTDIR}/$(mlibdir) ${SRCDIR}/qt/lib || die
225 ln -snf ${QTDIR}/include/qt ${SRCDIR}/qt/include || die
226
227 # do not build testcases to save compile time
228 echo 'VBOX_WITH_TESTCASES :=' > ${SRCDIR}/LocalConfig.kmk || die
229 echo 'VBOX_WITH_TESTSUITE :=' >> ${SRCDIR}/LocalConfig.kmk || die
230 # tell vbox where to find java
231 echo "VBOX_JAVA_HOME = ${JAVA_HOME}" >> ${SRCDIR}/LocalConfig.kmk || die
232 # paths, origin, hardening
233 echo 'VBOX_WITH_HARDENING := 1' >> ${SRCDIR}/LocalConfig.kmk || die
234 echo 'VBOX_WITH_ORIGIN :=' >> ${SRCDIR}/LocalConfig.kmk || die
235 echo "VBOX_PATH_APP_PRIVATE_ARCH := /usr/$(mlibdir)/virtualbox" >> ${SRCDIR}/LocalConfig.kmk || die
236 echo 'VBOX_PATH_SHARED_LIBS := $(VBOX_PATH_APP_PRIVATE_ARCH)' >> ${SRCDIR}/LocalConfig.kmk || die
237 echo 'VBOX_WITH_RUNPATH := $(VBOX_PATH_APP_PRIVATE_ARCH)' >> ${SRCDIR}/LocalConfig.kmk || die
238 echo 'VBOX_PATH_APP_PRIVATE := /usr/share/virtualbox' >> ${SRCDIR}/LocalConfig.kmk || die
239 echo 'VBOX_PATH_APP_DOCS = $(VBOX_PATH_PACKAGE_DOCS)' >> ${SRCDIR}/LocalConfig.kmk || die
240 }
241
242 src_compile()
243 {
244 cd ${SRCDIR}
245
246 # use our fake qt dir and disable pulseaudio support
247 ./configure --with-qt-dir="${SRCDIR}/qt" --disable-pulse --disable-docs || die
248 source ./env.sh || die
249 kmk ${MAKEOPTS} || die
250 }
251
252 src_install_virtualbox()
253 {
254 # virtualbox installs binaries in x86 or amd64 out dir
255 local myarch
256 case ${ARCH} in
257 i*86) myarch=x86;;
258 x86_64) myarch=amd64;;
259 esac
260
261 cd ${SRCDIR}/out/linux.${myarch}/release/bin
262
263 # needed directories
264 minstalldir /etc/udev/rules.d || die
265 minstalldir /etc/vbox || die
266 minstalldir /usr/$(mlibdir)/${PNAME} || die
267 minstalldir /usr/bin || die
268 minstalldir /usr/sbin || die
269
270 # prune unneeded stuff
271 rm -v tst* || die
272 rm -rv testcase || die
273 rm -rv sdk || die
274
275 # move binaries to dest
276 cp -av * ${BINDIR}/usr/$(mlibdir)/${PNAME} || die
277
278 # fix permissions
279 chmod -v 0755 ${BINDIR}/usr/$(mlibdir)/${PNAME}/{,additions/}*.so || die
280
281 # remove additions
282 rm -rv ${BINDIR}/usr/$(mlibdir)/${PNAME}/additions/* || die
283
284 # fix permissions
285 mchown root:virtualbox /usr/$(mlibdir)/${PNAME}/VirtualBox || die
286 mchown root:virtualbox /usr/$(mlibdir)/${PNAME}/VBoxBFE || die
287 mchown root:virtualbox /usr/$(mlibdir)/${PNAME}/VBoxSDL || die
288 mchown root:virtualbox /usr/$(mlibdir)/${PNAME}/VBoxHeadless || die
289 mchown root:virtualbox /usr/$(mlibdir)/${PNAME}/VBoxManage || die
290 mchown root:virtualbox /usr/$(mlibdir)/${PNAME}/VBoxSVC || die
291 mchown root:virtualbox /usr/$(mlibdir)/${PNAME}/VBoxXPCOMIPCD || die
292 mchown root:virtualbox /usr/$(mlibdir)/${PNAME}/VBoxTunctl || die
293 mchown root:virtualbox /usr/$(mlibdir)/${PNAME}/VBoxNetAdpCtl || die
294 mchown root:virtualbox /usr/$(mlibdir)/${PNAME}/VBoxNetDHCP || die
295 mchown root:virtualbox /usr/$(mlibdir)/${PNAME}/VBoxNetAdpCtl || die
296 mchown root:virtualbox /usr/$(mlibdir)/${PNAME}/VBoxTestOGL || die
297
298 # virtualbox needs now suid-bits to run
299 mchmod 4750 /usr/$(mlibdir)/${PNAME}/VirtualBox || die
300 mchmod 4750 /usr/$(mlibdir)/${PNAME}/VBoxBFE || die
301 mchmod 4750 /usr/$(mlibdir)/${PNAME}/VBoxSDL || die
302 mchmod 4750 /usr/$(mlibdir)/${PNAME}/VBoxHeadless || die
303 mchmod 4750 /usr/$(mlibdir)/${PNAME}/VBoxNetAdpCtl || die
304
305 # supply a additions.iso for client guest
306 minstallfile -s ${VBOX_ADDITIONS_ISO} /usr/$(mlibdir)/${PNAME}/additions/${VBOX_ADDITIONS_ISO/_${PVER}/} || die
307
308 # install a wrapper for some apps
309 minstallexec -s ${PNAME}-wrapper.sh-${VW_CVS_REV} /usr/bin/virtualbox || die
310 minstallexec -s ${PNAME}-wrapper.sh-${VW_CVS_REV} /usr/bin/vboxmanage || die
311 minstallexec -s ${PNAME}-wrapper.sh-${VW_CVS_REV} /usr/bin/vboxsdl || die
312 minstallexec -s ${PNAME}-wrapper.sh-${VW_CVS_REV} /usr/bin/vboxbfe || die
313 minstallexec -s ${PNAME}-wrapper.sh-${VW_CVS_REV} /usr/bin/vboxvrdp || die
314 minstallexec -s ${PNAME}-wrapper.sh-${VW_CVS_REV} /usr/bin/vboxheadless || die
315
316 # virtualbox-config
317 minstallexec -s ${PNAME}-config.sh-${VC_CVS_REV} /usr/sbin/${PNAME}-config || die
318
319 # versionfile needed by virtualbox-config
320 echo "${PVER}" > ${BINDIR}/usr/$(mlibdir)/${PNAME}/version || die
321
322 # configfile needed by serveral tools
323 echo "INSTALL_DIR=/usr/$(mlibdir)/virtualbox" > ${BINDIR}/etc/vbox/vbox.cfg || die
324
325 # other needed applinks
326 mlink /usr/$(mlibdir)/${PNAME}/VBoxTunctl /usr/bin/vboxtunctl || die
327
328 # fix libdir
329 local i
330 for i in virtualbox vboxmanage vboxsdl vboxbfe vboxvrdp vboxheadless
331 do
332 sed -i "s:^\(LIBDIR=\).*:\1/usr/$(mlibdir):" ${BINDIR}/usr/bin/${i} || die
333 done
334 sed -i "s:^\(LIBDIR=\).*:\1/usr/$(mlibdir):" ${BINDIR}/usr/sbin/${PNAME}-config || die
335
336 # install a udev rule
337 echo 'KERNEL=="vboxdrv", GROUP="virtualbox" MODE=660' > ${BINDIR}/etc/udev/rules.d/60-virtualbox.rules || die
338 # solves some problems with usb support on guest systems
339 echo 'SUBSYSTEM=="usb_device", ACTION!="remove", RUN="/lib/udev/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"' > ${BINDIR}/etc/udev/rules.d/60-virtualbox.rules || die
340 echo 'SUBSYSTEM=="usb", ACTION!="remove", ENV{DEVTYPE}=="usb_device", RUN="/lib/udev/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"' > ${BINDIR}/etc/udev/rules.d/60-virtualbox.rules || die
341 echo 'SUBSYSTEM=="usb_device", ACTION=="remove", RUN="/lib/udev/VBoxCreateUSBNode.sh --remove $major $minor"' > ${BINDIR}/etc/udev/rules.d/60-virtualbox.rules || die
342 echo 'SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN="/lib/udev/VBoxCreateUSBNode.sh --remove $major $minor"' > ${BINDIR}/etc/udev/rules.d/60-virtualbox.rules || die
343
344 # install a nice destop entry
345 minstallpixmap ${SRCDIR}/src/VBox/Frontends/VirtualBox/images/OSE/VirtualBox_64px.png ${PNAME}.png || die
346 minstall_desktop_icon \
347 --name VirtualBox \
348 --file ${PNAME} \
349 --comment "Run and manage virtual machines" \
350 --exec ${PNAME} \
351 --icon ${PNAME}.png \
352 --vendor innotek \
353 --categories System,Emulator \
354 || die
355
356 # docs
357 cd ${SRCDIR}
358 minstalldocs ChangeLog COPYING || die
359
360 # install usermanual
361 minstallfile -s ${VBOX_USER_MANUAL} /usr/share/doc/${PNAME}-${PVER} || die
362 }
363
364 src_install_virtualbox-guest-additions()
365 {
366 # virtualbox installs binaries in x86 or amd64 out dir
367 local myarch
368 case ${ARCH} in
369 i*86) myarch=x86;;
370 x86_64) myarch=amd64;;
371 esac
372
373 cd ${SRCDIR}/out/linux.${myarch}/release/bin/additions
374
375 # needed directories
376 minstalldir /etc/udev/rules.d || die
377 minstalldir /etc/xdg/autostart || die
378 minstalldir /usr/bin || die
379 minstalldir /usr/$(mlibdir)/virtualbox/additions || die
380 minstalldir /usr/sbin || die
381 minstalldir /usr/share/doc/${PNAME}-${PVER}
382 minstalldir /usr/src/vboxguest || die
383 minstalldir /usr/src/vboxsf || die
384 minstalldir /sbin || die
385
386 minstallexec mount.vboxsf /sbin || die
387 mchmod 4755 /sbin/mount.vboxsf
388
389 minstallexec VBoxService /usr/sbin/vboxguest-service || die
390 mchmod 4755 /usr/sbin/vboxguest-service || die
391
392 minstallexec VBoxControl /usr/bin || die
393 minstallexec VBoxClient /usr/bin || die
394 minstallexec ${SRCDIR}/src/VBox/Additions/x11/Installer/98vboxadd-xclient \
395 /usr/bin/VBoxClient-all || die
396
397 # udev rule for vboxdrv
398 echo 'KERNEL=="vboxguest", OWNER="vboxguest", GROUP="vboxguest", MODE="0660"' > ${BINDIR}/etc/udev/rules.d/60-virtualbox-guest-addition.rules || die
399 echo 'KERNEL=="vboxuser", OWNER="vboxguest", GROUP="vboxguest", MODE="0660"' >> ${BINDIR}/etc/udev/rules.d/60-virtualbox-guest-addition.rules || die
400
401 # VBoxClient autostart file
402 minstallfile -s vboxclient.desktop /etc/xdg/autostart || die
403
404 # sample xorg.conf
405 minstallfile -s xorg.conf.vbox /usr/share/doc/${PNAME}-${PVER} || die
406
407 # install initscript
408 minstallrc virtualbox-guest.rc-${VG_CVS_REV} virtualbox || die
409
410 # install vboxguest kernel sources
411 cd ${SRCDIR}/out/linux.${myarch}/release/bin/additions/src/
412 tar cvjf ${BINDIR}/usr/src/vboxguest/vboxguest-${PVER}.tar.bz2 vboxguest/ || die
413 minstallexec -s vboxguest.sh /usr/src/vboxguest/vboxguest.sh || die
414 # fix pver in vboxguest.sh
415 sed -i "s:@@PVER@@:${PVER}:" ${BINDIR}/usr/src/vboxguest/vboxguest.sh || die
416
417 # install vboxsf kernel sources
418 cd ${SRCDIR}/out/linux.${myarch}/release/bin/additions/src/
419 tar cvjf ${BINDIR}/usr/src/vboxsf/vboxsf-${PVER}.tar.bz2 vboxsf/ || die
420 minstallexec -s vboxsf.sh /usr/src/vboxsf/vboxsf.sh || die
421 # fix pver in vboxsf.sh
422 sed -i "s:@@PVER@@:${PVER}:" ${BINDIR}/usr/src/vboxsf/vboxsf.sh || die
423 }
424
425 src_install_xf86-video-virtualbox()
426 {
427 # virtualbox installs binaries in x86 or amd64 out dir
428 local myarch
429 case ${ARCH} in
430 i*86) myarch=x86;;
431 x86_64) myarch=amd64;;
432 esac
433
434 cd ${SRCDIR}/out/linux.${myarch}/release/bin/additions
435
436 # needed directories
437 minstalldir /usr/$(mlibdir)/dri || die
438 minstalldir /usr/$(mlibdir)/xorg/modules/drivers || die
439 minstalldir /usr/src/vboxvideo || die
440
441 # install xorg-1.8 server module
442 minstallfile vboxvideo_drv_18.so /usr/$(mlibdir)/xorg/modules/drivers/vboxvideo_drv.so || die
443
444 # install guest opengl driver
445 minstallfile VBoxOGL\* /usr/$(mlibdir) || die
446
447 # install guest dri driver
448 mlink /usr/$(mlibdir)/VBoxOGL.so /usr/$(mlibdir)/dri/vboxvideo_dri.so
449
450 # install drm-sources
451 cd ${SRCDIR}/out/linux.${myarch}/release/bin/additions/src/
452 tar cvjf ${BINDIR}/usr/src/vboxvideo/vboxvideo-${PVER}.tar.bz2 vboxvideo/ || die
453 minstallexec -s vboxvideo.sh /usr/src/vboxvideo/vboxvideo.sh || die
454 # fix pver in vboxvideo.sh
455 sed -i "s:@@PVER@@:${PVER}:" ${BINDIR}/usr/src/vboxvideo/vboxvideo.sh || die
456 }
457
458 src_install_xf86-input-virtualbox()
459 {
460 # virtualbox installs binaries in x86 or amd64 out dir
461 local myarch
462 case ${ARCH} in
463 i*86) myarch=x86;;
464 x86_64) myarch=amd64;;
465 esac
466
467 cd ${SRCDIR}/out/linux.${myarch}/release/bin/additions
468
469 # needed directories
470 minstalldir /usr/$(mlibdir)/xorg/modules/input || die
471
472 # install xorg-1.8 server module
473 minstallfile vboxmouse_drv_18.so /usr/$(mlibdir)/xorg/modules/input/vboxmouse_drv.so || die
474
475 # no hal support in xorg-1.8!
476 }
477