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