]> git.pld-linux.org Git - packages/VirtualBox.git/blob - VirtualBox.spec
- rel 4; builds and works on th x86_64
[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             4
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 %ifarch %{x8664}
266 # HACK, is this really safe on x86_64?
267 sed -i -e 's:#.*define.*RTMEMALLOC_EXEC_HEAP::g' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
268 %endif
269
270 %build_kernel_modules -m vboxadd -C vboxadd
271 %build_kernel_modules -m vboxdrv -C vboxdrv
272 cp -a vboxadd/Module.symvers vboxvfs
273 %build_kernel_modules -m vboxvfs -C vboxvfs
274 cd ..
275 %endif
276
277 %install
278 rm -rf $RPM_BUILD_ROOT
279
280 %if %{with userspace}
281 install -d \
282         $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
283         $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
284         $RPM_BUILD_ROOT/etc/rc.d/init.d \
285         $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers \
286         $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input
287
288 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/virtualbox
289
290 install %{SOURCE5} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
291 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
292         install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
293         ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
294 done
295
296 install out/linux.%{outdir}/release/bin/VBox*.{so,rel} \
297         $RPM_BUILD_ROOT%{_libdir}/VirtualBox
298 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
299         $RPM_BUILD_ROOT%{_libdir}/VirtualBox
300
301 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
302 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
303
304 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
305 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
306 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
307
308 install out/linux.%{outdir}/release/bin/additions/mountvboxsf           \
309         $RPM_BUILD_ROOT%{_bindir}
310
311 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so   \
312         $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
313
314 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so   \
315         $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
316
317 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
318 install %{SOURCE4} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
319 %endif
320
321 %if %{with kernel}
322 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
323 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
324
325 cd PLD-MODULE-BUILD
326 for MODULE in *; do
327         [ ! -d $MODULE ] && continue;
328
329         cd $MODULE
330         %install_kernel_modules -m $MODULE -d misc
331         cd ..
332 done
333 cd ..
334 %endif
335
336 %clean
337 rm -rf $RPM_BUILD_ROOT
338
339 %pre
340 %groupadd -g 221 -r -f vbox
341
342 %postun
343 if [ "$1" = "0" ]; then
344         %groupremove vbox
345 fi
346
347 %post   -n kernel%{_alt_kernel}-misc-vboxadd
348 %depmod %{_kernel_ver}
349
350 %postun -n kernel%{_alt_kernel}-misc-vboxadd
351 %depmod %{_kernel_ver}
352
353 %post   -n kernel%{_alt_kernel}-misc-vboxdrv
354 %depmod %{_kernel_ver}
355
356 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
357 %depmod %{_kernel_ver}
358
359 %post   -n kernel%{_alt_kernel}-misc-vboxvfs
360 %depmod %{_kernel_ver}
361
362 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
363 %depmod %{_kernel_ver}
364
365 %if %{with userspace}
366 %files
367 %defattr(644,root,root,755)
368 %doc UserManual.pdf
369 %dir %{_libdir}/VirtualBox
370 %dir %{_libdir}/VirtualBox/additions
371 %dir %{_libdir}/VirtualBox/components
372 %dir %{_libdir}/VirtualBox/nls
373 %attr(754,root,root) /etc/rc.d/init.d/virtualbox
374 %attr(755,root,root) %{_bindir}/mountvboxsf
375 %attr(755,root,root) %{_bindir}/vditool
376 %attr(755,root,root) %{_bindir}/VBox*
377 %attr(755,root,root) %{_bindir}/VirtualBox
378 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
379 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
380 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
381 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
382 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
383 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
384 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
385 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
386 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
387 %{_libdir}/VirtualBox/*.gc
388 %{_libdir}/VirtualBox/*.r0
389 %{_libdir}/VirtualBox/*.xpt
390 %{_libdir}/VirtualBox/additions/*
391 %{_libdir}/VirtualBox/components/*
392 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
393 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
394 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
395 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
396 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
397 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
398 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
399 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
400 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
401 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
402 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
403 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
404 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
405 %lang(pt_PT) %{_libdir}/VirtualBox/nls/*_pt_PT.qm
406 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
407 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
408 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
409 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
410 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
411 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
412 %{_pixmapsdir}/VBox.png
413 %{_desktopdir}/%{name}.desktop
414
415 # Drivers are for Guest OS, which is 32-bit.
416 %ifnarch %{x8664}
417 %files -n xorg-driver-input-vboxmouse
418 %defattr(644,root,root,755)
419 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
420
421 %files -n xorg-driver-video-vboxvideo
422 %defattr(644,root,root,755)
423 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
424 %endif
425 %endif
426
427 %if %{with kernel}
428 %files -n kernel%{_alt_kernel}-misc-vboxadd
429 %defattr(644,root,root,755)
430 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
431
432 %files -n kernel%{_alt_kernel}-misc-vboxdrv
433 %defattr(644,root,root,755)
434 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
435 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
436
437 %files -n kernel%{_alt_kernel}-misc-vboxvfs
438 %defattr(644,root,root,755)
439 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*
440 %endif
This page took 0.080731 seconds and 3 git commands to generate.