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