#!/bin/sh # Copyright (c) 2006 Eric Hameleers # Distributed under the terms of the GNU General Public License, Version 2 # $Id$ # ----------------------------------------------------------------------------- # # Slackware SlackBuild script # =========================== # By: Eric Hameleers # For: rt2500 # Descr: driver for RaLink based wireless cards # URL: http://rt2x00.sourceforge.net/ # Needs: # Changelog: # 20050409-1: 09/apr/2005 by Eric Hameleers # * Initial build. # 20050409-2: 10/apr/2005 by Eric Hameleers # * Enabled debug messages in the module. # 20050429-1: 27/apr/2005 by Eric Hameleers # * Updated CVS snapshot. # 20050726-1: 26/jul/2005 by Eric Hameleers # * Updated CVS snapshot. # 1.1.0.b3-1: 17/jan/2006 by Eric Hameleers # * Decided to build a more recent beta of rt2500, because # the waiting for WPA support in the new rt2x00 driver # takes so long. # 1.1.0.b3-2: 18/jan/2006 by Eric Hameleers # * Rebuild, the 2.4.31 module got corrupted when gzipping. # 1.1.0.b4-1: 18/sep/2006 by Eric Hameleers # * Update to b4, needed in order to compile on a 2.6.17.13 kernel. # 1.1.0.b4-2: 19/sep/2006 by Eric Hameleers # * Added some leftover DOC files, many edits in the SlackBuild. # # # Run 'sh SlackBuild --cleanup' to build a Slackware package. # The package (.tgz) plus descriptive .txt file are created in /tmp . # Install using 'installpkg'. # # ----------------------------------------------------------------------------- # --- INIT --- # Set initial variables: PRGNAM=rt2500 VERSION=${VERSION:-1.1.0.b4} SRCVER=1.1.0-b4 ARCH=${ARCH:-i486} BUILD=2 KVER=${KVER:-`uname -r`} KSRC=${KSRC:-/lib/modules/${KVER}/build} PATCHLEVEL=`echo $KVER | cut -d. -f2` PREDOC="cp -a ./Module/README README.module" DOCS="CHANGELOG FAQ LICENSE THANKS ./Module/iwpriv_usage.txt ./Module/TESTING \ README.module ./Utilitys/CONFIGURATION.TXT" SOURCE="${PRGNAM}-${SRCVER}.tar.gz" SRCURL="http://surfnet.dl.sourceforge.net/sourceforge/rt2400/${PRGNAM}-${SRCVER}.tar.gz" # Where do we look for sources? CWD=`pwd` SRCDIR=`dirname $0` [ "${SRCDIR:0:1}" == "." ] && SRCDIR=${CWD}/${SRCDIR} # Place to build (TMP) package (PKG) and output (OUTPUT) the program: TMP=${TMP:-/tmp/build} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} ## ## --- with a little luck, you won't have to edit below this point --- ## ## # Exit the script on errors: set -e trap 'echo "$0 FAILED!" | tee $CWD/error-${PRGNAM}.log' ERR # Catch unitialized variables: set -u P1=${1:-1} # Slackware 11 and up need other option (gcc > 3.3.x) if [ `gcc -dumpversion | tr -d '.' |cut -c 1-2` -gt 33 ]; then MOPT=tune else MOPT=cpu fi case "$ARCH" in i386) SLKCFLAGS="-O2 -march=i386 -m${MOPT}=i686" SLKLDFLAGS=""; LIBDIRSUFFIX="" ;; i486) SLKCFLAGS="-O2 -march=i486 -m${MOPT}=i686" SLKLDFLAGS=""; LIBDIRSUFFIX="" ;; s390) SLKCFLAGS="-O2" SLKLDFLAGS=""; LIBDIRSUFFIX="" ;; powerpc) SLKCFLAGS="-O2" SLKLDFLAGS=""; LIBDIRSUFFIX="" ;; x86_64) SLKCFLAGS="-O2 -fPIC" SLKLDFLAGS="-L/usr/lib64"; LIBDIRSUFFIX="64" ;; athlon-xp) SLKCFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer" SLKLDFLAGS=""; LIBDIRSUFFIX="" ;; esac if [ ! -d $TMP/tmp-$PRGNAM ]; then mkdir -p $TMP/tmp-$PRGNAM # location to build the source elif [ "$P1" != "--oldbuild" ]; then # If the "--oldbuild" parameter is present, we keep # the old build files and continue; # By default we remove the remnants of previous build and continue: rm -rf $TMP/tmp-$PRGNAM/* fi if [ "$PKG" = "" -o "$PKG" = "/" ] ; then echo "Please provide a sane value for the variable 'PKG'." exit 1 elif [ ! -d $PKG ]; then mkdir -p $PKG # place for the package to be built else rm -rf $PKG/* # We always erase old package's contents: fi if [ ! -d $OUTPUT ]; then mkdir -p $OUTPUT # place for the package to be saved fi # --- SOURCE FILE AVAILABILITY --- if ! [ -f ${SRCDIR}/${SOURCE} ]; then if ! [ "x${SRCURL}" == "x" ]; then echo "Source '${SOURCE}' not available yet... will download now:" wget -nv -O "${SRCDIR}/${SOURCE}" "${SRCURL}" || true if [ $? -ne 0 ]; then echo "Downloading '${SOURCE}' failed... aborting the build." mv -f "${SRCDIR}/${SOURCE}" "${SRCDIR}/${SOURCE}".FAIL exit 1 fi else echo "File '${SOURCE}' not available... aborting the build." exit 1 fi fi if [ "$P1" == "--download" ]; then echo "Download complete." exit 0 fi # --- PACKAGE BUILDING --- echo "++" echo "|| $PRGNAM-$VERSION" echo "++" cd $PKG # Explode the package framework: if [ -f $SRCDIR/_$PRGNAM.tar.gz ]; then explodepkg $SRCDIR/_$PRGNAM.tar.gz fi cd $TMP/tmp-$PRGNAM # --- TARBALL EXTRACTION,PATCH,MODIFY --- echo "Extracting the source archive(s) for $PRGNAM..." if `file $SRCDIR/${SOURCE} | grep -q ": bzip2"`; then tar -xjvf $SRCDIR/${SOURCE} || true elif `file $SRCDIR/${SOURCE} | grep -qi ": zip"`; then unzip $SRCDIR/${SOURCE} || true elif `file $SRCDIR/${SOURCE} | grep -qi ": 7-zip"`; then 7za -x $SRCDIR/${SOURCE} || true else tar -xzvf $SRCDIR/${SOURCE} || true fi if [ $? -ne 0 ]; then echo "Error in unpacking '${SOURCE}!' Aborting..." exit $? fi mv ${PRGNAM}-${SRCVER} ${PRGNAM}-${VERSION} cd ${PRGNAM}-${VERSION} chown -R root.root * # --- BUILDING --- echo Building ... ( cd Module CFLAGS="$SLKCFLAGS" \ make debug KERNDIR=$KSRC PATCHLEVEL=$PATCHLEVEL 2>&1 \ | tee $CWD/make-${PRGNAM}.log ) ( cd Utilitys qmake -o Makefile raconfig${PRGNAM##rt}.pro CFLAGS="$SLKCFLAGS" \ make 2>&1 | tee -a $CWD/make-${PRGNAM}.log ) # # Install all the needed stuff to the package dir # mkdir -p $PKG/lib/modules/${KVER}/drivers/net/wireless if [ $PATCHLEVEL -eq 4 ]; then gzip -9cf Module/${PRGNAM}.o > $PKG/lib/modules/${KVER}/drivers/net/wireless/${PRGNAM}.o.gz else cp -a Module/${PRGNAM}.ko $PKG/lib/modules/${KVER}/drivers/net/wireless/ fi mkdir -p $PKG/usr/bin install -m 0755 Utilitys/RaConfig${PRGNAM##rt} $PKG/usr/bin mkdir -p $PKG/etc/Wireless/RT2500STA cp -a Module/RT2500STA.dat $PKG/etc/Wireless/RT2500STA/RT2500STA.dat.sample # And now write the doinst.sh : mkdir -p $PKG/install cat <<-EEOOTT > $PKG/install/doinst.sh # Only run depmod on matching running kernel # Slackware will run depmod anyway on reboot): MYMODVER=$KVER MYKERNEL=\`uname -r\` if [ "\$MYKERNEL" = "\$MYMODVER" ]; then if [ -x sbin/depmod ]; then chroot . /sbin/depmod -a \$MYKERNEL 1> /dev/null 2> /dev/null fi fi EEOOTT # --- DOCUMENTATION --- mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION $PREDOC cp -a $DOCS \ $PKG/usr/doc/$PRGNAM-$VERSION chmod -R a-w $PKG/usr/doc/$PRGNAM-$VERSION/* # Compress the man page(s) [ -d $PKG/usr/man ] && find $PKG/usr/man -name "*.?" -type f -exec gzip -9f {} \; # Strip binaries ( cd $PKG find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null ) # --- OWNERSHIP, RIGHTS --- chmod -R o-w $PKG # --- PACKAGE DESCRIPTION --- mkdir -p $PKG/install cat $SRCDIR/${PRGNAM}.slack-desc > $PKG/install/slack-desc if [ -f $SRCDIR/doinst.sh ]; then cat $SRCDIR/doinst.sh > $PKG/install/doinst.sh fi # --- BUILDING --- # Build the package: cd $PKG makepkg --linkadd y --chown n $OUTPUT/$PRGNAM-${VERSION}_${KVER}-$ARCH-$BUILD.tgz \ 2>&1 | tee $CWD/makepkg-${PRGNAM}.log (cd $OUTPUT && md5sum $PRGNAM-${VERSION}_${KVER}-$ARCH-$BUILD.tgz > $PRGNAM-${VERSION}_${KVER}-$ARCH-$BUILD.tgz.md5) cat $PKG/install/slack-desc | grep "^${PRGNAM}" > $OUTPUT/$PRGNAM-${VERSION}_${KVER}-$ARCH-$BUILD.txt # --- CLEANUP --- # Clean up the extra stuff: if [ "$P1" = "--cleanup" ]; then rm -rf $TMP/tmp-$PRGNAM rm -rf $PKG fi