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