#!/bin/sh # Heavily based on the Slackware 13.1 SlackBuild # Written by Tommaso D'Anna aka tasodan ( www.slacky.eu ) # Last build from Tommaso D'Anna aka tasodan ( www.slacky.eu ) # Slackware build script for Nvidia Proprietary Binary Video Driver (kernel module) # Official Site: http://www.nvidia.com # 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. # Exit the script on errors: set -e trap 'echo "$0 FAILED at line ${LINENO}"' ERR # Catch variables: PKGNAME=${VERSION:-nvidia-kernel} KERNEL=${KERNEL:-`uname -r`} VERSION=${VERSION:-260.19.29} BUILD=${BUILD:-1} TAG=${TAG:-sl} ARCH=${ARCH:-i486} CWD=$(pwd) TMP=${TMP:-/tmp/buildpkgs/$PKGNAME} PKG=$TMP/package-$PKGNAME OUTPUT=${OUTPUT:-$CWD} case "$ARCH" in i[4-6]86) TARGET="x86" ; SRCSUFFIX="" ;; x86_64) TARGET="x86_64" ; SRCSUFFIX="-no-compat32" ;; *) echo "error: unknown or invalid ARCH=$ARCH... aborting the build"; exit 1 ;; esac SOURCE="ftp://download.nvidia.com/XFree86/Linux-$TARGET/$VERSION/NVIDIA-Linux-$TARGET-$VERSION$SRCSUFFIX.run" # Source file availability: if [ ! -e $CWD/NVIDIA-Linux-$TARGET-$VERSION$SRCSUFFIX.run ];then wget $SOURCE fi # Create working directories: rm -rf $TMP mkdir -p $TMP $PKG $OUTPUT # Extract the sources: cd $TMP sh $CWD/NVIDIA-Linux-$TARGET-$VERSION$SRCSUFFIX.run --extract-only cd NVIDIA-Linux-$TARGET-$VERSION$SRCSUFFIX/kernel chown -R root:root . chmod -R u+w,go+r-w,a-s . echo -e "\E[0;32m+--------------------------------+\E[0;0m" echo -e "\E[0;32m| Start SlackBuild nvidia-kernel |\E[0;0m" echo -e "\E[0;32m+--------------------------------+\E[0;0m" # Build kernel module: make SYSSRC=/lib/modules/$KERNEL/build module install -D -m664 nvidia.ko $PKG/lib/modules/$KERNEL/kernel/drivers/video/nvidia.ko # Add documentation: mkdir -p $PKG/usr/doc/$PKGNAME-$VERSION ln -s $PKGNAME-$VERSION $PKG/usr/doc/$PKGNAME-${VERSION}_$(basename $KERNEL | tr - _) cp -a README.template $PKG/usr/doc/$PKGNAME-$VERSION cat $CWD/$PKGNAME.SlackBuild > $PKG/usr/doc/$PKGNAME-$VERSION/$PKGNAME.SlackBuild cat $CWD/slack-desc > $PKG/usr/doc/$PKGNAME-$VERSION/slack-desc cat $CWD/README.Slackware > $PKG/usr/doc/$PKGNAME-$VERSION/README.Slackware # Add slack-desc, doinst.sh and slack-required: mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh sed -i "s/@KERNEL@/$KERNEL/" $PKG/install/doinst.sh sed -i "s/@VERSION@/${VERSION}_$(basename $KERNEL | tr - _)/" $PKG/install/doinst.sh if [ -x "$(which requiredbuilder 2>/dev/null)" ];then requiredbuilder -y -v -s $CWD $PKG fi # Make the package: cd $PKG chown -R root:root $PKG /sbin/makepkg -l y -c n \ $OUTPUT/$PKGNAME-${VERSION}_$(basename $KERNEL | tr - _)-$ARCH-$BUILD$TAG.${PKGTYPE:-txz} # Clean up the extra stuff: if [ "$1" = "--cleanup" ]; then rm -rf $TMP $PKG fi