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
25 %if "%{pld_release}" != "ti"
27 %define __ucxx g++-3.4
30 %define pname VirtualBox
32 Summary: VirtualBox OSE - x86 hardware virtualizer
33 Summary(pl.UTF-8): VirtualBox OSE - wirtualizator sprzętu x86
34 Name: %{pname}%{_alt_kernel}
38 Group: Applications/Emulators
39 Source0: http://www.virtualbox.org/download/%{version}/%{pname}-%{version}-OSE.tar.bz2
40 # Source0-md5: 0372a3a31326078f7849a0467d547a70
41 Source1: http://www.virtualbox.org/download/%{version}/UserManual.pdf
42 # Source1-md5: 32505857b575f0fb6f71ba1738c1e102
43 Source2: http://www.virtualbox.org/download/%{version}/VBoxGuestAdditions_%{version}.iso
44 # Source2-md5: 3cac7e911e545038102ff641cba66365
45 Source3: %{pname}-vboxdrv.init
46 Source4: %{pname}-vboxadd.init
47 Source5: %{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 URL: http://www.virtualbox.org/
56 BuildRequires: SDL-devel >= 1.2.7
57 BuildRequires: alsa-lib-devel >= 1.0.6
61 BuildRequires: gcc >= 5:3.2.3
62 %if "%{pld_release}" != "ti"
63 BuildRequires: compat-gcc-34
64 BuildRequires: compat-gcc-34-c++
65 BuildRequires: compat-gcc-34-libstdc++-devel
69 %if %{with dist_kernel}
70 BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.20
73 BuildRequires: libIDL-devel
74 BuildRequires: libpng >= 1.2.5
75 BuildRequires: libstdc++-devel >= 5:3.2.3
76 BuildRequires: libuuid-devel
77 BuildRequires: libxml2-devel >= 2.6.26
78 BuildRequires: libxslt-devel >= 1.1.17
79 BuildRequires: libxslt-progs >= 1.1.17
80 BuildRequires: pkgconfig
81 BuildRequires: pulseaudio-devel >= 0.9.0
82 BuildRequires: qt-devel >= 6:3.3.6
83 BuildRequires: qt-linguist
85 BuildRequires: rpmbuild(macros) >= 1.379
88 BuildRequires: xalan-c-devel >= 1.10.0
89 BuildRequires: xerces-c-devel >= 2.6.0
90 BuildRequires: xorg-lib-libXcursor-devel
91 BuildRequires: zlib-devel >= 1.2.1
93 BuildRequires: gcc-multilib
94 BuildRequires: glibc-devel(i686)
95 BuildRequires: libstdc++-multilib-devel
98 Requires(post,preun): /sbin/chkconfig
99 Requires(postun): /usr/sbin/groupdel
100 Requires(pre): /usr/bin/getgid
101 Requires(pre): /usr/sbin/groupadd
103 Provides: group(vbox)
104 ExclusiveArch: %{ix86} %{x8664}
105 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
114 InnoTek VirtualBox OSE is a general-purpose full virtualizer for x86
115 hardware. Targeted at server, desktop and embedded use, it is now the
116 only professional-quality virtualization solution that is also Open
119 Some of the features of VirtualBox OSE are:
121 Modularity: VirtualBox OSE has an extremely modular design with
122 well-defined internal programming interfaces and a client/server
123 design. This makes it easy to control it from several interfaces at
124 once: for example, you can start a virtual machine in a typical
125 virtual machine GUI and then control that machine from the command
126 line. VirtualBox OSE also comes with a full Software Development Kit:
127 even though it is Open Source Software, you don't have to hack the
128 source to write a new interface for VirtualBox OSE.
130 Virtual machine descriptions in XML: the configuration settings of
131 virtual machines are stored entirely in XML and are independent of the
132 local machines. Virtual machine definitions can therefore easily be
133 ported to other computers.
135 %description -l pl.UTF-8
136 InnoTek VirtualBox OSE jest emulatorem sprzętu x86. Kierowany do
137 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
138 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
139 również jako Otwarte Oprogramowanie.
141 Przykładowe cechy VirtualBoksa:
143 Modularność: VirtualBox OSE jest wysoce zmodularyzowanym produktem z
144 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
145 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
146 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
147 poziomu interfejsu graficznego, a później kontrolować ją z linii
148 poleceń. VirtualBox OSE dostarcza również pełny pakiet deweloperski,
149 co pozwala stworzyć dowolny inny interfejs zarządzania maszyną
152 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
153 wirtualnych są w całości przechowywane w XML-u i są niezależne od
154 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
155 konfigurację maszyny wirtualnej na inny komputer.
158 Summary: udev rules for VirtualBox OSE kernel modules
159 Summary(pl.UTF-8): Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
165 udev rules for VirtualBox OSE kernel modules.
167 %description udev -l pl.UTF-8
168 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa.
170 %package -n kernel%{_alt_kernel}-misc-vboxadd
171 Summary: Linux kernel module for VirtualBox OSE
172 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
173 Release: %{rel}@%{_kernel_ver_str}
175 Requires(post,postun): /sbin/depmod
176 Requires: dev >= 2.9.0-7
177 %if %{with dist_kernel}
178 %requires_releq_kernel
179 #Requires(postun): %%releq_kernel
181 Provides: kernel(vboxadd) = %{version}-%{rel}
183 %description -n kernel%{_alt_kernel}-misc-vboxadd
184 Linux kernel module vboxadd for VirtualBox OSE.
186 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
187 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
189 %package -n kernel%{_alt_kernel}-misc-vboxdrv
190 Summary: Linux kernel module for VirtualBox OSE
191 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
192 Release: %{rel}@%{_kernel_ver_str}
194 Requires(post,postun): /sbin/depmod
195 Requires: dev >= 2.9.0-7
196 %if %{with dist_kernel}
197 %requires_releq_kernel
198 Requires(postun): %releq_kernel
200 Provides: kernel(vboxdrv) = %{version}-%{rel}
202 %description -n kernel%{_alt_kernel}-misc-vboxdrv
203 Linux kernel module vboxdrv for VirtualBox OSE.
205 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
206 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
208 %package -n kernel%{_alt_kernel}-misc-vboxvfs
209 Summary: Linux kernel module for VirtualBox OSE
210 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
211 Release: %{rel}@%{_kernel_ver_str}
213 Requires(post,postun): /sbin/depmod
214 Requires: dev >= 2.9.0-7
215 %if %{with dist_kernel}
216 %requires_releq_kernel
217 Requires(postun): %releq_kernel
219 Provides: kernel(vboxvfs) = %{version}-%{rel}
221 %description -n kernel%{_alt_kernel}-misc-vboxvfs
222 Linux kernel module vboxvfs for VirtualBox OSE.
224 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
225 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
227 %package -n xorg-driver-input-vboxmouse
228 Summary: X.org mouse driver for VirtualBox OSE guest OS
229 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
231 Group: X11/Applications
232 Requires: xorg-xserver-server >= 1.0.99.901
234 %description -n xorg-driver-input-vboxmouse
235 X.org mouse driver for VirtualBox OSE guest OS.
237 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
238 Sterownik myszy dla systemu gościa w VirtualBoksie.
240 %package -n xorg-driver-video-vboxvideo
241 Summary: X.org video driver for VirtualBox OSE guest OS
242 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
244 Group: X11/Applications
245 Requires: xorg-xserver-server >= 1.0.99.901
247 %description -n xorg-driver-video-vboxvideo
248 X.org video driver for VirtualBox OSE guest OS.
250 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
251 Sterownik grafiki dla systemu gościa w VirtualBoksie.
254 %setup -q -n %{pname}-%{version}
265 cat <<'EOF' > udev.conf
266 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
267 KERNEL=="vboxadd", NAME="%k", GROUP="vbox", MODE="0660"
272 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
273 ../src/VBox/Additions/linux/export_modules modules.tar.gz
274 tar -zxf modules.tar.gz && rm -f modules.tar.gz
275 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
276 tar -zxf modules.tar.gz && rm -f modules.tar.gz
279 # HACK, is this really safe on x86_64?
280 sed -i -e '/#.*define.*RTMEMALLOC_EXEC_HEAP/d' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
284 %if %{with userspace}
286 %if "%{pld_release}" == "ti"
287 --with-gcc="%{__cc}" \
288 --with-g++="%{__cxx}" \
290 --with-gcc="%{__ucc}" \
291 --with-g++="%{__ucxx}" \
296 . ./env.sh && kmk -j1
301 %build_kernel_modules -m vboxadd -C vboxadd
302 %build_kernel_modules -m vboxdrv -C vboxdrv
303 cp -a vboxadd/Module.symvers vboxvfs
304 %build_kernel_modules -m vboxvfs -C vboxvfs -c
309 rm -rf $RPM_BUILD_ROOT
311 %if %{with userspace}
313 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
314 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
316 install %{SOURCE6} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
317 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
318 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
319 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
323 install out/linux.%{outdir}/release/bin/VBox*.rel \
324 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
327 install out/linux.%{outdir}/release/bin/VBox*.so \
328 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
329 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
330 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
332 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
333 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
335 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
336 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
337 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
339 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
340 $RPM_BUILD_ROOT%{_bindir}
343 install -d $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input}
344 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
345 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
346 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
347 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
350 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
351 install %{SOURCE5} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
353 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
354 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
358 install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
359 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxdrv
360 install %{SOURCE4} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxadd
361 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
362 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
363 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
367 rm -rf $RPM_BUILD_ROOT
370 %groupadd -g 221 -r -f vbox
374 NOTE: You must also install kernel module for this software to work
375 kernel-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
376 kernel-desktop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
377 kernel-laptop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
378 kernel-vanilla-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
381 Depending on which kernel brand You use.
386 if [ "$1" = "0" ]; then
390 %post -n kernel%{_alt_kernel}-misc-vboxadd
391 %depmod %{_kernel_ver}
392 /sbin/chkconfig --add vboxadd
393 %service vboxadd restart "VirtualBox OSE guest additions driver"
395 %postun -n kernel%{_alt_kernel}-misc-vboxadd
396 %depmod %{_kernel_ver}
398 %preun -n kernel%{_alt_kernel}-misc-vboxadd
399 if [ "$1" = "0" ]; then
400 %service vboxadd stop
401 /sbin/chkconfig --del vboxadd
404 %post -n kernel%{_alt_kernel}-misc-vboxdrv
405 %depmod %{_kernel_ver}
406 /sbin/chkconfig --add vboxdrv
407 %service vboxdrv restart "VirtualBox OSE driver"
409 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
410 %depmod %{_kernel_ver}
412 %preun -n kernel%{_alt_kernel}-misc-vboxdrv
413 if [ "$1" = "0" ]; then
414 %service vboxdrv stop
415 /sbin/chkconfig --del vboxdrv
418 %post -n kernel%{_alt_kernel}-misc-vboxvfs
419 %depmod %{_kernel_ver}
421 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
422 %depmod %{_kernel_ver}
424 %if %{with userspace}
426 %defattr(644,root,root,755)
428 %dir %{_libdir}/VirtualBox
429 %dir %{_libdir}/VirtualBox/additions
430 %dir %{_libdir}/VirtualBox/components
431 %dir %{_libdir}/VirtualBox/nls
432 %attr(755,root,root) %{_bindir}/mountvboxsf
433 %attr(755,root,root) %{_bindir}/vditool
434 %attr(755,root,root) %{_bindir}/VBox*
435 %attr(755,root,root) %{_bindir}/VirtualBox
436 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
437 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
438 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
439 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
440 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
441 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
442 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
444 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
446 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
447 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
448 %{_libdir}/VirtualBox/*.gc
449 %{_libdir}/VirtualBox/*.r0
450 %{_libdir}/VirtualBox/*.xpt
451 %{_libdir}/VirtualBox/additions/*
452 %{_libdir}/VirtualBox/components/*
453 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
454 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
455 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
456 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
457 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
458 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
459 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
460 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
461 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
462 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
463 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
464 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
465 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
466 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
467 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
468 %lang(pt) %{_libdir}/VirtualBox/nls/*_pt.qm
469 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
470 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
471 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
472 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
473 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
474 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
475 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
476 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
477 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
478 %{_pixmapsdir}/VBox.png
479 %{_desktopdir}/%{pname}.desktop
482 %defattr(644,root,root,755)
483 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
485 # Drivers are for Guest OS, which is 32-bit.
487 %files -n xorg-driver-input-vboxmouse
488 %defattr(644,root,root,755)
489 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
491 %files -n xorg-driver-video-vboxvideo
492 %defattr(644,root,root,755)
493 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
498 %files -n kernel%{_alt_kernel}-misc-vboxadd
499 %defattr(644,root,root,755)
500 %attr(754,root,root) /etc/rc.d/init.d/vboxadd
501 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
503 %files -n kernel%{_alt_kernel}-misc-vboxdrv
504 %defattr(644,root,root,755)
505 %attr(754,root,root) /etc/rc.d/init.d/vboxdrv
506 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
508 %files -n kernel%{_alt_kernel}-misc-vboxvfs
509 %defattr(644,root,root,755)
510 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*