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