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
17 %undefine with_dist_kernel
20 %if "%{_alt_kernel}" != "%{nil}"
21 %undefine with_userspace
24 %define pname VirtualBox
26 Summary: VirtualBox OSE - x86 hardware virtualizer
27 Summary(pl.UTF-8): VirtualBox OSE - wirtualizator sprzętu x86
28 Name: %{pname}%{_alt_kernel}
32 Group: Applications/Emulators
33 Source0: http://www.virtualbox.org/download/%{version}/%{pname}-%{version}-OSE.tar.bz2
34 # Source0-md5: 0372a3a31326078f7849a0467d547a70
35 Source1: http://www.virtualbox.org/download/%{version}/UserManual.pdf
36 # Source1-md5: 32505857b575f0fb6f71ba1738c1e102
37 Source2: http://www.virtualbox.org/download/%{version}/VBoxGuestAdditions_%{version}.iso
38 # Source2-md5: 3cac7e911e545038102ff641cba66365
39 Source3: %{pname}-vboxdrv.init
40 Source4: %{pname}-vboxadd.init
41 Source5: %{pname}.desktop
43 Patch0: %{pname}-configure.patch
44 Patch1: %{pname}-qt-paths.patch
45 Patch2: %{pname}-shared-libstdc++.patch
46 Patch3: %{pname}-disable-xclient-build.patch
47 Patch4: %{pname}-configure-spaces.patch
48 URL: http://www.virtualbox.org/
50 BuildRequires: SDL-devel >= 1.2.7
51 BuildRequires: alsa-lib-devel >= 1.0.6
55 BuildRequires: gcc >= 5:3.2.3
58 %if %{with dist_kernel}
59 BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.20
62 BuildRequires: Qt3Support-devel
63 BuildRequires: libIDL-devel
64 BuildRequires: libpng >= 1.2.5
65 BuildRequires: libstdc++-devel >= 5:3.2.3
66 BuildRequires: libuuid-devel
67 BuildRequires: libxml2-devel >= 2.6.26
68 BuildRequires: libxslt-devel >= 1.1.17
69 BuildRequires: libxslt-progs >= 1.1.17
70 BuildRequires: pkgconfig
71 BuildRequires: pulseaudio-devel >= 0.9.0
72 BuildRequires: qt-devel >= 6:3.3.6
73 BuildRequires: qt-linguist
74 BuildRequires: qt4-build >= 4.2.0
76 BuildRequires: rpmbuild(macros) >= 1.379
79 BuildRequires: xalan-c-devel >= 1.10.0
80 BuildRequires: xerces-c-devel >= 2.6.0
81 BuildRequires: xorg-lib-libXcursor-devel
82 BuildRequires: zlib-devel >= 1.2.1
84 BuildRequires: gcc-multilib
85 BuildRequires: glibc-devel(i686)
86 BuildRequires: libstdc++-multilib-devel
89 Requires(post,preun): /sbin/chkconfig
90 Requires(postun): /usr/sbin/groupdel
91 Requires(pre): /usr/bin/getgid
92 Requires(pre): /usr/sbin/groupadd
95 ExclusiveArch: %{ix86} %{x8664}
96 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
105 InnoTek VirtualBox OSE is a general-purpose full virtualizer for x86
106 hardware. Targeted at server, desktop and embedded use, it is now the
107 only professional-quality virtualization solution that is also Open
110 Some of the features of VirtualBox OSE are:
112 Modularity: VirtualBox OSE has an extremely modular design with
113 well-defined internal programming interfaces and a client/server
114 design. This makes it easy to control it from several interfaces at
115 once: for example, you can start a virtual machine in a typical
116 virtual machine GUI and then control that machine from the command
117 line. VirtualBox OSE also comes with a full Software Development Kit:
118 even though it is Open Source Software, you don't have to hack the
119 source to write a new interface for VirtualBox OSE.
121 Virtual machine descriptions in XML: the configuration settings of
122 virtual machines are stored entirely in XML and are independent of the
123 local machines. Virtual machine definitions can therefore easily be
124 ported to other computers.
126 %description -l pl.UTF-8
127 InnoTek VirtualBox OSE jest emulatorem sprzętu x86. Kierowany do
128 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
129 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
130 również jako Otwarte Oprogramowanie.
132 Przykładowe cechy VirtualBoksa:
134 Modularność: VirtualBox OSE jest wysoce zmodularyzowanym produktem z
135 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
136 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
137 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
138 poziomu interfejsu graficznego, a później kontrolować ją z linii
139 poleceń. VirtualBox OSE dostarcza również pełny pakiet deweloperski,
140 co pozwala stworzyć dowolny inny interfejs zarządzania maszyną
143 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
144 wirtualnych są w całości przechowywane w XML-u i są niezależne od
145 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
146 konfigurację maszyny wirtualnej na inny komputer.
149 Summary: udev rules for VirtualBox OSE kernel modules
150 Summary(pl.UTF-8): Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
156 udev rules for VirtualBox OSE kernel modules.
158 %description udev -l pl.UTF-8
159 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa.
161 %package -n kernel%{_alt_kernel}-misc-vboxadd
162 Summary: Linux kernel module for VirtualBox OSE
163 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
164 Release: %{rel}@%{_kernel_ver_str}
166 Requires(post,postun): /sbin/depmod
167 Requires: dev >= 2.9.0-7
168 %if %{with dist_kernel}
169 %requires_releq_kernel
170 #Requires(postun): %%releq_kernel
172 Provides: kernel(vboxadd) = %{version}-%{rel}
174 %description -n kernel%{_alt_kernel}-misc-vboxadd
175 Linux kernel module vboxadd for VirtualBox OSE.
177 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
178 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
180 %package -n kernel%{_alt_kernel}-misc-vboxdrv
181 Summary: Linux kernel module for VirtualBox OSE
182 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
183 Release: %{rel}@%{_kernel_ver_str}
185 Requires(post,postun): /sbin/depmod
186 Requires: dev >= 2.9.0-7
187 %if %{with dist_kernel}
188 %requires_releq_kernel
189 Requires(postun): %releq_kernel
191 Provides: kernel(vboxdrv) = %{version}-%{rel}
193 %description -n kernel%{_alt_kernel}-misc-vboxdrv
194 Linux kernel module vboxdrv for VirtualBox OSE.
196 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
197 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
199 %package -n kernel%{_alt_kernel}-misc-vboxvfs
200 Summary: Linux kernel module for VirtualBox OSE
201 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
202 Release: %{rel}@%{_kernel_ver_str}
204 Requires(post,postun): /sbin/depmod
205 Requires: dev >= 2.9.0-7
206 %if %{with dist_kernel}
207 %requires_releq_kernel
208 Requires(postun): %releq_kernel
210 Provides: kernel(vboxvfs) = %{version}-%{rel}
212 %description -n kernel%{_alt_kernel}-misc-vboxvfs
213 Linux kernel module vboxvfs for VirtualBox OSE.
215 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
216 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
218 %package -n xorg-driver-input-vboxmouse
219 Summary: X.org mouse driver for VirtualBox OSE guest OS
220 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
222 Group: X11/Applications
223 Requires: xorg-xserver-server >= 1.0.99.901
225 %description -n xorg-driver-input-vboxmouse
226 X.org mouse driver for VirtualBox OSE guest OS.
228 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
229 Sterownik myszy dla systemu gościa w VirtualBoksie.
231 %package -n xorg-driver-video-vboxvideo
232 Summary: X.org video driver for VirtualBox OSE guest OS
233 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
235 Group: X11/Applications
236 Requires: xorg-xserver-server >= 1.0.99.901
238 %description -n xorg-driver-video-vboxvideo
239 X.org video driver for VirtualBox OSE guest OS.
241 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
242 Sterownik grafiki dla systemu gościa w VirtualBoksie.
245 %setup -q -n %{pname}-%{version}
256 cat <<'EOF' > udev.conf
257 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
258 KERNEL=="vboxadd", NAME="%k", GROUP="vbox", MODE="0660"
263 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
264 ../src/VBox/Additions/linux/export_modules modules.tar.gz
265 tar -zxf modules.tar.gz && rm -f modules.tar.gz
266 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
267 tar -zxf modules.tar.gz && rm -f modules.tar.gz
270 # HACK, is this really safe on x86_64?
271 sed -i -e '/#.*define.*RTMEMALLOC_EXEC_HEAP/d' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
275 %if %{with userspace}
277 --with-gcc="%{__cc}" \
278 --with-g++="%{__cxx}" \
281 . ./env.sh && kmk -j1
286 %build_kernel_modules -m vboxadd -C vboxadd
287 %build_kernel_modules -m vboxdrv -C vboxdrv
288 cp -a vboxadd/Module.symvers vboxvfs
289 %build_kernel_modules -m vboxvfs -C vboxvfs -c
294 rm -rf $RPM_BUILD_ROOT
296 %if %{with userspace}
298 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
299 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
301 install %{SOURCE6} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
302 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
303 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
304 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
308 install out/linux.%{outdir}/release/bin/VBox*.rel \
309 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
312 install out/linux.%{outdir}/release/bin/VBox*.so \
313 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
314 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
315 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
317 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
318 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
320 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
321 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
322 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
324 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
325 $RPM_BUILD_ROOT%{_bindir}
328 install -d $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input}
329 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
330 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
331 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
332 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
335 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
336 install %{SOURCE5} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
338 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
339 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
343 install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
344 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxdrv
345 install %{SOURCE4} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxadd
346 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
347 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
348 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
352 rm -rf $RPM_BUILD_ROOT
355 %groupadd -g 221 -r -f vbox
359 NOTE: You must also install kernel module for this software to work
360 kernel-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
361 kernel-desktop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
362 kernel-laptop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
363 kernel-vanilla-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
366 Depending on which kernel brand You use.
371 if [ "$1" = "0" ]; then
375 %post -n kernel%{_alt_kernel}-misc-vboxadd
376 %depmod %{_kernel_ver}
377 /sbin/chkconfig --add vboxadd
378 %service vboxadd restart "VirtualBox OSE guest additions driver"
380 %postun -n kernel%{_alt_kernel}-misc-vboxadd
381 %depmod %{_kernel_ver}
383 %preun -n kernel%{_alt_kernel}-misc-vboxadd
384 if [ "$1" = "0" ]; then
385 %service vboxadd stop
386 /sbin/chkconfig --del vboxadd
389 %post -n kernel%{_alt_kernel}-misc-vboxdrv
390 %depmod %{_kernel_ver}
391 /sbin/chkconfig --add vboxdrv
392 %service vboxdrv restart "VirtualBox OSE driver"
394 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
395 %depmod %{_kernel_ver}
397 %preun -n kernel%{_alt_kernel}-misc-vboxdrv
398 if [ "$1" = "0" ]; then
399 %service vboxdrv stop
400 /sbin/chkconfig --del vboxdrv
403 %post -n kernel%{_alt_kernel}-misc-vboxvfs
404 %depmod %{_kernel_ver}
406 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
407 %depmod %{_kernel_ver}
409 %if %{with userspace}
411 %defattr(644,root,root,755)
413 %dir %{_libdir}/VirtualBox
414 %dir %{_libdir}/VirtualBox/additions
415 %dir %{_libdir}/VirtualBox/components
416 %dir %{_libdir}/VirtualBox/nls
417 %attr(755,root,root) %{_bindir}/mountvboxsf
418 %attr(755,root,root) %{_bindir}/vditool
419 %attr(755,root,root) %{_bindir}/VBox*
420 %attr(755,root,root) %{_bindir}/VirtualBox
421 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
422 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
423 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
424 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
425 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
426 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
427 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
429 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
431 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
432 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
433 %{_libdir}/VirtualBox/*.gc
434 %{_libdir}/VirtualBox/*.r0
435 %{_libdir}/VirtualBox/*.xpt
436 %{_libdir}/VirtualBox/additions/*
437 %{_libdir}/VirtualBox/components/*
438 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
439 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
440 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
441 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
442 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
443 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
444 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
445 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
446 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
447 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
448 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
449 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
450 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
451 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
452 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
453 %lang(pt) %{_libdir}/VirtualBox/nls/*_pt.qm
454 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
455 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
456 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
457 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
458 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
459 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
460 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
461 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
462 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
463 %{_pixmapsdir}/VBox.png
464 %{_desktopdir}/%{pname}.desktop
467 %defattr(644,root,root,755)
468 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
470 # Drivers are for Guest OS, which is 32-bit.
472 %files -n xorg-driver-input-vboxmouse
473 %defattr(644,root,root,755)
474 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
476 %files -n xorg-driver-video-vboxvideo
477 %defattr(644,root,root,755)
478 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
483 %files -n kernel%{_alt_kernel}-misc-vboxadd
484 %defattr(644,root,root,755)
485 %attr(754,root,root) /etc/rc.d/init.d/vboxadd
486 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
488 %files -n kernel%{_alt_kernel}-misc-vboxdrv
489 %defattr(644,root,root,755)
490 %attr(754,root,root) /etc/rc.d/init.d/vboxdrv
491 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
493 %files -n kernel%{_alt_kernel}-misc-vboxvfs
494 %defattr(644,root,root,755)
495 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*