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