]> git.pld-linux.org Git - packages/VirtualBox.git/blob - VirtualBox.spec
d5ef5762e35efbde30d39f2d180026cf62221971
[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             6
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.4
30 Release:        %{rel}
31 License:        GPL v2
32 Group:          Applications/Emulators
33 Source0:        http://www.virtualbox.org/download/%{version}/%{pname}-%{version}_OSE.tar.bz2
34 # Source0-md5:  fbebb3f04911c4c39aac27b1d3532acc
35 Source1:        http://www.virtualbox.org/download/%{version}/UserManual.pdf
36 # Source1-md5:  f56f0d904013cbc0940108ed042e539d
37 Source2:        http://www.virtualbox.org/download/%{version}/VBoxGuestAdditions_%{version}.iso
38 # Source2-md5:  e021a51fc5946659b0789d134b1fd5ff
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 URL:            http://www.virtualbox.org/
47 BuildRequires:  SDL-devel
48 BuildRequires:  alsa-lib-devel
49 BuildRequires:  bash
50 BuildRequires:  bcc
51 BuildRequires:  bin86
52 BuildRequires:  gcc >= 5:3.2.3
53 BuildRequires:  iasl
54 %{?with_dist_kernel:BuildRequires:      kernel%{_alt_kernel}-module-build >= 3:2.6.7}
55 BuildRequires:  libIDL-devel
56 BuildRequires:  libuuid-devel
57 BuildRequires:  libxslt-progs
58 BuildRequires:  pkgconfig
59 BuildRequires:  pulseaudio-devel
60 BuildRequires:  qt-devel >= 6:3.3.6
61 BuildRequires:  qt-linguist
62 BuildRequires:  rpmbuild(macros) >= 1.329
63 BuildRequires:  which
64 BuildRequires:  xalan-c-devel >= 1.10.0
65 BuildRequires:  xerces-c-devel >= 2.6.0
66 BuildRequires:  xorg-lib-libXcursor-devel
67 BuildRequires:  zlib-devel >= 1.2.1
68 %ifarch %{x8664}
69 BuildRequires:  gcc-multilib
70 BuildRequires:  libstdc++-multilib-devel
71 # TODO: How to add glibc-devel.i686 here ?
72 %endif
73 Requires(postun):       /usr/sbin/groupdel
74 Requires(pre):  /usr/bin/getgid
75 Requires(pre):  /usr/sbin/groupadd
76 Suggests:       gxmessage
77 Provides:       group(vbox)
78 ExclusiveArch:  %{ix86} %{x8664}
79 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
80
81 %ifarch %{x8664}
82 %define         outdir  amd64
83 %else
84 %define         outdir  x86
85 %endif
86
87 %description
88 InnoTek VirtualBox is a general-purpose full virtualizer for x86
89 hardware. Targeted at server, desktop and embedded use, it is now the
90 only professional-quality virtualization solution that is also Open
91 Source Software.
92
93 Some of the features of VirtualBox are:
94
95 Modularity: VirtualBox has an extremely modular design with
96 well-defined internal programming interfaces and a client/server
97 design. This makes it easy to control it from several interfaces at
98 once: for example, you can start a virtual machine in a typical
99 virtual machine GUI and then control that machine from the command
100 line. VirtualBox also comes with a full Software Development Kit: even
101 though it is Open Source Software, you don't have to hack the source
102 to write a new interface for VirtualBox.
103
104 Virtual machine descriptions in XML: the configuration settings of
105 virtual machines are stored entirely in XML and are independent of the
106 local machines. Virtual machine definitions can therefore easily be
107 ported to other computers.
108
109 %description -l pl.UTF-8
110 InnoTek VirtualBox jest emulatorem sprzętu x86. Kierowany do
111 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
112 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
113 również jako Otwarte Oprogramowanie.
114
115 Przykładowe cechy VirtualBoksa:
116
117 Modularność: VirtualBox jest wysoce zmodularyzowanym produktem z
118 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
119 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
120 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
121 poziomu interfejsu graficznego, a później kontrolować ją z linii
122 poleceń. VirtualBox dostarcza również pełny pakiet deweloperski, co
123 pozwala stworzyć dowolny inny interfejs zarządzania maszyną wirtualną.
124
125 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
126 wirtualnych są w całości przechowywane w XML-u i są niezależne od
127 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
128 konfigurację maszyny wirtualnej na inny komputer.
129
130 %package udev
131 Summary:        udev rules for VirtualBox kernel modules
132 Summary(pl.UTF-8):      Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
133 Release:        %{rel}@%{_kernel_ver_str}
134 Group:          Base/Kernel
135 Requires:       udev
136
137 %description udev
138 udev rules for VirtualBox kernel modules
139
140 %description udev -l pl.UTF-8
141 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
142
143 %package -n kernel%{_alt_kernel}-misc-vboxadd
144 Summary:        Linux kernel module for VirtualBox
145 Summary(pl.UTF-8):      Moduł jądra Linuksa dla VirtualBoksa
146 Release:        %{rel}@%{_kernel_ver_str}
147 Group:          Base/Kernel
148 Requires(post,postun):  /sbin/depmod
149 Requires:       dev >= 2.9.0-7
150 %if %{with dist_kernel}
151 %requires_releq_kernel
152 #Requires(postun):      %%releq_kernel
153 %endif
154 Provides:       kernel(vboxadd) = %{version}-%{rel}
155
156 %description -n kernel%{_alt_kernel}-misc-vboxadd
157 Linux kernel module vboxadd for VirtualBox.
158
159 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
160 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
161
162 %package -n kernel%{_alt_kernel}-misc-vboxdrv
163 Summary:        Linux kernel module for VirtualBox
164 Summary(pl.UTF-8):      Moduł jądra Linuksa dla VirtualBoksa
165 Release:        %{rel}@%{_kernel_ver_str}
166 Group:          Base/Kernel
167 Requires(post,postun):  /sbin/depmod
168 Requires:       dev >= 2.9.0-7
169 %if %{with dist_kernel}
170 %requires_releq_kernel
171 Requires(postun):       %releq_kernel
172 %endif
173 Provides:       kernel(vboxdrv) = %{version}-%{rel}
174
175 %description -n kernel%{_alt_kernel}-misc-vboxdrv
176 Linux kernel module vboxdrv for VirtualBox.
177
178 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
179 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
180
181 %package -n kernel%{_alt_kernel}-misc-vboxvfs
182 Summary:        Linux kernel module for VirtualBox
183 Summary(pl.UTF-8):      Moduł jądra Linuksa dla VirtualBoksa
184 Release:        %{rel}@%{_kernel_ver_str}
185 Group:          Base/Kernel
186 Requires(post,postun):  /sbin/depmod
187 Requires:       dev >= 2.9.0-7
188 %if %{with dist_kernel}
189 %requires_releq_kernel
190 Requires(postun):       %releq_kernel
191 %endif
192 Provides:       kernel(vboxvfs) = %{version}-%{rel}
193
194 %description -n kernel%{_alt_kernel}-misc-vboxvfs
195 Linux kernel module vboxvfs for VirtualBox.
196
197 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
198 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
199
200 %package -n xorg-driver-input-vboxmouse
201 Summary:        X.org mouse driver for VirtualBox guest OS
202 Summary(pl.UTF-8):      Sterownik myszy dla systemu gościa w VirtualBoksie
203 Release:        %{rel}
204 Group:          X11/Applications
205 Requires:       xorg-xserver-server >= 1.0.99.901
206
207 %description -n xorg-driver-input-vboxmouse
208 X.org mouse driver for VirtualBox guest OS.
209
210 %description -n xorg-driver-input-vboxmouse  -l pl.UTF-8
211 Sterownik myszy dla systemu gościa w VirtualBoksie.
212
213 %package -n xorg-driver-video-vboxvideo
214 Summary:        X.org video driver for VirtualBox guest OS
215 Summary(pl.UTF-8):      Sterownik grafiki dla systemu gościa w VirtualBoksie
216 Release:        %{rel}
217 Group:          X11/Applications
218 Requires:       xorg-xserver-server >= 1.0.99.901
219
220 %description -n xorg-driver-video-vboxvideo
221 X.org video driver for VirtualBox guest OS.
222
223 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
224 Sterownik grafiki dla systemu gościa w VirtualBoksie.
225
226 %prep
227 %setup -q -n %{pname}-%{version}_OSE
228 %patch0 -p0
229 %patch1 -p0
230 %patch2 -p1
231
232 %ifarch %{x8664}
233 %patch3 -p1
234 %endif
235
236 cat <<'EOF' > udev.conf
237 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
238 EOF
239
240 install %{SOURCE1} .
241
242 %build
243 KDIR="%{_builddir}/%{buildsubdir}/kernel"
244 mkdir -p $KDIR
245 cp -Ra %{_kernelsrcdir}/include $KDIR
246 %ifarch %{x8664} %{ix86}
247 if [ -d $KDIR/include/asm-x86 ]; then
248         ln -sf $KDIR/include/asm-x86 $KDIR/include/asm
249 else
250 %ifarch %{x8664}
251         ln -sf $KDIR/include/asm-x86_64 $KDIR/include/asm
252 %else
253         ln -sf $KDIR/include/asm-i386 $KDIR/include/asm
254 %endif
255 fi
256 %endif
257
258 %if %{with dist_kernel}
259 ln -sf $KDIR/include/linux/autoconf-dist.h $KDIR/include/linux/autoconf.h
260 %else
261 ln -sf $KDIR/include/linux/autoconf-nondist.h $KDIR/include/linux/autoconf.h
262 %endif
263
264 ./configure \
265         --with-gcc="%{__cc}" \
266         --with-g++="%{__cxx}" \
267         --with-linux="$KDIR"
268
269 %if %{with userspace}
270 . ./env.sh && kmk -j1
271 %endif
272
273 %if %{with kernel}
274 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
275
276 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
277         tar -zxf modules.tar.gz && rm -f modules.tar.gz
278 ../src/VBox/Additions/linux/export_modules modules.tar.gz
279         tar -zxf modules.tar.gz && rm -f modules.tar.gz
280
281 %ifarch %{x8664}
282 # HACK, is this really safe on x86_64?
283 sed -i -e 's:#.*define.*RTMEMALLOC_EXEC_HEAP::g' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
284 %endif
285
286 %build_kernel_modules -m vboxadd -C vboxadd
287 %build_kernel_modules -m vboxdrv -C vboxdrv
288 cp -a vboxadd/Module.symvers vboxvfs
289 %build_kernel_modules -m vboxvfs -C vboxvfs
290 cd ..
291 %endif
292
293 %install
294 rm -rf $RPM_BUILD_ROOT
295
296 %if %{with userspace}
297 install -d \
298         $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
299         $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
300         $RPM_BUILD_ROOT/etc/rc.d/init.d \
301         $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers \
302         $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input
303
304 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/virtualbox
305
306 install %{SOURCE5} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
307 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
308         install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
309         ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
310 done
311
312 %ifarch %{x8664}
313 install out/linux.%{outdir}/release/bin/VBox*.rel \
314         $RPM_BUILD_ROOT%{_libdir}/VirtualBox
315 %endif
316
317 install out/linux.%{outdir}/release/bin/VBox*.so \
318         $RPM_BUILD_ROOT%{_libdir}/VirtualBox
319 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
320         $RPM_BUILD_ROOT%{_libdir}/VirtualBox
321
322 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
323 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
324
325 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
326 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
327 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
328
329 install out/linux.%{outdir}/release/bin/additions/mountvboxsf           \
330         $RPM_BUILD_ROOT%{_bindir}
331
332 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so   \
333         $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
334
335 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so   \
336         $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
337
338 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
339 install %{SOURCE4} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
340
341 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
342 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
343 %endif
344
345 %if %{with kernel}
346 cd PLD-MODULE-BUILD
347 for MODULE in *; do
348         [ ! -d $MODULE ] && continue;
349
350         cd $MODULE
351         %install_kernel_modules -m $MODULE -d misc
352         cd ..
353 done
354 cd ..
355 %endif
356
357 %clean
358 rm -rf $RPM_BUILD_ROOT
359
360 %pre
361 %groupadd -g 221 -r -f vbox
362
363 %postun
364 if [ "$1" = "0" ]; then
365         %groupremove vbox
366 fi
367
368 %post   -n kernel%{_alt_kernel}-misc-vboxadd
369 %depmod %{_kernel_ver}
370
371 %postun -n kernel%{_alt_kernel}-misc-vboxadd
372 %depmod %{_kernel_ver}
373
374 %post   -n kernel%{_alt_kernel}-misc-vboxdrv
375 %depmod %{_kernel_ver}
376
377 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
378 %depmod %{_kernel_ver}
379
380 %post   -n kernel%{_alt_kernel}-misc-vboxvfs
381 %depmod %{_kernel_ver}
382
383 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
384 %depmod %{_kernel_ver}
385
386 %if %{with userspace}
387 %files
388 %defattr(644,root,root,755)
389 %doc UserManual.pdf
390 %dir %{_libdir}/VirtualBox
391 %dir %{_libdir}/VirtualBox/additions
392 %dir %{_libdir}/VirtualBox/components
393 %dir %{_libdir}/VirtualBox/nls
394 %attr(754,root,root) /etc/rc.d/init.d/virtualbox
395 %attr(755,root,root) %{_bindir}/mountvboxsf
396 %attr(755,root,root) %{_bindir}/vditool
397 %attr(755,root,root) %{_bindir}/VBox*
398 %attr(755,root,root) %{_bindir}/VirtualBox
399 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
400 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
401 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
402 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
403 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
404 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
405 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
406 %ifarch %{x8664}
407 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
408 %endif
409 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
410 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
411 %{_libdir}/VirtualBox/*.gc
412 %{_libdir}/VirtualBox/*.r0
413 %{_libdir}/VirtualBox/*.xpt
414 %{_libdir}/VirtualBox/additions/*
415 %{_libdir}/VirtualBox/components/*
416 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
417 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
418 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
419 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
420 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
421 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
422 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
423 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
424 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
425 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
426 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
427 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
428 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
429 %lang(pt_PT) %{_libdir}/VirtualBox/nls/*_pt_PT.qm
430 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
431 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
432 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
433 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
434 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
435 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
436 %{_pixmapsdir}/VBox.png
437 %{_desktopdir}/%{pname}.desktop
438
439 %files udev
440 %defattr(644,root,root,755)
441 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
442
443 # Drivers are for Guest OS, which is 32-bit.
444 %ifnarch %{x8664}
445 %files -n xorg-driver-input-vboxmouse
446 %defattr(644,root,root,755)
447 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
448
449 %files -n xorg-driver-video-vboxvideo
450 %defattr(644,root,root,755)
451 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
452 %endif
453 %endif
454
455 %if %{with kernel}
456 %files -n kernel%{_alt_kernel}-misc-vboxadd
457 %defattr(644,root,root,755)
458 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
459
460 %files -n kernel%{_alt_kernel}-misc-vboxdrv
461 %defattr(644,root,root,755)
462 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
463
464 %files -n kernel%{_alt_kernel}-misc-vboxvfs
465 %defattr(644,root,root,755)
466 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*
467 %endif
This page took 0.094848 seconds and 2 git commands to generate.