3 # - Find how to compile with PLD CFLAGS/CXXFLAGS/LDFLAGS.
5 # - Package utils (and write initscripts ?) for Guest OS.
7 # - Check License of VBoxGuestAdditions_*.iso, it's propably not GPL v2.
8 # If so check if it is distributable.
11 %bcond_without dist_kernel # without distribution kernel
12 %bcond_without kernel # don't build kernel module
13 %bcond_without userspace # don't build userspace package
18 %undefine with_dist_kernel
21 Summary: VirtualBox - x86 hardware virtualizer
22 Summary(pl.UTF-8): VirtualBox - wirtualizator sprzętu x86
27 Group: Applications/Emulators
28 Source0: http://www.virtualbox.org/download/%{version}/%{name}-%{version}_OSE.tar.bz2
29 # Source0-md5: fbebb3f04911c4c39aac27b1d3532acc
30 Source1: http://www.virtualbox.org/download/%{version}/UserManual.pdf
31 # Source1-md5: f56f0d904013cbc0940108ed042e539d
32 Source2: http://www.virtualbox.org/download/%{version}/VBoxGuestAdditions_%{version}.iso
33 # Source2-md5: e021a51fc5946659b0789d134b1fd5ff
34 Source3: %{name}.desktop
36 Patch0: %{name}-configure.patch
37 Patch1: %{name}-qt-paths.patch
38 Patch2: %{name}-shared-libstdc++.patch
39 Patch3: %{name}-disable-xclient-build.patch
40 URL: http://www.virtualbox.org/
41 BuildRequires: SDL-devel
42 BuildRequires: alsa-lib-devel
46 BuildRequires: gcc >= 5:3.2.3
48 %{?with_dist_kernel:BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.7}
49 BuildRequires: libIDL-devel
50 BuildRequires: libuuid-devel
51 BuildRequires: libxslt-progs
52 BuildRequires: pkgconfig
53 BuildRequires: pulseaudio-devel
54 BuildRequires: qt-devel >= 6:3.3.6
55 BuildRequires: qt-linguist
56 BuildRequires: rpmbuild(macros) >= 1.329
58 BuildRequires: xalan-c-devel >= 1.10.0
59 BuildRequires: xerces-c-devel >= 2.6.0
60 BuildRequires: xorg-lib-libXcursor-devel
61 BuildRequires: zlib-devel >= 1.2.1
63 BuildRequires: gcc-multilib
64 BuildRequires: libstdc++-multilib-devel
65 # TODO: How to add glibc-devel.i686 here ?
67 Requires(postun): /usr/sbin/groupdel
68 Requires(pre): /usr/bin/getgid
69 Requires(pre): /usr/sbin/groupadd
72 ExclusiveArch: %{ix86} %{x8664}
73 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
82 InnoTek VirtualBox is a general-purpose full virtualizer for x86
83 hardware. Targeted at server, desktop and embedded use, it is now the
84 only professional-quality virtualization solution that is also Open
87 Some of the features of VirtualBox are:
89 Modularity: VirtualBox has an extremely modular design with
90 well-defined internal programming interfaces and a client/server
91 design. This makes it easy to control it from several interfaces at
92 once: for example, you can start a virtual machine in a typical
93 virtual machine GUI and then control that machine from the command
94 line. VirtualBox also comes with a full Software Development Kit: even
95 though it is Open Source Software, you don't have to hack the source
96 to write a new interface for VirtualBox.
98 Virtual machine descriptions in XML: the configuration settings of
99 virtual machines are stored entirely in XML and are independent of the
100 local machines. Virtual machine definitions can therefore easily be
101 ported to other computers.
103 %description -l pl.UTF-8
104 InnoTek VirtualBox jest emulatorem sprzętu x86. Kierowany do
105 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
106 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
107 również jako Otwarte Oprogramowanie.
109 Przykładowe cechy VirtualBoksa:
111 Modularność: VirtualBox jest wysoce zmodularyzowanym produktem z
112 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
113 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
114 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
115 poziomu interfejsu graficznego, a później kontrolować ją z linii
116 poleceń. VirtualBox dostarcza również pełny pakiet deweloperski, co
117 pozwala stworzyć dowolny inny interfejs zarządzania maszyną wirtualną.
119 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
120 wirtualnych są w całości przechowywane w XML-u i są niezależne od
121 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
122 konfigurację maszyny wirtualnej na inny komputer.
124 %package -n kernel%{_alt_kernel}-misc-vboxadd
125 Summary: Linux kernel module for VirtualBox
126 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
127 Release: %{_rel}@%{_kernel_ver_str}
129 Requires(post,postun): /sbin/depmod
130 Requires: dev >= 2.9.0-7
131 %if %{with dist_kernel}
132 %requires_releq_kernel
133 Requires(postun): %releq_kernel
135 Provides: kernel(vboxadd) = %{version}-%{_rel}
137 %description -n kernel%{_alt_kernel}-misc-vboxadd
138 Linux kernel module vboxadd for VirtualBox.
140 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
141 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
143 %package -n kernel%{_alt_kernel}-misc-vboxdrv
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(vboxdrv) = %{version}-%{_rel}
156 %description -n kernel%{_alt_kernel}-misc-vboxdrv
157 Linux kernel module vboxdrv for VirtualBox.
159 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
160 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
162 %package -n kernel%{_alt_kernel}-misc-vboxvfs
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(vboxvfs) = %{version}-%{_rel}
175 %description -n kernel%{_alt_kernel}-misc-vboxvfs
176 Linux kernel module vboxvfs for VirtualBox.
178 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
179 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
181 %package -n xorg-driver-input-vboxmouse
182 Summary: X.org mouse driver for VirtualBox guest OS
183 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBox'ie
185 Group: X11/Applications
186 Requires: xorg-xserver-server >= 1.0.99.901
188 %description -n xorg-driver-input-vboxmouse
189 X.org mouse driver for VirtualBox guest OS.
191 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
192 Sterownik myszy dla systemu gościa w VirtualBox'ie.
194 %package -n xorg-driver-video-vboxvideo
195 Summary: X.org video driver for VirtualBox guest OS
196 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBox'ie
198 Group: X11/Applications
199 Requires: xorg-xserver-server >= 1.0.99.901
201 %description -n xorg-driver-video-vboxvideo
202 X.org video driver for VirtualBox guest OS.
204 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
205 Sterownik grafiki dla systemu gościa w VirtualBox'ie.
208 %setup -q -n %{name}-%{version}_OSE
217 cat <<'EOF' > udev.conf
218 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
224 KDIR="%{_builddir}/%{buildsubdir}/kernel"
226 cp -Ra %{_kernelsrcdir}/include $KDIR
228 ln -sf $KDIR/include/asm-x86_64 $KDIR/include/asm
230 ln -sf $KDIR/include/asm-i386 $KDIR/include/asm
233 %if %{with dist_kernel}
234 ln -sf $KDIR/include/linux/autoconf-dist.h $KDIR/include/linux/autoconf.h
236 ln -sf $KDIR/include/linux/autoconf-nondist.h $KDIR/include/linux/autoconf.h
240 --with-gcc="%{__cc}" \
241 --with-g++="%{__cxx}" \
244 %if %{with userspace}
245 . ./env.sh && kmk -j1
249 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
251 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
252 tar -zxf modules.tar.gz && rm -f modules.tar.gz
253 ../src/VBox/Additions/linux/export_modules modules.tar.gz
254 tar -zxf modules.tar.gz && rm -f modules.tar.gz
256 %build_kernel_modules -m vboxadd -C vboxadd
257 %build_kernel_modules -m vboxdrv -C vboxdrv
258 %build_kernel_modules -m vboxvfs -C vboxvfs
263 rm -rf $RPM_BUILD_ROOT
265 %if %{with userspace}
267 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
268 $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
269 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers \
270 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input
272 install %{SOURCE4} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
273 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
274 install out/linux.%{_outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
275 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
278 install out/linux.%{_outdir}/release/bin/VBox*.so \
279 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
280 install out/linux.%{_outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
281 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
283 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
284 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
286 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
287 cp -a out/linux.%{_outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
288 cp -a out/linux.%{_outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
290 install out/linux.%{_outdir}/release/bin/additions/mountvboxsf \
291 $RPM_BUILD_ROOT%{_bindir}
293 install out/linux.%{_outdir}/release/bin/additions/vboxmouse_drv_71.so \
294 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
296 install out/linux.%{_outdir}/release/bin/additions/vboxvideo_drv_71.so \
297 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
299 install out/linux.%{_outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
300 install %{SOURCE3} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
304 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
305 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
309 [ ! -d $MODULE ] && continue;
312 %install_kernel_modules -m $MODULE -d misc
319 rm -rf $RPM_BUILD_ROOT
322 %groupadd -g 221 -r -f vbox
325 if [ "$1" = "0" ]; then
329 %post -n kernel%{_alt_kernel}-misc-vboxadd
330 %depmod %{_kernel_ver}
332 %postun -n kernel%{_alt_kernel}-misc-vboxadd
333 %depmod %{_kernel_ver}
335 %post -n kernel%{_alt_kernel}-misc-vboxdrv
336 %depmod %{_kernel_ver}
338 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
339 %depmod %{_kernel_ver}
341 %post -n kernel%{_alt_kernel}-misc-vboxvfs
342 %depmod %{_kernel_ver}
344 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
345 %depmod %{_kernel_ver}
347 %if %{with userspace}
349 %defattr(644,root,root,755)
351 %dir %{_libdir}/VirtualBox
352 %dir %{_libdir}/VirtualBox/additions
353 %dir %{_libdir}/VirtualBox/components
354 %dir %{_libdir}/VirtualBox/nls
355 %attr(755,root,root) %{_bindir}/mountvboxsf
356 %attr(755,root,root) %{_bindir}/vditool
357 %attr(755,root,root) %{_bindir}/VBox*
358 %attr(755,root,root) %{_bindir}/VirtualBox
359 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
360 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
361 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
362 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
363 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
364 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
365 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
366 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
367 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
368 %{_libdir}/VirtualBox/*.gc
369 %{_libdir}/VirtualBox/*.r0
370 %{_libdir}/VirtualBox/*.xpt
371 %{_libdir}/VirtualBox/additions/*
372 %{_libdir}/VirtualBox/components/*
373 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
374 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
375 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
376 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
377 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
378 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
379 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
380 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
381 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
382 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
383 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
384 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
385 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
386 %lang(pt_PT) %{_libdir}/VirtualBox/nls/*_pt_PT.qm
387 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
388 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
389 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
390 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
391 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
392 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
393 %{_pixmapsdir}/VBox.png
394 %{_desktopdir}/%{name}.desktop
396 # Drivers are for Guest OS, which is 32-bit.
398 %files -n xorg-driver-input-vboxmouse
399 %defattr(644,root,root,755)
400 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
402 %files -n xorg-driver-video-vboxvideo
403 %defattr(644,root,root,755)
404 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
409 %files -n kernel%{_alt_kernel}-misc-vboxadd
410 %defattr(644,root,root,755)
411 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
413 %files -n kernel%{_alt_kernel}-misc-vboxdrv
414 %defattr(644,root,root,755)
415 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
416 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
418 %files -n kernel%{_alt_kernel}-misc-vboxvfs
419 %defattr(644,root,root,755)
420 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*