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: f56f0d904013cbc0940108ed042e539d
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 URL: http://www.virtualbox.org/
47 BuildRequires: SDL-devel
48 BuildRequires: alsa-lib-devel
52 BuildRequires: gcc >= 5:3.2.3
54 %{?with_dist_kernel:BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.7}
55 BuildRequires: libIDL-devel
56 BuildRequires: libuuid-devel
57 BuildRequires: libxslt-progs
58 BuildRequires: pkgconfig
59 BuildRequires: pulseaudio-devel
60 BuildRequires: qt-devel >= 6:3.3.6
61 BuildRequires: qt-linguist
62 BuildRequires: rpmbuild(macros) >= 1.329
64 BuildRequires: xalan-c-devel >= 1.10.0
65 BuildRequires: xerces-c-devel >= 2.6.0
66 BuildRequires: xorg-lib-libXcursor-devel
67 BuildRequires: zlib-devel >= 1.2.1
69 BuildRequires: gcc-multilib
70 BuildRequires: libstdc++-multilib-devel
71 # TODO: How to add glibc-devel.i686 here ?
73 Requires(post,preun): /sbin/chkconfig
74 Requires(postun): /usr/sbin/groupdel
75 Requires(pre): /usr/bin/getgid
76 Requires(pre): /usr/sbin/groupadd
79 ExclusiveArch: %{ix86} %{x8664}
80 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
89 InnoTek VirtualBox is a general-purpose full virtualizer for x86
90 hardware. Targeted at server, desktop and embedded use, it is now the
91 only professional-quality virtualization solution that is also Open
94 Some of the features of VirtualBox are:
96 Modularity: VirtualBox has an extremely modular design with
97 well-defined internal programming interfaces and a client/server
98 design. This makes it easy to control it from several interfaces at
99 once: for example, you can start a virtual machine in a typical
100 virtual machine GUI and then control that machine from the command
101 line. VirtualBox also comes with a full Software Development Kit: even
102 though it is Open Source Software, you don't have to hack the source
103 to write a new interface for VirtualBox.
105 Virtual machine descriptions in XML: the configuration settings of
106 virtual machines are stored entirely in XML and are independent of the
107 local machines. Virtual machine definitions can therefore easily be
108 ported to other computers.
110 %description -l pl.UTF-8
111 InnoTek VirtualBox jest emulatorem sprzętu x86. Kierowany do
112 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
113 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
114 również jako Otwarte Oprogramowanie.
116 Przykładowe cechy VirtualBoksa:
118 Modularność: VirtualBox jest wysoce zmodularyzowanym produktem z
119 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
120 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
121 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
122 poziomu interfejsu graficznego, a później kontrolować ją z linii
123 poleceń. VirtualBox dostarcza również pełny pakiet deweloperski, co
124 pozwala stworzyć dowolny inny interfejs zarządzania maszyną wirtualną.
126 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
127 wirtualnych są w całości przechowywane w XML-u i są niezależne od
128 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
129 konfigurację maszyny wirtualnej na inny komputer.
132 Summary: udev rules for VirtualBox kernel modules
133 Summary(pl.UTF-8): Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
134 Release: %{rel}@%{_kernel_ver_str}
139 udev rules for VirtualBox kernel modules
141 %description udev -l pl.UTF-8
142 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
144 %package -n kernel%{_alt_kernel}-misc-vboxadd
145 Summary: Linux kernel module for VirtualBox
146 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
147 Release: %{rel}@%{_kernel_ver_str}
149 Requires(post,postun): /sbin/depmod
150 Requires: dev >= 2.9.0-7
151 %if %{with dist_kernel}
152 %requires_releq_kernel
153 #Requires(postun): %%releq_kernel
155 Provides: kernel(vboxadd) = %{version}-%{rel}
157 %description -n kernel%{_alt_kernel}-misc-vboxadd
158 Linux kernel module vboxadd for VirtualBox.
160 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
161 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
163 %package -n kernel%{_alt_kernel}-misc-vboxdrv
164 Summary: Linux kernel module for VirtualBox
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(vboxdrv) = %{version}-%{rel}
176 %description -n kernel%{_alt_kernel}-misc-vboxdrv
177 Linux kernel module vboxdrv for VirtualBox.
179 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
180 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
182 %package -n kernel%{_alt_kernel}-misc-vboxvfs
183 Summary: Linux kernel module for VirtualBox
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(vboxvfs) = %{version}-%{rel}
195 %description -n kernel%{_alt_kernel}-misc-vboxvfs
196 Linux kernel module vboxvfs for VirtualBox.
198 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
199 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
201 %package -n xorg-driver-input-vboxmouse
202 Summary: X.org mouse driver for VirtualBox guest OS
203 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
205 Group: X11/Applications
206 Requires: xorg-xserver-server >= 1.0.99.901
208 %description -n xorg-driver-input-vboxmouse
209 X.org mouse driver for VirtualBox guest OS.
211 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
212 Sterownik myszy dla systemu gościa w VirtualBoksie.
214 %package -n xorg-driver-video-vboxvideo
215 Summary: X.org video driver for VirtualBox guest OS
216 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
218 Group: X11/Applications
219 Requires: xorg-xserver-server >= 1.0.99.901
221 %description -n xorg-driver-video-vboxvideo
222 X.org video driver for VirtualBox guest OS.
224 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
225 Sterownik grafiki dla systemu gościa w VirtualBoksie.
228 %setup -q -n %{pname}-%{version}_OSE
237 cat <<'EOF' > udev.conf
238 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
244 KDIR="%{_builddir}/%{buildsubdir}/kernel"
246 cp -Ra %{_kernelsrcdir}/include $KDIR
247 %ifarch %{x8664} %{ix86}
248 if [ -d $KDIR/include/asm-x86 ]; then
249 ln -sf $KDIR/include/asm-x86 $KDIR/include/asm
252 ln -sf $KDIR/include/asm-x86_64 $KDIR/include/asm
254 ln -sf $KDIR/include/asm-i386 $KDIR/include/asm
259 %if %{with dist_kernel}
260 ln -sf $KDIR/include/linux/autoconf-dist.h $KDIR/include/linux/autoconf.h
262 ln -sf $KDIR/include/linux/autoconf-nondist.h $KDIR/include/linux/autoconf.h
266 --with-gcc="%{__cc}" \
267 --with-g++="%{__cxx}" \
270 %if %{with userspace}
271 . ./env.sh && kmk -j1
275 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
277 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
278 tar -zxf modules.tar.gz && rm -f modules.tar.gz
279 ../src/VBox/Additions/linux/export_modules modules.tar.gz
280 tar -zxf modules.tar.gz && rm -f modules.tar.gz
283 # HACK, is this really safe on x86_64?
284 sed -i -e 's:#.*define.*RTMEMALLOC_EXEC_HEAP::g' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
287 %build_kernel_modules -m vboxadd -C vboxadd
288 %build_kernel_modules -m vboxdrv -C vboxdrv
289 cp -a vboxadd/Module.symvers vboxvfs
290 %build_kernel_modules -m vboxvfs -C vboxvfs
295 rm -rf $RPM_BUILD_ROOT
297 %if %{with userspace}
299 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
300 $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
301 $RPM_BUILD_ROOT/etc/rc.d/init.d \
302 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers \
303 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input
305 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/virtualbox
307 install %{SOURCE5} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
308 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
309 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
310 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
314 install out/linux.%{outdir}/release/bin/VBox*.rel \
315 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
318 install out/linux.%{outdir}/release/bin/VBox*.so \
319 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
320 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
321 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
323 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
324 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
326 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
327 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
328 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
330 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
331 $RPM_BUILD_ROOT%{_bindir}
333 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
334 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
336 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
337 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
339 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
340 install %{SOURCE4} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
342 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
343 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
349 [ ! -d $MODULE ] && continue;
352 %install_kernel_modules -m $MODULE -d misc
359 rm -rf $RPM_BUILD_ROOT
362 %groupadd -g 221 -r -f vbox
365 /sbin/chkconfig --add virtualbox
366 %service virtualbox restart "VirtualBox"
369 if [ "$1" = "0" ]; then
370 %service virtualbox stop
371 /sbin/chkconfig --del virtualbox
375 if [ "$1" = "0" ]; then
379 %post -n kernel%{_alt_kernel}-misc-vboxadd
380 %depmod %{_kernel_ver}
382 %postun -n kernel%{_alt_kernel}-misc-vboxadd
383 %depmod %{_kernel_ver}
385 %post -n kernel%{_alt_kernel}-misc-vboxdrv
386 %depmod %{_kernel_ver}
388 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
389 %depmod %{_kernel_ver}
391 %post -n kernel%{_alt_kernel}-misc-vboxvfs
392 %depmod %{_kernel_ver}
394 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
395 %depmod %{_kernel_ver}
397 %if %{with userspace}
399 %defattr(644,root,root,755)
401 %dir %{_libdir}/VirtualBox
402 %dir %{_libdir}/VirtualBox/additions
403 %dir %{_libdir}/VirtualBox/components
404 %dir %{_libdir}/VirtualBox/nls
405 %attr(754,root,root) /etc/rc.d/init.d/virtualbox
406 %attr(755,root,root) %{_bindir}/mountvboxsf
407 %attr(755,root,root) %{_bindir}/vditool
408 %attr(755,root,root) %{_bindir}/VBox*
409 %attr(755,root,root) %{_bindir}/VirtualBox
410 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
411 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
412 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
413 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
414 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
415 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
416 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
418 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
420 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
421 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
422 %{_libdir}/VirtualBox/*.gc
423 %{_libdir}/VirtualBox/*.r0
424 %{_libdir}/VirtualBox/*.xpt
425 %{_libdir}/VirtualBox/additions/*
426 %{_libdir}/VirtualBox/components/*
427 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
428 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
429 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
430 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
431 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
432 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
433 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
434 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
435 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
436 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
437 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
438 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
439 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
440 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
441 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
442 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
443 %lang(pt_PT) %{_libdir}/VirtualBox/nls/*_pt_PT.qm
444 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
445 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
446 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
447 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
448 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
449 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
450 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
451 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
452 %{_pixmapsdir}/VBox.png
453 %{_desktopdir}/%{pname}.desktop
456 %defattr(644,root,root,755)
457 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
459 # Drivers are for Guest OS, which is 32-bit.
461 %files -n xorg-driver-input-vboxmouse
462 %defattr(644,root,root,755)
463 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
465 %files -n xorg-driver-video-vboxvideo
466 %defattr(644,root,root,755)
467 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
472 %files -n kernel%{_alt_kernel}-misc-vboxadd
473 %defattr(644,root,root,755)
474 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
476 %files -n kernel%{_alt_kernel}-misc-vboxdrv
477 %defattr(644,root,root,755)
478 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
480 %files -n kernel%{_alt_kernel}-misc-vboxvfs
481 %defattr(644,root,root,755)
482 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*