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"
31 %define pname VirtualBox
33 Summary: VirtualBox OSE - x86 hardware virtualizer
34 Summary(pl.UTF-8): VirtualBox OSE - wirtualizator sprzętu x86
35 Name: %{pname}%{_alt_kernel}
39 Group: Applications/Emulators
40 Source0: http://download.virtualbox.org/virtualbox/%{version}/%{pname}-%{version}-OSE.tar.bz2
41 # Source0-md5: 1f53ebed0f55df129f6cf72dba646c3a
42 Source1: http://download.virtualbox.org/virtualbox/%{version}/UserManual.pdf
43 # Source1-md5: cf65a8164a18f7200520c1ec3399a918
44 Source2: http://download.virtualbox.org/virtualbox/%{version}/VBoxGuestAdditions_%{version}.iso
45 # Source2-md5: ae0512b8db853fdea9fc262fc04bd242
46 Source3: %{pname}-vboxdrv.init
47 Source4: %{pname}-vboxadd.init
48 Source5: %{pname}.desktop
50 Patch0: %{pname}-configure.patch
51 Patch1: %{pname}-qt-paths.patch
52 Patch2: %{pname}-shared-libstdc++.patch
53 Patch3: %{pname}-disable-xclient-build.patch
54 Patch4: %{pname}-configure-spaces.patch
55 Patch5: %{pname}-gcc.patch
56 URL: http://www.virtualbox.org/
58 BuildRequires: SDL-devel >= 1.2.7
59 BuildRequires: alsa-lib-devel >= 1.0.6
63 BuildRequires: gcc >= 5:3.2.3
64 %if "%{pld_release}" != "ti"
65 BuildRequires: compat-gcc-34
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}
266 cat <<'EOF' > udev.conf
267 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
268 KERNEL=="vboxadd", NAME="%k", GROUP="vbox", MODE="0660"
273 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
274 ../src/VBox/Additions/linux/export_modules modules.tar.gz
275 tar -zxf modules.tar.gz && rm -f modules.tar.gz
276 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
277 tar -zxf modules.tar.gz && rm -f modules.tar.gz
280 # HACK, is this really safe on x86_64?
281 sed -i -e '/#.*define.*RTMEMALLOC_EXEC_HEAP/d' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
285 %if %{with userspace}
287 --with-gcc="%{__cc}" \
288 --with-g++="%{__cxx}" \
293 kmk -j1 VBOX_RECOMPILER_OP_GCC_PLD_COMPAT="%{__ucc}"
298 %build_kernel_modules -m vboxadd -C vboxadd
299 %build_kernel_modules -m vboxdrv -C vboxdrv
300 cp -a vboxadd/Module.symvers vboxvfs
301 %build_kernel_modules -m vboxvfs -C vboxvfs -c
306 rm -rf $RPM_BUILD_ROOT
308 %if %{with userspace}
310 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
311 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
313 install %{SOURCE6} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
314 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
315 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
316 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
320 install out/linux.%{outdir}/release/bin/VBox*.rel \
321 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
324 install out/linux.%{outdir}/release/bin/VBox*.so \
325 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
326 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
327 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
329 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
330 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
332 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
333 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
334 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
336 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
337 $RPM_BUILD_ROOT%{_bindir}
340 install -d $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input}
341 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
342 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
343 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
344 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
347 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
348 install %{SOURCE5} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
350 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
351 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
355 install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
356 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxdrv
357 install %{SOURCE4} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxadd
358 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
359 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
360 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
364 rm -rf $RPM_BUILD_ROOT
367 %groupadd -g 221 -r -f vbox
371 NOTE: You must also install kernel module for this software to work
372 kernel-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
373 kernel-desktop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
374 kernel-laptop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
375 kernel-vanilla-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
378 Depending on which kernel brand You use.
383 if [ "$1" = "0" ]; then
387 %post -n kernel%{_alt_kernel}-misc-vboxadd
388 %depmod %{_kernel_ver}
389 /sbin/chkconfig --add vboxadd
390 %service vboxadd restart "VirtualBox OSE guest additions driver"
392 %postun -n kernel%{_alt_kernel}-misc-vboxadd
393 %depmod %{_kernel_ver}
395 %preun -n kernel%{_alt_kernel}-misc-vboxadd
396 if [ "$1" = "0" ]; then
397 %service vboxadd stop
398 /sbin/chkconfig --del vboxadd
401 %post -n kernel%{_alt_kernel}-misc-vboxdrv
402 %depmod %{_kernel_ver}
403 /sbin/chkconfig --add vboxdrv
404 %service vboxdrv restart "VirtualBox OSE driver"
406 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
407 %depmod %{_kernel_ver}
409 %preun -n kernel%{_alt_kernel}-misc-vboxdrv
410 if [ "$1" = "0" ]; then
411 %service vboxdrv stop
412 /sbin/chkconfig --del vboxdrv
415 %post -n kernel%{_alt_kernel}-misc-vboxvfs
416 %depmod %{_kernel_ver}
418 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
419 %depmod %{_kernel_ver}
421 %if %{with userspace}
423 %defattr(644,root,root,755)
425 %dir %{_libdir}/VirtualBox
426 %dir %{_libdir}/VirtualBox/additions
427 %dir %{_libdir}/VirtualBox/components
428 %dir %{_libdir}/VirtualBox/nls
429 %attr(755,root,root) %{_bindir}/mountvboxsf
430 %attr(755,root,root) %{_bindir}/vditool
431 %attr(755,root,root) %{_bindir}/VBox*
432 %attr(755,root,root) %{_bindir}/VirtualBox
433 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
434 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
435 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
436 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
437 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
438 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
439 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
441 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
443 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
444 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
445 %{_libdir}/VirtualBox/*.gc
446 %{_libdir}/VirtualBox/*.r0
447 %{_libdir}/VirtualBox/*.xpt
448 %{_libdir}/VirtualBox/additions/*
449 %{_libdir}/VirtualBox/components/*
450 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
451 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
452 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
453 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
454 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
455 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
456 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
457 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
458 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
459 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
460 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
461 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
462 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
463 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
464 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
465 %lang(pt) %{_libdir}/VirtualBox/nls/*_pt.qm
466 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
467 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
468 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
469 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
470 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
471 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
472 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
473 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
474 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
475 %{_pixmapsdir}/VBox.png
476 %{_desktopdir}/%{pname}.desktop
479 %defattr(644,root,root,755)
480 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
482 # Drivers are for Guest OS, which is 32-bit.
484 %files -n xorg-driver-input-vboxmouse
485 %defattr(644,root,root,755)
486 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
488 %files -n xorg-driver-video-vboxvideo
489 %defattr(644,root,root,755)
490 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
495 %files -n kernel%{_alt_kernel}-misc-vboxadd
496 %defattr(644,root,root,755)
497 %attr(754,root,root) /etc/rc.d/init.d/vboxadd
498 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
500 %files -n kernel%{_alt_kernel}-misc-vboxdrv
501 %defattr(644,root,root,755)
502 %attr(754,root,root) /etc/rc.d/init.d/vboxdrv
503 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
505 %files -n kernel%{_alt_kernel}-misc-vboxvfs
506 %defattr(644,root,root,755)
507 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*