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: XFree86-devel
51 BuildRequires: alsa-lib-devel
55 BuildRequires: gcc >= 5:3.2.3
58 %{?with_dist_kernel:BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.7}
60 BuildRequires: libIDL-devel
61 BuildRequires: libuuid-devel
62 BuildRequires: libxslt-progs
63 BuildRequires: pkgconfig
64 BuildRequires: pulseaudio-devel
65 BuildRequires: qt-devel >= 6:3.3.6
66 BuildRequires: qt-linguist
68 BuildRequires: rpmbuild(macros) >= 1.379
71 BuildRequires: xalan-c-devel >= 1.10.0
72 BuildRequires: xerces-c-devel >= 2.6.0
73 BuildRequires: zlib-devel >= 1.2.1
75 BuildRequires: libstdc++32-devel
77 BuildRequires: /usr/include/gnu/stubs-32.h
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 %{?with_dist_kernel:Requires: kernel%{_alt_kernel}(vermagic) = %{_kernel_ver}}
161 %description -n kernel%{_alt_kernel}-misc-vboxadd
162 Linux kernel module vboxadd for VirtualBox OSE.
164 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
165 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
167 %package -n kernel%{_alt_kernel}-misc-vboxdrv
168 Summary: Linux kernel module for VirtualBox OSE
169 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
170 Release: %{rel}@%{_kernel_ver_str}
172 Requires(post,postun): /sbin/depmod
173 Requires: dev >= 2.9.0-7
174 %{?with_dist_kernel:Requires: kernel%{_alt_kernel}(vermagic) = %{_kernel_ver}}
176 %description -n kernel%{_alt_kernel}-misc-vboxdrv
177 Linux kernel module vboxdrv for VirtualBox OSE.
179 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
180 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
182 %package -n kernel%{_alt_kernel}-misc-vboxvfs
183 Summary: Linux kernel module for VirtualBox OSE
184 Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
185 Release: %{rel}@%{_kernel_ver_str}
187 Requires(post,postun): /sbin/depmod
188 Requires: dev >= 2.9.0-7
189 %{?with_dist_kernel:Requires: kernel%{_alt_kernel}(vermagic) = %{_kernel_ver}}
191 %description -n kernel%{_alt_kernel}-misc-vboxvfs
192 Linux kernel module vboxvfs for VirtualBox OSE.
194 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
195 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
197 %package -n X11-driver-input-vboxmouse
198 Summary: X.org mouse driver for VirtualBox OSE guest OS
199 Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
201 Group: X11/Applications
202 Requires: X11-Xserver >= 1:6.9.0
204 %description -n X11-driver-input-vboxmouse
205 X.org mouse driver for VirtualBox OSE guest OS.
207 %description -n X11-driver-input-vboxmouse -l pl.UTF-8
208 Sterownik myszy dla systemu gościa w VirtualBoksie.
210 %package -n X11-driver-video-vboxvideo
211 Summary: X.org video driver for VirtualBox OSE guest OS
212 Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
214 Group: X11/Applications
215 Requires: X11-Xserver >= 1:6.9.0
217 %description -n X11-driver-video-vboxvideo
218 X.org video driver for VirtualBox OSE guest OS.
220 %description -n X11-driver-video-vboxvideo -l pl.UTF-8
221 Sterownik grafiki dla systemu gościa w VirtualBoksie.
224 %setup -q -n %{pname}-%{version}_OSE
235 cat <<'EOF' > udev.conf
236 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
241 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
242 ../src/VBox/Additions/linux/export_modules modules.tar.gz
243 tar -zxf modules.tar.gz && rm -f modules.tar.gz
244 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
245 tar -zxf modules.tar.gz && rm -f modules.tar.gz
248 # HACK, is this really safe on x86_64?
249 sed -i -e '/#.*define.*RTMEMALLOC_EXEC_HEAP/d' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
253 %if %{with userspace}
255 --with-gcc="%{__cc}" \
256 --with-g++="%{__cxx}" \
259 . ./env.sh && kmk -j1
264 %build_kernel_modules -m vboxadd -C vboxadd
265 %build_kernel_modules -m vboxdrv -C vboxdrv
266 cp -a vboxadd/Module.symvers vboxvfs
267 %build_kernel_modules -m vboxvfs -C vboxvfs -c
272 rm -rf $RPM_BUILD_ROOT
274 %if %{with userspace}
276 $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
277 $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
278 $RPM_BUILD_ROOT/etc/rc.d/init.d
280 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/virtualbox
282 install %{SOURCE5} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
283 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
284 install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
285 ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
289 install out/linux.%{outdir}/release/bin/VBox*.rel \
290 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
293 install out/linux.%{outdir}/release/bin/VBox*.so \
294 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
295 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
296 $RPM_BUILD_ROOT%{_libdir}/VirtualBox
298 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
299 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
301 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
302 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
303 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
305 install out/linux.%{outdir}/release/bin/additions/mountvboxsf \
306 $RPM_BUILD_ROOT%{_bindir}
309 install -d $RPM_BUILD_ROOT%{_x_libraries}/modules/{drivers,input}
310 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_70.so \
311 $RPM_BUILD_ROOT%{_x_libraries}/modules/input/vboxmouse_drv.so
312 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_70.so \
313 $RPM_BUILD_ROOT%{_x_libraries}/modules/drivers/vboxvideo_drv.so
316 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
317 install %{SOURCE4} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
319 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
320 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
324 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
325 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
326 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
330 rm -rf $RPM_BUILD_ROOT
333 %groupadd -g 221 -r -f vbox
336 /sbin/chkconfig --add virtualbox
337 %service virtualbox restart "VirtualBox OSE"
340 if [ "$1" = "0" ]; then
341 %service virtualbox stop
342 /sbin/chkconfig --del virtualbox
346 if [ "$1" = "0" ]; then
350 %post -n kernel%{_alt_kernel}-misc-vboxadd
351 %depmod %{_kernel_ver}
353 %postun -n kernel%{_alt_kernel}-misc-vboxadd
354 %depmod %{_kernel_ver}
356 %post -n kernel%{_alt_kernel}-misc-vboxdrv
357 %depmod %{_kernel_ver}
359 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
360 %depmod %{_kernel_ver}
362 %post -n kernel%{_alt_kernel}-misc-vboxvfs
363 %depmod %{_kernel_ver}
365 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
366 %depmod %{_kernel_ver}
368 %if %{with userspace}
370 %defattr(644,root,root,755)
372 %dir %{_libdir}/VirtualBox
373 %dir %{_libdir}/VirtualBox/additions
374 %dir %{_libdir}/VirtualBox/components
375 %dir %{_libdir}/VirtualBox/nls
376 %attr(754,root,root) /etc/rc.d/init.d/virtualbox
377 %attr(755,root,root) %{_bindir}/mountvboxsf
378 %attr(755,root,root) %{_bindir}/vditool
379 %attr(755,root,root) %{_bindir}/VBox*
380 %attr(755,root,root) %{_bindir}/VirtualBox
381 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
382 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
383 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
384 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
385 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
386 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
387 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
389 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
391 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
392 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
393 %{_libdir}/VirtualBox/*.gc
394 %{_libdir}/VirtualBox/*.r0
395 %{_libdir}/VirtualBox/*.xpt
396 %{_libdir}/VirtualBox/additions/*
397 %{_libdir}/VirtualBox/components/*
398 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
399 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
400 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
401 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
402 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
403 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
404 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
405 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
406 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
407 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
408 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
409 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
410 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
411 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
412 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
413 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
414 %lang(pt_PT) %{_libdir}/VirtualBox/nls/*_pt_PT.qm
415 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
416 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
417 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
418 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
419 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
420 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
421 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
422 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
423 %{_pixmapsdir}/VBox.png
424 %{_desktopdir}/%{pname}.desktop
427 %defattr(644,root,root,755)
428 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
430 # Drivers are for Guest OS, which is 32-bit.
432 %files -n X11-driver-input-vboxmouse
433 %defattr(644,root,root,755)
434 %attr(755,root,root) %{_x_libraries}/modules/input/vboxmouse_drv.so
436 %files -n X11-driver-video-vboxvideo
437 %defattr(644,root,root,755)
438 %attr(755,root,root) %{_x_libraries}/modules/drivers/vboxvideo_drv.so
443 %files -n kernel%{_alt_kernel}-misc-vboxadd
444 %defattr(644,root,root,755)
445 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
447 %files -n kernel%{_alt_kernel}-misc-vboxdrv
448 %defattr(644,root,root,755)
449 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
451 %files -n kernel%{_alt_kernel}-misc-vboxvfs
452 %defattr(644,root,root,755)
453 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*