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
35 Source3: %{name}.desktop
37 Patch0: %{name}-configure.patch
38 Patch1: %{name}-qt-paths.patch
39 Patch2: %{name}-shared-libstdc++.patch
40 Patch3: %{name}-disable-xclient-build.patch
41 URL: http://www.virtualbox.org/
42 BuildRequires: SDL-devel
43 BuildRequires: alsa-lib-devel
47 BuildRequires: gcc >= 5:3.2.3
49 %{?with_dist_kernel:BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.7}
50 BuildRequires: libIDL-devel
51 BuildRequires: libuuid-devel
52 BuildRequires: libxslt-progs
53 BuildRequires: pkgconfig
54 BuildRequires: pulseaudio-devel
55 BuildRequires: qt-devel >= 6:3.3.6
56 BuildRequires: qt-linguist
57 BuildRequires: rpmbuild(macros) >= 1.329
59 BuildRequires: xalan-c-devel >= 1.10.0
60 BuildRequires: xerces-c-devel >= 2.6.0
61 BuildRequires: xorg-lib-libXcursor-devel
62 BuildRequires: zlib-devel >= 1.2.1
64 BuildRequires: gcc-multilib
65 BuildRequires: libstdc++-multilib-devel
66 # TODO: How to add glibc-devel.i686 here ?
68 Requires(postun): /usr/sbin/groupdel
69 Requires(pre): /usr/bin/getgid
70 Requires(pre): /usr/sbin/groupadd
73 ExclusiveArch: %{ix86} %{x8664}
74 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
83 InnoTek VirtualBox is a general-purpose full virtualizer for x86
84 hardware. Targeted at server, desktop and embedded use, it is now the
85 only professional-quality virtualization solution that is also Open
88 Some of the features of VirtualBox are:
90 Modularity: VirtualBox has an extremely modular design with
91 well-defined internal programming interfaces and a client/server
92 design. This makes it easy to control it from several interfaces at
93 once: for example, you can start a virtual machine in a typical
94 virtual machine GUI and then control that machine from the command
95 line. VirtualBox also comes with a full Software Development Kit: even
96 though it is Open Source Software, you don't have to hack the source
97 to write a new interface for VirtualBox.
99 Virtual machine descriptions in XML: the configuration settings of
100 virtual machines are stored entirely in XML and are independent of the
101 local machines. Virtual machine definitions can therefore easily be
102 ported to other computers.
104 %description -l pl.UTF-8
105 InnoTek VirtualBox jest emulatorem sprzętu x86. Kierowany do
106 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
107 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
108 również jako Otwarte Oprogramowanie.
110 Przykładowe cechy VirtualBoksa:
112 Modularność: VirtualBox jest wysoce zmodularyzowanym produktem z
113 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
114 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
115 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
116 poziomu interfejsu graficznego, a później kontrolować ją z linii
117 poleceń. VirtualBox dostarcza również pełny pakiet deweloperski, co
118 pozwala stworzyć dowolny inny interfejs zarządzania maszyną wirtualną.
120 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
121 wirtualnych są w całości przechowywane w XML-u i są niezależne od
122 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
123 konfigurację maszyny wirtualnej na inny komputer.
125 %package -n kernel%{_alt_kernel}-misc-vboxadd
126 Summary: Linux kernel module for VirtualBox
127 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
128 Release: %{rel}@%{_kernel_ver_str}
130 Requires(post,postun): /sbin/depmod
131 Requires: dev >= 2.9.0-7
132 %if %{with dist_kernel}
133 %requires_releq_kernel
134 Requires(postun): %releq_kernel
136 Provides: kernel(vboxadd) = %{version}-%{rel}
138 %description -n kernel%{_alt_kernel}-misc-vboxadd
139 Linux kernel module vboxadd for VirtualBox.
141 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
142 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
144 %package -n kernel%{_alt_kernel}-misc-vboxdrv
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(vboxdrv) = %{version}-%{rel}
157 %description -n kernel%{_alt_kernel}-misc-vboxdrv
158 Linux kernel module vboxdrv for VirtualBox.
160 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
161 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
163 %package -n kernel%{_alt_kernel}-misc-vboxvfs
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(vboxvfs) = %{version}-%{rel}
176 %description -n kernel%{_alt_kernel}-misc-vboxvfs
177 Linux kernel module vboxvfs for VirtualBox.
179 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
180 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
182 %package -n xorg-driver-input-vboxmouse
183 Summary: X.org mouse driver for VirtualBox guest OS
184 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
186 Group: X11/Applications
187 Requires: xorg-xserver-server >= 1.0.99.901
189 %description -n xorg-driver-input-vboxmouse
190 X.org mouse driver for VirtualBox guest OS.
192 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
193 Sterownik myszy dla systemu gościa w VirtualBoksie.
195 %package -n xorg-driver-video-vboxvideo
196 Summary: X.org video driver for VirtualBox guest OS
197 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
199 Group: X11/Applications
200 Requires: xorg-xserver-server >= 1.0.99.901
202 %description -n xorg-driver-video-vboxvideo
203 X.org video driver for VirtualBox guest OS.
205 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
206 Sterownik grafiki dla systemu gościa w VirtualBoksie.
209 %setup -q -n %{name}-%{version}_OSE
218 cat <<'EOF' > udev.conf
219 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
225 KDIR="%{_builddir}/%{buildsubdir}/kernel"
227 cp -Ra %{_kernelsrcdir}/include $KDIR
229 ln -sf $KDIR/include/asm-x86_64 $KDIR/include/asm
231 ln -sf $KDIR/include/asm-i386 $KDIR/include/asm
234 %if %{with dist_kernel}
235 ln -sf $KDIR/include/linux/autoconf-dist.h $KDIR/include/linux/autoconf.h
237 ln -sf $KDIR/include/linux/autoconf-nondist.h $KDIR/include/linux/autoconf.h
241 --with-gcc="%{__cc}" \
242 --with-g++="%{__cxx}" \
245 %if %{with userspace}
246 . ./env.sh && kmk -j1
250 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
252 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
253 tar -zxf modules.tar.gz && rm -f modules.tar.gz
254 ../src/VBox/Additions/linux/export_modules modules.tar.gz
255 tar -zxf modules.tar.gz && rm -f modules.tar.gz
257 %build_kernel_modules -m vboxadd -C vboxadd
258 %build_kernel_modules -m vboxdrv -C vboxdrv
259 %build_kernel_modules -m vboxvfs -C vboxvfs
264 rm -rf $RPM_BUILD_ROOT
266 %if %{with userspace}
268 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
269 $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
270 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers \
271 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input
273 install %{SOURCE4} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
274 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
275 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
276 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
279 install out/linux.%{outdir}/release/bin/VBox*.so \
280 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
281 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
282 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
284 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
285 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
287 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
288 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
289 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
291 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
292 $RPM_BUILD_ROOT%{_bindir}
294 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_71.so \
295 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
297 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_71.so \
298 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
300 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
301 install %{SOURCE3} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
305 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
306 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
310 [ ! -d $MODULE ] && continue;
313 %install_kernel_modules -m $MODULE -d misc
320 rm -rf $RPM_BUILD_ROOT
323 %groupadd -g 221 -r -f vbox
326 if [ "$1" = "0" ]; then
330 %post -n kernel%{_alt_kernel}-misc-vboxadd
331 %depmod %{_kernel_ver}
333 %postun -n kernel%{_alt_kernel}-misc-vboxadd
334 %depmod %{_kernel_ver}
336 %post -n kernel%{_alt_kernel}-misc-vboxdrv
337 %depmod %{_kernel_ver}
339 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
340 %depmod %{_kernel_ver}
342 %post -n kernel%{_alt_kernel}-misc-vboxvfs
343 %depmod %{_kernel_ver}
345 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
346 %depmod %{_kernel_ver}
348 %if %{with userspace}
350 %defattr(644,root,root,755)
352 %dir %{_libdir}/VirtualBox
353 %dir %{_libdir}/VirtualBox/additions
354 %dir %{_libdir}/VirtualBox/components
355 %dir %{_libdir}/VirtualBox/nls
356 %attr(755,root,root) %{_bindir}/mountvboxsf
357 %attr(755,root,root) %{_bindir}/vditool
358 %attr(755,root,root) %{_bindir}/VBox*
359 %attr(755,root,root) %{_bindir}/VirtualBox
360 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
361 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
362 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
363 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
364 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
365 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
366 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
367 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
368 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
369 %{_libdir}/VirtualBox/*.gc
370 %{_libdir}/VirtualBox/*.r0
371 %{_libdir}/VirtualBox/*.xpt
372 %{_libdir}/VirtualBox/additions/*
373 %{_libdir}/VirtualBox/components/*
374 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
375 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
376 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
377 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
378 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
379 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
380 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
381 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
382 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
383 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
384 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
385 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
386 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
387 %lang(pt_PT) %{_libdir}/VirtualBox/nls/*_pt_PT.qm
388 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
389 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
390 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
391 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
392 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
393 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
394 %{_pixmapsdir}/VBox.png
395 %{_desktopdir}/%{name}.desktop
397 # Drivers are for Guest OS, which is 32-bit.
399 %files -n xorg-driver-input-vboxmouse
400 %defattr(644,root,root,755)
401 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
403 %files -n xorg-driver-video-vboxvideo
404 %defattr(644,root,root,755)
405 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
410 %files -n kernel%{_alt_kernel}-misc-vboxadd
411 %defattr(644,root,root,755)
412 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
414 %files -n kernel%{_alt_kernel}-misc-vboxdrv
415 %defattr(644,root,root,755)
416 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
417 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
419 %files -n kernel%{_alt_kernel}-misc-vboxvfs
420 %defattr(644,root,root,755)
421 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*