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
265 %build_kernel_modules -m vboxadd -C vboxadd
266 %build_kernel_modules -m vboxdrv -C vboxdrv
267 cp -a vboxadd/Module.symvers vboxvfs
268 %build_kernel_modules -m vboxvfs -C vboxvfs
273 rm -rf $RPM_BUILD_ROOT
275 %if %{with userspace}
277 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
278 $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
279 $RPM_BUILD_ROOT/etc/rc.d/init.d \
280 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers \
281 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input
283 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/virtualbox
285 install %{SOURCE5} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
286 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
287 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
288 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
291 install out/linux.%{outdir}/release/bin/VBox*.so \
292 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
293 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
294 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
296 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
297 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
299 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
300 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
301 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
303 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
304 $RPM_BUILD_ROOT%{_bindir}
306 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
307 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
309 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
310 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
312 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
313 install %{SOURCE4} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
317 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
318 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
322 [ ! -d $MODULE ] && continue;
325 %install_kernel_modules -m $MODULE -d misc
332 rm -rf $RPM_BUILD_ROOT
335 %groupadd -g 221 -r -f vbox
338 if [ "$1" = "0" ]; then
342 %post -n kernel%{_alt_kernel}-misc-vboxadd
343 %depmod %{_kernel_ver}
345 %postun -n kernel%{_alt_kernel}-misc-vboxadd
346 %depmod %{_kernel_ver}
348 %post -n kernel%{_alt_kernel}-misc-vboxdrv
349 %depmod %{_kernel_ver}
351 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
352 %depmod %{_kernel_ver}
354 %post -n kernel%{_alt_kernel}-misc-vboxvfs
355 %depmod %{_kernel_ver}
357 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
358 %depmod %{_kernel_ver}
360 %if %{with userspace}
362 %defattr(644,root,root,755)
364 %dir %{_libdir}/VirtualBox
365 %dir %{_libdir}/VirtualBox/additions
366 %dir %{_libdir}/VirtualBox/components
367 %dir %{_libdir}/VirtualBox/nls
368 %attr(754,root,root) /etc/rc.d/init.d/virtualbox
369 %attr(755,root,root) %{_bindir}/mountvboxsf
370 %attr(755,root,root) %{_bindir}/vditool
371 %attr(755,root,root) %{_bindir}/VBox*
372 %attr(755,root,root) %{_bindir}/VirtualBox
373 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
374 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
375 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
376 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
377 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
378 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
379 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
380 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
381 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
382 %{_libdir}/VirtualBox/*.gc
383 %{_libdir}/VirtualBox/*.r0
384 %{_libdir}/VirtualBox/*.xpt
385 %{_libdir}/VirtualBox/additions/*
386 %{_libdir}/VirtualBox/components/*
387 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
388 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
389 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
390 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
391 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
392 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
393 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
394 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
395 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
396 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
397 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
398 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
399 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
400 %lang(pt_PT) %{_libdir}/VirtualBox/nls/*_pt_PT.qm
401 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
402 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
403 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
404 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
405 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
406 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
407 %{_pixmapsdir}/VBox.png
408 %{_desktopdir}/%{name}.desktop
410 # Drivers are for Guest OS, which is 32-bit.
412 %files -n xorg-driver-input-vboxmouse
413 %defattr(644,root,root,755)
414 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
416 %files -n xorg-driver-video-vboxvideo
417 %defattr(644,root,root,755)
418 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
423 %files -n kernel%{_alt_kernel}-misc-vboxadd
424 %defattr(644,root,root,755)
425 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
427 %files -n kernel%{_alt_kernel}-misc-vboxdrv
428 %defattr(644,root,root,755)
429 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
430 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
432 %files -n kernel%{_alt_kernel}-misc-vboxvfs
433 %defattr(644,root,root,755)
434 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*