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