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 %define pname VirtualBox
27 Summary: VirtualBox OSE - x86 hardware virtualizer
28 Summary(pl.UTF-8): VirtualBox OSE - wirtualizator sprzętu x86
29 Name: %{pname}%{_alt_kernel}
33 Group: Applications/Emulators
34 Source0: http://download.virtualbox.org/virtualbox/%{version}/%{pname}-%{version}-OSE.tar.bz2
35 # Source0-md5: 1f53ebed0f55df129f6cf72dba646c3a
36 Source1: http://download.virtualbox.org/virtualbox/%{version}/UserManual.pdf
37 # Source1-md5: cf65a8164a18f7200520c1ec3399a918
38 Source2: http://download.virtualbox.org/virtualbox/%{version}/VBoxGuestAdditions_%{version}.iso
39 # Source2-md5: ae0512b8db853fdea9fc262fc04bd242
40 Source3: %{pname}-vboxdrv.init
41 Source4: %{pname}-vboxadd.init
42 Source5: %{pname}.desktop
44 Patch0: %{pname}-configure.patch
45 Patch1: %{pname}-qt-paths.patch
46 Patch2: %{pname}-shared-libstdc++.patch
47 Patch3: %{pname}-disable-xclient-build.patch
48 Patch4: %{pname}-configure-spaces.patch
49 URL: http://www.virtualbox.org/
51 BuildRequires: SDL-devel >= 1.2.7
52 BuildRequires: alsa-lib-devel >= 1.0.6
56 BuildRequires: gcc >= 5:3.2.3
57 %if "%{pld_release}" != "ti"
58 BuildRequires: compat-gcc-34
62 %if %{with dist_kernel}
63 BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.20
66 BuildRequires: libIDL-devel
67 BuildRequires: libpng >= 1.2.5
68 BuildRequires: libstdc++-devel >= 5:3.2.3
69 BuildRequires: libuuid-devel
70 BuildRequires: libxml2-devel >= 2.6.26
71 BuildRequires: libxslt-devel >= 1.1.17
72 BuildRequires: libxslt-progs >= 1.1.17
73 BuildRequires: pkgconfig
74 BuildRequires: pulseaudio-devel >= 0.9.0
75 BuildRequires: qt4-build >= 4.2.0
76 BuildRequires: qt4-linguist
78 BuildRequires: rpmbuild(macros) >= 1.379
81 BuildRequires: xalan-c-devel >= 1.10.0
82 BuildRequires: xerces-c-devel >= 2.6.0
83 BuildRequires: xorg-lib-libXcursor-devel
84 BuildRequires: zlib-devel >= 1.2.1
86 BuildRequires: gcc-multilib
87 BuildRequires: glibc-devel(i686)
88 BuildRequires: libstdc++-multilib-devel
91 Requires(post,preun): /sbin/chkconfig
92 Requires(postun): /usr/sbin/groupdel
93 Requires(pre): /usr/bin/getgid
94 Requires(pre): /usr/sbin/groupadd
97 ExclusiveArch: %{ix86} %{x8664}
98 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
107 InnoTek VirtualBox OSE is a general-purpose full virtualizer for x86
108 hardware. Targeted at server, desktop and embedded use, it is now the
109 only professional-quality virtualization solution that is also Open
112 Some of the features of VirtualBox OSE are:
114 Modularity: VirtualBox OSE has an extremely modular design with
115 well-defined internal programming interfaces and a client/server
116 design. This makes it easy to control it from several interfaces at
117 once: for example, you can start a virtual machine in a typical
118 virtual machine GUI and then control that machine from the command
119 line. VirtualBox OSE also comes with a full Software Development Kit:
120 even though it is Open Source Software, you don't have to hack the
121 source to write a new interface for VirtualBox OSE.
123 Virtual machine descriptions in XML: the configuration settings of
124 virtual machines are stored entirely in XML and are independent of the
125 local machines. Virtual machine definitions can therefore easily be
126 ported to other computers.
128 %description -l pl.UTF-8
129 InnoTek VirtualBox OSE jest emulatorem sprzętu x86. Kierowany do
130 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
131 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
132 również jako Otwarte Oprogramowanie.
134 Przykładowe cechy VirtualBoksa:
136 Modularność: VirtualBox OSE jest wysoce zmodularyzowanym produktem z
137 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
138 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
139 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
140 poziomu interfejsu graficznego, a później kontrolować ją z linii
141 poleceń. VirtualBox OSE dostarcza również pełny pakiet deweloperski,
142 co pozwala stworzyć dowolny inny interfejs zarządzania maszyną
145 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
146 wirtualnych są w całości przechowywane w XML-u i są niezależne od
147 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
148 konfigurację maszyny wirtualnej na inny komputer.
151 Summary: udev rules for VirtualBox OSE kernel modules
152 Summary(pl.UTF-8): Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
158 udev rules for VirtualBox OSE kernel modules.
160 %description udev -l pl.UTF-8
161 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa.
163 %package -n kernel%{_alt_kernel}-misc-vboxadd
164 Summary: Linux kernel module for VirtualBox OSE
165 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
166 Release: %{rel}@%{_kernel_ver_str}
168 Requires(post,postun): /sbin/depmod
169 Requires: dev >= 2.9.0-7
170 %if %{with dist_kernel}
171 %requires_releq_kernel
172 #Requires(postun): %%releq_kernel
174 Provides: kernel(vboxadd) = %{version}-%{rel}
176 %description -n kernel%{_alt_kernel}-misc-vboxadd
177 Linux kernel module vboxadd for VirtualBox OSE.
179 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
180 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
182 %package -n kernel%{_alt_kernel}-misc-vboxdrv
183 Summary: Linux kernel module for VirtualBox OSE
184 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
185 Release: %{rel}@%{_kernel_ver_str}
187 Requires(post,postun): /sbin/depmod
188 Requires: dev >= 2.9.0-7
189 %if %{with dist_kernel}
190 %requires_releq_kernel
191 Requires(postun): %releq_kernel
193 Provides: kernel(vboxdrv) = %{version}-%{rel}
195 %description -n kernel%{_alt_kernel}-misc-vboxdrv
196 Linux kernel module vboxdrv for VirtualBox OSE.
198 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
199 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
201 %package -n kernel%{_alt_kernel}-misc-vboxvfs
202 Summary: Linux kernel module for VirtualBox OSE
203 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
204 Release: %{rel}@%{_kernel_ver_str}
206 Requires(post,postun): /sbin/depmod
207 Requires: dev >= 2.9.0-7
208 %if %{with dist_kernel}
209 %requires_releq_kernel
210 Requires(postun): %releq_kernel
212 Provides: kernel(vboxvfs) = %{version}-%{rel}
214 %description -n kernel%{_alt_kernel}-misc-vboxvfs
215 Linux kernel module vboxvfs for VirtualBox OSE.
217 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
218 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
220 %package -n xorg-driver-input-vboxmouse
221 Summary: X.org mouse driver for VirtualBox OSE guest OS
222 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
224 Group: X11/Applications
225 Requires: xorg-xserver-server >= 1.0.99.901
227 %description -n xorg-driver-input-vboxmouse
228 X.org mouse driver for VirtualBox OSE guest OS.
230 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
231 Sterownik myszy dla systemu gościa w VirtualBoksie.
233 %package -n xorg-driver-video-vboxvideo
234 Summary: X.org video driver for VirtualBox OSE guest OS
235 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
237 Group: X11/Applications
238 Requires: xorg-xserver-server >= 1.0.99.901
240 %description -n xorg-driver-video-vboxvideo
241 X.org video driver for VirtualBox OSE guest OS.
243 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
244 Sterownik grafiki dla systemu gościa w VirtualBoksie.
247 %setup -q -n %{pname}-%{version}
258 cat <<'EOF' > udev.conf
259 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
260 KERNEL=="vboxadd", NAME="%k", GROUP="vbox", MODE="0660"
265 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
266 ../src/VBox/Additions/linux/export_modules modules.tar.gz
267 tar -zxf modules.tar.gz && rm -f modules.tar.gz
268 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
269 tar -zxf modules.tar.gz && rm -f modules.tar.gz
272 # HACK, is this really safe on x86_64?
273 sed -i -e '/#.*define.*RTMEMALLOC_EXEC_HEAP/d' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
277 %if %{with userspace}
279 --with-gcc="%{__cc}" \
280 %if "%{pld_release}" != "ti"
281 --with-gcc-compat="gcc-3.4" \
283 --with-g++="%{__cxx}" \
288 kmk -j1 %{?with_verbose:KBUILD_VERBOSE=3}
293 %build_kernel_modules -m vboxadd -C vboxadd
294 %build_kernel_modules -m vboxdrv -C vboxdrv
295 cp -a vboxadd/Module.symvers vboxvfs
296 %build_kernel_modules -m vboxvfs -C vboxvfs -c
301 rm -rf $RPM_BUILD_ROOT
303 %if %{with userspace}
305 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
306 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
308 install %{SOURCE6} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
309 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
310 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
311 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
315 install out/linux.%{outdir}/release/bin/VBox*.rel \
316 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
319 install out/linux.%{outdir}/release/bin/VBox*.so \
320 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
321 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
322 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
324 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
325 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
327 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
328 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
329 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
331 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
332 $RPM_BUILD_ROOT%{_bindir}
335 install -d $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input}
336 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
337 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
338 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
339 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
342 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
343 install %{SOURCE5} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
345 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
346 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
350 install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
351 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxdrv
352 install %{SOURCE4} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxadd
353 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
354 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
355 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
359 rm -rf $RPM_BUILD_ROOT
362 %groupadd -g 221 -r -f vbox
366 NOTE: You must also install kernel module for this software to work
367 kernel-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
368 kernel-desktop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
369 kernel-laptop-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
370 kernel-vanilla-misc-vboxdrv-%{version}-%{rel}@%{_kernel_ver_str}
373 Depending on which kernel brand You use.
378 if [ "$1" = "0" ]; then
382 %post -n kernel%{_alt_kernel}-misc-vboxadd
383 %depmod %{_kernel_ver}
384 /sbin/chkconfig --add vboxadd
385 %service vboxadd restart "VirtualBox OSE guest additions driver"
387 %postun -n kernel%{_alt_kernel}-misc-vboxadd
388 %depmod %{_kernel_ver}
390 %preun -n kernel%{_alt_kernel}-misc-vboxadd
391 if [ "$1" = "0" ]; then
392 %service vboxadd stop
393 /sbin/chkconfig --del vboxadd
396 %post -n kernel%{_alt_kernel}-misc-vboxdrv
397 %depmod %{_kernel_ver}
398 /sbin/chkconfig --add vboxdrv
399 %service vboxdrv restart "VirtualBox OSE driver"
401 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
402 %depmod %{_kernel_ver}
404 %preun -n kernel%{_alt_kernel}-misc-vboxdrv
405 if [ "$1" = "0" ]; then
406 %service vboxdrv stop
407 /sbin/chkconfig --del vboxdrv
410 %post -n kernel%{_alt_kernel}-misc-vboxvfs
411 %depmod %{_kernel_ver}
413 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
414 %depmod %{_kernel_ver}
416 %if %{with userspace}
418 %defattr(644,root,root,755)
420 %dir %{_libdir}/VirtualBox
421 %dir %{_libdir}/VirtualBox/additions
422 %dir %{_libdir}/VirtualBox/components
423 %dir %{_libdir}/VirtualBox/nls
424 %attr(755,root,root) %{_bindir}/mountvboxsf
425 %attr(755,root,root) %{_bindir}/vditool
426 %attr(755,root,root) %{_bindir}/VBox*
427 %attr(755,root,root) %{_bindir}/VirtualBox
428 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
429 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
430 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
431 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
432 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
433 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
434 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
436 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
438 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
439 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
440 %{_libdir}/VirtualBox/*.gc
441 %{_libdir}/VirtualBox/*.r0
442 %{_libdir}/VirtualBox/*.xpt
443 %{_libdir}/VirtualBox/additions/*
444 %{_libdir}/VirtualBox/components/*
445 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
446 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
447 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
448 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
449 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
450 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
451 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
452 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
453 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
454 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
455 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
456 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
457 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
458 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
459 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
460 %lang(pt) %{_libdir}/VirtualBox/nls/*_pt.qm
461 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
462 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
463 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
464 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
465 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
466 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
467 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
468 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
469 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
470 %{_pixmapsdir}/VBox.png
471 %{_desktopdir}/%{pname}.desktop
474 %defattr(644,root,root,755)
475 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
477 # Drivers are for Guest OS, which is 32-bit.
479 %files -n xorg-driver-input-vboxmouse
480 %defattr(644,root,root,755)
481 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
483 %files -n xorg-driver-video-vboxvideo
484 %defattr(644,root,root,755)
485 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
490 %files -n kernel%{_alt_kernel}-misc-vboxadd
491 %defattr(644,root,root,755)
492 %attr(754,root,root) /etc/rc.d/init.d/vboxadd
493 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
495 %files -n kernel%{_alt_kernel}-misc-vboxdrv
496 %defattr(644,root,root,755)
497 %attr(754,root,root) /etc/rc.d/init.d/vboxdrv
498 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
500 %files -n kernel%{_alt_kernel}-misc-vboxvfs
501 %defattr(644,root,root,755)
502 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*