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://www.virtualbox.org/download/%{version}/%{pname}-%{version}-OSE.tar.bz2
41 # Source0-md5: e77947eea111102b4f8af38711d75e50
42 Source1: http://www.virtualbox.org/download/%{version}/UserManual.pdf
43 # Source1-md5: 32505857b575f0fb6f71ba1738c1e102
44 Source2: http://www.virtualbox.org/download/%{version}/VBoxGuestAdditions_%{version}.iso
45 # Source2-md5: 89f7e006828455c40198dc3dfb4203c2
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 Patch6: %{pname}-makefile.patch
57 URL: http://www.virtualbox.org/
59 BuildRequires: SDL-devel >= 1.2.7
60 BuildRequires: alsa-lib-devel >= 1.0.6
64 BuildRequires: gcc >= 5:3.2.3
65 %if "%{pld_release}" != "ti"
66 BuildRequires: compat-gcc-34
70 %if %{with dist_kernel}
71 BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.20
74 BuildRequires: libIDL-devel
75 BuildRequires: libpng >= 1.2.5
76 BuildRequires: libstdc++-devel >= 5:3.2.3
77 BuildRequires: libuuid-devel
78 BuildRequires: libxml2-devel >= 2.6.26
79 BuildRequires: libxslt-devel >= 1.1.17
80 BuildRequires: libxslt-progs >= 1.1.17
81 BuildRequires: pkgconfig
82 BuildRequires: pulseaudio-devel >= 0.9.0
83 BuildRequires: qt-devel >= 6:3.3.6
84 BuildRequires: qt-linguist
86 BuildRequires: rpmbuild(macros) >= 1.379
89 BuildRequires: xalan-c-devel >= 1.10.0
90 BuildRequires: xerces-c-devel >= 2.6.0
91 BuildRequires: xorg-lib-libXcursor-devel
92 BuildRequires: zlib-devel >= 1.2.1
94 BuildRequires: gcc-multilib
95 BuildRequires: glibc-devel(i686)
96 BuildRequires: libstdc++-multilib-devel
99 Requires(post,preun): /sbin/chkconfig
100 Requires(postun): /usr/sbin/groupdel
101 Requires(pre): /usr/bin/getgid
102 Requires(pre): /usr/sbin/groupadd
104 Provides: group(vbox)
105 ExclusiveArch: %{ix86} %{x8664}
106 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
115 InnoTek VirtualBox OSE is a general-purpose full virtualizer for x86
116 hardware. Targeted at server, desktop and embedded use, it is now the
117 only professional-quality virtualization solution that is also Open
120 Some of the features of VirtualBox OSE are:
122 Modularity: VirtualBox OSE has an extremely modular design with
123 well-defined internal programming interfaces and a client/server
124 design. This makes it easy to control it from several interfaces at
125 once: for example, you can start a virtual machine in a typical
126 virtual machine GUI and then control that machine from the command
127 line. VirtualBox OSE also comes with a full Software Development Kit:
128 even though it is Open Source Software, you don't have to hack the
129 source to write a new interface for VirtualBox OSE.
131 Virtual machine descriptions in XML: the configuration settings of
132 virtual machines are stored entirely in XML and are independent of the
133 local machines. Virtual machine definitions can therefore easily be
134 ported to other computers.
136 %description -l pl.UTF-8
137 InnoTek VirtualBox OSE jest emulatorem sprzętu x86. Kierowany do
138 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
139 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
140 również jako Otwarte Oprogramowanie.
142 Przykładowe cechy VirtualBoksa:
144 Modularność: VirtualBox OSE jest wysoce zmodularyzowanym produktem z
145 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
146 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
147 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
148 poziomu interfejsu graficznego, a później kontrolować ją z linii
149 poleceń. VirtualBox OSE dostarcza również pełny pakiet deweloperski,
150 co pozwala stworzyć dowolny inny interfejs zarządzania maszyną
153 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
154 wirtualnych są w całości przechowywane w XML-u i są niezależne od
155 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
156 konfigurację maszyny wirtualnej na inny komputer.
159 Summary: udev rules for VirtualBox OSE kernel modules
160 Summary(pl.UTF-8): Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
166 udev rules for VirtualBox OSE kernel modules.
168 %description udev -l pl.UTF-8
169 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa.
171 %package -n kernel%{_alt_kernel}-misc-vboxadd
172 Summary: Linux kernel module for VirtualBox OSE
173 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
174 Release: %{rel}@%{_kernel_ver_str}
176 Requires(post,postun): /sbin/depmod
177 Requires: dev >= 2.9.0-7
178 %if %{with dist_kernel}
179 %requires_releq_kernel
180 #Requires(postun): %%releq_kernel
182 Provides: kernel(vboxadd) = %{version}-%{rel}
184 %description -n kernel%{_alt_kernel}-misc-vboxadd
185 Linux kernel module vboxadd for VirtualBox OSE.
187 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
188 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
190 %package -n kernel%{_alt_kernel}-misc-vboxdrv
191 Summary: Linux kernel module for VirtualBox OSE
192 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
193 Release: %{rel}@%{_kernel_ver_str}
195 Requires(post,postun): /sbin/depmod
196 Requires: dev >= 2.9.0-7
197 %if %{with dist_kernel}
198 %requires_releq_kernel
199 Requires(postun): %releq_kernel
201 Provides: kernel(vboxdrv) = %{version}-%{rel}
203 %description -n kernel%{_alt_kernel}-misc-vboxdrv
204 Linux kernel module vboxdrv for VirtualBox OSE.
206 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
207 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
209 %package -n kernel%{_alt_kernel}-misc-vboxvfs
210 Summary: Linux kernel module for VirtualBox OSE
211 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
212 Release: %{rel}@%{_kernel_ver_str}
214 Requires(post,postun): /sbin/depmod
215 Requires: dev >= 2.9.0-7
216 %if %{with dist_kernel}
217 %requires_releq_kernel
218 Requires(postun): %releq_kernel
220 Provides: kernel(vboxvfs) = %{version}-%{rel}
222 %description -n kernel%{_alt_kernel}-misc-vboxvfs
223 Linux kernel module vboxvfs for VirtualBox OSE.
225 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
226 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
228 %package -n xorg-driver-input-vboxmouse
229 Summary: X.org mouse driver for VirtualBox OSE guest OS
230 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
232 Group: X11/Applications
233 Requires: xorg-xserver-server >= 1.0.99.901
235 %description -n xorg-driver-input-vboxmouse
236 X.org mouse driver for VirtualBox OSE guest OS.
238 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
239 Sterownik myszy dla systemu gościa w VirtualBoksie.
241 %package -n xorg-driver-video-vboxvideo
242 Summary: X.org video driver for VirtualBox OSE guest OS
243 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
245 Group: X11/Applications
246 Requires: xorg-xserver-server >= 1.0.99.901
248 %description -n xorg-driver-video-vboxvideo
249 X.org video driver for VirtualBox OSE guest OS.
251 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
252 Sterownik grafiki dla systemu gościa w VirtualBoksie.
255 %setup -q -n %{pname}-%{version}
268 cat <<'EOF' > udev.conf
269 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
270 KERNEL=="vboxadd", NAME="%k", GROUP="vbox", MODE="0660"
275 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
276 ../src/VBox/Additions/linux/export_modules modules.tar.gz
277 tar -zxf modules.tar.gz && rm -f modules.tar.gz
278 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
279 tar -zxf modules.tar.gz && rm -f modules.tar.gz
282 # HACK, is this really safe on x86_64?
283 sed -i -e '/#.*define.*RTMEMALLOC_EXEC_HEAP/d' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
287 %if %{with userspace}
289 --with-gcc="%{__cc}" \
290 --with-g++="%{__cxx}" \
295 kmk -j1 VBOX_RECOMPILER_OP_GCC_PLD_COMPAT="%{__ucc}"
300 %build_kernel_modules -m vboxadd -C vboxadd
301 %build_kernel_modules -m vboxdrv -C vboxdrv
302 cp -a vboxadd/Module.symvers vboxvfs
303 %build_kernel_modules -m vboxvfs -C vboxvfs -c
308 rm -rf $RPM_BUILD_ROOT
310 %if %{with userspace}
312 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
313 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
315 install %{SOURCE6} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
316 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
317 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
318 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
322 install out/linux.%{outdir}/release/bin/VBox*.rel \
323 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
326 install out/linux.%{outdir}/release/bin/VBox*.so \
327 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
328 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
329 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
331 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
332 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
334 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
335 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
336 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
338 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
339 $RPM_BUILD_ROOT%{_bindir}
342 install -d $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input}
343 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
344 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
345 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
346 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
349 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
350 install %{SOURCE5} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
352 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
353 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
357 install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
358 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxdrv
359 install %{SOURCE4} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxadd
360 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
361 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
362 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
366 rm -rf $RPM_BUILD_ROOT
369 %groupadd -g 221 -r -f vbox
373 NOTE: You must also install kernel module for this software to work
374 kernel-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
375 kernel-desktop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
376 kernel-laptop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
377 kernel-vanilla-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
380 Depending on which kernel brand You use.
385 if [ "$1" = "0" ]; then
389 %post -n kernel%{_alt_kernel}-misc-vboxadd
390 %depmod %{_kernel_ver}
391 /sbin/chkconfig --add vboxadd
392 %service vboxadd restart "VirtualBox OSE guest additions driver"
394 %postun -n kernel%{_alt_kernel}-misc-vboxadd
395 %depmod %{_kernel_ver}
397 %preun -n kernel%{_alt_kernel}-misc-vboxadd
398 if [ "$1" = "0" ]; then
399 %service vboxadd stop
400 /sbin/chkconfig --del vboxadd
403 %post -n kernel%{_alt_kernel}-misc-vboxdrv
404 %depmod %{_kernel_ver}
405 /sbin/chkconfig --add vboxdrv
406 %service vboxdrv restart "VirtualBox OSE driver"
408 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
409 %depmod %{_kernel_ver}
411 %preun -n kernel%{_alt_kernel}-misc-vboxdrv
412 if [ "$1" = "0" ]; then
413 %service vboxdrv stop
414 /sbin/chkconfig --del vboxdrv
417 %post -n kernel%{_alt_kernel}-misc-vboxvfs
418 %depmod %{_kernel_ver}
420 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
421 %depmod %{_kernel_ver}
423 %if %{with userspace}
425 %defattr(644,root,root,755)
427 %dir %{_libdir}/VirtualBox
428 %dir %{_libdir}/VirtualBox/additions
429 %dir %{_libdir}/VirtualBox/components
430 %dir %{_libdir}/VirtualBox/nls
431 %attr(755,root,root) %{_bindir}/mountvboxsf
432 %attr(755,root,root) %{_bindir}/vditool
433 %attr(755,root,root) %{_bindir}/VBox*
434 %attr(755,root,root) %{_bindir}/VirtualBox
435 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
436 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
437 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
438 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
439 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
440 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
441 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
443 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
445 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
446 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
447 %{_libdir}/VirtualBox/*.gc
448 %{_libdir}/VirtualBox/*.r0
449 %{_libdir}/VirtualBox/*.xpt
450 %{_libdir}/VirtualBox/additions/*
451 %{_libdir}/VirtualBox/components/*
452 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
453 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
454 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
455 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
456 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
457 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
458 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
459 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
460 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
461 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
462 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
463 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
464 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
465 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
466 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
467 %lang(pt) %{_libdir}/VirtualBox/nls/*_pt.qm
468 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
469 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
470 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
471 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
472 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
473 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
474 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
475 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
476 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
477 %{_pixmapsdir}/VBox.png
478 %{_desktopdir}/%{pname}.desktop
481 %defattr(644,root,root,755)
482 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
484 # Drivers are for Guest OS, which is 32-bit.
486 %files -n xorg-driver-input-vboxmouse
487 %defattr(644,root,root,755)
488 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
490 %files -n xorg-driver-video-vboxvideo
491 %defattr(644,root,root,755)
492 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
497 %files -n kernel%{_alt_kernel}-misc-vboxadd
498 %defattr(644,root,root,755)
499 %attr(754,root,root) /etc/rc.d/init.d/vboxadd
500 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
502 %files -n kernel%{_alt_kernel}-misc-vboxdrv
503 %defattr(644,root,root,755)
504 %attr(754,root,root) /etc/rc.d/init.d/vboxdrv
505 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
507 %files -n kernel%{_alt_kernel}-misc-vboxvfs
508 %defattr(644,root,root,755)
509 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*