]> git.pld-linux.org Git - packages/VirtualBox.git/blob - VirtualBox.spec
8302b5116dd13ed339ec742cd2cfbac8db63017f
[packages/VirtualBox.git] / VirtualBox.spec
1 #
2 # TODO:
3 # - Find how to compile with PLD CFLAGS/CXXFLAGS/LDFLAGS.
4 # - Package SDK.
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.
8 #
9 # Conditional build:
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
13
14 %define         rel             9
15
16 %if %{without kernel}
17 %undefine       with_dist_kernel
18 %endif
19
20 %if "%{_alt_kernel}" != "%{nil}"
21 %undefine       with_userspace
22 %endif
23
24 %define         pname   VirtualBox
25
26 Summary:        VirtualBox - x86 hardware virtualizer
27 Summary(pl.UTF-8):      VirtualBox - wirtualizator sprzętu x86
28 Name:           %{pname}%{_alt_kernel}
29 Version:        1.5.6
30 Release:        %{rel}
31 License:        GPL v2
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
41 Source5:        %{pname}.sh
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/
48 %if %{with userspace}
49 BuildRequires:  SDL-devel
50 BuildRequires:  alsa-lib-devel
51 BuildRequires:  bash
52 BuildRequires:  bcc
53 BuildRequires:  bin86
54 BuildRequires:  gcc >= 5:3.2.3
55 BuildRequires:  iasl
56 %endif
57 %{?with_dist_kernel:BuildRequires:      kernel%{_alt_kernel}-module-build >= 3:2.6.20}
58 %if %{with userspace}
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
66 %endif
67 BuildRequires:  rpmbuild(macros) >= 1.379
68 %if %{with userspace}
69 BuildRequires:  which
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
74 %ifarch %{x8664}
75 BuildRequires:  gcc-multilib
76 BuildRequires:  libstdc++-multilib-devel
77 # TODO: How to add glibc-devel.i686 here ?
78 %endif
79 %endif
80 Requires(post,preun):   /sbin/chkconfig
81 Requires(postun):       /usr/sbin/groupdel
82 Requires(pre):  /usr/bin/getgid
83 Requires(pre):  /usr/sbin/groupadd
84 Suggests:       gxmessage
85 Provides:       group(vbox)
86 ExclusiveArch:  %{ix86} %{x8664}
87 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
88
89 %ifarch %{x8664}
90 %define         outdir  amd64
91 %else
92 %define         outdir  x86
93 %endif
94
95 %description
96 InnoTek VirtualBox 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
99 Source Software.
100
101 Some of the features of VirtualBox are:
102
103 Modularity: VirtualBox 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 also comes with a full Software Development Kit: even
109 though it is Open Source Software, you don't have to hack the source
110 to write a new interface for VirtualBox.
111
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.
116
117 %description -l pl.UTF-8
118 InnoTek VirtualBox 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.
122
123 Przykładowe cechy VirtualBoksa:
124
125 Modularność: VirtualBox 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 dostarcza również pełny pakiet deweloperski, co
131 pozwala stworzyć dowolny inny interfejs zarządzania maszyną wirtualną.
132
133 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
134 wirtualnych są w całości przechowywane w XML-u i są niezależne od
135 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
136 konfigurację maszyny wirtualnej na inny komputer.
137
138 %package udev
139 Summary:        udev rules for VirtualBox kernel modules
140 Summary(pl.UTF-8):      Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
141 Release:        %{rel}
142 Group:          Base/Kernel
143 Requires:       udev
144
145 %description udev
146 udev rules for VirtualBox kernel modules
147
148 %description udev -l pl.UTF-8
149 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
150
151 %package -n kernel%{_alt_kernel}-misc-vboxadd
152 Summary:        Linux kernel module for VirtualBox
153 Summary(pl.UTF-8):      Moduł jądra Linuksa dla VirtualBoksa
154 Release:        %{rel}@%{_kernel_ver_str}
155 Group:          Base/Kernel
156 Requires(post,postun):  /sbin/depmod
157 Requires:       dev >= 2.9.0-7
158 %if %{with dist_kernel}
159 %requires_releq_kernel
160 #Requires(postun):      %%releq_kernel
161 %endif
162 Provides:       kernel(vboxadd) = %{version}-%{rel}
163
164 %description -n kernel%{_alt_kernel}-misc-vboxadd
165 Linux kernel module vboxadd for VirtualBox.
166
167 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
168 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
169
170 %package -n kernel%{_alt_kernel}-misc-vboxdrv
171 Summary:        Linux kernel module for VirtualBox
172 Summary(pl.UTF-8):      Moduł jądra Linuksa dla VirtualBoksa
173 Release:        %{rel}@%{_kernel_ver_str}
174 Group:          Base/Kernel
175 Requires(post,postun):  /sbin/depmod
176 Requires:       dev >= 2.9.0-7
177 %if %{with dist_kernel}
178 %requires_releq_kernel
179 Requires(postun):       %releq_kernel
180 %endif
181 Provides:       kernel(vboxdrv) = %{version}-%{rel}
182
183 %description -n kernel%{_alt_kernel}-misc-vboxdrv
184 Linux kernel module vboxdrv for VirtualBox.
185
186 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
187 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
188
189 %package -n kernel%{_alt_kernel}-misc-vboxvfs
190 Summary:        Linux kernel module for VirtualBox
191 Summary(pl.UTF-8):      Moduł jądra Linuksa dla VirtualBoksa
192 Release:        %{rel}@%{_kernel_ver_str}
193 Group:          Base/Kernel
194 Requires(post,postun):  /sbin/depmod
195 Requires:       dev >= 2.9.0-7
196 %if %{with dist_kernel}
197 %requires_releq_kernel
198 Requires(postun):       %releq_kernel
199 %endif
200 Provides:       kernel(vboxvfs) = %{version}-%{rel}
201
202 %description -n kernel%{_alt_kernel}-misc-vboxvfs
203 Linux kernel module vboxvfs for VirtualBox.
204
205 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
206 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
207
208 %package -n xorg-driver-input-vboxmouse
209 Summary:        X.org mouse driver for VirtualBox guest OS
210 Summary(pl.UTF-8):      Sterownik myszy dla systemu gościa w VirtualBoksie
211 Release:        %{rel}
212 Group:          X11/Applications
213 Requires:       xorg-xserver-server >= 1.0.99.901
214
215 %description -n xorg-driver-input-vboxmouse
216 X.org mouse driver for VirtualBox guest OS.
217
218 %description -n xorg-driver-input-vboxmouse  -l pl.UTF-8
219 Sterownik myszy dla systemu gościa w VirtualBoksie.
220
221 %package -n xorg-driver-video-vboxvideo
222 Summary:        X.org video driver for VirtualBox guest OS
223 Summary(pl.UTF-8):      Sterownik grafiki dla systemu gościa w VirtualBoksie
224 Release:        %{rel}
225 Group:          X11/Applications
226 Requires:       xorg-xserver-server >= 1.0.99.901
227
228 %description -n xorg-driver-video-vboxvideo
229 X.org video driver for VirtualBox guest OS.
230
231 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
232 Sterownik grafiki dla systemu gościa w VirtualBoksie.
233
234 %prep
235 %setup -q -n %{pname}-%{version}_OSE
236 %patch0 -p0
237 %patch1 -p0
238 %patch2 -p1
239
240 %ifarch %{x8664}
241 %patch3 -p1
242 %endif
243
244 %patch4 -p1
245
246 cat <<'EOF' > udev.conf
247 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
248 EOF
249
250 install %{SOURCE1} .
251
252 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
253 ../src/VBox/Additions/linux/export_modules modules.tar.gz
254         tar -zxf modules.tar.gz && rm -f modules.tar.gz
255 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
256         tar -zxf modules.tar.gz && rm -f modules.tar.gz
257
258 %ifarch %{x8664}
259 # HACK, is this really safe on x86_64?
260 sed -i -e '/#.*define.*RTMEMALLOC_EXEC_HEAP/d' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
261 %endif
262
263 %build
264 %if %{with userspace}
265 ./configure \
266         --with-gcc="%{__cc}" \
267         --with-g++="%{__cxx}" \
268         --disable-kmods
269
270 . ./env.sh && kmk -j1
271 %endif
272
273 %if %{with kernel}
274 cd PLD-MODULE-BUILD
275 %build_kernel_modules -m vboxadd -C vboxadd
276 %build_kernel_modules -m vboxdrv -C vboxdrv
277 cp -a vboxadd/Module.symvers vboxvfs
278 %build_kernel_modules -m vboxvfs -C vboxvfs -c
279 cd ..
280 %endif
281
282 %install
283 rm -rf $RPM_BUILD_ROOT
284
285 %if %{with userspace}
286 install -d \
287         $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
288         $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
289         $RPM_BUILD_ROOT/etc/rc.d/init.d \
290         $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers \
291         $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input
292
293 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/virtualbox
294
295 install %{SOURCE5} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
296 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
297         install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
298         ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
299 done
300
301 %ifarch %{x8664}
302 install out/linux.%{outdir}/release/bin/VBox*.rel \
303         $RPM_BUILD_ROOT%{_libdir}/VirtualBox
304 %endif
305
306 install out/linux.%{outdir}/release/bin/VBox*.so \
307         $RPM_BUILD_ROOT%{_libdir}/VirtualBox
308 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
309         $RPM_BUILD_ROOT%{_libdir}/VirtualBox
310
311 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
312 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
313
314 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
315 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
316 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
317
318 install out/linux.%{outdir}/release/bin/additions/mountvboxsf           \
319         $RPM_BUILD_ROOT%{_bindir}
320
321 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so   \
322         $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
323
324 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so   \
325         $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
326
327 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
328 install %{SOURCE4} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
329
330 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
331 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
332 %endif
333
334 %if %{with kernel}
335 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
336 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
337 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
338 %endif
339
340 %clean
341 rm -rf $RPM_BUILD_ROOT
342
343 %pre
344 %groupadd -g 221 -r -f vbox
345
346 %post
347 /sbin/chkconfig --add virtualbox
348 %service virtualbox restart "VirtualBox"
349
350 %preun
351 if [ "$1" = "0" ]; then
352         %service virtualbox stop
353         /sbin/chkconfig --del virtualbox
354 fi
355
356 %postun
357 if [ "$1" = "0" ]; then
358         %groupremove vbox
359 fi
360
361 %post   -n kernel%{_alt_kernel}-misc-vboxadd
362 %depmod %{_kernel_ver}
363
364 %postun -n kernel%{_alt_kernel}-misc-vboxadd
365 %depmod %{_kernel_ver}
366
367 %post   -n kernel%{_alt_kernel}-misc-vboxdrv
368 %depmod %{_kernel_ver}
369
370 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
371 %depmod %{_kernel_ver}
372
373 %post   -n kernel%{_alt_kernel}-misc-vboxvfs
374 %depmod %{_kernel_ver}
375
376 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
377 %depmod %{_kernel_ver}
378
379 %if %{with userspace}
380 %files
381 %defattr(644,root,root,755)
382 %doc UserManual.pdf
383 %dir %{_libdir}/VirtualBox
384 %dir %{_libdir}/VirtualBox/additions
385 %dir %{_libdir}/VirtualBox/components
386 %dir %{_libdir}/VirtualBox/nls
387 %attr(754,root,root) /etc/rc.d/init.d/virtualbox
388 %attr(755,root,root) %{_bindir}/mountvboxsf
389 %attr(755,root,root) %{_bindir}/vditool
390 %attr(755,root,root) %{_bindir}/VBox*
391 %attr(755,root,root) %{_bindir}/VirtualBox
392 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
393 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
394 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
395 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
396 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
397 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
398 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
399 %ifarch %{x8664}
400 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
401 %endif
402 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
403 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
404 %{_libdir}/VirtualBox/*.gc
405 %{_libdir}/VirtualBox/*.r0
406 %{_libdir}/VirtualBox/*.xpt
407 %{_libdir}/VirtualBox/additions/*
408 %{_libdir}/VirtualBox/components/*
409 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
410 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
411 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
412 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
413 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
414 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
415 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
416 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
417 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
418 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
419 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
420 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
421 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
422 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
423 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
424 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
425 %lang(pt_PT) %{_libdir}/VirtualBox/nls/*_pt_PT.qm
426 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
427 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
428 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
429 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
430 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
431 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
432 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
433 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
434 %{_pixmapsdir}/VBox.png
435 %{_desktopdir}/%{pname}.desktop
436
437 %files udev
438 %defattr(644,root,root,755)
439 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
440
441 # Drivers are for Guest OS, which is 32-bit.
442 %ifnarch %{x8664}
443 %files -n xorg-driver-input-vboxmouse
444 %defattr(644,root,root,755)
445 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
446
447 %files -n xorg-driver-video-vboxvideo
448 %defattr(644,root,root,755)
449 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
450 %endif
451 %endif
452
453 %if %{with kernel}
454 %files -n kernel%{_alt_kernel}-misc-vboxadd
455 %defattr(644,root,root,755)
456 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
457
458 %files -n kernel%{_alt_kernel}-misc-vboxdrv
459 %defattr(644,root,root,755)
460 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
461
462 %files -n kernel%{_alt_kernel}-misc-vboxvfs
463 %defattr(644,root,root,755)
464 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*
465 %endif
This page took 0.061548 seconds and 2 git commands to generate.