diff options
Diffstat (limited to 'system/virtualbox/virtualbox.SlackBuild')
-rw-r--r-- | system/virtualbox/virtualbox.SlackBuild | 266 |
1 files changed, 266 insertions, 0 deletions
diff --git a/system/virtualbox/virtualbox.SlackBuild b/system/virtualbox/virtualbox.SlackBuild new file mode 100644 index 0000000000000..1d09bbdcc8e5d --- /dev/null +++ b/system/virtualbox/virtualbox.SlackBuild @@ -0,0 +1,266 @@ +#!/bin/sh + +# Slackware build script for virtualbox-ose + +# Copyright 2008-2011 Heinz Wiesinger, Amsterdam, The Netherlands +# Copyright 2008 Mauro Giachero <mauro.giachero@gmail.com> +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PRGNAM=virtualbox +SRCNAM=VirtualBox +VERSION=4.0.4 +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i486 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +# kmk doesn't support MAKEFLAGS, so we use JOBS here +JOBS=${JOBS:-3} + +# Define Variable Names +qtgui="" + +# Check for vboxusers group here +if ! grep ^vboxusers: /etc/group 2>&1 > /dev/null; then + echo " You must have a vboxusers group to run this script." + echo " # groupadd -g 215 vboxusers" + exit 1 +fi + +# Enable Hardening - Defaulting to yes as requested by upstream +if [ "${HARDENING:-yes}" = "yes" ]; then + harden="--enable-hardening" +else + harden="--disable-hardening" +fi + +if [ "${WEBSERVICE:-no}" = "no" ]; then + web_service="" + vboxwebsrv="" +else + web_service="--enable-webservice" + vboxwebsrv="vboxwebsrv" + if ! grep ^vboxweb: /etc/passwd 2>&1 > /dev/null; then + echo " You must have a vboxweb user to run this script." + echo " # useradd -u 240 -g 215 -d /var/lib/vboxweb vboxweb" + exit 1 + fi +fi + +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" + BUILDDIR="x86" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" + BUILDDIR="x86" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" + BUILDDIR="amd64" +fi + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $SRCNAM-${VERSION}_OSE +tar xvf $CWD/$SRCNAM-${VERSION}.tar.bz2 +cd $SRCNAM-${VERSION}_OSE +chown -R root:root . +chmod -R u+w,go+r-w,a-s . + +GROUP="vboxusers" +MODE="755" +mkdir -p $PKG/lib/udev/rules.d +echo 'KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660"' \ + > $PKG/lib/udev/rules.d/60-vboxdrv.rules + +# We don't want a init-script building kernel modules. +# Use virtualbox-kernel.SlackBuild for this. +patch -d src/VBox/Installer/linux -i $CWD/vboxdrv.sh-setup.diff + +# Support for the qt4-frontend +if [ "${QT4:-yes}" = "yes" ]; then + mkdir -p $PKG/usr/share/applications + guiapp="VirtualBox" +else + qtgui+=" --disable-qt4" + guiapp="" +fi + +# 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 + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --ose \ + --disable-kmods \ + --disable-pulse \ + --enable-vde \ + $web_service \ + $harden \ + $qtgui + +. ./env.sh + +cp $CWD/LocalConfig.kmk . +sed -i "s|LIBDIR|lib$LIBDIRSUFFIX|" ./LocalConfig.kmk + +kmk -j ${JOBS} LOCALCFG=./LocalConfig.kmk + +mkdir -p $PKG/usr/{lib$LIBDIRSUFFIX,share,include}/virtualbox \ + $PKG/usr/{bin,src} \ + $PKG/usr/share/{pixmaps,mime/packages} \ + $PKG/etc/{default,rc.d,vbox} + +cp -f src/VBox/Installer/linux/vboxdrv.sh.in $PKG/etc/rc.d/rc.vboxdrv.new +sed -i "s/%PACKAGE%/virtualbox/g" $PKG/etc/rc.d/rc.vboxdrv.new +sed -i "s/%NOLSB%/yes/" $PKG/etc/rc.d/rc.vboxdrv.new +sed -i "s/%DEBIAN%/no/" $PKG/etc/rc.d/rc.vboxdrv.new +sed -i "s/%GROUP%/vboxusers/" $PKG/etc/rc.d/rc.vboxdrv.new +sed -i "s/\[ -z \"\$DEBIAN\"/#\[ -z \"\$DEBIAN\"/" $PKG/etc/rc.d/rc.vboxdrv.new + +cp -f $CWD/vbox.cfg $PKG/etc/vbox/vbox.cfg.new +sed -i "s|LIBDIR|lib$LIBDIRSUFFIX|" $PKG/etc/vbox/vbox.cfg.new +cp -f $CWD/virtualbox.default $PKG/etc/default/virtualbox.new + +cd out/linux.$BUILDDIR/release/bin/ + rm -f vboxdrv.ko + mv src $PKG/usr/src/virtualbox-kernel-$VERSION + + if [ "${QT4:-yes}" = "yes" ]; then + mv virtualbox.desktop $PKG/usr/share/applications/ + sed -i "s|\$VBOX_DOC_PATH|/usr/share/virtualbox|" \ + $PKG/usr/share/applications/virtualbox.desktop + fi + 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/ + if [ "${QT4:-yes}" = "yes" ]; then + mv nls* *.tar.bz2 $PKG/usr/share/virtualbox/ + fi + 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/ + 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/$SRCNAM-${VERSION}_OSE + +for i in VBoxManage vboxmanage VBoxSDL vboxsdl VBoxHeadless vboxheadless VBoxVRDP $guiapp $vboxwebsrv; do + ln -s /usr/lib$LIBDIRSUFFIX/virtualbox/VBox $PKG/usr/bin/$i +done + +if [ "$guiapp" = "VirtualBox" ]; then + ln -s /usr/lib$LIBDIRSUFFIX/virtualbox/VBox $PKG/usr/bin/virtualbox +fi + +if [ "$vboxwebsrv" = "vboxwebsrv" ]; then + mkdir -p $PKG/var/{lib,log}/vboxweb + chown vboxweb:vboxusers $PKG/var/{lib,log}/vboxweb + cp -f src/VBox/Installer/linux/vboxweb-service.sh.in $PKG/etc/rc.d/rc.vboxweb-service.new + sed -i "s/%PACKAGE%/virtualbox/g" $PKG/etc/rc.d/rc.vboxweb-service.new + sed -i "s/%NOLSB%/yes/" $PKG/etc/rc.d/rc.vboxweb-service.new + sed -i "s/%DEBIAN%/no/" $PKG/etc/rc.d/rc.vboxweb-service.new + sed -i "s/\[ -z \"\$DEBIAN\"/#\[ -z \"\$DEBIAN\"/" $PKG/etc/rc.d/rc.vboxweb-service.new +fi + +if [ "$harden" = "--enable-hardening" ]; then + for i in VBoxSDL VBoxHeadless $guiapp VBoxNetDHCP VBoxNetAdpCtl; do + chmod 4711 $PKG/usr/lib$LIBDIRSUFFIX/virtualbox/$i + done +fi + +# install headers. Needed by some third party tools +cp -rf include/* $PKG/usr/include/virtualbox/ +rm -f $PKG/usr/include/virtualbox/Makefile.kmk + +cp -f $CWD/VBoxGuestAdditions_$VERSION.iso \ + $PKG/usr/share/virtualbox/VBoxGuestAdditions.iso + +cp -f $CWD/UserManual.pdf \ + $PKG/usr/share/virtualbox/UserManual.pdf + +cp -f $CWD/SDKRef.pdf \ + $PKG/usr/share/virtualbox/SDKRef.pdf + +# 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/* + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -f COPYING COPYING.CDDL $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/README.SLACKWARE > $PKG/usr/doc/$PRGNAM-$VERSION/README.SLACKWARE +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +cat $CWD/doinst.sh > $PKG/install/doinst.sh + +if [ "$vboxwebsrv" = "vboxwebsrv" ]; then + echo "preserve_perms etc/rc.d/rc.vboxweb-service.new" >> $PKG/install/doinst.sh +fi + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} |