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
17 %undefine with_dist_kernel
20 %if "%{_alt_kernel}" != "%{nil}"
21 %undefine with_userspace
24 %define pname VirtualBox
26 Summary: VirtualBox - x86 hardware virtualizer
27 Summary(pl.UTF-8): VirtualBox - wirtualizator sprzętu x86
28 Name: %{pname}%{_alt_kernel}
32 Group: Applications/Emulators
33 Source0: http://www.virtualbox.org/download/%{version}/%{pname}-%{version}-1_OSE.tar.bz2
34 # Source0-md5: 305c65f9e91b6137cb773d578de09922
35 Source1: http://www.virtualbox.org/download/%{version}/UserManual.pdf
36 # Source1-md5: 9ba7f17584fb3e9c98e026a1501cf7c0
37 Source2: http://www.virtualbox.org/download/%{version}/VBoxGuestAdditions_%{version}.iso
38 # Source2-md5: 9d74dea92bd225ad59faee9fd427a55e
39 Source3: %{pname}.init
40 Source4: %{pname}.desktop
42 Patch0: %{pname}-configure.patch
43 Patch1: %{pname}-qt-paths.patch
44 Patch2: %{pname}-shared-libstdc++.patch
45 Patch3: %{pname}-disable-xclient-build.patch
46 Patch4: %{pname}-configure-spaces.patch
47 URL: http://www.virtualbox.org/
49 BuildRequires: SDL-devel
50 BuildRequires: alsa-lib-devel
54 BuildRequires: gcc >= 5:3.2.3
57 %{?with_dist_kernel:BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.20}
59 BuildRequires: libIDL-devel
60 BuildRequires: libuuid-devel
61 BuildRequires: libxslt-progs
62 BuildRequires: pkgconfig
63 BuildRequires: pulseaudio-devel
64 BuildRequires: qt-devel >= 6:3.3.6
65 BuildRequires: qt-linguist
67 BuildRequires: rpmbuild(macros) >= 1.379
70 BuildRequires: xalan-c-devel >= 1.10.0
71 BuildRequires: xerces-c-devel >= 2.6.0
72 BuildRequires: xorg-lib-libXcursor-devel
73 BuildRequires: zlib-devel >= 1.2.1
75 BuildRequires: gcc-multilib
76 BuildRequires: libstdc++-multilib-devel
77 # TODO: How to add glibc-devel.i686 here ?
80 Requires(post,preun): /sbin/chkconfig
81 Requires(postun): /usr/sbin/groupdel
82 Requires(pre): /usr/bin/getgid
83 Requires(pre): /usr/sbin/groupadd
86 ExclusiveArch: %{ix86} %{x8664}
87 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
96 InnoTek VirtualBox is a general-purpose full virtualizer for x86
97 hardware. Targeted at server, desktop and embedded use, it is now the
98 only professional-quality virtualization solution that is also Open
101 Some of the features of VirtualBox are:
103 Modularity: VirtualBox has an extremely modular design with
104 well-defined internal programming interfaces and a client/server
105 design. This makes it easy to control it from several interfaces at
106 once: for example, you can start a virtual machine in a typical
107 virtual machine GUI and then control that machine from the command
108 line. VirtualBox also comes with a full Software Development Kit: even
109 though it is Open Source Software, you don't have to hack the source
110 to write a new interface for VirtualBox.
112 Virtual machine descriptions in XML: the configuration settings of
113 virtual machines are stored entirely in XML and are independent of the
114 local machines. Virtual machine definitions can therefore easily be
115 ported to other computers.
117 %description -l pl.UTF-8
118 InnoTek VirtualBox jest emulatorem sprzętu x86. Kierowany do
119 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
120 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
121 również jako Otwarte Oprogramowanie.
123 Przykładowe cechy VirtualBoksa:
125 Modularność: VirtualBox jest wysoce zmodularyzowanym produktem z
126 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
127 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
128 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
129 poziomu interfejsu graficznego, a później kontrolować ją z linii
130 poleceń. VirtualBox dostarcza również pełny pakiet deweloperski, co
131 pozwala stworzyć dowolny inny interfejs zarządzania maszyną wirtualną.
133 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
134 wirtualnych są w całości przechowywane w XML-u i są niezależne od
135 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
136 konfigurację maszyny wirtualnej na inny komputer.
139 Summary: udev rules for VirtualBox kernel modules
140 Summary(pl.UTF-8): Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
146 udev rules for VirtualBox kernel modules
148 %description udev -l pl.UTF-8
149 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
151 %package -n kernel%{_alt_kernel}-misc-vboxadd
152 Summary: Linux kernel module for VirtualBox
153 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
154 Release: %{rel}@%{_kernel_ver_str}
156 Requires(post,postun): /sbin/depmod
157 Requires: dev >= 2.9.0-7
158 %if %{with dist_kernel}
159 %requires_releq_kernel
160 #Requires(postun): %%releq_kernel
162 Provides: kernel(vboxadd) = %{version}-%{rel}
164 %description -n kernel%{_alt_kernel}-misc-vboxadd
165 Linux kernel module vboxadd for VirtualBox.
167 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
168 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
170 %package -n kernel%{_alt_kernel}-misc-vboxdrv
171 Summary: Linux kernel module for VirtualBox
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(vboxdrv) = %{version}-%{rel}
183 %description -n kernel%{_alt_kernel}-misc-vboxdrv
184 Linux kernel module vboxdrv for VirtualBox.
186 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
187 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
189 %package -n kernel%{_alt_kernel}-misc-vboxvfs
190 Summary: Linux kernel module for VirtualBox
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(vboxvfs) = %{version}-%{rel}
202 %description -n kernel%{_alt_kernel}-misc-vboxvfs
203 Linux kernel module vboxvfs for VirtualBox.
205 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
206 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
208 %package -n xorg-driver-input-vboxmouse
209 Summary: X.org mouse driver for VirtualBox guest OS
210 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
212 Group: X11/Applications
213 Requires: xorg-xserver-server >= 1.0.99.901
215 %description -n xorg-driver-input-vboxmouse
216 X.org mouse driver for VirtualBox guest OS.
218 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
219 Sterownik myszy dla systemu gościa w VirtualBoksie.
221 %package -n xorg-driver-video-vboxvideo
222 Summary: X.org video driver for VirtualBox guest OS
223 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
225 Group: X11/Applications
226 Requires: xorg-xserver-server >= 1.0.99.901
228 %description -n xorg-driver-video-vboxvideo
229 X.org video driver for VirtualBox guest OS.
231 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
232 Sterownik grafiki dla systemu gościa w VirtualBoksie.
235 %setup -q -n %{pname}-%{version}_OSE
246 cat <<'EOF' > udev.conf
247 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
252 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
253 ../src/VBox/Additions/linux/export_modules modules.tar.gz
254 tar -zxf modules.tar.gz && rm -f modules.tar.gz
255 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
256 tar -zxf modules.tar.gz && rm -f modules.tar.gz
259 # HACK, is this really safe on x86_64?
260 sed -i -e '/#.*define.*RTMEMALLOC_EXEC_HEAP/d' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
264 %if %{with userspace}
266 --with-gcc="%{__cc}" \
267 --with-g++="%{__cxx}" \
270 . ./env.sh && kmk -j1
275 %build_kernel_modules -m vboxadd -C vboxadd
276 %build_kernel_modules -m vboxdrv -C vboxdrv
277 cp -a vboxadd/Module.symvers vboxvfs
278 %build_kernel_modules -m vboxvfs -C vboxvfs -c
283 rm -rf $RPM_BUILD_ROOT
285 %if %{with userspace}
287 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
288 $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
289 $RPM_BUILD_ROOT/etc/rc.d/init.d
291 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/virtualbox
293 install %{SOURCE5} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
294 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
295 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
296 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
300 install out/linux.%{outdir}/release/bin/VBox*.rel \
301 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
304 install out/linux.%{outdir}/release/bin/VBox*.so \
305 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
306 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
307 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
309 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
310 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
312 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
313 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
314 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
316 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
317 $RPM_BUILD_ROOT%{_bindir}
320 install -d $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input}
321 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
322 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
323 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
324 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
327 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
328 install %{SOURCE4} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
330 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
331 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
335 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
336 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
337 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
341 rm -rf $RPM_BUILD_ROOT
344 %groupadd -g 221 -r -f vbox
347 /sbin/chkconfig --add virtualbox
348 %service virtualbox restart "VirtualBox"
351 if [ "$1" = "0" ]; then
352 %service virtualbox stop
353 /sbin/chkconfig --del virtualbox
357 if [ "$1" = "0" ]; then
361 %post -n kernel%{_alt_kernel}-misc-vboxadd
362 %depmod %{_kernel_ver}
364 %postun -n kernel%{_alt_kernel}-misc-vboxadd
365 %depmod %{_kernel_ver}
367 %post -n kernel%{_alt_kernel}-misc-vboxdrv
368 %depmod %{_kernel_ver}
370 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
371 %depmod %{_kernel_ver}
373 %post -n kernel%{_alt_kernel}-misc-vboxvfs
374 %depmod %{_kernel_ver}
376 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
377 %depmod %{_kernel_ver}
379 %if %{with userspace}
381 %defattr(644,root,root,755)
383 %dir %{_libdir}/VirtualBox
384 %dir %{_libdir}/VirtualBox/additions
385 %dir %{_libdir}/VirtualBox/components
386 %dir %{_libdir}/VirtualBox/nls
387 %attr(754,root,root) /etc/rc.d/init.d/virtualbox
388 %attr(755,root,root) %{_bindir}/mountvboxsf
389 %attr(755,root,root) %{_bindir}/vditool
390 %attr(755,root,root) %{_bindir}/VBox*
391 %attr(755,root,root) %{_bindir}/VirtualBox
392 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
393 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
394 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
395 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
396 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
397 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
398 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
400 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
402 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
403 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
404 %{_libdir}/VirtualBox/*.gc
405 %{_libdir}/VirtualBox/*.r0
406 %{_libdir}/VirtualBox/*.xpt
407 %{_libdir}/VirtualBox/additions/*
408 %{_libdir}/VirtualBox/components/*
409 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
410 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
411 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
412 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
413 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
414 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
415 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
416 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
417 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
418 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
419 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
420 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
421 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
422 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
423 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
424 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
425 %lang(pt_PT) %{_libdir}/VirtualBox/nls/*_pt_PT.qm
426 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
427 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
428 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
429 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
430 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
431 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
432 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
433 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
434 %{_pixmapsdir}/VBox.png
435 %{_desktopdir}/%{pname}.desktop
438 %defattr(644,root,root,755)
439 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
441 # Drivers are for Guest OS, which is 32-bit.
443 %files -n xorg-driver-input-vboxmouse
444 %defattr(644,root,root,755)
445 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
447 %files -n xorg-driver-video-vboxvideo
448 %defattr(644,root,root,755)
449 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
454 %files -n kernel%{_alt_kernel}-misc-vboxadd
455 %defattr(644,root,root,755)
456 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
458 %files -n kernel%{_alt_kernel}-misc-vboxdrv
459 %defattr(644,root,root,755)
460 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
462 %files -n kernel%{_alt_kernel}-misc-vboxvfs
463 %defattr(644,root,root,755)
464 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*