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/UserManual.pdf
31 # Source1-md5: 2e5458bd5b4b9acd18cc86866e8a7284
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: qt-devel >= 6:3.3.6
54 BuildRequires: qt-linguist
55 BuildRequires: rpmbuild(macros) >= 1.329
57 BuildRequires: xalan-c-devel >= 1.10.0
58 BuildRequires: xerces-c-devel >= 2.6.0
59 BuildRequires: xorg-lib-libXcursor-devel
60 BuildRequires: zlib-devel >= 1.2.1
62 BuildRequires: gcc-multilib
63 BuildRequires: libstdc++-multilib-devel
64 # TODO: How to add glibc-devel.i686 here ?
66 Requires(postun): /usr/sbin/groupdel
67 Requires(pre): /usr/bin/getgid
68 Requires(pre): /usr/sbin/groupadd
71 ExclusiveArch: %{ix86} %{x8664}
72 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
81 InnoTek VirtualBox is a general-purpose full virtualizer for x86
82 hardware. Targeted at server, desktop and embedded use, it is now the
83 only professional-quality virtualization solution that is also Open
86 Some of the features of VirtualBox are:
88 Modularity: VirtualBox has an extremely modular design with
89 well-defined internal programming interfaces and a client/server
90 design. This makes it easy to control it from several interfaces at
91 once: for example, you can start a virtual machine in a typical
92 virtual machine GUI and then control that machine from the command
93 line. VirtualBox also comes with a full Software Development Kit: even
94 though it is Open Source Software, you don't have to hack the source
95 to write a new interface for VirtualBox.
97 Virtual machine descriptions in XML: the configuration settings of
98 virtual machines are stored entirely in XML and are independent of the
99 local machines. Virtual machine definitions can therefore easily be
100 ported to other computers.
102 %description -l pl.UTF-8
103 InnoTek VirtualBox jest emulatorem sprzętu x86. Kierowany do
104 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
105 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
106 również jako Otwarte Oprogramowanie.
108 Przykładowe cechy VirtualBoksa:
110 Modularność: VirtualBox jest wysoce zmodularyzowanym produktem z
111 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
112 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
113 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
114 poziomu interfejsu graficznego, a później kontrolować ją z linii
115 poleceń. VirtualBox dostarcza również pełny pakiet deweloperski, co
116 pozwala stworzyć dowolny inny interfejs zarządzania maszyną wirtualną.
118 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
119 wirtualnych są w całości przechowywane w XML-u i są niezależne od
120 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
121 konfigurację maszyny wirtualnej na inny komputer.
123 %package -n kernel%{_alt_kernel}-misc-vboxadd
124 Summary: Linux kernel module for VirtualBox
125 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
126 Release: %{_rel}@%{_kernel_ver_str}
128 Requires(post,postun): /sbin/depmod
129 Requires: dev >= 2.9.0-7
130 %if %{with dist_kernel}
131 %requires_releq_kernel
132 Requires(postun): %releq_kernel
134 Provides: kernel(vboxadd) = %{version}-%{_rel}
136 %description -n kernel%{_alt_kernel}-misc-vboxadd
137 Linux kernel module vboxadd for VirtualBox.
139 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
140 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
142 %package -n kernel%{_alt_kernel}-misc-vboxdrv
143 Summary: Linux kernel module for VirtualBox
144 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
145 Release: %{_rel}@%{_kernel_ver_str}
147 Requires(post,postun): /sbin/depmod
148 Requires: dev >= 2.9.0-7
149 %if %{with dist_kernel}
150 %requires_releq_kernel
151 Requires(postun): %releq_kernel
153 Provides: kernel(vboxdrv) = %{version}-%{_rel}
155 %description -n kernel%{_alt_kernel}-misc-vboxdrv
156 Linux kernel module vboxdrv for VirtualBox.
158 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
159 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
161 %package -n kernel%{_alt_kernel}-misc-vboxvfs
162 Summary: Linux kernel module for VirtualBox
163 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
164 Release: %{_rel}@%{_kernel_ver_str}
166 Requires(post,postun): /sbin/depmod
167 Requires: dev >= 2.9.0-7
168 %if %{with dist_kernel}
169 %requires_releq_kernel
170 Requires(postun): %releq_kernel
172 Provides: kernel(vboxvfs) = %{version}-%{_rel}
174 %description -n kernel%{_alt_kernel}-misc-vboxvfs
175 Linux kernel module vboxvfs for VirtualBox.
177 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
178 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
180 %package -n xorg-driver-input-vboxmouse
181 Summary: X.org mouse driver for VirtualBox guest OS
182 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBox'ie
184 Group: X11/Applications
185 Requires: xorg-xserver-server >= 1.0.99.901
187 %description -n xorg-driver-input-vboxmouse
188 X.org mouse driver for VirtualBox guest OS.
190 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
191 Sterownik myszy dla systemu gościa w VirtualBox'ie.
193 %package -n xorg-driver-video-vboxvideo
194 Summary: X.org video driver for VirtualBox guest OS
195 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBox'ie
197 Group: X11/Applications
198 Requires: xorg-xserver-server >= 1.0.99.901
200 %description -n xorg-driver-video-vboxvideo
201 X.org video driver for VirtualBox guest OS.
203 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
204 Sterownik grafiki dla systemu gościa w VirtualBox'ie.
207 %setup -q -n %{name}-%{version}_OSE
216 cat <<'EOF' > udev.conf
217 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
223 KDIR="%{_builddir}/%{buildsubdir}/kernel"
225 cp -Ra %{_kernelsrcdir}/include $KDIR
227 ln -sf $KDIR/include/asm-x86_64 $KDIR/include/asm
229 ln -sf $KDIR/include/asm-i386 $KDIR/include/asm
232 %if %{with dist_kernel}
233 ln -sf $KDIR/include/linux/autoconf-dist.h $KDIR/include/linux/autoconf.h
235 ln -sf $KDIR/include/linux/autoconf-nondist.h $KDIR/include/linux/autoconf.h
239 --with-gcc="%{__cc}" \
240 --with-g++="%{__cxx}" \
243 %if %{with userspace}
244 . ./env.sh && kmk -j1
248 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
250 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
251 tar -zxf modules.tar.gz && rm -f modules.tar.gz
252 ../src/VBox/Additions/linux/export_modules modules.tar.gz
253 tar -zxf modules.tar.gz && rm -f modules.tar.gz
255 %build_kernel_modules -m vboxadd -C vboxadd
256 %build_kernel_modules -m vboxdrv -C vboxdrv
257 %build_kernel_modules -m vboxvfs -C vboxvfs
262 rm -rf $RPM_BUILD_ROOT
264 %if %{with userspace}
266 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
267 $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
268 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers \
269 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input
271 install %{SOURCE4} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
272 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
273 install out/linux.%{_outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
274 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
277 install out/linux.%{_outdir}/release/bin/VBox*.so \
278 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
279 install out/linux.%{_outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
280 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
282 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
283 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
285 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
286 cp -a out/linux.%{_outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
287 cp -a out/linux.%{_outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
289 install out/linux.%{_outdir}/release/bin/additions/mountvboxsf \
290 $RPM_BUILD_ROOT%{_bindir}
292 install out/linux.%{_outdir}/release/bin/additions/vboxmouse_drv_71.so \
293 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
295 install out/linux.%{_outdir}/release/bin/additions/vboxvideo_drv_71.so \
296 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
298 install out/linux.%{_outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
299 install %{SOURCE3} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
303 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
304 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
308 [ ! -d $MODULE ] && continue;
311 %install_kernel_modules -m $MODULE -d misc
318 rm -rf $RPM_BUILD_ROOT
321 %groupadd -g 221 -r -f vbox
324 if [ "$1" = "0" ]; then
328 %post -n kernel%{_alt_kernel}-misc-vboxadd
329 %depmod %{_kernel_ver}
331 %postun -n kernel%{_alt_kernel}-misc-vboxadd
332 %depmod %{_kernel_ver}
334 %post -n kernel%{_alt_kernel}-misc-vboxdrv
335 %depmod %{_kernel_ver}
337 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
338 %depmod %{_kernel_ver}
340 %post -n kernel%{_alt_kernel}-misc-vboxvfs
341 %depmod %{_kernel_ver}
343 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
344 %depmod %{_kernel_ver}
346 %if %{with userspace}
348 %defattr(644,root,root,755)
350 %dir %{_libdir}/VirtualBox
351 %dir %{_libdir}/VirtualBox/additions
352 %dir %{_libdir}/VirtualBox/components
353 %dir %{_libdir}/VirtualBox/nls
354 %attr(755,root,root) %{_bindir}/mountvboxsf
355 %attr(755,root,root) %{_bindir}/vditool
356 %attr(755,root,root) %{_bindir}/VBox*
357 %attr(755,root,root) %{_bindir}/VirtualBox
358 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
359 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
360 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
361 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
362 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
363 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
364 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
365 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
366 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
367 %{_libdir}/VirtualBox/*.gc
368 %{_libdir}/VirtualBox/*.r0
369 %{_libdir}/VirtualBox/*.xpt
370 %{_libdir}/VirtualBox/additions/*
371 %{_libdir}/VirtualBox/components/*
372 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
373 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
374 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
375 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
376 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
377 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
378 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
379 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
380 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
381 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
382 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
383 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
384 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
385 %lang(pt_PT) %{_libdir}/VirtualBox/nls/*_pt_PT.qm
386 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
387 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
388 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
389 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
390 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
391 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
392 %{_pixmapsdir}/VBox.png
393 %{_desktopdir}/%{name}.desktop
395 # Drivers are for Guest OS, which is 32-bit.
397 %files -n xorg-driver-input-vboxmouse
398 %defattr(644,root,root,755)
399 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
401 %files -n xorg-driver-video-vboxvideo
402 %defattr(644,root,root,755)
403 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
408 %files -n kernel%{_alt_kernel}-misc-vboxadd
409 %defattr(644,root,root,755)
410 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
412 %files -n kernel%{_alt_kernel}-misc-vboxdrv
413 %defattr(644,root,root,755)
414 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
415 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
417 %files -n kernel%{_alt_kernel}-misc-vboxvfs
418 %defattr(644,root,root,755)
419 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*