#!/bin/bash # # virtualbox-host.SlackBuild is free software; you can redistribute it and/or modify it under the # terms of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or any later version. # # virtualbox-host.SlackBuild is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along with # this program; if not, write to the Free Software Foundation, Inc., 59 Temple # Place - Suite 330, Boston, MA 02111-1307, USA # # Copyright 2008-2010 Heinz Wiesinger, Amsterdam, The Netherlands # Copyright 2008 Mauro Giachero # Copyright 2012 Michiel Broek, The Netherlands # default settings PACKAGE="virtualbox" PACKAGE_EXT="bz2" VERSION=${VERSION:=5.0.40} BUILD=${BUILD:=1} if [ -f ~/.slackbuildrc ]; then . ~/.slackbuildrc elif [ -f ../../runtime/slackbuildrc ]; then . ../../runtime/slackbuildrc fi if [[ "$ARCH" = "i486" || "$ARCH" = "i686" ]]; then BUILDDIR="x86" elif [ "$ARCH" = "x86_64" ]; then BUILDDIR="amd64" fi # kmk doesn't support MAKEFLAGS, so we use JOBS here JOBS=${JOBS:-3} check_required SRC="VirtualBox-${VERSION}.tar.$PACKAGE_EXT" URL="http://download.virtualbox.org/virtualbox/${VERSION}/$SRC" # hack to make kmk work (uses hardcoded paths) mkdir -p /usr/lib/jvm/java-6-sun/ cd /usr/lib/jvm/java-6-sun/ rm -f bin ln -s $LIBDIR/java/bin # Download the source if needed. get_source $SRC $URL unpack_source $SRC VirtualBox-${VERSION} # Group vboxusers will be created by the virtualbox-host package GROUP="215" MODE="750" # We don't want an init-script building kernel modules. # Use virtualbox-kernel.SlackBuild for this. patch -d src/VBox/Installer/linux -i $CWD/vboxdrv.sh-setup.diff # Do not require makeself. We don't plan on building an automatic installer # Patch taken from gentoo patch -p1 -i $CWD/virtualbox-4-makeself-check.patch # Support for the qt4-frontend mkdir -p $PKG/usr/share/applications guiapp="VirtualBox VBoxSDL" CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \ --disable-kmods \ --disable-pulse \ --enable-vde \ --enable-vnc \ --enable-hardening \ --disable-docs . ./env.sh cp $CWD/LocalConfig.kmk . sed -i "s|LIBDIR|lib$LIBDIRSUFFIX|" ./LocalConfig.kmk kmk -j ${JOBS} LOCALCFG=./LocalConfig.kmk # build VBoxFUSE cd src/VBox/ImageMounter/VBoxFUSE kmk -j ${JOBS} cd - mkdir -p $PKG/usr/{lib$LIBDIRSUFFIX,share,include}/virtualbox \ $PKG/usr/{bin,src} \ $PKG/usr/share/{applications,pixmaps,mime/packages} \ $PKG/etc/{default,rc.d,vbox} cp $CWD/autorun.cfg $PKG/etc/vbox/autorun.cfg.new cp $CWD/vbox.cfg $PKG/etc/vbox/vbox.cfg.new sed -i "s|LIBDIR|lib$LIBDIRSUFFIX|" $PKG/etc/vbox/vbox.cfg.new cp $CWD/virtualbox.default $PKG/etc/default/virtualbox.new cp $CWD/virtualbox.init $PKG/etc/rc.d/rc.virtualbox.new cd out/linux.$BUILDDIR/release/bin/ rm -f vboxdrv.ko mv src $PKG/usr/src/virtualbox-kernel-$VERSION mv virtualbox.desktop $PKG/usr/share/applications/ sed -i "s|/opt/VirtualBox|/usr/share/virtualbox|" $PKG/usr/share/applications/virtualbox.desktop mv nls* *.tar.bz2 $PKG/usr/share/virtualbox/ mv VBox.png $PKG/usr/share/pixmaps/ cd icons for i in *; do install -d $PKG/usr/share/icons/hicolor/$i/mimetypes mv $i/* $PKG/usr/share/icons/hicolor/$i/mimetypes done cd - rm -rf icons mv virtualbox.xml $PKG/usr/share/mime/packages export VBOX_INSTALL_PATH=/usr/lib$LIBDIRSUFFIX/virtualbox cd sdk/installer python ./vboxapisetup.py install --prefix "/usr" --root $PKG cd - rm -rf sdk/installer mv sdk $PKG/usr/share/virtualbox/ install -m $MODE -g $GROUP VBoxSysInfo.sh $PKG/usr/share/virtualbox/ install -m $MODE -g $GROUP VBoxCreateUSBNode.sh $PKG/usr/share/virtualbox/ install -m $MODE -g $GROUP VBoxTunctl $PKG/usr/bin/ install -m $MODE -g $GROUP VBoxFUSE $PKG/usr/bin/ rm -f VBoxSysInfo.sh VBoxCreateUSBNode.sh VBoxTunctl mv * $PKG/usr/lib$LIBDIRSUFFIX/virtualbox/ chown -R root:$GROUP $PKG/usr/lib$LIBDIRSUFFIX/virtualbox/ chmod -R $MODE $PKG/usr/lib$LIBDIRSUFFIX/virtualbox/ mv $PKG/usr/lib$LIBDIRSUFFIX/virtualbox/VBox.sh $PKG/usr/lib$LIBDIRSUFFIX/virtualbox/VBox cd $TMP/VirtualBox-${VERSION} # Catch kernel source and remove it from this package. cd $PKG/usr/src tar cvfz $CWD/virtualbox-kernel-${VERSION}.tar.gz virtualbox-kernel-${VERSION} rm -rf virtualbox-kernel-${VERSION} cd - for i in VBoxManage vboxmanage VBoxHeadless \ vboxheadless VBoxVRDP VBoxBalloonCtrl vboxballoonctrl \ VBoxAutostart vboxautostart virtualbox vboxsdl vboxbfe $guiapp; do ln -s /usr/lib$LIBDIRSUFFIX/virtualbox/VBox $PKG/usr/bin/$i ; done for i in VBoxHeadless $guiapp VBoxNetDHCP VBoxNetAdpCtl; do chmod -f 4711 $PKG/usr/lib$LIBDIRSUFFIX/virtualbox/$i done # install headers. Needed by some third party tools cp -rf include/* $PKG/usr/include/virtualbox/ rm -f $PKG/usr/include/virtualbox/Makefile.kmk # install profile.d scripts for 3rd party apps mkdir -p $PKG/etc/profile.d/ cat << EOF > $PKG/etc/profile.d/vbox.csh #!/bin/csh setenv VBOX_PROGRAM_PATH /usr/lib${LIBDIRSUFFIX}/virtualbox/ setenv VBOX_SDK_PATH /usr/share/virtualbox/sdk/ EOF cat << EOF > $PKG/etc/profile.d/vbox.sh #!/bin/sh export VBOX_PROGRAM_PATH=/usr/lib${LIBDIRSUFFIX}/virtualbox/ export VBOX_SDK_PATH=/usr/share/virtualbox/sdk/ EOF chmod 0755 $PKG/etc/profile.d/* # setup udev rules for vboxdrv and USB device support mkdir -p $PKG/lib/udev/rules.d install -m 644 $CWD/10-virtualbox.rules $PKG/lib/udev/rules.d/ # Install documentation where virtualbox can find it. if [ ! -f $CWD/UserManual-${VERSION}.pdf ]; then ( cd $CWD $RTOOL http://download.virtualbox.org/virtualbox/${VERSION}/UserManual.pdf mv UserManual.pdf UserManual-${VERSION}.pdf ) fi if [ ! -f $CWD/SDKRef-${VERSION}.pdf ]; then ( cd $CWD $RTOOL http://download.virtualbox.org/virtualbox/${VERSION}/SDKRef.pdf mv SDKRef.pdf SDKRef-${VERSION}.pdf ) fi cp -f $CWD/UserManual-${VERSION}.pdf $PKG/usr/share/virtualbox/UserManual.pdf cp -f $CWD/SDKRef-${VERSION}.pdf $PKG/usr/share/virtualbox/SDKRef.pdf mkdir -p $DOCS cp -f COPYING COPYING.CDDL $CWD/README.Slackware $DOCS # remove java hack rm -rf /usr/lib/jvm fixup_package $PKG # Clean up the extra stuff: set +u if [ "$1" = "--cleanup" ]; then rm -rf $TMP/$PACKAGE-$VERSION rm -rf $PKG fi