3 # - separate udev stuff from kernel package
4 # - Find how to compile with PLD CFLAGS/CXXFLAGS/LDFLAGS.
6 # - Package utils (and write initscripts ?) for Guest OS.
8 # - Check License of VBoxGuestAdditions_*.iso, it's propably not GPL v2.
9 # If so check if it is distributable.
12 %bcond_without dist_kernel # without distribution kernel
13 %bcond_without kernel # don't build kernel module
14 %bcond_without userspace # don't build userspace package
19 %undefine with_dist_kernel
22 Summary: VirtualBox - x86 hardware virtualizer
23 Summary(pl.UTF-8): VirtualBox - wirtualizator sprzętu x86
28 Group: Applications/Emulators
29 Source0: http://www.virtualbox.org/download/%{version}/%{name}-%{version}_OSE.tar.bz2
30 # Source0-md5: fbebb3f04911c4c39aac27b1d3532acc
31 Source1: http://www.virtualbox.org/download/%{version}/UserManual.pdf
32 # Source1-md5: f56f0d904013cbc0940108ed042e539d
33 Source2: http://www.virtualbox.org/download/%{version}/VBoxGuestAdditions_%{version}.iso
34 # Source2-md5: e021a51fc5946659b0789d134b1fd5ff
36 Source4: %{name}.desktop
38 Patch0: %{name}-configure.patch
39 Patch1: %{name}-qt-paths.patch
40 Patch2: %{name}-shared-libstdc++.patch
41 Patch3: %{name}-disable-xclient-build.patch
42 URL: http://www.virtualbox.org/
43 BuildRequires: SDL-devel
44 BuildRequires: alsa-lib-devel
48 BuildRequires: gcc >= 5:3.2.3
50 %{?with_dist_kernel:BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.7}
51 BuildRequires: libIDL-devel
52 BuildRequires: libuuid-devel
53 BuildRequires: libxslt-progs
54 BuildRequires: pkgconfig
55 BuildRequires: pulseaudio-devel
56 BuildRequires: qt-devel >= 6:3.3.6
57 BuildRequires: qt-linguist
58 BuildRequires: rpmbuild(macros) >= 1.329
60 BuildRequires: xalan-c-devel >= 1.10.0
61 BuildRequires: xerces-c-devel >= 2.6.0
62 BuildRequires: xorg-lib-libXcursor-devel
63 BuildRequires: zlib-devel >= 1.2.1
65 BuildRequires: gcc-multilib
66 BuildRequires: libstdc++-multilib-devel
67 # TODO: How to add glibc-devel.i686 here ?
69 Requires(postun): /usr/sbin/groupdel
70 Requires(pre): /usr/bin/getgid
71 Requires(pre): /usr/sbin/groupadd
74 ExclusiveArch: %{ix86} %{x8664}
75 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
84 InnoTek VirtualBox is a general-purpose full virtualizer for x86
85 hardware. Targeted at server, desktop and embedded use, it is now the
86 only professional-quality virtualization solution that is also Open
89 Some of the features of VirtualBox are:
91 Modularity: VirtualBox has an extremely modular design with
92 well-defined internal programming interfaces and a client/server
93 design. This makes it easy to control it from several interfaces at
94 once: for example, you can start a virtual machine in a typical
95 virtual machine GUI and then control that machine from the command
96 line. VirtualBox also comes with a full Software Development Kit: even
97 though it is Open Source Software, you don't have to hack the source
98 to write a new interface for VirtualBox.
100 Virtual machine descriptions in XML: the configuration settings of
101 virtual machines are stored entirely in XML and are independent of the
102 local machines. Virtual machine definitions can therefore easily be
103 ported to other computers.
105 %description -l pl.UTF-8
106 InnoTek VirtualBox jest emulatorem sprzętu x86. Kierowany do
107 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
108 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
109 również jako Otwarte Oprogramowanie.
111 Przykładowe cechy VirtualBoksa:
113 Modularność: VirtualBox jest wysoce zmodularyzowanym produktem z
114 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
115 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
116 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
117 poziomu interfejsu graficznego, a później kontrolować ją z linii
118 poleceń. VirtualBox dostarcza również pełny pakiet deweloperski, co
119 pozwala stworzyć dowolny inny interfejs zarządzania maszyną wirtualną.
121 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
122 wirtualnych są w całości przechowywane w XML-u i są niezależne od
123 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
124 konfigurację maszyny wirtualnej na inny komputer.
126 %package -n kernel%{_alt_kernel}-misc-vboxadd
127 Summary: Linux kernel module for VirtualBox
128 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
129 Release: %{rel}@%{_kernel_ver_str}
131 Requires(post,postun): /sbin/depmod
132 Requires: dev >= 2.9.0-7
133 %if %{with dist_kernel}
134 %requires_releq_kernel
135 Requires(postun): %releq_kernel
137 Provides: kernel(vboxadd) = %{version}-%{rel}
139 %description -n kernel%{_alt_kernel}-misc-vboxadd
140 Linux kernel module vboxadd for VirtualBox.
142 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
143 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
145 %package -n kernel%{_alt_kernel}-misc-vboxdrv
146 Summary: Linux kernel module for VirtualBox
147 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
148 Release: %{rel}@%{_kernel_ver_str}
150 Requires(post,postun): /sbin/depmod
151 Requires: dev >= 2.9.0-7
152 %if %{with dist_kernel}
153 %requires_releq_kernel
154 Requires(postun): %releq_kernel
156 Provides: kernel(vboxdrv) = %{version}-%{rel}
158 %description -n kernel%{_alt_kernel}-misc-vboxdrv
159 Linux kernel module vboxdrv for VirtualBox.
161 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
162 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
164 %package -n kernel%{_alt_kernel}-misc-vboxvfs
165 Summary: Linux kernel module for VirtualBox
166 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
167 Release: %{rel}@%{_kernel_ver_str}
169 Requires(post,postun): /sbin/depmod
170 Requires: dev >= 2.9.0-7
171 %if %{with dist_kernel}
172 %requires_releq_kernel
173 Requires(postun): %releq_kernel
175 Provides: kernel(vboxvfs) = %{version}-%{rel}
177 %description -n kernel%{_alt_kernel}-misc-vboxvfs
178 Linux kernel module vboxvfs for VirtualBox.
180 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
181 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
183 %package -n xorg-driver-input-vboxmouse
184 Summary: X.org mouse driver for VirtualBox guest OS
185 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
187 Group: X11/Applications
188 Requires: xorg-xserver-server >= 1.0.99.901
190 %description -n xorg-driver-input-vboxmouse
191 X.org mouse driver for VirtualBox guest OS.
193 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
194 Sterownik myszy dla systemu gościa w VirtualBoksie.
196 %package -n xorg-driver-video-vboxvideo
197 Summary: X.org video driver for VirtualBox guest OS
198 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
200 Group: X11/Applications
201 Requires: xorg-xserver-server >= 1.0.99.901
203 %description -n xorg-driver-video-vboxvideo
204 X.org video driver for VirtualBox guest OS.
206 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
207 Sterownik grafiki dla systemu gościa w VirtualBoksie.
210 %setup -q -n %{name}-%{version}_OSE
219 cat <<'EOF' > udev.conf
220 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
226 KDIR="%{_builddir}/%{buildsubdir}/kernel"
228 cp -Ra %{_kernelsrcdir}/include $KDIR
229 %ifarch %{x8664} %{ix86}
230 if [ -d $KDIR/include/asm-x86 ]; then
231 ln -sf $KDIR/include/asm-x86 $KDIR/include/asm
234 ln -sf $KDIR/include/asm-x86_64 $KDIR/include/asm
237 ln -sf $KDIR/include/asm-i386 $KDIR/include/asm
242 %if %{with dist_kernel}
243 ln -sf $KDIR/include/linux/autoconf-dist.h $KDIR/include/linux/autoconf.h
245 ln -sf $KDIR/include/linux/autoconf-nondist.h $KDIR/include/linux/autoconf.h
249 --with-gcc="%{__cc}" \
250 --with-g++="%{__cxx}" \
253 %if %{with userspace}
254 . ./env.sh && kmk -j1
258 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
260 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
261 tar -zxf modules.tar.gz && rm -f modules.tar.gz
262 ../src/VBox/Additions/linux/export_modules modules.tar.gz
263 tar -zxf modules.tar.gz && rm -f modules.tar.gz
266 # HACK, is this really safe on x86_64?
267 sed -i -e 's:#.*define.*RTMEMALLOC_EXEC_HEAP::g' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
270 %build_kernel_modules -m vboxadd -C vboxadd
271 %build_kernel_modules -m vboxdrv -C vboxdrv
272 cp -a vboxadd/Module.symvers vboxvfs
273 %build_kernel_modules -m vboxvfs -C vboxvfs
278 rm -rf $RPM_BUILD_ROOT
280 %if %{with userspace}
282 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
283 $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
284 $RPM_BUILD_ROOT/etc/rc.d/init.d \
285 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers \
286 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input
288 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/virtualbox
290 install %{SOURCE5} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
291 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
292 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
293 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
296 install out/linux.%{outdir}/release/bin/VBox*.{so,rel} \
297 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
298 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
299 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
301 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
302 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
304 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
305 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
306 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
308 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
309 $RPM_BUILD_ROOT%{_bindir}
311 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
312 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
314 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
315 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
317 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
318 install %{SOURCE4} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
322 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
323 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
327 [ ! -d $MODULE ] && continue;
330 %install_kernel_modules -m $MODULE -d misc
337 rm -rf $RPM_BUILD_ROOT
340 %groupadd -g 221 -r -f vbox
343 if [ "$1" = "0" ]; then
347 %post -n kernel%{_alt_kernel}-misc-vboxadd
348 %depmod %{_kernel_ver}
350 %postun -n kernel%{_alt_kernel}-misc-vboxadd
351 %depmod %{_kernel_ver}
353 %post -n kernel%{_alt_kernel}-misc-vboxdrv
354 %depmod %{_kernel_ver}
356 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
357 %depmod %{_kernel_ver}
359 %post -n kernel%{_alt_kernel}-misc-vboxvfs
360 %depmod %{_kernel_ver}
362 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
363 %depmod %{_kernel_ver}
365 %if %{with userspace}
367 %defattr(644,root,root,755)
369 %dir %{_libdir}/VirtualBox
370 %dir %{_libdir}/VirtualBox/additions
371 %dir %{_libdir}/VirtualBox/components
372 %dir %{_libdir}/VirtualBox/nls
373 %attr(754,root,root) /etc/rc.d/init.d/virtualbox
374 %attr(755,root,root) %{_bindir}/mountvboxsf
375 %attr(755,root,root) %{_bindir}/vditool
376 %attr(755,root,root) %{_bindir}/VBox*
377 %attr(755,root,root) %{_bindir}/VirtualBox
378 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
379 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
380 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
381 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
382 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
383 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
384 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
385 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
386 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
387 %{_libdir}/VirtualBox/*.gc
388 %{_libdir}/VirtualBox/*.r0
389 %{_libdir}/VirtualBox/*.xpt
390 %{_libdir}/VirtualBox/additions/*
391 %{_libdir}/VirtualBox/components/*
392 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
393 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
394 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
395 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
396 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
397 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
398 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
399 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
400 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
401 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
402 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
403 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
404 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
405 %lang(pt_PT) %{_libdir}/VirtualBox/nls/*_pt_PT.qm
406 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
407 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
408 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
409 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
410 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
411 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
412 %{_pixmapsdir}/VBox.png
413 %{_desktopdir}/%{name}.desktop
415 # Drivers are for Guest OS, which is 32-bit.
417 %files -n xorg-driver-input-vboxmouse
418 %defattr(644,root,root,755)
419 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
421 %files -n xorg-driver-video-vboxvideo
422 %defattr(644,root,root,755)
423 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
428 %files -n kernel%{_alt_kernel}-misc-vboxadd
429 %defattr(644,root,root,755)
430 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
432 %files -n kernel%{_alt_kernel}-misc-vboxdrv
433 %defattr(644,root,root,755)
434 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
435 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
437 %files -n kernel%{_alt_kernel}-misc-vboxvfs
438 %defattr(644,root,root,755)
439 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*