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