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}_OSE.tar.bz2
34 # Source0-md5: fbebb3f04911c4c39aac27b1d3532acc
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: e021a51fc5946659b0789d134b1fd5ff
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(postun): /usr/sbin/groupdel
74 Requires(pre): /usr/bin/getgid
75 Requires(pre): /usr/sbin/groupadd
78 ExclusiveArch: %{ix86} %{x8664}
79 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
88 InnoTek VirtualBox is a general-purpose full virtualizer for x86
89 hardware. Targeted at server, desktop and embedded use, it is now the
90 only professional-quality virtualization solution that is also Open
93 Some of the features of VirtualBox are:
95 Modularity: VirtualBox has an extremely modular design with
96 well-defined internal programming interfaces and a client/server
97 design. This makes it easy to control it from several interfaces at
98 once: for example, you can start a virtual machine in a typical
99 virtual machine GUI and then control that machine from the command
100 line. VirtualBox also comes with a full Software Development Kit: even
101 though it is Open Source Software, you don't have to hack the source
102 to write a new interface for VirtualBox.
104 Virtual machine descriptions in XML: the configuration settings of
105 virtual machines are stored entirely in XML and are independent of the
106 local machines. Virtual machine definitions can therefore easily be
107 ported to other computers.
109 %description -l pl.UTF-8
110 InnoTek VirtualBox jest emulatorem sprzętu x86. Kierowany do
111 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
112 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
113 również jako Otwarte Oprogramowanie.
115 Przykładowe cechy VirtualBoksa:
117 Modularność: VirtualBox jest wysoce zmodularyzowanym produktem z
118 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
119 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
120 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
121 poziomu interfejsu graficznego, a później kontrolować ją z linii
122 poleceń. VirtualBox dostarcza również pełny pakiet deweloperski, co
123 pozwala stworzyć dowolny inny interfejs zarządzania maszyną wirtualną.
125 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
126 wirtualnych są w całości przechowywane w XML-u i są niezależne od
127 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
128 konfigurację maszyny wirtualnej na inny komputer.
131 Summary: udev rules for VirtualBox kernel modules
132 Summary(pl.UTF-8): Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
133 Release: %{rel}@%{_kernel_ver_str}
138 udev rules for VirtualBox kernel modules
140 %description udev -l pl.UTF-8
141 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
143 %package -n kernel%{_alt_kernel}-misc-vboxadd
144 Summary: Linux kernel module for VirtualBox
145 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
146 Release: %{rel}@%{_kernel_ver_str}
148 Requires(post,postun): /sbin/depmod
149 Requires: dev >= 2.9.0-7
150 %if %{with dist_kernel}
151 %requires_releq_kernel
152 #Requires(postun): %%releq_kernel
154 Provides: kernel(vboxadd) = %{version}-%{rel}
156 %description -n kernel%{_alt_kernel}-misc-vboxadd
157 Linux kernel module vboxadd for VirtualBox.
159 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
160 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
162 %package -n kernel%{_alt_kernel}-misc-vboxdrv
163 Summary: Linux kernel module for VirtualBox
164 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
165 Release: %{rel}@%{_kernel_ver_str}
167 Requires(post,postun): /sbin/depmod
168 Requires: dev >= 2.9.0-7
169 %if %{with dist_kernel}
170 %requires_releq_kernel
171 Requires(postun): %releq_kernel
173 Provides: kernel(vboxdrv) = %{version}-%{rel}
175 %description -n kernel%{_alt_kernel}-misc-vboxdrv
176 Linux kernel module vboxdrv for VirtualBox.
178 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
179 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
181 %package -n kernel%{_alt_kernel}-misc-vboxvfs
182 Summary: Linux kernel module for VirtualBox
183 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
184 Release: %{rel}@%{_kernel_ver_str}
186 Requires(post,postun): /sbin/depmod
187 Requires: dev >= 2.9.0-7
188 %if %{with dist_kernel}
189 %requires_releq_kernel
190 Requires(postun): %releq_kernel
192 Provides: kernel(vboxvfs) = %{version}-%{rel}
194 %description -n kernel%{_alt_kernel}-misc-vboxvfs
195 Linux kernel module vboxvfs for VirtualBox.
197 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
198 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
200 %package -n xorg-driver-input-vboxmouse
201 Summary: X.org mouse driver for VirtualBox guest OS
202 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
204 Group: X11/Applications
205 Requires: xorg-xserver-server >= 1.0.99.901
207 %description -n xorg-driver-input-vboxmouse
208 X.org mouse driver for VirtualBox guest OS.
210 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
211 Sterownik myszy dla systemu gościa w VirtualBoksie.
213 %package -n xorg-driver-video-vboxvideo
214 Summary: X.org video driver for VirtualBox guest OS
215 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
217 Group: X11/Applications
218 Requires: xorg-xserver-server >= 1.0.99.901
220 %description -n xorg-driver-video-vboxvideo
221 X.org video driver for VirtualBox guest OS.
223 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
224 Sterownik grafiki dla systemu gościa w VirtualBoksie.
227 %setup -q -n %{pname}-%{version}_OSE
236 cat <<'EOF' > udev.conf
237 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
243 KDIR="%{_builddir}/%{buildsubdir}/kernel"
245 cp -Ra %{_kernelsrcdir}/include $KDIR
246 %ifarch %{x8664} %{ix86}
247 if [ -d $KDIR/include/asm-x86 ]; then
248 ln -sf $KDIR/include/asm-x86 $KDIR/include/asm
251 ln -sf $KDIR/include/asm-x86_64 $KDIR/include/asm
253 ln -sf $KDIR/include/asm-i386 $KDIR/include/asm
258 %if %{with dist_kernel}
259 ln -sf $KDIR/include/linux/autoconf-dist.h $KDIR/include/linux/autoconf.h
261 ln -sf $KDIR/include/linux/autoconf-nondist.h $KDIR/include/linux/autoconf.h
265 --with-gcc="%{__cc}" \
266 --with-g++="%{__cxx}" \
269 %if %{with userspace}
270 . ./env.sh && kmk -j1
274 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
276 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
277 tar -zxf modules.tar.gz && rm -f modules.tar.gz
278 ../src/VBox/Additions/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 's:#.*define.*RTMEMALLOC_EXEC_HEAP::g' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
286 %build_kernel_modules -m vboxadd -C vboxadd
287 %build_kernel_modules -m vboxdrv -C vboxdrv
288 cp -a vboxadd/Module.symvers vboxvfs
289 %build_kernel_modules -m vboxvfs -C vboxvfs
294 rm -rf $RPM_BUILD_ROOT
296 %if %{with userspace}
298 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
299 $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
300 $RPM_BUILD_ROOT/etc/rc.d/init.d \
301 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers \
302 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input
304 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/virtualbox
306 install %{SOURCE5} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
307 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
308 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
309 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
313 install out/linux.%{outdir}/release/bin/VBox*.rel \
314 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
317 install out/linux.%{outdir}/release/bin/VBox*.so \
318 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
319 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
320 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
322 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
323 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
325 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
326 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
327 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
329 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
330 $RPM_BUILD_ROOT%{_bindir}
332 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
333 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
335 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
336 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
338 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
339 install %{SOURCE4} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
341 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
342 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
348 [ ! -d $MODULE ] && continue;
351 %install_kernel_modules -m $MODULE -d misc
358 rm -rf $RPM_BUILD_ROOT
361 %groupadd -g 221 -r -f vbox
364 if [ "$1" = "0" ]; then
368 %post -n kernel%{_alt_kernel}-misc-vboxadd
369 %depmod %{_kernel_ver}
371 %postun -n kernel%{_alt_kernel}-misc-vboxadd
372 %depmod %{_kernel_ver}
374 %post -n kernel%{_alt_kernel}-misc-vboxdrv
375 %depmod %{_kernel_ver}
377 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
378 %depmod %{_kernel_ver}
380 %post -n kernel%{_alt_kernel}-misc-vboxvfs
381 %depmod %{_kernel_ver}
383 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
384 %depmod %{_kernel_ver}
386 %if %{with userspace}
388 %defattr(644,root,root,755)
390 %dir %{_libdir}/VirtualBox
391 %dir %{_libdir}/VirtualBox/additions
392 %dir %{_libdir}/VirtualBox/components
393 %dir %{_libdir}/VirtualBox/nls
394 %attr(754,root,root) /etc/rc.d/init.d/virtualbox
395 %attr(755,root,root) %{_bindir}/mountvboxsf
396 %attr(755,root,root) %{_bindir}/vditool
397 %attr(755,root,root) %{_bindir}/VBox*
398 %attr(755,root,root) %{_bindir}/VirtualBox
399 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
400 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
401 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
402 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
403 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
404 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
405 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
407 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
409 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
410 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
411 %{_libdir}/VirtualBox/*.gc
412 %{_libdir}/VirtualBox/*.r0
413 %{_libdir}/VirtualBox/*.xpt
414 %{_libdir}/VirtualBox/additions/*
415 %{_libdir}/VirtualBox/components/*
416 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
417 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
418 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
419 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
420 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
421 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
422 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
423 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
424 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
425 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
426 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
427 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
428 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
429 %lang(pt_PT) %{_libdir}/VirtualBox/nls/*_pt_PT.qm
430 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
431 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
432 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
433 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
434 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
435 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
436 %{_pixmapsdir}/VBox.png
437 %{_desktopdir}/%{pname}.desktop
440 %defattr(644,root,root,755)
441 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
443 # Drivers are for Guest OS, which is 32-bit.
445 %files -n xorg-driver-input-vboxmouse
446 %defattr(644,root,root,755)
447 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
449 %files -n xorg-driver-video-vboxvideo
450 %defattr(644,root,root,755)
451 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
456 %files -n kernel%{_alt_kernel}-misc-vboxadd
457 %defattr(644,root,root,755)
458 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
460 %files -n kernel%{_alt_kernel}-misc-vboxdrv
461 %defattr(644,root,root,755)
462 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
464 %files -n kernel%{_alt_kernel}-misc-vboxvfs
465 %defattr(644,root,root,755)
466 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*