]> git.pld-linux.org Git - packages/VirtualBox.git/blob - VirtualBox.spec
- Release 0.2
[packages/VirtualBox.git] / VirtualBox.spec
1 #
2 # TODO:
3 # - Home page says that some addons should be compiled, I don't see any except.
4 #   vboxaddon kernel module and {vboxmouse,vboxvideo)_drv.so. Are they required?
5 # - .desktop file
6 # - it seems that VBoxSVC should not be started by init script but I'm still 
7 #   testing this
8 # - /dev/vboxdrv should belong to vboxusers group and have rw rights to it
9 # - Devel stuff is not packaged yet.
10 # - Now its EA ix86 x8664, but looking into autogenerated env.sh suggests that
11 #   code may be compiled exclusively for i686.
12 # - use %kernel_build macros
13 #
14 # Conditional build:
15 %bcond_without  dist_kernel     # without distribution kernel
16 %bcond_without  up              # without up packages
17 %bcond_without  smp             # without SMP kernel modules
18
19 %define         _rel            0.2
20
21 Summary:        VirtualBox
22 Summary(pl.UTF-8):      VirtualBox
23 Name:           VirtualBox
24 Version:        1.3.6
25 Release:        %{_rel}
26 License:        GPL v2
27 Group:          Applications/Emulators
28 Source0:        http://www.virtualbox.org/download/%{version}/VirtualBox-OSE-%{version}.tar.bz2
29 # Source0-md5:  70c24ccee8b5778efd8d22f9996fbec9
30 Source1:        virtualbox.init
31 Patch0:         %{name}-configure.patch
32 Patch1:         %{name}-qt-paths.patch
33 URL:            http://www.virtualbox.org/
34 BuildRequires:  SDL-devel
35 BuildRequires:  bash
36 BuildRequires:  bcc
37 BuildRequires:  bin86
38 BuildRequires:  gcc >= 5:3.2.3
39 BuildRequires:  iasl
40 %{?with_dist_kernel:BuildRequires:      kernel%{_alt_kernel}-module-build >= 3:2.6.7}
41 BuildRequires:  libIDL-devel
42 BuildRequires:  libuuid-devel
43 BuildRequires:  libxslt-progs
44 BuildRequires:  qt-devel >= 6:3.3.6
45 BuildRequires:  rpmbuild(macros) >= 1.329
46 BuildRequires:  xalan-c-devel >= 1.10.0
47 #BuildRequires: xcursor-devel
48 BuildRequires:  xerces-c-devel >= 2.6.0
49 BuildRequires:  xorg-lib-libXcursor-devel
50 BuildRequires:  zlib-devel >= 1.2.1
51 Requires:       kernel(vboxdrv) = %{version}-%{_rel}
52 ExclusiveArch:  %{ix86} %{x8664}
53 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
54
55 %ifarch %{x8664}
56 %define         _outdir amd64
57 %else
58 %define         _outdir x86
59 %endif
60
61 %description
62 InnoTek VirtualBox is a general-purpose full virtualizer for x86
63 hardware. Targeted at server, desktop and embedded use, it is now the
64 only professional-quality virtualization solution that is also Open
65 Source Software.
66
67 Some of the features of VirtualBox are:
68
69 Modularity: VirtualBox has an extremely modular design with
70 well-defined internal programming interfaces and a client/server
71 design. This makes it easy to control it from several interfaces at
72 once: for example, you can start a virtual machine in a typical
73 virtual machine GUI and then control that machine from the command
74 line. VirtualBox also comes with a full Software Development Kit: even
75 though it is Open Source Software, you don't have to hack the source
76 to write a new interface for VirtualBox.
77
78 Virtual machine descriptions in XML: the configuration settings of
79 virtual machines are stored entirely in XML and are independent of the
80 local machines. Virtual machine definitions can therefore easily be
81 ported to other computers.
82
83 %description -l pl.UTF-8
84 InnoTek VirtualBox jest emulatorem sprzętu x86. Kierowany do
85 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
86 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
87 również jako Otwarte Oprogramowanie.
88
89 Przykładowe cechy VirtualBoksa:
90
91 Modularność: VirtualBox jest wysoce zmodularyzowanym produktem z
92 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
93 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
94 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
95 poziomu interfejsu graficznego, a później kontrolować ją z linii
96 poleceń. VirtualBox dostarcza również pełny pakiet deweloperski, co
97 pozwala stworzyć dowolny inny interfejs zarządzania maszyną wirtualną.
98
99 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
100 wirtualnych są w całości przechowywane w XML-u i są niezależne od
101 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
102 konfigurację maszyny wirtualnej na inny komputer.
103
104 %package -n kernel%{_alt_kernel}-misc-vboxdrv
105 Summary:        Linux kernel module for VirtualBox
106 Summary(pl.UTF-8):      Moduł jądra Linuksa dla VirtualBoksa
107 Release:        %{_rel}@%{_kernel_ver_str}
108 Group:          Base/Kernel
109 Requires(post,postun):  /sbin/depmod
110 Requires:       dev >= 2.9.0-7
111 %if %{with dist_kernel}
112 %requires_releq_kernel_up
113 Requires(postun):       %releq_kernel_up
114 %endif
115 Provides:       kernel(vboxdrv) = %{version}-%{_rel}
116
117 %description -n kernel%{_alt_kernel}-misc-vboxdrv
118 Linux kernel module vboxdrv for VirtualBox.
119
120 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
121 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
122
123 %package -n kernel%{_alt_kernel}-smp-misc-vboxdrv
124 Summary:        Linux SMP kernel module for VirtualBox
125 Summary(pl.UTF-8):      Moduł jądra Linuksa SMP dla VirtualBoksa
126 Release:        %{_rel}@%{_kernel_ver_str}
127 Group:          Base/Kernel
128 Requires(post,postun):  /sbin/depmod
129 Requires:       dev >= 2.9.0-7
130 %if %{with dist_kernel}
131 %requires_releq_kernel_smp
132 Requires(postun):       %releq_kernel_smp
133 %endif
134 Provides:       kernel(vboxdrv) = %{version}-%{_rel}
135
136 %description -n kernel%{_alt_kernel}-smp-misc-vboxdrv
137 Linux SMP kernel module vboxdrv for VirtualBox.
138
139 %description -n kernel%{_alt_kernel}-smp-misc-vboxdrv -l pl.UTF-8
140 Moduł jądra Linuksa SMP vboxdrv dla VirtualBoksa.
141
142 %prep
143 %setup -q -n %{name}-OSE-%{version}
144 %patch0 -p0
145 %patch1 -p0
146
147 %build
148 KDIR="%{_builddir}/%{buildsubdir}/kernel"
149 mkdir -p $KDIR
150 cp -a %{_kernelsrcdir}/include $KDIR
151 %ifarch %{x8664}
152 ln -sf $KDIR/include/asm-x86_64 $KDIR/include/asm
153 %else
154 ln -sf $KDIR/include/asm-i386 $KDIR/include/asm
155 %endif
156 ln -sf $KDIR/include/linux/autoconf-up.h $KDIR/include/linux/autoconf.h
157
158 ./configure \
159         --with-gcc="%{__cc}" \
160         --with-g++="%{__cxx}" \
161         --with-linux="$KDIR"
162 . ./env.sh
163 kmk
164
165 cd out/linux.%{_outdir}/release/bin/src
166 for cfg in %{?with_dist_kernel:%{?with_smp:smp} up}%{!?with_dist_kernel:nondist}; do
167         if [ ! -r "%{_kernelsrcdir}/config-$cfg" ]; then
168                 exit 1
169         fi
170         rm -rf o
171         install -d o/include/linux
172         ln -sf %{_kernelsrcdir}/config-$cfg o/.config
173         ln -sf %{_kernelsrcdir}/Module.symvers-$cfg o/Module.symvers
174         ln -sf %{_kernelsrcdir}/include/linux/autoconf-$cfg.h o/include/linux/autoconf.h
175 %if %{with dist_kernel}
176         %{__make} -j1 -C %{_kernelsrcdir} O=$PWD/o prepare scripts
177 %else
178         touch o/include/config/MARKER
179         ln -sf %{_kernelsrcdir}/scripts o/scripts
180 %endif
181         ln -sf ../../include/VBox o/include/VBox
182         ln -sf ../../include/iprt o/include/iprt
183         %{__make} -C %{_kernelsrcdir} clean \
184                 SYSSRC=%{_kernelsrcdir} \
185                 SYSOUT=$PWD/o \
186                 M=$PWD O=$PWD/o \
187                 %{?with_verbose:V=1}
188         %{__make} -C %{_kernelsrcdir} modules \
189                 CC="%{__cc}" CPP="%{__cpp}" \
190                 SYSSRC=%{_kernelsrcdir} \
191                 SYSOUT=$PWD/o \
192                 M=$PWD O=$PWD/o \
193                 %{?with_verbose:V=1}
194         mv vboxdrv.ko ../../../../../vboxdrv-$cfg.ko
195 done
196
197 %install
198 rm -rf $RPM_BUILD_ROOT
199
200 install -d \
201         $RPM_BUILD_ROOT%{_bindir} \
202         $RPM_BUILD_ROOT%{_libdir}/VirtualBox \
203         $RPM_BUILD_ROOT/etc/rc.d/init.d
204
205 cat > VBox.sh << EOF
206 #!/bin/sh
207
208 if [ ! -c /dev/vboxdrv ]; then
209     echo "Special character device /dev/vboxdrv doesn't exists!"
210     echo "Check your installation and if vboxdrv kernel module is loaded."
211     exit 1
212 fi
213
214 if [ ! -w /dev/vboxdrv ]; then
215     echo "You don't have write access to /dev/vboxdrv!"
216     echo "Correct this situation or contact with your system administrator."
217     exit 1
218 fi
219
220 BINFILE=\`basename \$0\`
221 LD_LIBRARY_PATH=%{_libdir}/VirtualBox %{_libdir}/VirtualBox/\$BINFILE \$@
222 EOF
223
224 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox}
225 do
226 install out/linux.%{_outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
227 install VBox.sh $RPM_BUILD_ROOT%{_bindir}/$f
228 done
229
230 install out/linux.%{_outdir}/release/bin/VBox{C,DD,DD2,REM,REMImp,RT,VMM,XML,XPCOM,XPCOMIPCC}.so \
231         $RPM_BUILD_ROOT%{_libdir}/VirtualBox
232 install out/linux.%{_outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
233         $RPM_BUILD_ROOT%{_libdir}/VirtualBox
234
235 install -d $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}{,smp}/misc
236 install vboxdrv-up.ko $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}/misc/vboxdrv.ko
237 %if %{with smp} && %{with dist_kernel}
238 install vboxdrv-smp.ko $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver}smp/misc/vboxdrv.ko
239 %endif
240
241 cp -a out/linux.%{_outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
242 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/virtualbox
243
244 %clean
245 rm -rf $RPM_BUILD_ROOT
246
247 %post
248 /sbin/chkconfig --add virtualbox
249 %service virtualbox restart "VBoxSVC daemon"
250
251 %preun 
252 if [ "$1" = "0" ]; then
253         %service virtualbox stop
254         /sbin/chkconfig --del virtualbox
255 fi
256
257 %post   -n kernel%{_alt_kernel}-misc-vboxdrv
258 %depmod %{_kernel_ver}
259
260 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
261 %depmod %{_kernel_ver}
262
263 %if %{with smp} && %{with dist_kernel}
264 %post   -n kernel%{_alt_kernel}-smp-misc-vboxdrv
265 %depmod %{_kernel_ver}smp
266
267 %postun -n kernel%{_alt_kernel}-smp-misc-vboxdrv
268 %depmod %{_kernel_ver}smp
269 %endif
270
271 %files
272 %defattr(644,root,root,755)
273 %dir %{_libdir}/VirtualBox
274 %dir %{_libdir}/VirtualBox/components
275 %attr(755,root,root) %{_bindir}/VBox*
276 %attr(755,root,root) %{_bindir}/VirtualBox
277 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
278 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
279 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
280 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
281 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
282 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
283 %{_libdir}/VirtualBox/*.gc
284 %{_libdir}/VirtualBox/*.r0
285 %{_libdir}/VirtualBox/VBox*.so
286 %{_libdir}/VirtualBox/*.xpt
287 %{_libdir}/VirtualBox/components/*
288 %attr(754,root,root) /etc/rc.d/init.d/virtualbox
289
290 %if %{with up} || %{without dist_kernel}
291 %files  -n kernel%{_alt_kernel}-misc-vboxdrv
292 %defattr(644,root,root,755)
293 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko.gz
294 %endif
295
296 %if %{with smp} && %{with dist_kernel}
297 %files  -n kernel%{_alt_kernel}-smp-misc-vboxdrv
298 %defattr(644,root,root,755)
299 /lib/modules/%{_kernel_ver}smp/misc/vboxdrv.ko.gz
300 %endif
This page took 0.056947 seconds and 3 git commands to generate.