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
18 %undefine with_dist_kernel
21 %if "%{_alt_kernel}" != "%{nil}"
22 %undefine with_userspace
26 %define __ucxx g++-3.4
28 %define pname VirtualBox
30 Summary: VirtualBox OSE - x86 hardware virtualizer
31 Summary(pl.UTF-8): VirtualBox OSE - wirtualizator sprzętu x86
32 Name: %{pname}%{_alt_kernel}
36 Group: Applications/Emulators
37 Source0: http://www.virtualbox.org/download/%{version}/%{pname}-%{version}-OSE.tar.bz2
38 # Source0-md5: 0372a3a31326078f7849a0467d547a70
39 Source1: http://www.virtualbox.org/download/%{version}/UserManual.pdf
40 # Source1-md5: 32505857b575f0fb6f71ba1738c1e102
41 Source2: http://www.virtualbox.org/download/%{version}/VBoxGuestAdditions_%{version}.iso
42 # Source2-md5: 3cac7e911e545038102ff641cba66365
43 Source3: %{pname}-vboxdrv.init
44 Source4: %{pname}-vboxadd.init
45 Source5: %{pname}.desktop
47 Patch0: %{pname}-configure.patch
48 Patch1: %{pname}-qt-paths.patch
49 Patch2: %{pname}-shared-libstdc++.patch
50 Patch3: %{pname}-disable-xclient-build.patch
51 Patch4: %{pname}-configure-spaces.patch
52 URL: http://www.virtualbox.org/
54 BuildRequires: SDL-devel >= 1.2.7
55 BuildRequires: alsa-lib-devel >= 1.0.6
59 BuildRequires: gcc >= 5:3.2.3
60 BuildRequires: compat-gcc-34
61 BuildRequires: compat-gcc-34-c++
62 BuildRequires: compat-gcc-34-libstdc++-devel
65 %if %{with dist_kernel}
66 BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.20
69 BuildRequires: libIDL-devel
70 BuildRequires: libpng >= 1.2.5
71 BuildRequires: libstdc++-devel >= 5:3.2.3
72 BuildRequires: libuuid-devel
73 BuildRequires: libxml2-devel >= 2.6.26
74 BuildRequires: libxslt-devel >= 1.1.17
75 BuildRequires: libxslt-progs >= 1.1.17
76 BuildRequires: pkgconfig
77 BuildRequires: pulseaudio-devel >= 0.9.0
78 BuildRequires: qt-devel >= 6:3.3.6
79 BuildRequires: qt-linguist
81 BuildRequires: rpmbuild(macros) >= 1.379
84 BuildRequires: xalan-c-devel >= 1.10.0
85 BuildRequires: xerces-c-devel >= 2.6.0
86 BuildRequires: xorg-lib-libXcursor-devel
87 BuildRequires: zlib-devel >= 1.2.1
89 BuildRequires: gcc-multilib
90 BuildRequires: glibc-devel(i686)
91 BuildRequires: libstdc++-multilib-devel
94 Requires(post,preun): /sbin/chkconfig
95 Requires(postun): /usr/sbin/groupdel
96 Requires(pre): /usr/bin/getgid
97 Requires(pre): /usr/sbin/groupadd
100 ExclusiveArch: %{ix86} %{x8664}
101 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
110 InnoTek VirtualBox OSE is a general-purpose full virtualizer for x86
111 hardware. Targeted at server, desktop and embedded use, it is now the
112 only professional-quality virtualization solution that is also Open
115 Some of the features of VirtualBox OSE are:
117 Modularity: VirtualBox OSE has an extremely modular design with
118 well-defined internal programming interfaces and a client/server
119 design. This makes it easy to control it from several interfaces at
120 once: for example, you can start a virtual machine in a typical
121 virtual machine GUI and then control that machine from the command
122 line. VirtualBox OSE also comes with a full Software Development Kit:
123 even though it is Open Source Software, you don't have to hack the
124 source to write a new interface for VirtualBox OSE.
126 Virtual machine descriptions in XML: the configuration settings of
127 virtual machines are stored entirely in XML and are independent of the
128 local machines. Virtual machine definitions can therefore easily be
129 ported to other computers.
131 %description -l pl.UTF-8
132 InnoTek VirtualBox OSE jest emulatorem sprzętu x86. Kierowany do
133 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
134 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
135 również jako Otwarte Oprogramowanie.
137 Przykładowe cechy VirtualBoksa:
139 Modularność: VirtualBox OSE jest wysoce zmodularyzowanym produktem z
140 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
141 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
142 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
143 poziomu interfejsu graficznego, a później kontrolować ją z linii
144 poleceń. VirtualBox OSE dostarcza również pełny pakiet deweloperski,
145 co pozwala stworzyć dowolny inny interfejs zarządzania maszyną
148 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
149 wirtualnych są w całości przechowywane w XML-u i są niezależne od
150 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
151 konfigurację maszyny wirtualnej na inny komputer.
154 Summary: udev rules for VirtualBox OSE kernel modules
155 Summary(pl.UTF-8): Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
161 udev rules for VirtualBox OSE kernel modules.
163 %description udev -l pl.UTF-8
164 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa.
166 %package -n kernel%{_alt_kernel}-misc-vboxadd
167 Summary: Linux kernel module for VirtualBox OSE
168 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
169 Release: %{rel}@%{_kernel_ver_str}
171 Requires(post,postun): /sbin/depmod
172 Requires: dev >= 2.9.0-7
173 %if %{with dist_kernel}
174 %requires_releq_kernel
175 #Requires(postun): %%releq_kernel
177 Provides: kernel(vboxadd) = %{version}-%{rel}
179 %description -n kernel%{_alt_kernel}-misc-vboxadd
180 Linux kernel module vboxadd for VirtualBox OSE.
182 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
183 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
185 %package -n kernel%{_alt_kernel}-misc-vboxdrv
186 Summary: Linux kernel module for VirtualBox OSE
187 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
188 Release: %{rel}@%{_kernel_ver_str}
190 Requires(post,postun): /sbin/depmod
191 Requires: dev >= 2.9.0-7
192 %if %{with dist_kernel}
193 %requires_releq_kernel
194 Requires(postun): %releq_kernel
196 Provides: kernel(vboxdrv) = %{version}-%{rel}
198 %description -n kernel%{_alt_kernel}-misc-vboxdrv
199 Linux kernel module vboxdrv for VirtualBox OSE.
201 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
202 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
204 %package -n kernel%{_alt_kernel}-misc-vboxvfs
205 Summary: Linux kernel module for VirtualBox OSE
206 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
207 Release: %{rel}@%{_kernel_ver_str}
209 Requires(post,postun): /sbin/depmod
210 Requires: dev >= 2.9.0-7
211 %if %{with dist_kernel}
212 %requires_releq_kernel
213 Requires(postun): %releq_kernel
215 Provides: kernel(vboxvfs) = %{version}-%{rel}
217 %description -n kernel%{_alt_kernel}-misc-vboxvfs
218 Linux kernel module vboxvfs for VirtualBox OSE.
220 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
221 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
223 %package -n xorg-driver-input-vboxmouse
224 Summary: X.org mouse driver for VirtualBox OSE guest OS
225 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
227 Group: X11/Applications
228 Requires: xorg-xserver-server >= 1.0.99.901
230 %description -n xorg-driver-input-vboxmouse
231 X.org mouse driver for VirtualBox OSE guest OS.
233 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
234 Sterownik myszy dla systemu gościa w VirtualBoksie.
236 %package -n xorg-driver-video-vboxvideo
237 Summary: X.org video driver for VirtualBox OSE guest OS
238 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
240 Group: X11/Applications
241 Requires: xorg-xserver-server >= 1.0.99.901
243 %description -n xorg-driver-video-vboxvideo
244 X.org video driver for VirtualBox OSE guest OS.
246 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
247 Sterownik grafiki dla systemu gościa w VirtualBoksie.
250 %setup -q -n %{pname}-%{version}
261 cat <<'EOF' > udev.conf
262 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
263 KERNEL=="vboxadd", NAME="%k", GROUP="vbox", MODE="0660"
268 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
269 ../src/VBox/Additions/linux/export_modules modules.tar.gz
270 tar -zxf modules.tar.gz && rm -f modules.tar.gz
271 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
272 tar -zxf modules.tar.gz && rm -f modules.tar.gz
275 # HACK, is this really safe on x86_64?
276 sed -i -e '/#.*define.*RTMEMALLOC_EXEC_HEAP/d' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
280 %if %{with userspace}
282 --with-gcc="%{__ucc}" \
283 --with-g++="%{__ucxx}" \
287 . ./env.sh && kmk -j1
292 %build_kernel_modules -m vboxadd -C vboxadd
293 %build_kernel_modules -m vboxdrv -C vboxdrv
294 cp -a vboxadd/Module.symvers vboxvfs
295 %build_kernel_modules -m vboxvfs -C vboxvfs -c
300 rm -rf $RPM_BUILD_ROOT
302 %if %{with userspace}
304 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
305 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
307 install %{SOURCE6} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
308 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
309 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
310 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
314 install out/linux.%{outdir}/release/bin/VBox*.rel \
315 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
318 install out/linux.%{outdir}/release/bin/VBox*.so \
319 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
320 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
321 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
323 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
324 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
326 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
327 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
328 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
330 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
331 $RPM_BUILD_ROOT%{_bindir}
334 install -d $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input}
335 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
336 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
337 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
338 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
341 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
342 install %{SOURCE5} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
344 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
345 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
349 install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
350 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxdrv
351 install %{SOURCE4} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxadd
352 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
353 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
354 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
358 rm -rf $RPM_BUILD_ROOT
361 %groupadd -g 221 -r -f vbox
365 NOTE: You must also install kernel module for this software to work
366 kernel-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
367 kernel-desktop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
368 kernel-laptop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
369 kernel-vanilla-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
372 Depending on which kernel brand You use.
377 if [ "$1" = "0" ]; then
381 %post -n kernel%{_alt_kernel}-misc-vboxadd
382 %depmod %{_kernel_ver}
383 /sbin/chkconfig --add vboxadd
384 %service vboxadd restart "VirtualBox OSE guest additions driver"
386 %postun -n kernel%{_alt_kernel}-misc-vboxadd
387 %depmod %{_kernel_ver}
389 %preun -n kernel%{_alt_kernel}-misc-vboxadd
390 if [ "$1" = "0" ]; then
391 %service vboxadd stop
392 /sbin/chkconfig --del vboxadd
395 %post -n kernel%{_alt_kernel}-misc-vboxdrv
396 %depmod %{_kernel_ver}
397 /sbin/chkconfig --add vboxdrv
398 %service vboxdrv restart "VirtualBox OSE driver"
400 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
401 %depmod %{_kernel_ver}
403 %preun -n kernel%{_alt_kernel}-misc-vboxdrv
404 if [ "$1" = "0" ]; then
405 %service vboxdrv stop
406 /sbin/chkconfig --del vboxdrv
409 %post -n kernel%{_alt_kernel}-misc-vboxvfs
410 %depmod %{_kernel_ver}
412 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
413 %depmod %{_kernel_ver}
415 %if %{with userspace}
417 %defattr(644,root,root,755)
419 %dir %{_libdir}/VirtualBox
420 %dir %{_libdir}/VirtualBox/additions
421 %dir %{_libdir}/VirtualBox/components
422 %dir %{_libdir}/VirtualBox/nls
423 %attr(755,root,root) %{_bindir}/mountvboxsf
424 %attr(755,root,root) %{_bindir}/vditool
425 %attr(755,root,root) %{_bindir}/VBox*
426 %attr(755,root,root) %{_bindir}/VirtualBox
427 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
428 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
429 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
430 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
431 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
432 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
433 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
435 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
437 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
438 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
439 %{_libdir}/VirtualBox/*.gc
440 %{_libdir}/VirtualBox/*.r0
441 %{_libdir}/VirtualBox/*.xpt
442 %{_libdir}/VirtualBox/additions/*
443 %{_libdir}/VirtualBox/components/*
444 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
445 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
446 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
447 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
448 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
449 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
450 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
451 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
452 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
453 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
454 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
455 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
456 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
457 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
458 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
459 %lang(pt) %{_libdir}/VirtualBox/nls/*_pt.qm
460 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
461 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
462 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
463 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
464 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
465 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
466 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
467 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
468 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
469 %{_pixmapsdir}/VBox.png
470 %{_desktopdir}/%{pname}.desktop
473 %defattr(644,root,root,755)
474 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
476 # Drivers are for Guest OS, which is 32-bit.
478 %files -n xorg-driver-input-vboxmouse
479 %defattr(644,root,root,755)
480 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
482 %files -n xorg-driver-video-vboxvideo
483 %defattr(644,root,root,755)
484 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
489 %files -n kernel%{_alt_kernel}-misc-vboxadd
490 %defattr(644,root,root,755)
491 %attr(754,root,root) /etc/rc.d/init.d/vboxadd
492 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
494 %files -n kernel%{_alt_kernel}-misc-vboxdrv
495 %defattr(644,root,root,755)
496 %attr(754,root,root) /etc/rc.d/init.d/vboxdrv
497 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
499 %files -n kernel%{_alt_kernel}-misc-vboxvfs
500 %defattr(644,root,root,755)
501 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*