#!/bin/sh # Heavily based on the Slackware 13.0 SlackBuild # http://www.virtualbox.org/ # Packager Davide Locatelli (l.davide_AT_tiscali.it) CWD=`pwd` TMP=/tmp/txz NAME=virtualbox-ose PKG=$TMP/package-$NAME VERSION=3.1.8 SVERSION=3.1.8-OSE ARCH=${ARCH:-i686} TARGET=i486 BUILD=2dav if [ ! -f VirtualBox-3.1.8-OSE.tar.bz2 ]; then wget -c http://download.virtualbox.org/virtualbox/3.1.8/VirtualBox-3.1.8-OSE.tar.bz2 -O VirtualBox-3.1.8-OSE.tar.bz2 fi # In case someone wants the PUEL guest additions recompiling... #if [ ! -f VBoxGuestAdditions_3.1.8.iso ]; #then # wget -c http://download.virtualbox.org/virtualbox/3.1.8/VBoxGuestAdditions_3.1.8.iso -O VBoxGuestAdditions_3.1.8.iso #fi if [ ! -f VirtualBox_OSE_GuestAdditions-3.1.8-0.exe ]; then wget -c http://virtual-box-windows-guest-additions-installer.googlecode.com/files/VirtualBox_OSE_GuestAdditions-3.1.8-0.exe fi if [ ! -f UserManual.pdf ]; then wget -c http://download.virtualbox.org/virtualbox/3.1.8/UserManual.pdf -O UserManual.pdf fi if [ ! -d $TMP ]; then mkdir -p $TMP # location to build the source fi rm -rf $PKG mkdir -p $PKG if [ "$ARCH" = "i386" ]; then SLKCFLAGS="-O2 -march=i386 -mtune=i686" ARCH_CONFIGURE="" elif [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" ARCH_CONFIGURE="" elif [ "$ARCH" = "powerpc" ]; then SLKCFLAGS="-O2" ARCH_CONFIGURE="" elif [ "$ARCH" = "s390" ]; then SLKCFLAGS="-O2" ARCH_CONFIGURE="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" ARCH_CONFIGURE="--libdir=/usr/lib64" elif [ "$ARCH" = "k8" ]; then SLKCFLAGS="-O3 -march=k8 -mtune=k8 -pipe -ffast-math -fomit-frame-pointer" ARCH_CONFIGURE="" elif [ "$ARCH" = "custom" ]; then SLKCFLAGS="" ARCH_CONFIGURE="" fi cd $TMP # bcc ( tar xzvf $CWD/Dev86src-0.16.17.tar.gz cd dev86-0.16.17 make ) # iasl ( tar xzvf $CWD/acpica-unix-20090903.tar.gz cd acpica-unix-20090903/compiler make ) tar xjvf $CWD/VirtualBox-${SVERSION}.tar.bz2 cd VirtualBox-3.1.8_OSE # Apply $ARCH specific patches if [ "$ARCH" = "i386" ]; then echo "Applying patches for $ARCH" #cat $CWD/foo.patch | patch -p0 --verbose elif [ "$ARCH" = "i486" ]; then echo "Applying patches for $ARCH" #cat $CWD/foo.patch | patch -p0 --verbose elif [ "$ARCH" = "s390" ]; then echo "Applying patches for $ARCH" #cat $CWD/foo.patch | patch -p0 --verbose elif [ "$ARCH" = "powerpc" ]; then echo "Applying patches for $ARCH" #cat $CWD/foo.patch | patch -p0 --verbose elif [ "$ARCH" = "x86_64" ]; then echo "Applying patches for $ARCH" #cat $CWD/foo.patch | patch -p0 --verbose fi PATH=$PATH:$TMP/dev86-0.16.17/bcc \ ./configure --with-iasl=$TMP/acpica-unix-20090903/compiler/iasl \ --with-qt-dir=/usr/lib/qt \ --with-qt4-dir=/usr/lib/qt \ --disable-pulse \ --disable-hardening source env.sh kmk || exit 1 mkdir -m 755 -p $PKG/usr/bin mkdir -m 755 -p $PKG/etc/rc.d mkdir -m 755 -p $PKG/etc/vbox mkdir -m 755 -p $PKG/usr/lib/virtualbox cp -R out/linux.*/release/bin/* $PKG/usr/lib/virtualbox rm -rf $PKG/usr/lib/virtualbox/additions install -D -m 755 $CWD/VBox.sh $PKG/usr/lib/virtualbox ln -s ../lib/virtualbox/VBox.sh $PKG/usr/bin/vboxmanage ln -s ../lib/virtualbox/VBox.sh $PKG/usr/bin/vboxsdl ln -s ../lib/virtualbox/VBox.sh $PKG/usr/bin/virtualbox ln -s ../lib/virtualbox/VBox.sh $PKG/usr/bin/vboxheadless install -D -m 0644 $CWD/virtualbox.png $PKG/usr/share/icons/hicolor/32x32/apps/virtualbox.png install -D -m 0644 $CWD/virtualbox.xpm $PKG/usr/share/pixmaps/virtualbox.xpm install -D -m 0644 $CWD/virtualbox.desktop $PKG/usr/share/applications/virtualbox.desktop echo "# VirtualBox installation directory" > $PKG/etc/vbox/vbox.cfg echo "INSTALL_DIR=\"/usr/lib/virtualbox\"" >> $PKG/etc/vbox/vbox.cfg install -D -m 755 $CWD/rc.vboxdrv $PKG/etc/rc.d/rc.vboxdrv install -D -m 755 $CWD/rc.vboxnet $PKG/etc/rc.d/rc.vboxnet install -D -m 644 $CWD/rc.vboxbridge $PKG/etc/rc.d/rc.vboxbridge install -D -m 755 $CWD/60-vboxdrv.rules $PKG/etc/udev/rules.d/60-vboxdrv.rules (cd $CWD && mkisofs -J -V "VBox-OSE-GA_Windows" -o $PKG/usr/lib/virtualbox/VBoxGuestAdditions.iso VirtualBox_OSE_GuestAdditions-3.1.8-0.exe) mkdir -p $PKG/usr/doc/$NAME-$VERSION cp -a $CWD/UserManual.pdf $CWD/Howto_build.txt $CWD/Virtualbox_mini-howto.lyx \ $CWD/Virtualbox_mini-howto.txt $CWD/README.windows-additions \ $PKG/usr/doc/$NAME-$VERSION chmod 644 $PKG/usr/doc/$NAME-$VERSION/* chown root:root $PKG/usr/doc/$NAME-$VERSION/* find $PKG -type f | xargs file | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG requiredbuilder -v -y -s $CWD $PKG makepkg -l y -c n $CWD/$NAME-$VERSION-$ARCH-$BUILD.txz mv $CWD/slack-required $CWD/slack-required-virtualbox-ose # Now build the guest additions package # This package will be built together the virtualbox package and is needed only # in a guest Slackware PKG=$TMP/package-vbox-guest-addons cd $TMP/VirtualBox-3.1.8_OSE mkdir -p $PKG/etc/rc.d mkdir -p $PKG/etc/X11 mkdir -p $PKG/etc/xdg/autostart mkdir -p $PKG/etc/hal/fdi/policy mkdir -p $PKG/lib/udev/rules.d mkdir -p $PKG/sbin mkdir -p $PKG/usr/bin mkdir -p $PKG/usr/sbin mkdir -p $PKG/usr/lib/virtualbox mkdir -p $PKG/usr/lib/xorg/modules/{drivers,input} mkdir -p $PKG/usr/share/autostart mkdir -p $PKG/usr/src install -m755 $CWD/rc.vboxadd $PKG/etc/rc.d/rc.vboxadd install -m755 src/VBox/Additions/linux/installer/vboxadd-service.sh $PKG/etc/rc.d/rc.vboxadd-service sed -i 's#binary=/usr/sbin/vboxadd-service#binary=/usr/sbin/VBoxService#' $PKG/etc/rc.d/rc.vboxadd-service cp -f src/VBox/Additions/x11/Installer/98vboxadd-xclient $PKG/usr/bin/VBoxClient-all install -m 644 src/VBox/Additions/linux/installer/90-vboxguest.fdi $PKG/etc/hal/fdi/policy/ cp -f $CWD/xorg.conf-vbox $PKG/etc/X11/ cp -f src/VBox/Additions/x11/Installer/vboxclient.desktop $PKG/etc/xdg/autostart/ cp -f src/VBox/Additions/x11/Installer/vboxclient.desktop $PKG/usr/share/autostart/ install -m 755 src/VBox/Additions/x11/Installer/VBoxRandR.sh $PKG/usr/bin/VBoxRandR echo "KERNEL==\"vboxadd\", NAME=\"vboxadd\", OWNER=\"vboxadd\", MODE=\"0660\"" > $PKG/lib/udev/rules.d/60-vboxadd.rules echo "KERNEL==\"vboxuser\", NAME=\"vboxuser\", OWNER=\"vboxadd\", MODE=\"0666\"" >> $PKG/lib/udev/rules.d/60-vboxadd.rules cd out/linux.x86/release/bin/additions mkdir -p $PKG/usr/src/vboxguest-$VERSION mkdir -p $PKG/usr/src/vboxvfs-$VERSION mkdir -p $PKG/usr/src/vboxvideo-$VERSION cp -rf src/vboxguest/* $PKG/usr/src/vboxguest-$VERSION cp -rf src/vboxvfs/* $PKG/usr/src/vboxvfs-$VERSION cp -rf src/vboxvideo_drm/* $PKG/usr/src/vboxvideo-$VERSION install -m 755 VBoxControl $PKG/usr/bin/ install -m 755 VBoxClient $PKG/usr/bin/ install -m 755 VBoxService $PKG/usr/sbin/ install -m 4755 mountvboxsf $PKG/sbin/mount.vboxsf install -m 644 vboxvideo_drv_16.so $PKG/usr/lib/xorg/modules/drivers/vboxvideo_drv.so install -m 644 vboxmouse_drv_16.so $PKG/usr/lib/xorg/modules/input/vboxmouse_drv.so install -m 644 VBoxOGLcrutil.so $PKG/usr/lib install -m 644 VBoxOGLerrorspu.so $PKG/usr/lib install -m 644 VBoxOGLarrayspu.so $PKG/usr/lib install -m 644 VBoxOGLfeedbackspu.so $PKG/usr/lib install -m 644 VBoxOGLpackspu.so $PKG/usr/lib install -m 644 VBoxOGLpassthroughspu.so $PKG/usr/lib install -m 644 VBoxOGL.so $PKG/usr/lib mkdir -p $PKG/usr/lib/dri ln -s /usr/lib/VBoxOGL.so $PKG/usr/lib/dri/vboxvideo_dri.so cd $TMP/VirtualBox-3.1.8_OSE mkdir -p $PKG/usr/doc/vbox-guest-addons-$VERSION cp -f COPYING COPYING.CDDL $PKG/usr/doc/vbox-guest-addons-$VERSION cat $CWD/virtualbox-ose.SlackBuild > $PKG/usr/doc/vbox-guest-addons-$VERSION/virtualbox-ose.SlackBuild mkdir -p $PKG/install cat $CWD/slack-desc-addons > $PKG/install/slack-desc cat $CWD/doinst-addons.sh > $PKG/install/doinst.sh cd $PKG requiredbuilder -v -y -s $CWD $PKG makepkg -l y -c n $CWD/vbox-guest-addons-$VERSION-$ARCH-$BUILD.txz mv $CWD/slack-required $CWD/slack-required-vbox-guest-addons # Clean up the extra stuff: if [ "$1" = "--cleanup" ]; then if [ "$TMP" != "/" ]; then rm -rf $TMP fi fi