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
56 BuildRequires: gcc < 5:4.3
59 %if %{with dist_kernel}
60 BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.20
63 BuildRequires: Qt3Support-devel
64 BuildRequires: libIDL-devel
65 BuildRequires: libpng >= 1.2.5
66 BuildRequires: libstdc++-devel >= 5:3.2.3
67 BuildRequires: libuuid-devel
68 BuildRequires: libxml2-devel >= 2.6.26
69 BuildRequires: libxslt-devel >= 1.1.17
70 BuildRequires: libxslt-progs >= 1.1.17
71 BuildRequires: pkgconfig
72 BuildRequires: pulseaudio-devel >= 0.9.0
73 BuildRequires: qt-devel >= 6:3.3.6
74 BuildRequires: qt-linguist
75 BuildRequires: qt4-build >= 4.2.0
77 BuildRequires: rpmbuild(macros) >= 1.379
80 BuildRequires: xalan-c-devel >= 1.10.0
81 BuildRequires: xerces-c-devel >= 2.6.0
82 BuildRequires: xorg-lib-libXcursor-devel
83 BuildRequires: zlib-devel >= 1.2.1
85 BuildRequires: gcc-multilib
86 BuildRequires: glibc-devel(i686)
87 BuildRequires: libstdc++-multilib-devel
90 Requires(post,preun): /sbin/chkconfig
91 Requires(postun): /usr/sbin/groupdel
92 Requires(pre): /usr/bin/getgid
93 Requires(pre): /usr/sbin/groupadd
96 ExclusiveArch: %{ix86} %{x8664}
97 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
106 InnoTek VirtualBox OSE is a general-purpose full virtualizer for x86
107 hardware. Targeted at server, desktop and embedded use, it is now the
108 only professional-quality virtualization solution that is also Open
111 Some of the features of VirtualBox OSE are:
113 Modularity: VirtualBox OSE has an extremely modular design with
114 well-defined internal programming interfaces and a client/server
115 design. This makes it easy to control it from several interfaces at
116 once: for example, you can start a virtual machine in a typical
117 virtual machine GUI and then control that machine from the command
118 line. VirtualBox OSE also comes with a full Software Development Kit:
119 even though it is Open Source Software, you don't have to hack the
120 source to write a new interface for VirtualBox OSE.
122 Virtual machine descriptions in XML: the configuration settings of
123 virtual machines are stored entirely in XML and are independent of the
124 local machines. Virtual machine definitions can therefore easily be
125 ported to other computers.
127 %description -l pl.UTF-8
128 InnoTek VirtualBox OSE jest emulatorem sprzętu x86. Kierowany do
129 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
130 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
131 również jako Otwarte Oprogramowanie.
133 Przykładowe cechy VirtualBoksa:
135 Modularność: VirtualBox OSE jest wysoce zmodularyzowanym produktem z
136 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
137 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
138 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
139 poziomu interfejsu graficznego, a później kontrolować ją z linii
140 poleceń. VirtualBox OSE dostarcza również pełny pakiet deweloperski,
141 co pozwala stworzyć dowolny inny interfejs zarządzania maszyną
144 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
145 wirtualnych są w całości przechowywane w XML-u i są niezależne od
146 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
147 konfigurację maszyny wirtualnej na inny komputer.
150 Summary: udev rules for VirtualBox OSE kernel modules
151 Summary(pl.UTF-8): Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
157 udev rules for VirtualBox OSE kernel modules.
159 %description udev -l pl.UTF-8
160 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa.
162 %package -n kernel%{_alt_kernel}-misc-vboxadd
163 Summary: Linux kernel module for VirtualBox OSE
164 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
165 Release: %{rel}@%{_kernel_ver_str}
167 Requires(post,postun): /sbin/depmod
168 Requires: dev >= 2.9.0-7
169 %if %{with dist_kernel}
170 %requires_releq_kernel
171 #Requires(postun): %%releq_kernel
173 Provides: kernel(vboxadd) = %{version}-%{rel}
175 %description -n kernel%{_alt_kernel}-misc-vboxadd
176 Linux kernel module vboxadd for VirtualBox OSE.
178 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
179 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
181 %package -n kernel%{_alt_kernel}-misc-vboxdrv
182 Summary: Linux kernel module for VirtualBox OSE
183 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
184 Release: %{rel}@%{_kernel_ver_str}
186 Requires(post,postun): /sbin/depmod
187 Requires: dev >= 2.9.0-7
188 %if %{with dist_kernel}
189 %requires_releq_kernel
190 Requires(postun): %releq_kernel
192 Provides: kernel(vboxdrv) = %{version}-%{rel}
194 %description -n kernel%{_alt_kernel}-misc-vboxdrv
195 Linux kernel module vboxdrv for VirtualBox OSE.
197 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
198 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
200 %package -n kernel%{_alt_kernel}-misc-vboxvfs
201 Summary: Linux kernel module for VirtualBox OSE
202 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
203 Release: %{rel}@%{_kernel_ver_str}
205 Requires(post,postun): /sbin/depmod
206 Requires: dev >= 2.9.0-7
207 %if %{with dist_kernel}
208 %requires_releq_kernel
209 Requires(postun): %releq_kernel
211 Provides: kernel(vboxvfs) = %{version}-%{rel}
213 %description -n kernel%{_alt_kernel}-misc-vboxvfs
214 Linux kernel module vboxvfs for VirtualBox OSE.
216 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
217 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
219 %package -n xorg-driver-input-vboxmouse
220 Summary: X.org mouse driver for VirtualBox OSE guest OS
221 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
223 Group: X11/Applications
224 Requires: xorg-xserver-server >= 1.0.99.901
226 %description -n xorg-driver-input-vboxmouse
227 X.org mouse driver for VirtualBox OSE guest OS.
229 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
230 Sterownik myszy dla systemu gościa w VirtualBoksie.
232 %package -n xorg-driver-video-vboxvideo
233 Summary: X.org video driver for VirtualBox OSE guest OS
234 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
236 Group: X11/Applications
237 Requires: xorg-xserver-server >= 1.0.99.901
239 %description -n xorg-driver-video-vboxvideo
240 X.org video driver for VirtualBox OSE guest OS.
242 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
243 Sterownik grafiki dla systemu gościa w VirtualBoksie.
246 %setup -q -n %{pname}-%{version}
257 cat <<'EOF' > udev.conf
258 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
259 KERNEL=="vboxadd", NAME="%k", GROUP="vbox", MODE="0660"
264 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
265 ../src/VBox/Additions/linux/export_modules modules.tar.gz
266 tar -zxf modules.tar.gz && rm -f modules.tar.gz
267 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
268 tar -zxf modules.tar.gz && rm -f modules.tar.gz
271 # HACK, is this really safe on x86_64?
272 sed -i -e '/#.*define.*RTMEMALLOC_EXEC_HEAP/d' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
276 %if %{with userspace}
278 --with-gcc="%{__cc}" \
279 --with-g++="%{__cxx}" \
282 . ./env.sh && kmk -j1
287 %build_kernel_modules -m vboxadd -C vboxadd
288 %build_kernel_modules -m vboxdrv -C vboxdrv
289 cp -a vboxadd/Module.symvers vboxvfs
290 %build_kernel_modules -m vboxvfs -C vboxvfs -c
295 rm -rf $RPM_BUILD_ROOT
297 %if %{with userspace}
299 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
300 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
302 install %{SOURCE6} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
303 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
304 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
305 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
309 install out/linux.%{outdir}/release/bin/VBox*.rel \
310 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
313 install out/linux.%{outdir}/release/bin/VBox*.so \
314 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
315 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
316 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
318 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
319 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
321 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
322 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
323 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
325 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
326 $RPM_BUILD_ROOT%{_bindir}
329 install -d $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input}
330 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
331 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
332 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
333 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
336 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
337 install %{SOURCE5} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
339 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
340 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
344 install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
345 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxdrv
346 install %{SOURCE4} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxadd
347 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
348 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
349 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
353 rm -rf $RPM_BUILD_ROOT
356 %groupadd -g 221 -r -f vbox
360 NOTE: You must also install kernel module for this software to work
361 kernel-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
362 kernel-desktop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
363 kernel-laptop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
364 kernel-vanilla-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
367 Depending on which kernel brand You use.
372 if [ "$1" = "0" ]; then
376 %post -n kernel%{_alt_kernel}-misc-vboxadd
377 %depmod %{_kernel_ver}
378 /sbin/chkconfig --add vboxadd
379 %service vboxadd restart "VirtualBox OSE guest additions driver"
381 %postun -n kernel%{_alt_kernel}-misc-vboxadd
382 %depmod %{_kernel_ver}
384 %preun -n kernel%{_alt_kernel}-misc-vboxadd
385 if [ "$1" = "0" ]; then
386 %service vboxadd stop
387 /sbin/chkconfig --del vboxadd
390 %post -n kernel%{_alt_kernel}-misc-vboxdrv
391 %depmod %{_kernel_ver}
392 /sbin/chkconfig --add vboxdrv
393 %service vboxdrv restart "VirtualBox OSE driver"
395 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
396 %depmod %{_kernel_ver}
398 %preun -n kernel%{_alt_kernel}-misc-vboxdrv
399 if [ "$1" = "0" ]; then
400 %service vboxdrv stop
401 /sbin/chkconfig --del vboxdrv
404 %post -n kernel%{_alt_kernel}-misc-vboxvfs
405 %depmod %{_kernel_ver}
407 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
408 %depmod %{_kernel_ver}
410 %if %{with userspace}
412 %defattr(644,root,root,755)
414 %dir %{_libdir}/VirtualBox
415 %dir %{_libdir}/VirtualBox/additions
416 %dir %{_libdir}/VirtualBox/components
417 %dir %{_libdir}/VirtualBox/nls
418 %attr(755,root,root) %{_bindir}/mountvboxsf
419 %attr(755,root,root) %{_bindir}/vditool
420 %attr(755,root,root) %{_bindir}/VBox*
421 %attr(755,root,root) %{_bindir}/VirtualBox
422 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
423 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
424 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
425 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
426 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
427 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
428 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
430 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
432 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
433 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
434 %{_libdir}/VirtualBox/*.gc
435 %{_libdir}/VirtualBox/*.r0
436 %{_libdir}/VirtualBox/*.xpt
437 %{_libdir}/VirtualBox/additions/*
438 %{_libdir}/VirtualBox/components/*
439 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
440 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
441 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
442 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
443 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
444 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
445 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
446 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
447 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
448 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
449 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
450 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
451 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
452 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
453 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
454 %lang(pt) %{_libdir}/VirtualBox/nls/*_pt.qm
455 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
456 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
457 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
458 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
459 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
460 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
461 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
462 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
463 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
464 %{_pixmapsdir}/VBox.png
465 %{_desktopdir}/%{pname}.desktop
468 %defattr(644,root,root,755)
469 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
471 # Drivers are for Guest OS, which is 32-bit.
473 %files -n xorg-driver-input-vboxmouse
474 %defattr(644,root,root,755)
475 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
477 %files -n xorg-driver-video-vboxvideo
478 %defattr(644,root,root,755)
479 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
484 %files -n kernel%{_alt_kernel}-misc-vboxadd
485 %defattr(644,root,root,755)
486 %attr(754,root,root) /etc/rc.d/init.d/vboxadd
487 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
489 %files -n kernel%{_alt_kernel}-misc-vboxdrv
490 %defattr(644,root,root,755)
491 %attr(754,root,root) /etc/rc.d/init.d/vboxdrv
492 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
494 %files -n kernel%{_alt_kernel}-misc-vboxvfs
495 %defattr(644,root,root,755)
496 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*