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: %{pname}-%{version}-OSE.tar.bz2
36 # Source0-md5: f7b48ec55ac1ca17c575bf9dda80c301
37 #Source1: http://download.virtualbox.org/virtualbox/%{version}/UserManual.pdf
38 Source1: UserManual.pdf
39 # Source1-md5: 3f1227312e8396819971731f2d184127
40 #Source2: http://download.virtualbox.org/virtualbox/%{version}/VBoxGuestAdditions_%{version}.iso
41 Source2: VBoxGuestAdditions_%{version}.iso
42 # Source2-md5: ee915cc99713f448ca362fa81af82b47
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: OpenGL-devel
55 BuildRequires: QtGui-devel
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}" == "th"
63 BuildRequires: compat-gcc-34
67 %if %{with dist_kernel}
68 BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.20
71 BuildRequires: libIDL-devel
72 BuildRequires: libpng-devel >= 1.2.5
73 BuildRequires: libstdc++-devel >= 5:3.2.3
74 BuildRequires: libuuid-devel
75 BuildRequires: libxml2-devel >= 2.6.26
76 BuildRequires: libxslt-devel >= 1.1.17
77 BuildRequires: libxslt-progs >= 1.1.17
78 BuildRequires: pkgconfig
79 BuildRequires: pulseaudio-devel >= 0.9.0
80 BuildRequires: python-devel
81 BuildRequires: qt4-build >= 4.2.0
82 BuildRequires: qt4-linguist
84 BuildRequires: rpmbuild(macros) >= 1.379
86 BuildRequires: sed >= 4.0
88 BuildRequires: xalan-c-devel >= 1.10.0
89 BuildRequires: xerces-c-devel >= 2.6.0
90 BuildRequires: xorg-lib-libXcursor-devel
91 BuildRequires: xorg-lib-libXmu-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}
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 %if %{with userspace}
282 --with-gcc="%{__cc}" \
283 %if "%{pld_release}" != "ti"
284 --with-gcc-compat="gcc-3.4" \
286 --with-g++="%{__cxx}" \
287 --disable-hardening \
292 kmk -j1 %{?with_verbose:KBUILD_VERBOSE=3}
297 sed -i -e 's/-DVBOX_WITH_HARDENING//g' vboxdrv/Makefile
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,Headless,Manage,SDL,SVC,Tunctl,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}} \
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/VBoxHeadless
437 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
438 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
439 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxTunctl
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/additions/*
450 %{_libdir}/VirtualBox/components/*
451 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
452 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
453 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
454 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
455 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
456 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
457 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
458 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
459 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
460 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
461 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
462 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
463 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
464 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
465 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
466 %lang(pt) %{_libdir}/VirtualBox/nls/*_pt.qm
467 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
468 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
469 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
470 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
471 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
472 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
473 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
474 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
475 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
476 %{_pixmapsdir}/VBox.png
477 %{_desktopdir}/%{pname}.desktop
480 %defattr(644,root,root,755)
481 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
483 # Drivers are for Guest OS, which is 32-bit.
485 %files -n xorg-driver-input-vboxmouse
486 %defattr(644,root,root,755)
487 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
489 %files -n xorg-driver-video-vboxvideo
490 %defattr(644,root,root,755)
491 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
496 %files -n kernel%{_alt_kernel}-misc-vboxadd
497 %defattr(644,root,root,755)
498 %attr(754,root,root) /etc/rc.d/init.d/vboxadd
499 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
501 %files -n kernel%{_alt_kernel}-misc-vboxdrv
502 %defattr(644,root,root,755)
503 %attr(754,root,root) /etc/rc.d/init.d/vboxdrv
504 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
506 %files -n kernel%{_alt_kernel}-misc-vboxvfs
507 %defattr(644,root,root,755)
508 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*