3 # - Find how to compile with PLD CFLAGS/CXXFLAGS/LDFLAGS.
5 # - Package utils (and write initscripts ?) for Guest OS.
6 # - Check License of VBoxGuestAdditions_*.iso, it's propably not GPL v2.
7 # If so check if it is distributable.
10 %bcond_without dist_kernel # without distribution kernel
11 %bcond_without kernel # don't build kernel module
12 %bcond_without userspace # don't build userspace package
17 %undefine with_dist_kernel
20 %if "%{_alt_kernel}" != "%{nil}"
21 %undefine with_userspace
24 %define pname VirtualBox
26 Summary: VirtualBox OSE - x86 hardware virtualizer
27 Summary(pl.UTF-8): VirtualBox OSE - wirtualizator sprzętu x86
28 Name: %{pname}%{_alt_kernel}
32 Group: Applications/Emulators
33 Source0: http://www.virtualbox.org/download/%{version}/%{pname}-%{version}-1_OSE.tar.bz2
34 # Source0-md5: 305c65f9e91b6137cb773d578de09922
35 Source1: http://www.virtualbox.org/download/%{version}/UserManual.pdf
36 # Source1-md5: 9ba7f17584fb3e9c98e026a1501cf7c0
37 Source2: http://www.virtualbox.org/download/%{version}/VBoxGuestAdditions_%{version}.iso
38 # Source2-md5: 9d74dea92bd225ad59faee9fd427a55e
39 Source3: %{pname}.init
40 Source4: %{pname}.desktop
42 Patch0: %{pname}-configure.patch
43 Patch1: %{pname}-qt-paths.patch
44 Patch2: %{pname}-shared-libstdc++.patch
45 Patch3: %{pname}-disable-xclient-build.patch
46 Patch4: %{pname}-configure-spaces.patch
47 URL: http://www.virtualbox.org/
49 BuildRequires: SDL-devel
50 BuildRequires: alsa-lib-devel
54 BuildRequires: gcc >= 5:3.2.3
57 %{?with_dist_kernel:BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.20}
59 BuildRequires: libIDL-devel
60 BuildRequires: libuuid-devel
61 BuildRequires: libxslt-progs
62 BuildRequires: pkgconfig
63 BuildRequires: pulseaudio-devel
64 BuildRequires: qt-devel >= 6:3.3.6
65 BuildRequires: qt-linguist
67 BuildRequires: rpmbuild(macros) >= 1.379
70 BuildRequires: xalan-c-devel >= 1.10.0
71 BuildRequires: xerces-c-devel >= 2.6.0
72 BuildRequires: xorg-lib-libXcursor-devel
73 BuildRequires: zlib-devel >= 1.2.1
75 BuildRequires: gcc-multilib
76 BuildRequires: glibc-devel(i686)
77 BuildRequires: libstdc++-multilib-devel
80 Requires(post,preun): /sbin/chkconfig
81 Requires(postun): /usr/sbin/groupdel
82 Requires(pre): /usr/bin/getgid
83 Requires(pre): /usr/sbin/groupadd
86 ExclusiveArch: %{ix86} %{x8664}
87 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
96 InnoTek VirtualBox OSE is a general-purpose full virtualizer for x86
97 hardware. Targeted at server, desktop and embedded use, it is now the
98 only professional-quality virtualization solution that is also Open
101 Some of the features of VirtualBox OSE are:
103 Modularity: VirtualBox OSE has an extremely modular design with
104 well-defined internal programming interfaces and a client/server
105 design. This makes it easy to control it from several interfaces at
106 once: for example, you can start a virtual machine in a typical
107 virtual machine GUI and then control that machine from the command
108 line. VirtualBox OSE also comes with a full Software Development Kit:
109 even though it is Open Source Software, you don't have to hack the
110 source to write a new interface for VirtualBox OSE.
112 Virtual machine descriptions in XML: the configuration settings of
113 virtual machines are stored entirely in XML and are independent of the
114 local machines. Virtual machine definitions can therefore easily be
115 ported to other computers.
117 %description -l pl.UTF-8
118 InnoTek VirtualBox OSE jest emulatorem sprzętu x86. Kierowany do
119 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
120 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
121 również jako Otwarte Oprogramowanie.
123 Przykładowe cechy VirtualBoksa:
125 Modularność: VirtualBox OSE jest wysoce zmodularyzowanym produktem z
126 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
127 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
128 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
129 poziomu interfejsu graficznego, a później kontrolować ją z linii
130 poleceń. VirtualBox OSE dostarcza również pełny pakiet deweloperski,
131 co pozwala stworzyć dowolny inny interfejs zarządzania maszyną
134 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
135 wirtualnych są w całości przechowywane w XML-u i są niezależne od
136 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
137 konfigurację maszyny wirtualnej na inny komputer.
140 Summary: udev rules for VirtualBox OSE kernel modules
141 Summary(pl.UTF-8): Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
147 udev rules for VirtualBox OSE kernel modules.
149 %description udev -l pl.UTF-8
150 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa.
152 %package -n kernel%{_alt_kernel}-misc-vboxadd
153 Summary: Linux kernel module for VirtualBox OSE
154 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
155 Release: %{rel}@%{_kernel_ver_str}
157 Requires(post,postun): /sbin/depmod
158 Requires: dev >= 2.9.0-7
159 %if %{with dist_kernel}
160 %requires_releq_kernel
161 #Requires(postun): %%releq_kernel
163 Provides: kernel(vboxadd) = %{version}-%{rel}
165 %description -n kernel%{_alt_kernel}-misc-vboxadd
166 Linux kernel module vboxadd for VirtualBox OSE.
168 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
169 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
171 %package -n kernel%{_alt_kernel}-misc-vboxdrv
172 Summary: Linux kernel module for VirtualBox OSE
173 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
174 Release: %{rel}@%{_kernel_ver_str}
176 Requires(post,postun): /sbin/depmod
177 Requires: dev >= 2.9.0-7
178 %if %{with dist_kernel}
179 %requires_releq_kernel
180 Requires(postun): %releq_kernel
182 Provides: kernel(vboxdrv) = %{version}-%{rel}
184 %description -n kernel%{_alt_kernel}-misc-vboxdrv
185 Linux kernel module vboxdrv for VirtualBox OSE.
187 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
188 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
190 %package -n kernel%{_alt_kernel}-misc-vboxvfs
191 Summary: Linux kernel module for VirtualBox OSE
192 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
193 Release: %{rel}@%{_kernel_ver_str}
195 Requires(post,postun): /sbin/depmod
196 Requires: dev >= 2.9.0-7
197 %if %{with dist_kernel}
198 %requires_releq_kernel
199 Requires(postun): %releq_kernel
201 Provides: kernel(vboxvfs) = %{version}-%{rel}
203 %description -n kernel%{_alt_kernel}-misc-vboxvfs
204 Linux kernel module vboxvfs for VirtualBox OSE.
206 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
207 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
209 %package -n xorg-driver-input-vboxmouse
210 Summary: X.org mouse driver for VirtualBox OSE guest OS
211 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
213 Group: X11/Applications
214 Requires: xorg-xserver-server >= 1.0.99.901
216 %description -n xorg-driver-input-vboxmouse
217 X.org mouse driver for VirtualBox OSE guest OS.
219 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
220 Sterownik myszy dla systemu gościa w VirtualBoksie.
222 %package -n xorg-driver-video-vboxvideo
223 Summary: X.org video driver for VirtualBox OSE guest OS
224 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
226 Group: X11/Applications
227 Requires: xorg-xserver-server >= 1.0.99.901
229 %description -n xorg-driver-video-vboxvideo
230 X.org video driver for VirtualBox OSE guest OS.
232 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
233 Sterownik grafiki dla systemu gościa w VirtualBoksie.
236 %setup -q -n %{pname}-%{version}_OSE
247 cat <<'EOF' > udev.conf
248 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
253 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
254 ../src/VBox/Additions/linux/export_modules modules.tar.gz
255 tar -zxf modules.tar.gz && rm -f modules.tar.gz
256 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
257 tar -zxf modules.tar.gz && rm -f modules.tar.gz
260 # HACK, is this really safe on x86_64?
261 sed -i -e '/#.*define.*RTMEMALLOC_EXEC_HEAP/d' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
265 %if %{with userspace}
267 --with-gcc="%{__cc}" \
268 --with-g++="%{__cxx}" \
271 . ./env.sh && kmk -j1
276 %build_kernel_modules -m vboxadd -C vboxadd
277 %build_kernel_modules -m vboxdrv -C vboxdrv
278 cp -a vboxadd/Module.symvers vboxvfs
279 %build_kernel_modules -m vboxvfs -C vboxvfs -c
284 rm -rf $RPM_BUILD_ROOT
286 %if %{with userspace}
288 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
289 $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
290 $RPM_BUILD_ROOT/etc/rc.d/init.d
292 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/virtualbox
294 install %{SOURCE5} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
295 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
296 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
297 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
301 install out/linux.%{outdir}/release/bin/VBox*.rel \
302 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
305 install out/linux.%{outdir}/release/bin/VBox*.so \
306 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
307 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
308 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
310 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
311 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
313 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
314 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
315 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
317 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
318 $RPM_BUILD_ROOT%{_bindir}
321 install -d $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input}
322 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
323 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
324 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
325 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
328 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
329 install %{SOURCE4} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
331 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
332 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
336 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
337 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
338 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
342 rm -rf $RPM_BUILD_ROOT
345 %groupadd -g 221 -r -f vbox
348 /sbin/chkconfig --add virtualbox
349 %service virtualbox restart "VirtualBox"
352 if [ "$1" = "0" ]; then
353 %service virtualbox stop
354 /sbin/chkconfig --del virtualbox
358 if [ "$1" = "0" ]; then
362 %post -n kernel%{_alt_kernel}-misc-vboxadd
363 %depmod %{_kernel_ver}
365 %postun -n kernel%{_alt_kernel}-misc-vboxadd
366 %depmod %{_kernel_ver}
368 %post -n kernel%{_alt_kernel}-misc-vboxdrv
369 %depmod %{_kernel_ver}
371 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
372 %depmod %{_kernel_ver}
374 %post -n kernel%{_alt_kernel}-misc-vboxvfs
375 %depmod %{_kernel_ver}
377 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
378 %depmod %{_kernel_ver}
380 %if %{with userspace}
382 %defattr(644,root,root,755)
384 %dir %{_libdir}/VirtualBox
385 %dir %{_libdir}/VirtualBox/additions
386 %dir %{_libdir}/VirtualBox/components
387 %dir %{_libdir}/VirtualBox/nls
388 %attr(754,root,root) /etc/rc.d/init.d/virtualbox
389 %attr(755,root,root) %{_bindir}/mountvboxsf
390 %attr(755,root,root) %{_bindir}/vditool
391 %attr(755,root,root) %{_bindir}/VBox*
392 %attr(755,root,root) %{_bindir}/VirtualBox
393 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
394 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
395 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
396 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
397 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
398 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
399 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
401 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
403 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
404 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
405 %{_libdir}/VirtualBox/*.gc
406 %{_libdir}/VirtualBox/*.r0
407 %{_libdir}/VirtualBox/*.xpt
408 %{_libdir}/VirtualBox/additions/*
409 %{_libdir}/VirtualBox/components/*
410 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
411 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
412 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
413 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
414 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
415 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
416 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
417 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
418 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
419 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
420 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
421 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
422 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
423 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
424 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
425 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
426 %lang(pt_PT) %{_libdir}/VirtualBox/nls/*_pt_PT.qm
427 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
428 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
429 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
430 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
431 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
432 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
433 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
434 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
435 %{_pixmapsdir}/VBox.png
436 %{_desktopdir}/%{pname}.desktop
439 %defattr(644,root,root,755)
440 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
442 # Drivers are for Guest OS, which is 32-bit.
444 %files -n xorg-driver-input-vboxmouse
445 %defattr(644,root,root,755)
446 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
448 %files -n xorg-driver-video-vboxvideo
449 %defattr(644,root,root,755)
450 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
455 %files -n kernel%{_alt_kernel}-misc-vboxadd
456 %defattr(644,root,root,755)
457 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
459 %files -n kernel%{_alt_kernel}-misc-vboxdrv
460 %defattr(644,root,root,755)
461 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
463 %files -n kernel%{_alt_kernel}-misc-vboxvfs
464 %defattr(644,root,root,755)
465 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*