VirtualBox

Ticket #3672: VirtualBox.spec

File VirtualBox.spec, 9.7 KB (added by Tobias Gerschner, 15 years ago)

SPEC File to build Virtual Box OSE 2.2.0 for Yoper Linux Distribution

Line 
1%define _kernel 2.6.29_yos-61
2#disable stripping as it seems to interfere with the kernel modules
3%define __arch_install_post %{nil} \
4
5%define __build_vbox 1
6
7Summary: virtualizer for x86 hardware (like vmware)
8Name: VirtualBox
9Version: 2.2.0
10Release: 8._yoper_alpha_
11Copyright: GPL
12Group: System/Emulators
13URL: http://www.virtualbox.org/
14Distribution: Yoper
15BuildRoot: %{_tmppath}/%{name}-buildroot
16Packager: vacant
17
18Source0: http://download.virtualbox.org/virtualbox/%{version}/VirtualBox-%{version}-OSE.tar.bz2
19Source1: vboxdrv-init
20Source2: vboxnet-init
21
22Patch0: VirtualBox-2.1.4-3-OSE-swab-del.diff
23
24BuildRequires: gcc g++ glibc-devel linux-libc-headers xalan-c-devel python-devel
25BuildRequires: kernel-headers-%{_kernel}
26BuildRequires: libcap-devel dbus-devel wine-devel
27BuildRequires: mkisofs libxslt-devel libIDL-devel qt4-devel
28BuildRequires: libXcursor-devel iasl dev86 xerces-c-devel compat-libstdc.so.5
29BuildRequires: which e2fsprogs-devel SDL-devel zlib alsa-lib-devel glib2-devel
30BuildRequires: pulseaudio-devel libpng-devel oss-gpl-devel Mesa-devel
31
32Requires: kernel-module-%{name}-%{_kernel} yopermaintain xorg-x11-base xdg-utils
33Requires: bridge-utils uml_utilities
34
35Requires(pre): kernel-module-%{name}-%{_kernel}
36Requires(post): chkconfig netinitscripts
37Requires(preun): chkconfig netinitscripts
38
39%description
40InnoTek VirtualBox is a general-purpose full virtualizer for x86 hardware. Targeted at server, desktop and embedded use, it is now the only professional-quality virtualization solution that is also Open Source Software.
41
42%package sdk
43Summary: Sdk files of %{name}
44Group: System/Development
45Requires: %{name} = %{version}
46
47%description sdk
48These are sdk files of %{name}
49
50%package qt4
51Summary: QT4 UI for %{name}
52Group: System/Development
53Requires: %{name} = %{version}
54
55%description qt4
56QT4 UI for %{name}
57
58%package -n kernel-module-%{name}-%{_kernel}
59Summary: %{name} kernel module
60Group: System/Kernel
61Requires: /boot/vmlinuz-%{_kernel}
62Requires(pre): /boot/vmlinuz-%{_kernel}
63Requires: module-init-tools
64Provides: kernel-module-%{name}-%{_kernel}
65
66%description -n kernel-module-%{name}-%{_kernel}
67Kernel module for %{name}.
68
69%package -n kernel-module-%{name}-guest-%{_kernel}
70Summary: %{name} kernel module
71Group: System/Kernel
72Requires: /boot/vmlinuz-%{_kernel}
73Requires(pre): /boot/vmlinuz-%{_kernel}
74Requires: module-init-tools
75Provides: kernel-module-%{name}-guest-%{_kernel}
76
77%description -n kernel-module-%{name}-guest-%{_kernel}
78Kernel Module to use if Yoper is run inside a Virtual Box VM
79
80%prep
81#causes odd error, no solution found till now
82[ -z "$(grep 'linux\/freezer.h' /usr/include/linux/fs.h)" ] || exit 1
83%setup -q -n %{name}-%{version}_OSE
84%patch0
85
86sed -i -e '
87/^# VBOX_USE_INSERT_PAGE = 1/ c\
88VBOX_USE_INSERT_PAGE = 1
89' ./src/VBox/HostDrivers/Support/linux/Makefile
90
91%build
92export PATH_KBUILD=$PWD/kBuild
93export BUILD_TYPE=release
94export BUILD_PLATFORM_CPU=i686
95export BUILD_PLATFORM_ARCH=x86
96export BUILD_PLATFORM=linux
97export BUILD_TARGET_CPU=i686
98export BUILD_TARGET_ARCH=x86
99export BUILD_TARGET=linux
100export PATH=$PATH:$PWD/kBuild/bin/linux.x86:/usr/lib/qt-4.4/bin
101export KERN_DIR=/usr/src/linux-%{_kernel}
102export QTDIR=/usr/lib/qt-4.4
103
104./configure \
105%if %{__build_vbox}
106--with-qt4-dir=/usr/lib/qt-4.4 \
107%else
108--build-headless \
109--disable-xpcom \
110%endif
111--enable-hardening \
112--with-linux=/usr/src/linux-%{_kernel}
113
114source env.sh
115
116kmk all %{_smp_mflags}
117
118mkdir -p %{_kernel}/misc
119
120for file in VBoxGuest/vboxguest.ko \
121vboxnetflt/vboxnetflt.ko \
122vboxadd/vboxadd.ko \
123vboxdrv/vboxdrv.ko \
124vboxvfs/vboxvfs.ko ; do
125
126mv ./out/linux.x86/release/obj/$file %{_kernel}/misc
127
128done
129
130#oddly enough the module built by default does have unresolved symbols repeating the process
131#manually issuing exactly same commands does work,
132#odd difference in environment ?
133
134for dir in out/linux.x86/release/bin/src/{vboxdrv,vboxnetflt} ; do
135cd $dir
136make clean
137make -C /usr/src/linux-%{_kernel}/ SUBDIRS=`pwd` SRCROOT=`pwd`
138cd $OLDPWD
139install -m 644 $dir/$(echo `basename $dir`| tr '[:upper:]' '[:lower:]').ko %{_kernel}/misc
140done
141
142#confirm working md5sums
143cat > kmod.md5sums <<"EOF"
144fc0f76a1f2ec8256c341ca2e9a114f0e %{_kernel}/misc/vboxdrv.ko
145e22daf7ec846f28e6aee7eeaba005c24 %{_kernel}/misc/vboxnetflt.ko
146#e75489c6c566928d70ada0b51a5244aa %{_kernel}/misc/vboxadd.ko
147#6d452c2a5f9de9ab906d1ad411391e08 %{_kernel}/misc/vboxguest.ko
148#dc22811d8f3788093dafe14b0a6d1dce %{_kernel}/misc/vboxvfs.ko
149EOF
150
151#md5sum -c kmod.md5sums || exit 1
152
153%install
154if [ -d "$RPM_BUILD_ROOT" ] && [ "$RPM_BUILD_ROOT" != "/" ] ; then rm -rf $RPM_BUILD_ROOT; fi
155export PATH_KBUILD=$PWD/kBuild
156export BUILD_TYPE=release
157export BUILD_PLATFORM_CPU=i686
158export BUILD_PLATFORM_ARCH=x86
159export BUILD_PLATFORM=linux
160export BUILD_TARGET_CPU=i686
161export BUILD_TARGET_ARCH=x86
162export BUILD_TARGET=linux
163export PATH=$PATH:$PWD/kBuild/bin/linux.x86
164
165INSTALLDIR="%{_prefix}/%{name}-%{version}/"
166LDCONFFILE="/etc/ld.so.conf.d/%{name}.conf"
167PROFILEDFILESH="/etc/profile.d/%{name}.sh"
168
169%if %{__build_vbox}
170
171(
172cd out/linux.x86/release
173rm -f bin/vboxdrv.ko
174rm -rf bin/src
175rm -rf bin/additions/src
176mkdir -p $RPM_BUILD_ROOT/etc/profile.d
177mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{name}-%{version}/
178mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d
179mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/run/VBoxSVC
180mv bin/* lib $RPM_BUILD_ROOT%{_prefix}/%{name}-%{version}/
181)
182
183echo "$INSTALLDIR" >> $RPM_BUILD_ROOT/$LDCONFFILE
184
185echo "pathman $INSTALLDIR" >> $RPM_BUILD_ROOT/$PROFILEDFILESH
186
187mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications
188
189cat > $RPM_BUILD_ROOT%{_datadir}/applications/virtualbox-qt4.desktop << "EOF"
190[Desktop Entry]
191Name=Virtual Box - QT4
192Comment=Tool for permitting specific users to launch specific root-only applications
193Icon=%{_prefix}/%{name}-%{version}/VBox.png
194Exec=LD_LIBRARY_PATH=%{_prefix}/%{name}-%{version} %{_prefix}/%{name}-%{version}/VirtualBox
195Type=Application
196Terminal=false
197Categories=System
198X-Desktop-File-Install-Version=0.2
199EOF
200
201find $RPM_BUILD_ROOT -type f -exec file '{}' \; |grep "ELF 32-bit LSB" | awk -F: '{print $1}' | xargs chmod 755
202
203%endif
204
205mkdir -p $RPM_BUILD_ROOT/lib/modules
206mv %{_kernel} $RPM_BUILD_ROOT/lib/modules/
207
208mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
209install -m 755 %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxdrv
210install -m 755 %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxnet
211
212cat > $RPM_BUILD_ROOT/lib/modules/%{_kernel}/misc/vbox.md5sums <<"EOF"
213e75489c6c566928d70ada0b51a5244aa /lib/modules/%{_kernel}/misc/vboxadd.ko
214fc0f76a1f2ec8256c341ca2e9a114f0e /lib/modules/%{_kernel}/misc/vboxdrv.ko
2156d452c2a5f9de9ab906d1ad411391e08 /lib/modules/%{_kernel}/misc/vboxguest.ko
216ffc9dfc30dac5f41700d4a207f8676a8 /lib/modules/%{_kernel}/misc/vboxnetflt.ko
217dc22811d8f3788093dafe14b0a6d1dce /lib/modules/%{_kernel}/misc/vboxvfs.ko
218EOF
219
220chmod 4511 $RPM_BUILD_ROOT%{_prefix}/%{name}-%{version}/{VirtualBox,VBoxSDL,VBoxNetDHCP,VBoxNetAdpCtl,VBoxHeadless}
221
222%clean
223rm -rf $RPM_BUILD_DIR/vbox
224rm -rf $RPM_BUILD_ROOT
225
226%preun
227if [ "$1" = "0" ]; then
228 /sbin/service vboxnet stop >/dev/null 2>&1
229 /sbin/chkconfig --del vboxnet
230 /sbin/service vboxdrv stop >/dev/null 2>&1
231 /sbin/chkconfig --del vboxdrv
232fi
233
234%post
235/sbin/ldconfig
236/sbin/chkconfig --add vboxdrv && /sbin/chkconfig --level 35 vboxdrv on && /sbin/service vboxdrv start 2>/dev/null ||:
237/sbin/chkconfig --add vboxnet && /sbin/chkconfig --level 35 vboxnet on && /sbin/service vboxnet start 2>/dev/null ||:
238
239%postun
240if [ "$1" -ge "1" ]; then
241 /sbin/service vboxnet condrestart
242 /sbin/service vboxdrv condrestart
243fi
244
245%if %{__build_vbox}
246
247%files
248%defattr(-,root,root)
249%attr(644,root,root) /etc/ld.so.conf.d/%{name}.conf
250%attr(755,root,root) /etc/profile.d/%{name}.sh
251
252
253%attr(755,root,root) %{_prefix}/%{name}-%{version}
254%attr(4511,root,root) %{_prefix}/%{name}-%{version}/VBoxSDL
255%attr(4511,root,root) %{_prefix}/%{name}-%{version}/VBoxNetDHCP
256%attr(4511,root,root) %{_prefix}/%{name}-%{version}/VBoxNetAdpCtl
257%attr(4511,root,root) %{_prefix}/%{name}-%{version}/VBoxHeadless
258%_localstatedir/run/VBoxSVC
259
260%exclude %{_prefix}/%{name}-%{version}/sdk
261%exclude %{_prefix}/%{name}-%{version}/VirtualBox
262%exclude %{_datadir}/applications/virtualbox-qt4.desktop
263
264%files qt4
265%defattr(-,root,root)
266%attr (4511,root,root) %{_prefix}/%{name}-%{version}/VirtualBox
267%{_datadir}/applications/virtualbox-qt4.desktop
268
269%files sdk
270%defattr(-,root,root)
271%{_prefix}/%{name}-%{version}/sdk
272/usr/VirtualBox-%{version}/sdk/bindings/xpcom
273
274%endif
275
276%files -n kernel-module-%{name}-%{_kernel}
277%defattr(-,root,root)
278%attr(755,root,root) /etc/rc.d/init.d/vboxdrv
279%attr(755,root,root) /etc/rc.d/init.d/vboxnet
280/lib/modules/%{_kernel}/misc/vbox.md5sums
281/lib/modules/%{_kernel}/misc/vboxdrv.ko
282/lib/modules/%{_kernel}/misc/vboxvfs.ko
283/lib/modules/%{_kernel}/misc/vboxnetflt.ko
284
285
286%files -n kernel-module-%{name}-guest-%{_kernel}
287%defattr(-,root,root)
288/lib/modules/%{_kernel}/misc/vboxguest.ko
289/lib/modules/%{_kernel}/misc/vboxadd.ko
290
291%post -n kernel-module-%{name}-%{_kernel}
292depmod -a %{_kernel} >/dev/null 2>&1 || :
293
294[ -z "`grep ^vboxdrv /etc/modules-%{_kernel} 2>/dev/null`" ] && echo vboxdrv >> /etc/modules-%{_kernel}
295
296if test "`uname -r`" = "%{_kernel}" && test -n "`lsmod |grep vboxdrv 2>/dev/null`" ; then
297 rmmod vboxdrv >/dev/null 2>&1 ||:
298 modprobe vboxdrv >/dev/null 2>&1 ||:
299fi
300
301%preun -n kernel-module-%{name}-%{_kernel}
302if test "`uname -r`" = "%{_kernel}" ; then
303 rmmod vboxdrv >/dev/null 2>&1 ||:
304fi
305
306if [ "$1" = "0" ] ; then
307 sed -i -e '/^vboxdrv/d' /etc/modules-%{_kernel}
308fi
309
310%postun -n kernel-module-%{name}-%{_kernel}
311[ -d "/lib/modules/%{_kernel}" ] && depmod -a %{_kernel} >/dev/null 2>&1
312
313%pre -n kernel-module-%{name}-%{_kernel}
314/usr/sbin/groupadd -g 39 vboxusers >/dev/null 2>&1 ||:

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy