| 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 |
|
|---|
| 7 | Summary: virtualizer for x86 hardware (like vmware)
|
|---|
| 8 | Name: VirtualBox
|
|---|
| 9 | Version: 2.2.0
|
|---|
| 10 | Release: 8._yoper_alpha_
|
|---|
| 11 | Copyright: GPL
|
|---|
| 12 | Group: System/Emulators
|
|---|
| 13 | URL: http://www.virtualbox.org/
|
|---|
| 14 | Distribution: Yoper
|
|---|
| 15 | BuildRoot: %{_tmppath}/%{name}-buildroot
|
|---|
| 16 | Packager: vacant
|
|---|
| 17 |
|
|---|
| 18 | Source0: http://download.virtualbox.org/virtualbox/%{version}/VirtualBox-%{version}-OSE.tar.bz2
|
|---|
| 19 | Source1: vboxdrv-init
|
|---|
| 20 | Source2: vboxnet-init
|
|---|
| 21 |
|
|---|
| 22 | Patch0: VirtualBox-2.1.4-3-OSE-swab-del.diff
|
|---|
| 23 |
|
|---|
| 24 | BuildRequires: gcc g++ glibc-devel linux-libc-headers xalan-c-devel python-devel
|
|---|
| 25 | BuildRequires: kernel-headers-%{_kernel}
|
|---|
| 26 | BuildRequires: libcap-devel dbus-devel wine-devel
|
|---|
| 27 | BuildRequires: mkisofs libxslt-devel libIDL-devel qt4-devel
|
|---|
| 28 | BuildRequires: libXcursor-devel iasl dev86 xerces-c-devel compat-libstdc.so.5
|
|---|
| 29 | BuildRequires: which e2fsprogs-devel SDL-devel zlib alsa-lib-devel glib2-devel
|
|---|
| 30 | BuildRequires: pulseaudio-devel libpng-devel oss-gpl-devel Mesa-devel
|
|---|
| 31 |
|
|---|
| 32 | Requires: kernel-module-%{name}-%{_kernel} yopermaintain xorg-x11-base xdg-utils
|
|---|
| 33 | Requires: bridge-utils uml_utilities
|
|---|
| 34 |
|
|---|
| 35 | Requires(pre): kernel-module-%{name}-%{_kernel}
|
|---|
| 36 | Requires(post): chkconfig netinitscripts
|
|---|
| 37 | Requires(preun): chkconfig netinitscripts
|
|---|
| 38 |
|
|---|
| 39 | %description
|
|---|
| 40 | InnoTek 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
|
|---|
| 43 | Summary: Sdk files of %{name}
|
|---|
| 44 | Group: System/Development
|
|---|
| 45 | Requires: %{name} = %{version}
|
|---|
| 46 |
|
|---|
| 47 | %description sdk
|
|---|
| 48 | These are sdk files of %{name}
|
|---|
| 49 |
|
|---|
| 50 | %package qt4
|
|---|
| 51 | Summary: QT4 UI for %{name}
|
|---|
| 52 | Group: System/Development
|
|---|
| 53 | Requires: %{name} = %{version}
|
|---|
| 54 |
|
|---|
| 55 | %description qt4
|
|---|
| 56 | QT4 UI for %{name}
|
|---|
| 57 |
|
|---|
| 58 | %package -n kernel-module-%{name}-%{_kernel}
|
|---|
| 59 | Summary: %{name} kernel module
|
|---|
| 60 | Group: System/Kernel
|
|---|
| 61 | Requires: /boot/vmlinuz-%{_kernel}
|
|---|
| 62 | Requires(pre): /boot/vmlinuz-%{_kernel}
|
|---|
| 63 | Requires: module-init-tools
|
|---|
| 64 | Provides: kernel-module-%{name}-%{_kernel}
|
|---|
| 65 |
|
|---|
| 66 | %description -n kernel-module-%{name}-%{_kernel}
|
|---|
| 67 | Kernel module for %{name}.
|
|---|
| 68 |
|
|---|
| 69 | %package -n kernel-module-%{name}-guest-%{_kernel}
|
|---|
| 70 | Summary: %{name} kernel module
|
|---|
| 71 | Group: System/Kernel
|
|---|
| 72 | Requires: /boot/vmlinuz-%{_kernel}
|
|---|
| 73 | Requires(pre): /boot/vmlinuz-%{_kernel}
|
|---|
| 74 | Requires: module-init-tools
|
|---|
| 75 | Provides: kernel-module-%{name}-guest-%{_kernel}
|
|---|
| 76 |
|
|---|
| 77 | %description -n kernel-module-%{name}-guest-%{_kernel}
|
|---|
| 78 | Kernel 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 |
|
|---|
| 86 | sed -i -e '
|
|---|
| 87 | /^# VBOX_USE_INSERT_PAGE = 1/ c\
|
|---|
| 88 | VBOX_USE_INSERT_PAGE = 1
|
|---|
| 89 | ' ./src/VBox/HostDrivers/Support/linux/Makefile
|
|---|
| 90 |
|
|---|
| 91 | %build
|
|---|
| 92 | export PATH_KBUILD=$PWD/kBuild
|
|---|
| 93 | export BUILD_TYPE=release
|
|---|
| 94 | export BUILD_PLATFORM_CPU=i686
|
|---|
| 95 | export BUILD_PLATFORM_ARCH=x86
|
|---|
| 96 | export BUILD_PLATFORM=linux
|
|---|
| 97 | export BUILD_TARGET_CPU=i686
|
|---|
| 98 | export BUILD_TARGET_ARCH=x86
|
|---|
| 99 | export BUILD_TARGET=linux
|
|---|
| 100 | export PATH=$PATH:$PWD/kBuild/bin/linux.x86:/usr/lib/qt-4.4/bin
|
|---|
| 101 | export KERN_DIR=/usr/src/linux-%{_kernel}
|
|---|
| 102 | export 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 |
|
|---|
| 114 | source env.sh
|
|---|
| 115 |
|
|---|
| 116 | kmk all %{_smp_mflags}
|
|---|
| 117 |
|
|---|
| 118 | mkdir -p %{_kernel}/misc
|
|---|
| 119 |
|
|---|
| 120 | for file in VBoxGuest/vboxguest.ko \
|
|---|
| 121 | vboxnetflt/vboxnetflt.ko \
|
|---|
| 122 | vboxadd/vboxadd.ko \
|
|---|
| 123 | vboxdrv/vboxdrv.ko \
|
|---|
| 124 | vboxvfs/vboxvfs.ko ; do
|
|---|
| 125 |
|
|---|
| 126 | mv ./out/linux.x86/release/obj/$file %{_kernel}/misc
|
|---|
| 127 |
|
|---|
| 128 | done
|
|---|
| 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 |
|
|---|
| 134 | for dir in out/linux.x86/release/bin/src/{vboxdrv,vboxnetflt} ; do
|
|---|
| 135 | cd $dir
|
|---|
| 136 | make clean
|
|---|
| 137 | make -C /usr/src/linux-%{_kernel}/ SUBDIRS=`pwd` SRCROOT=`pwd`
|
|---|
| 138 | cd $OLDPWD
|
|---|
| 139 | install -m 644 $dir/$(echo `basename $dir`| tr '[:upper:]' '[:lower:]').ko %{_kernel}/misc
|
|---|
| 140 | done
|
|---|
| 141 |
|
|---|
| 142 | #confirm working md5sums
|
|---|
| 143 | cat > kmod.md5sums <<"EOF"
|
|---|
| 144 | fc0f76a1f2ec8256c341ca2e9a114f0e %{_kernel}/misc/vboxdrv.ko
|
|---|
| 145 | e22daf7ec846f28e6aee7eeaba005c24 %{_kernel}/misc/vboxnetflt.ko
|
|---|
| 146 | #e75489c6c566928d70ada0b51a5244aa %{_kernel}/misc/vboxadd.ko
|
|---|
| 147 | #6d452c2a5f9de9ab906d1ad411391e08 %{_kernel}/misc/vboxguest.ko
|
|---|
| 148 | #dc22811d8f3788093dafe14b0a6d1dce %{_kernel}/misc/vboxvfs.ko
|
|---|
| 149 | EOF
|
|---|
| 150 |
|
|---|
| 151 | #md5sum -c kmod.md5sums || exit 1
|
|---|
| 152 |
|
|---|
| 153 | %install
|
|---|
| 154 | if [ -d "$RPM_BUILD_ROOT" ] && [ "$RPM_BUILD_ROOT" != "/" ] ; then rm -rf $RPM_BUILD_ROOT; fi
|
|---|
| 155 | export PATH_KBUILD=$PWD/kBuild
|
|---|
| 156 | export BUILD_TYPE=release
|
|---|
| 157 | export BUILD_PLATFORM_CPU=i686
|
|---|
| 158 | export BUILD_PLATFORM_ARCH=x86
|
|---|
| 159 | export BUILD_PLATFORM=linux
|
|---|
| 160 | export BUILD_TARGET_CPU=i686
|
|---|
| 161 | export BUILD_TARGET_ARCH=x86
|
|---|
| 162 | export BUILD_TARGET=linux
|
|---|
| 163 | export PATH=$PATH:$PWD/kBuild/bin/linux.x86
|
|---|
| 164 |
|
|---|
| 165 | INSTALLDIR="%{_prefix}/%{name}-%{version}/"
|
|---|
| 166 | LDCONFFILE="/etc/ld.so.conf.d/%{name}.conf"
|
|---|
| 167 | PROFILEDFILESH="/etc/profile.d/%{name}.sh"
|
|---|
| 168 |
|
|---|
| 169 | %if %{__build_vbox}
|
|---|
| 170 |
|
|---|
| 171 | (
|
|---|
| 172 | cd out/linux.x86/release
|
|---|
| 173 | rm -f bin/vboxdrv.ko
|
|---|
| 174 | rm -rf bin/src
|
|---|
| 175 | rm -rf bin/additions/src
|
|---|
| 176 | mkdir -p $RPM_BUILD_ROOT/etc/profile.d
|
|---|
| 177 | mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{name}-%{version}/
|
|---|
| 178 | mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d
|
|---|
| 179 | mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/run/VBoxSVC
|
|---|
| 180 | mv bin/* lib $RPM_BUILD_ROOT%{_prefix}/%{name}-%{version}/
|
|---|
| 181 | )
|
|---|
| 182 |
|
|---|
| 183 | echo "$INSTALLDIR" >> $RPM_BUILD_ROOT/$LDCONFFILE
|
|---|
| 184 |
|
|---|
| 185 | echo "pathman $INSTALLDIR" >> $RPM_BUILD_ROOT/$PROFILEDFILESH
|
|---|
| 186 |
|
|---|
| 187 | mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications
|
|---|
| 188 |
|
|---|
| 189 | cat > $RPM_BUILD_ROOT%{_datadir}/applications/virtualbox-qt4.desktop << "EOF"
|
|---|
| 190 | [Desktop Entry]
|
|---|
| 191 | Name=Virtual Box - QT4
|
|---|
| 192 | Comment=Tool for permitting specific users to launch specific root-only applications
|
|---|
| 193 | Icon=%{_prefix}/%{name}-%{version}/VBox.png
|
|---|
| 194 | Exec=LD_LIBRARY_PATH=%{_prefix}/%{name}-%{version} %{_prefix}/%{name}-%{version}/VirtualBox
|
|---|
| 195 | Type=Application
|
|---|
| 196 | Terminal=false
|
|---|
| 197 | Categories=System
|
|---|
| 198 | X-Desktop-File-Install-Version=0.2
|
|---|
| 199 | EOF
|
|---|
| 200 |
|
|---|
| 201 | find $RPM_BUILD_ROOT -type f -exec file '{}' \; |grep "ELF 32-bit LSB" | awk -F: '{print $1}' | xargs chmod 755
|
|---|
| 202 |
|
|---|
| 203 | %endif
|
|---|
| 204 |
|
|---|
| 205 | mkdir -p $RPM_BUILD_ROOT/lib/modules
|
|---|
| 206 | mv %{_kernel} $RPM_BUILD_ROOT/lib/modules/
|
|---|
| 207 |
|
|---|
| 208 | mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
|
|---|
| 209 | install -m 755 %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxdrv
|
|---|
| 210 | install -m 755 %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxnet
|
|---|
| 211 |
|
|---|
| 212 | cat > $RPM_BUILD_ROOT/lib/modules/%{_kernel}/misc/vbox.md5sums <<"EOF"
|
|---|
| 213 | e75489c6c566928d70ada0b51a5244aa /lib/modules/%{_kernel}/misc/vboxadd.ko
|
|---|
| 214 | fc0f76a1f2ec8256c341ca2e9a114f0e /lib/modules/%{_kernel}/misc/vboxdrv.ko
|
|---|
| 215 | 6d452c2a5f9de9ab906d1ad411391e08 /lib/modules/%{_kernel}/misc/vboxguest.ko
|
|---|
| 216 | ffc9dfc30dac5f41700d4a207f8676a8 /lib/modules/%{_kernel}/misc/vboxnetflt.ko
|
|---|
| 217 | dc22811d8f3788093dafe14b0a6d1dce /lib/modules/%{_kernel}/misc/vboxvfs.ko
|
|---|
| 218 | EOF
|
|---|
| 219 |
|
|---|
| 220 | chmod 4511 $RPM_BUILD_ROOT%{_prefix}/%{name}-%{version}/{VirtualBox,VBoxSDL,VBoxNetDHCP,VBoxNetAdpCtl,VBoxHeadless}
|
|---|
| 221 |
|
|---|
| 222 | %clean
|
|---|
| 223 | rm -rf $RPM_BUILD_DIR/vbox
|
|---|
| 224 | rm -rf $RPM_BUILD_ROOT
|
|---|
| 225 |
|
|---|
| 226 | %preun
|
|---|
| 227 | if [ "$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
|
|---|
| 232 | fi
|
|---|
| 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
|
|---|
| 240 | if [ "$1" -ge "1" ]; then
|
|---|
| 241 | /sbin/service vboxnet condrestart
|
|---|
| 242 | /sbin/service vboxdrv condrestart
|
|---|
| 243 | fi
|
|---|
| 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}
|
|---|
| 292 | depmod -a %{_kernel} >/dev/null 2>&1 || :
|
|---|
| 293 |
|
|---|
| 294 | [ -z "`grep ^vboxdrv /etc/modules-%{_kernel} 2>/dev/null`" ] && echo vboxdrv >> /etc/modules-%{_kernel}
|
|---|
| 295 |
|
|---|
| 296 | if 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 ||:
|
|---|
| 299 | fi
|
|---|
| 300 |
|
|---|
| 301 | %preun -n kernel-module-%{name}-%{_kernel}
|
|---|
| 302 | if test "`uname -r`" = "%{_kernel}" ; then
|
|---|
| 303 | rmmod vboxdrv >/dev/null 2>&1 ||:
|
|---|
| 304 | fi
|
|---|
| 305 |
|
|---|
| 306 | if [ "$1" = "0" ] ; then
|
|---|
| 307 | sed -i -e '/^vboxdrv/d' /etc/modules-%{_kernel}
|
|---|
| 308 | fi
|
|---|
| 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 ||:
|
|---|