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}-vboxdrv.init
42 Source4: %{pname}-vboxadd.init
43 Source5: %{pname}.desktop
45 Patch0: %{pname}-configure.patch
46 Patch1: %{pname}-qt-paths.patch
47 Patch2: %{pname}-shared-libstdc++.patch
48 Patch3: %{pname}-disable-xclient-build.patch
49 Patch4: %{pname}-configure-spaces.patch
50 Patch5: %{pname}-no-screen-size-limit.patch
51 URL: http://www.virtualbox.org/
53 BuildRequires: SDL-devel >= 1.2.7
54 BuildRequires: alsa-lib-devel >= 1.0.6
58 BuildRequires: gcc >= 5:3.2.3
61 %if %{with dist_kernel}
62 BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.20
65 BuildRequires: Qt3Support-devel
66 BuildRequires: libIDL-devel
67 BuildRequires: libpng >= 1.2.5
68 BuildRequires: libstdc++-devel >= 5:3.2.3
69 BuildRequires: libuuid-devel
70 BuildRequires: libxml2-devel >= 2.6.26
71 BuildRequires: libxslt-devel >= 1.1.17
72 BuildRequires: libxslt-progs >= 1.1.17
73 BuildRequires: pkgconfig
74 BuildRequires: pulseaudio-devel >= 0.9.0
75 BuildRequires: qt-devel >= 6:3.3.6
76 BuildRequires: qt-linguist
77 BuildRequires: qt4-build >= 4.2.0
79 BuildRequires: rpmbuild(macros) >= 1.379
82 BuildRequires: xalan-c-devel >= 1.10.0
83 BuildRequires: xerces-c-devel >= 2.6.0
84 BuildRequires: xorg-lib-libXcursor-devel
85 BuildRequires: zlib-devel >= 1.2.1
87 BuildRequires: gcc-multilib
88 BuildRequires: glibc-devel(i686)
89 BuildRequires: libstdc++-multilib-devel
92 Requires(post,preun): /sbin/chkconfig
93 Requires(postun): /usr/sbin/groupdel
94 Requires(pre): /usr/bin/getgid
95 Requires(pre): /usr/sbin/groupadd
98 ExclusiveArch: %{ix86} %{x8664}
99 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
108 InnoTek VirtualBox OSE is a general-purpose full virtualizer for x86
109 hardware. Targeted at server, desktop and embedded use, it is now the
110 only professional-quality virtualization solution that is also Open
113 Some of the features of VirtualBox OSE are:
115 Modularity: VirtualBox OSE has an extremely modular design with
116 well-defined internal programming interfaces and a client/server
117 design. This makes it easy to control it from several interfaces at
118 once: for example, you can start a virtual machine in a typical
119 virtual machine GUI and then control that machine from the command
120 line. VirtualBox OSE also comes with a full Software Development Kit:
121 even though it is Open Source Software, you don't have to hack the
122 source to write a new interface for VirtualBox OSE.
124 Virtual machine descriptions in XML: the configuration settings of
125 virtual machines are stored entirely in XML and are independent of the
126 local machines. Virtual machine definitions can therefore easily be
127 ported to other computers.
129 %description -l pl.UTF-8
130 InnoTek VirtualBox OSE jest emulatorem sprzętu x86. Kierowany do
131 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
132 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
133 również jako Otwarte Oprogramowanie.
135 Przykładowe cechy VirtualBoksa:
137 Modularność: VirtualBox OSE jest wysoce zmodularyzowanym produktem z
138 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
139 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
140 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
141 poziomu interfejsu graficznego, a później kontrolować ją z linii
142 poleceń. VirtualBox OSE dostarcza również pełny pakiet deweloperski,
143 co pozwala stworzyć dowolny inny interfejs zarządzania maszyną
146 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
147 wirtualnych są w całości przechowywane w XML-u i są niezależne od
148 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
149 konfigurację maszyny wirtualnej na inny komputer.
152 Summary: udev rules for VirtualBox OSE kernel modules
153 Summary(pl.UTF-8): Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
159 udev rules for VirtualBox OSE kernel modules.
161 %description udev -l pl.UTF-8
162 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa.
164 %package -n kernel%{_alt_kernel}-misc-vboxadd
165 Summary: Linux kernel module for VirtualBox OSE
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(vboxadd) = %{version}-%{rel}
177 %description -n kernel%{_alt_kernel}-misc-vboxadd
178 Linux kernel module vboxadd for VirtualBox OSE.
180 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
181 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
183 %package -n kernel%{_alt_kernel}-misc-vboxdrv
184 Summary: Linux kernel module for VirtualBox OSE
185 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
186 Release: %{rel}@%{_kernel_ver_str}
188 Requires(post,postun): /sbin/depmod
189 Requires: dev >= 2.9.0-7
190 %if %{with dist_kernel}
191 %requires_releq_kernel
192 Requires(postun): %releq_kernel
194 Provides: kernel(vboxdrv) = %{version}-%{rel}
196 %description -n kernel%{_alt_kernel}-misc-vboxdrv
197 Linux kernel module vboxdrv for VirtualBox OSE.
199 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
200 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
202 %package -n kernel%{_alt_kernel}-misc-vboxvfs
203 Summary: Linux kernel module for VirtualBox OSE
204 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
205 Release: %{rel}@%{_kernel_ver_str}
207 Requires(post,postun): /sbin/depmod
208 Requires: dev >= 2.9.0-7
209 %if %{with dist_kernel}
210 %requires_releq_kernel
211 Requires(postun): %releq_kernel
213 Provides: kernel(vboxvfs) = %{version}-%{rel}
215 %description -n kernel%{_alt_kernel}-misc-vboxvfs
216 Linux kernel module vboxvfs for VirtualBox OSE.
218 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
219 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
221 %package -n xorg-driver-input-vboxmouse
222 Summary: X.org mouse driver for VirtualBox OSE guest OS
223 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
225 Group: X11/Applications
226 Requires: xorg-xserver-server >= 1.0.99.901
228 %description -n xorg-driver-input-vboxmouse
229 X.org mouse driver for VirtualBox OSE guest OS.
231 %description -n xorg-driver-input-vboxmouse -l pl.UTF-8
232 Sterownik myszy dla systemu gościa w VirtualBoksie.
234 %package -n xorg-driver-video-vboxvideo
235 Summary: X.org video driver for VirtualBox OSE guest OS
236 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
238 Group: X11/Applications
239 Requires: xorg-xserver-server >= 1.0.99.901
241 %description -n xorg-driver-video-vboxvideo
242 X.org video driver for VirtualBox OSE guest OS.
244 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
245 Sterownik grafiki dla systemu gościa w VirtualBoksie.
248 %setup -q -n %{pname}-%{version}_OSE
260 cat <<'EOF' > udev.conf
261 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
262 KERNEL=="vboxadd", NAME="%k", GROUP="vbox", MODE="0660"
267 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
268 ../src/VBox/Additions/linux/export_modules modules.tar.gz
269 tar -zxf modules.tar.gz && rm -f modules.tar.gz
270 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
271 tar -zxf modules.tar.gz && rm -f modules.tar.gz
274 # HACK, is this really safe on x86_64?
275 sed -i -e '/#.*define.*RTMEMALLOC_EXEC_HEAP/d' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
279 %if %{with userspace}
281 --with-gcc="%{__cc}" \
282 --with-g++="%{__cxx}" \
285 . ./env.sh && kmk -j1
290 %build_kernel_modules -m vboxadd -C vboxadd
291 %build_kernel_modules -m vboxdrv -C vboxdrv
292 cp -a vboxadd/Module.symvers vboxvfs
293 %build_kernel_modules -m vboxvfs -C vboxvfs -c
298 rm -rf $RPM_BUILD_ROOT
300 %if %{with userspace}
302 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
303 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
305 install %{SOURCE6} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
306 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
307 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
308 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
312 install out/linux.%{outdir}/release/bin/VBox*.rel \
313 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
316 install out/linux.%{outdir}/release/bin/VBox*.so \
317 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
318 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
319 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
321 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
322 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
324 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
325 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
326 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
328 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
329 $RPM_BUILD_ROOT%{_bindir}
332 install -d $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input}
333 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so \
334 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
335 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so \
336 $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
339 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
340 install %{SOURCE5} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
342 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
343 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
347 install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
348 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxdrv
349 install %{SOURCE4} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxadd
350 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
351 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
352 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
356 rm -rf $RPM_BUILD_ROOT
359 %groupadd -g 221 -r -f vbox
362 if [ "$1" = "0" ]; then
366 %post -n kernel%{_alt_kernel}-misc-vboxadd
367 %depmod %{_kernel_ver}
368 /sbin/chkconfig --add vboxadd
369 %service vboxadd restart "VirtualBox OSE guest additions driver"
371 %postun -n kernel%{_alt_kernel}-misc-vboxadd
372 %depmod %{_kernel_ver}
374 %preun -n kernel%{_alt_kernel}-misc-vboxadd
375 if [ "$1" = "0" ]; then
376 %service vboxadd stop
377 /sbin/chkconfig --del vboxadd
380 %post -n kernel%{_alt_kernel}-misc-vboxdrv
381 %depmod %{_kernel_ver}
382 /sbin/chkconfig --add vboxdrv
383 %service vboxdrv restart "VirtualBox OSE driver"
385 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
386 %depmod %{_kernel_ver}
388 %preun -n kernel%{_alt_kernel}-misc-vboxdrv
389 if [ "$1" = "0" ]; then
390 %service vboxdrv stop
391 /sbin/chkconfig --del vboxdrv
394 %post -n kernel%{_alt_kernel}-misc-vboxvfs
395 %depmod %{_kernel_ver}
397 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
398 %depmod %{_kernel_ver}
400 %if %{with userspace}
402 %defattr(644,root,root,755)
404 %dir %{_libdir}/VirtualBox
405 %dir %{_libdir}/VirtualBox/additions
406 %dir %{_libdir}/VirtualBox/components
407 %dir %{_libdir}/VirtualBox/nls
408 %attr(755,root,root) %{_bindir}/mountvboxsf
409 %attr(755,root,root) %{_bindir}/vditool
410 %attr(755,root,root) %{_bindir}/VBox*
411 %attr(755,root,root) %{_bindir}/VirtualBox
412 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
413 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
414 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
415 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
416 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
417 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
418 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
420 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
422 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
423 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
424 %{_libdir}/VirtualBox/*.gc
425 %{_libdir}/VirtualBox/*.r0
426 %{_libdir}/VirtualBox/*.xpt
427 %{_libdir}/VirtualBox/additions/*
428 %{_libdir}/VirtualBox/components/*
429 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
430 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
431 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
432 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
433 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
434 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
435 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
436 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
437 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
438 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
439 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
440 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
441 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
442 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
443 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
444 %lang(pt) %{_libdir}/VirtualBox/nls/*_pt.qm
445 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
446 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
447 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
448 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
449 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
450 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
451 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
452 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
453 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
454 %{_pixmapsdir}/VBox.png
455 %{_desktopdir}/%{pname}.desktop
458 %defattr(644,root,root,755)
459 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
461 # Drivers are for Guest OS, which is 32-bit.
463 %files -n xorg-driver-input-vboxmouse
464 %defattr(644,root,root,755)
465 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
467 %files -n xorg-driver-video-vboxvideo
468 %defattr(644,root,root,755)
469 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
474 %files -n kernel%{_alt_kernel}-misc-vboxadd
475 %defattr(644,root,root,755)
476 %attr(754,root,root) /etc/rc.d/init.d/vboxadd
477 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
479 %files -n kernel%{_alt_kernel}-misc-vboxdrv
480 %defattr(644,root,root,755)
481 %attr(754,root,root) /etc/rc.d/init.d/vboxdrv
482 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
484 %files -n kernel%{_alt_kernel}-misc-vboxvfs
485 %defattr(644,root,root,755)
486 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*