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 # Source can't be downloaded directly anymore, you may get it manually from
34 # http://www.virtualbox.org/wiki/Downloads
35 Source0: %{pname}-%{version}-OSE.tar.bz2
36 # Source0-md5: 44692aa0e7a8cb6bb36f367d67d78d6a
37 Source1: http://www.virtualbox.org/download/%{version}/UserManual.pdf
38 # Source1-md5: e21694fd087b42173bca3fc9af068f22
39 Source2: http://www.virtualbox.org/download/%{version}/VBoxGuestAdditions_%{version}.iso
40 # Source2-md5: e90b718aa806845194fd411e3dbf78ff
41 Source3: %{pname}.init
42 Source4: %{pname}.desktop
44 Patch0: %{pname}-configure.patch
45 Patch1: %{pname}-qt-paths.patch
46 Patch2: %{pname}-shared-libstdc++.patch
47 Patch3: %{pname}-disable-xclient-build.patch
48 Patch4: %{pname}-configure-spaces.patch
49 URL: http://www.virtualbox.org/
51 BuildRequires: SDL-devel
52 BuildRequires: alsa-lib-devel
56 BuildRequires: gcc >= 5:3.2.3
59 %{?with_dist_kernel:BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.20}
61 BuildRequires: libIDL-devel
62 BuildRequires: libuuid-devel
63 BuildRequires: libxslt-progs
64 BuildRequires: pkgconfig
65 BuildRequires: pulseaudio-devel
66 BuildRequires: qt-devel >= 6:3.3.6
67 BuildRequires: qt-linguist
69 BuildRequires: rpmbuild(macros) >= 1.379
72 BuildRequires: xalan-c-devel >= 1.10.0
73 BuildRequires: xerces-c-devel >= 2.6.0
74 BuildRequires: xorg-lib-libXcursor-devel
75 BuildRequires: zlib-devel >= 1.2.1
77 BuildRequires: gcc-multilib
78 BuildRequires: glibc-devel(i686)
79 BuildRequires: libstdc++-multilib-devel
82 Requires(post,preun): /sbin/chkconfig
83 Requires(postun): /usr/sbin/groupdel
84 Requires(pre): /usr/bin/getgid
85 Requires(pre): /usr/sbin/groupadd
88 ExclusiveArch: %{ix86} %{x8664}
89 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
98 InnoTek VirtualBox OSE is a general-purpose full virtualizer for x86
99 hardware. Targeted at server, desktop and embedded use, it is now the
100 only professional-quality virtualization solution that is also Open
103 Some of the features of VirtualBox OSE are:
105 Modularity: VirtualBox OSE has an extremely modular design with
106 well-defined internal programming interfaces and a client/server
107 design. This makes it easy to control it from several interfaces at
108 once: for example, you can start a virtual machine in a typical
109 virtual machine GUI and then control that machine from the command
110 line. VirtualBox OSE also comes with a full Software Development Kit:
111 even though it is Open Source Software, you don't have to hack the
112 source to write a new interface for VirtualBox OSE.
114 Virtual machine descriptions in XML: the configuration settings of
115 virtual machines are stored entirely in XML and are independent of the
116 local machines. Virtual machine definitions can therefore easily be
117 ported to other computers.
119 %description -l pl.UTF-8
120 InnoTek VirtualBox OSE jest emulatorem sprzętu x86. Kierowany do
121 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
122 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
123 również jako Otwarte Oprogramowanie.
125 Przykładowe cechy VirtualBoksa:
127 Modularność: VirtualBox OSE jest wysoce zmodularyzowanym produktem z
128 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
129 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
130 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
131 poziomu interfejsu graficznego, a później kontrolować ją z linii
132 poleceń. VirtualBox OSE dostarcza również pełny pakiet deweloperski,
133 co pozwala stworzyć dowolny inny interfejs zarządzania maszyną
136 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
137 wirtualnych są w całości przechowywane w XML-u i są niezależne od
138 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
139 konfigurację maszyny wirtualnej na inny komputer.
142 Summary: udev rules for VirtualBox OSE kernel modules
143 Summary(pl.UTF-8): Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
149 udev rules for VirtualBox OSE kernel modules.
151 %description udev -l pl.UTF-8
152 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa.
154 %package -n kernel%{_alt_kernel}-misc-vboxadd
155 Summary: Linux kernel module for VirtualBox OSE
156 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
157 Release: %{rel}@%{_kernel_ver_str}
159 Requires(post,postun): /sbin/depmod
160 Requires: dev >= 2.9.0-7
161 %if %{with dist_kernel}
162 %requires_releq_kernel
163 #Requires(postun): %%releq_kernel
165 Provides: kernel(vboxadd) = %{version}-%{rel}
167 %description -n kernel%{_alt_kernel}-misc-vboxadd
168 Linux kernel module vboxadd for VirtualBox OSE.
170 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
171 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
173 %package -n kernel%{_alt_kernel}-misc-vboxdrv
174 Summary: Linux kernel module for VirtualBox OSE
175 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
176 Release: %{rel}@%{_kernel_ver_str}
178 Requires(post,postun): /sbin/depmod
179 Requires: dev >= 2.9.0-7
180 %if %{with dist_kernel}
181 %requires_releq_kernel
182 Requires(postun): %releq_kernel
184 Provides: kernel(vboxdrv) = %{version}-%{rel}
186 %description -n kernel%{_alt_kernel}-misc-vboxdrv
187 Linux kernel module vboxdrv for VirtualBox OSE.
189 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
190 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
192 %package -n kernel%{_alt_kernel}-misc-vboxvfs
193 Summary: Linux kernel module for VirtualBox OSE
194 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
195 Release: %{rel}@%{_kernel_ver_str}
197 Requires(post,postun): /sbin/depmod
198 Requires: dev >= 2.9.0-7
199 %if %{with dist_kernel}
200 %requires_releq_kernel
201 Requires(postun): %releq_kernel
203 Provides: kernel(vboxvfs) = %{version}-%{rel}
205 %description -n kernel%{_alt_kernel}-misc-vboxvfs
206 Linux kernel module vboxvfs for VirtualBox OSE.
208 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
209 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
211 %package -n xorg-driver-input-vboxmouse
212 Summary: X.org mouse driver for VirtualBox OSE guest OS
213 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
215 Group: X11/Applications
216 Requires: xorg-xserver-server >= 1.0.99.901
218 %description -n xorg-driver-input-vboxmouse
219 X.org mouse driver for VirtualBox OSE guest OS.
221 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
222 Sterownik myszy dla systemu gościa w VirtualBoksie.
224 %package -n xorg-driver-video-vboxvideo
225 Summary: X.org video driver for VirtualBox OSE guest OS
226 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
228 Group: X11/Applications
229 Requires: xorg-xserver-server >= 1.0.99.901
231 %description -n xorg-driver-video-vboxvideo
232 X.org video driver for VirtualBox OSE guest OS.
234 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
235 Sterownik grafiki dla systemu gościa w VirtualBoksie.
238 %setup -q -n %{pname}-%{version}_OSE
249 cat <<'EOF' > udev.conf
250 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
255 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
256 ../src/VBox/Additions/linux/export_modules modules.tar.gz
257 tar -zxf modules.tar.gz && rm -f modules.tar.gz
258 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
259 tar -zxf modules.tar.gz && rm -f modules.tar.gz
262 # HACK, is this really safe on x86_64?
263 sed -i -e '/#.*define.*RTMEMALLOC_EXEC_HEAP/d' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
267 %if %{with userspace}
269 --with-gcc="%{__cc}" \
270 --with-g++="%{__cxx}" \
273 . ./env.sh && kmk -j1
278 %build_kernel_modules -m vboxadd -C vboxadd
279 %build_kernel_modules -m vboxdrv -C vboxdrv
280 cp -a vboxadd/Module.symvers vboxvfs
281 %build_kernel_modules -m vboxvfs -C vboxvfs -c
286 rm -rf $RPM_BUILD_ROOT
288 %if %{with userspace}
290 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
291 $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
292 $RPM_BUILD_ROOT/etc/rc.d/init.d
294 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/virtualbox
296 install %{SOURCE5} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
297 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
298 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
299 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
303 install out/linux.%{outdir}/release/bin/VBox*.rel \
304 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
307 install out/linux.%{outdir}/release/bin/VBox*.so \
308 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
309 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
310 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
312 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
313 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
315 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
316 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
317 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
319 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
320 $RPM_BUILD_ROOT%{_bindir}
323 install -d $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input}
324 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
325 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
326 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
327 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
330 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
331 install %{SOURCE4} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
333 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
334 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
338 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
339 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
340 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
344 rm -rf $RPM_BUILD_ROOT
347 %groupadd -g 221 -r -f vbox
350 /sbin/chkconfig --add virtualbox
351 %service virtualbox restart "VirtualBox OSE"
354 if [ "$1" = "0" ]; then
355 %service virtualbox stop
356 /sbin/chkconfig --del virtualbox
360 if [ "$1" = "0" ]; then
364 %post -n kernel%{_alt_kernel}-misc-vboxadd
365 %depmod %{_kernel_ver}
367 %postun -n kernel%{_alt_kernel}-misc-vboxadd
368 %depmod %{_kernel_ver}
370 %post -n kernel%{_alt_kernel}-misc-vboxdrv
371 %depmod %{_kernel_ver}
373 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
374 %depmod %{_kernel_ver}
376 %post -n kernel%{_alt_kernel}-misc-vboxvfs
377 %depmod %{_kernel_ver}
379 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
380 %depmod %{_kernel_ver}
382 %if %{with userspace}
384 %defattr(644,root,root,755)
386 %dir %{_libdir}/VirtualBox
387 %dir %{_libdir}/VirtualBox/additions
388 %dir %{_libdir}/VirtualBox/components
389 %dir %{_libdir}/VirtualBox/nls
390 %attr(754,root,root) /etc/rc.d/init.d/virtualbox
391 %attr(755,root,root) %{_bindir}/mountvboxsf
392 %attr(755,root,root) %{_bindir}/vditool
393 %attr(755,root,root) %{_bindir}/VBox*
394 %attr(755,root,root) %{_bindir}/VirtualBox
395 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
396 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
397 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
398 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
399 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
400 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
401 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
403 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
405 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
406 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
407 %{_libdir}/VirtualBox/*.gc
408 %{_libdir}/VirtualBox/*.r0
409 %{_libdir}/VirtualBox/*.xpt
410 %{_libdir}/VirtualBox/additions/*
411 %{_libdir}/VirtualBox/components/*
412 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
413 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
414 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
415 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
416 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
417 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
418 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
419 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
420 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
421 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
422 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
423 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
424 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
425 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
426 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
427 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
428 %lang(pt_PT) %{_libdir}/VirtualBox/nls/*_pt_PT.qm
429 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
430 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
431 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
432 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
433 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
434 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
435 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
436 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
437 %{_pixmapsdir}/VBox.png
438 %{_desktopdir}/%{pname}.desktop
441 %defattr(644,root,root,755)
442 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
444 # Drivers are for Guest OS, which is 32-bit.
446 %files -n xorg-driver-input-vboxmouse
447 %defattr(644,root,root,755)
448 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
450 %files -n xorg-driver-video-vboxvideo
451 %defattr(644,root,root,755)
452 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
457 %files -n kernel%{_alt_kernel}-misc-vboxadd
458 %defattr(644,root,root,755)
459 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
461 %files -n kernel%{_alt_kernel}-misc-vboxdrv
462 %defattr(644,root,root,755)
463 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
465 %files -n kernel%{_alt_kernel}-misc-vboxvfs
466 %defattr(644,root,root,755)
467 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*