3 # - Find how to compile with PLD CFLAGS/CXXFLAGS/LDFLAGS.
5 # - Package utils (and write initscripts ?) for Guest OS.
6 # - Check License of VBoxGuestAdditions_*.iso, it's propably not GPL v2.
7 # If so check if it is distributable.
10 %bcond_without dist_kernel # without distribution kernel
11 %bcond_without kernel # don't build kernel module
12 %bcond_without userspace # don't build userspace package
16 %undefine with_dist_kernel
18 %if "%{_alt_kernel}" != "%{nil}"
19 %undefine with_userspace
21 %if %{without userspace}
22 # nothing to be placed to debuginfo package
23 %define _enable_debug_packages 0
27 %define pname VirtualBox
28 Summary: VirtualBox OSE - x86 hardware virtualizer
29 Summary(pl.UTF-8): VirtualBox OSE - wirtualizator sprzętu x86
30 Name: %{pname}%{_alt_kernel}
34 Group: Applications/Emulators
35 #Source0: http://download.virtualbox.org/virtualbox/%{version}/%{pname}-%{version}-OSE.tar.bz2
36 Source0: %{pname}-%{version}-OSE.tar.bz2
37 # Source0-md5: bcd403d97e2caf8a634584df34766a4d
38 #Source1: http://download.virtualbox.org/virtualbox/%{version}/UserManual.pdf
39 Source1: UserManual.pdf
40 # Source1-md5: 61f8fa9321b65f8b2e50cfc076d671cb
41 #Source2: http://download.virtualbox.org/virtualbox/%{version}/VBoxGuestAdditions_%{version}.iso
42 Source2: VBoxGuestAdditions_%{version}.iso
43 # Source2-md5: f6514091a6cca90cdc22591a789ed9b0
44 Source3: %{pname}-vboxdrv.init
45 Source4: %{pname}-vboxadd.init
46 Source5: %{pname}-vboxvfs.init
47 Source6: %{pname}.desktop
49 Patch0: %{pname}-configure.patch
50 Patch1: %{pname}-qt-paths.patch
51 Patch2: %{pname}-shared-libstdc++.patch
52 Patch3: %{pname}-disable-xclient-build.patch
53 Patch4: %{pname}-configure-spaces.patch
54 Patch5: %{pname}-build_fix.patch
55 URL: http://www.virtualbox.org/
56 BuildRequires: rpmbuild(macros) >= 1.379
59 BuildRequires: gcc-multilib
60 BuildRequires: glibc-devel(i686)
61 BuildRequires: libstdc++-multilib-devel
63 %if "%{pld_release}" == "th"
64 BuildRequires: compat-gcc-34
66 %if "%{pld_release}" == "ti"
69 %if "%{pld_release}" == "ac"
70 BuildRequires: XFree86-devel
72 BuildRequires: xorg-lib-libXcursor-devel
73 BuildRequires: xorg-lib-libXmu-devel
75 BuildRequires: OpenGL-devel
76 BuildRequires: QtGui-devel
77 BuildRequires: SDL-devel >= 1.2.7
79 BuildRequires: alsa-lib-devel >= 1.0.6
83 BuildRequires: gcc >= 5:3.2.3
84 BuildRequires: libIDL-devel
85 BuildRequires: libpng-devel >= 1.2.5
86 BuildRequires: libstdc++-devel >= 5:3.2.3
87 BuildRequires: libuuid-devel
88 BuildRequires: libxml2-devel >= 2.6.26
89 BuildRequires: libxslt-devel >= 1.1.17
90 BuildRequires: libxslt-progs >= 1.1.17
91 BuildRequires: pkgconfig
92 BuildRequires: pulseaudio-devel >= 0.9.0
93 BuildRequires: python-devel
94 BuildRequires: qt4-build >= 4.2.0
95 BuildRequires: qt4-linguist
96 BuildRequires: sed >= 4.0
98 BuildRequires: xalan-c-devel >= 1.10.0
99 BuildRequires: xerces-c-devel >= 2.6.0
100 BuildRequires: zlib-devel >= 1.2.1
102 %if %{with dist_kernel}
103 BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.20
105 Requires(post,preun): /sbin/chkconfig
106 Requires(postun): /usr/sbin/groupdel
107 Requires(pre): /usr/bin/getgid
108 Requires(pre): /usr/sbin/groupadd
110 Provides: group(vbox)
111 ExclusiveArch: %{ix86} %{x8664}
112 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
121 InnoTek VirtualBox OSE is a general-purpose full virtualizer for x86
122 hardware. Targeted at server, desktop and embedded use, it is now the
123 only professional-quality virtualization solution that is also Open
126 Some of the features of VirtualBox OSE are:
128 Modularity: VirtualBox OSE has an extremely modular design with
129 well-defined internal programming interfaces and a client/server
130 design. This makes it easy to control it from several interfaces at
131 once: for example, you can start a virtual machine in a typical
132 virtual machine GUI and then control that machine from the command
133 line. VirtualBox OSE also comes with a full Software Development Kit:
134 even though it is Open Source Software, you don't have to hack the
135 source to write a new interface for VirtualBox OSE.
137 Virtual machine descriptions in XML: the configuration settings of
138 virtual machines are stored entirely in XML and are independent of the
139 local machines. Virtual machine definitions can therefore easily be
140 ported to other computers.
142 %description -l pl.UTF-8
143 InnoTek VirtualBox OSE jest emulatorem sprzętu x86. Kierowany do
144 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
145 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
146 również jako Otwarte Oprogramowanie.
148 Przykładowe cechy VirtualBoksa:
150 Modularność: VirtualBox OSE jest wysoce zmodularyzowanym produktem z
151 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
152 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
153 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
154 poziomu interfejsu graficznego, a później kontrolować ją z linii
155 poleceń. VirtualBox OSE dostarcza również pełny pakiet deweloperski,
156 co pozwala stworzyć dowolny inny interfejs zarządzania maszyną
159 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
160 wirtualnych są w całości przechowywane w XML-u i są niezależne od
161 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
162 konfigurację maszyny wirtualnej na inny komputer.
165 Summary: udev rules for VirtualBox OSE kernel modules
166 Summary(pl.UTF-8): Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
172 udev rules for VirtualBox OSE kernel modules.
174 %description udev -l pl.UTF-8
175 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa.
177 %package -n kernel%{_alt_kernel}-misc-vboxadd
178 Summary: VirtualBox OSE Guest Additions for Linux Module
179 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
180 Release: %{rel}@%{_kernel_ver_str}
182 Requires(post,postun): /sbin/depmod
183 Requires: dev >= 2.9.0-7
184 %if %{with dist_kernel}
185 %requires_releq_kernel
186 Requires(postun): %releq_kernel
188 Provides: kernel(vboxadd) = %{version}-%{rel}
190 %description -n kernel%{_alt_kernel}-misc-vboxadd
191 VirtualBox OSE Guest Additions for Linux Module.
193 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
194 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
196 %package -n kernel%{_alt_kernel}-misc-vboxdrv
197 Summary: VirtualBox OSE Support Driver
198 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
199 Release: %{rel}@%{_kernel_ver_str}
201 Requires(post,postun): /sbin/depmod
202 Requires: dev >= 2.9.0-7
203 %if %{with dist_kernel}
204 %requires_releq_kernel
205 Requires(postun): %releq_kernel
207 Provides: kernel(vboxdrv) = %{version}-%{rel}
209 %description -n kernel%{_alt_kernel}-misc-vboxdrv
210 VirtualBox OSE Support Driver.
212 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
213 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
215 %package -n kernel%{_alt_kernel}-misc-vboxvfs
216 Summary: Host file system access VFS for VirtualBox OSE
217 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
218 Release: %{rel}@%{_kernel_ver_str}
220 Requires(post,postun): /sbin/depmod
221 Requires: dev >= 2.9.0-7
222 Requires: kernel%{_alt_kernel}-misc-vboxadd
223 %if %{with dist_kernel}
224 %requires_releq_kernel
225 Requires(postun): %releq_kernel
227 Provides: kernel(vboxvfs) = %{version}-%{rel}
229 %description -n kernel%{_alt_kernel}-misc-vboxvfs
230 Host file system access VFS for VirtualBox OSE.
232 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
233 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
235 %package -n xorg-driver-input-vboxmouse
236 Summary: X.org mouse driver for VirtualBox OSE guest OS
237 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
239 Group: X11/Applications
240 Requires: xorg-xserver-server >= 1.0.99.901
242 %description -n xorg-driver-input-vboxmouse
243 X.org mouse driver for VirtualBox OSE guest OS.
245 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
246 Sterownik myszy dla systemu gościa w VirtualBoksie.
248 %package -n xorg-driver-video-vboxvideo
249 Summary: X.org video driver for VirtualBox OSE guest OS
250 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
252 Group: X11/Applications
253 Requires: xorg-xserver-server >= 1.0.99.901
255 %description -n xorg-driver-video-vboxvideo
256 X.org video driver for VirtualBox OSE guest OS.
258 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
259 Sterownik grafiki dla systemu gościa w VirtualBoksie.
262 %setup -q -n %{pname}-%{version}
274 cat <<'EOF' > udev.conf
275 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
276 KERNEL=="vboxadd", NAME="%k", GROUP="vbox", MODE="0660"
280 sed 's#@LIBDIR@#%{_libdir}#' < %{SOURCE7} > VirtualBox-wrapper.sh
282 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
283 ../src/VBox/Additions/linux/export_modules modules.tar.gz
284 tar -zxf modules.tar.gz && rm -f modules.tar.gz
285 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
286 tar -zxf modules.tar.gz && rm -f modules.tar.gz
287 sed -i -e 's/-DVBOX_WITH_HARDENING//g' vboxdrv/Makefile
290 %if %{with userspace}
292 --with-gcc="%{__cc}" \
293 %if "%{pld_release}" == "th"
294 --with-gcc-compat="gcc-3.4" \
296 %if "%{pld_release}" == "ti"
297 --with-gcc-compat="gcc3" \
299 --with-g++="%{__cxx}" \
300 --disable-hardening \
305 kmk -j1 %{?with_verbose:KBUILD_VERBOSE=3}
310 %build_kernel_modules -m vboxadd -C vboxadd
311 %build_kernel_modules -m vboxdrv -C vboxdrv
312 cp -a vboxadd/Module.symvers vboxvfs
313 %build_kernel_modules -m vboxvfs -C vboxvfs -c
318 rm -rf $RPM_BUILD_ROOT
320 %if %{with userspace}
322 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
323 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
325 install VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_libdir}/VirtualBox
326 for f in {VBox{BFE,Headless,Manage,SDL,SVC,Tunctl,XPCOMIPCD},VirtualBox,vditool}; do
327 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
328 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
332 install out/linux.%{outdir}/release/bin/VBox*.rel \
333 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
336 install out/linux.%{outdir}/release/bin/VBox*.so \
337 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
338 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0}} \
339 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
341 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
342 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
344 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
345 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
346 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
348 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
349 $RPM_BUILD_ROOT%{_bindir}
352 install -d $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input}
353 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_15.so \
354 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
355 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_15.so \
356 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
359 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
360 install %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
362 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
363 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
367 install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
368 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxdrv
369 install %{SOURCE4} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxadd
370 install %{SOURCE5} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxvfs
371 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
372 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
373 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
377 rm -rf $RPM_BUILD_ROOT
380 %groupadd -g 221 -r -f vbox
384 NOTE: You must also install kernel module for this software to work
385 kernel-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
386 kernel-desktop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
387 kernel-laptop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
388 kernel-vanilla-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
391 Depending on which kernel brand You use.
396 if [ "$1" = "0" ]; then
400 %post -n kernel%{_alt_kernel}-misc-vboxadd
401 %depmod %{_kernel_ver}
402 /sbin/chkconfig --add vboxadd
403 %service vboxadd restart "VirtualBox OSE guest additions driver"
405 %postun -n kernel%{_alt_kernel}-misc-vboxadd
406 %depmod %{_kernel_ver}
408 %preun -n kernel%{_alt_kernel}-misc-vboxadd
409 if [ "$1" = "0" ]; then
410 %service vboxadd stop
411 /sbin/chkconfig --del vboxadd
414 %post -n kernel%{_alt_kernel}-misc-vboxdrv
415 %depmod %{_kernel_ver}
416 /sbin/chkconfig --add vboxdrv
417 %service vboxdrv restart "VirtualBox OSE driver"
419 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
420 %depmod %{_kernel_ver}
422 %preun -n kernel%{_alt_kernel}-misc-vboxdrv
423 if [ "$1" = "0" ]; then
424 %service vboxdrv stop
425 /sbin/chkconfig --del vboxdrv
428 %post -n kernel%{_alt_kernel}-misc-vboxvfs
429 %depmod %{_kernel_ver}
430 /sbin/chkconfig --add vboxvfs
431 %service vboxvfs restart "VirtualBox OSE guest additions VFS driver"
433 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
434 %depmod %{_kernel_ver}
436 %preun -n kernel%{_alt_kernel}-misc-vboxvfs
437 if [ "$1" = "0" ]; then
438 %service vboxvfs stop
439 /sbin/chkconfig --del vboxvfs
442 %if %{with userspace}
444 %defattr(644,root,root,755)
446 %dir %{_libdir}/VirtualBox
447 %dir %{_libdir}/VirtualBox/additions
448 %dir %{_libdir}/VirtualBox/components
449 %dir %{_libdir}/VirtualBox/nls
450 %attr(755,root,root) %{_bindir}/mountvboxsf
451 %attr(755,root,root) %{_bindir}/vditool
452 %attr(755,root,root) %{_bindir}/VBox*
453 %attr(755,root,root) %{_bindir}/VirtualBox
454 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
455 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
456 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
457 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxHeadless
458 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
459 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
460 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxTunctl
461 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
462 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
464 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
466 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
467 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
468 %{_libdir}/VirtualBox/*.gc
469 %{_libdir}/VirtualBox/*.r0
470 %{_libdir}/VirtualBox/additions/*
471 %{_libdir}/VirtualBox/components/*
472 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
473 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
474 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
475 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
476 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
477 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
478 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
479 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
480 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
481 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
482 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
483 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
484 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
485 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
486 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
487 %lang(pt) %{_libdir}/VirtualBox/nls/*_pt.qm
488 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
489 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
490 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
491 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
492 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
493 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
494 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
495 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
496 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
497 %{_pixmapsdir}/VBox.png
498 %{_desktopdir}/%{pname}.desktop
501 %defattr(644,root,root,755)
502 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
504 # Drivers are for Guest OS, which is 32-bit.
506 %files -n xorg-driver-input-vboxmouse
507 %defattr(644,root,root,755)
508 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
510 %files -n xorg-driver-video-vboxvideo
511 %defattr(644,root,root,755)
512 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
517 %files -n kernel%{_alt_kernel}-misc-vboxadd
518 %defattr(644,root,root,755)
519 %attr(754,root,root) /etc/rc.d/init.d/vboxadd
520 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
522 %files -n kernel%{_alt_kernel}-misc-vboxdrv
523 %defattr(644,root,root,755)
524 %attr(754,root,root) /etc/rc.d/init.d/vboxdrv
525 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
527 %files -n kernel%{_alt_kernel}-misc-vboxvfs
528 %defattr(644,root,root,755)
529 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*