#!/usr/bin/sh

module=${1:-boston}
EXT=ko
KERN=`uname -r`
case $KERN in
    *PAE)
	PAE=Yes
	;;
    *)
	PAE=No
	;;
esac

if [ ! -f /lib/modules/$KERN/misc/$module.$EXT ]
then
    echo "Looking for $module module for $KERN"
    arch=`rpm --queryformat '%{ARCH}' -qf /boot/vmlinuz-$KERN`
    if [ $? = 0 ]
    then
	echo "Using ARCH $arch"
	ARCH="$arch"
    fi
    if [ ! -f /lib/modules/$KERN/build/Makefile ]
    then
	echo "Kernel source needed for compiling a new driver"
	if [ "$PAE" = "Yes" ]; then
	    PACKAGE=kernel-PAE-devel-`echo $KERN|sed -e 's/PAE$//'`
	else
	    PACKAGE=kernel-devel-$KERN
	fi
	echo "Please install $PACKAGE RPM package"
	NEED_SOMETHING=YesPlease
    fi
    if [ ! -x /usr/bin/gcc ]
    then
	echo "GNU Compiler Collection C Compiler is needed for compiling a new driver"
	echo "Please install gcc RPM package"
	NEED_SOMETHING=YesPlease
    fi
    if [ ! -x /usr/bin/make ]
    then
	echo "GNU Make is needed for compiling a new driver"
	echo "Please install make RPM package"
	NEED_SOMETHING=YesPlease
    fi
    if [ -n "$NEED_SOMETHING" ]
    then
	exit 1
    fi
    if [ ! -f /var/spool/hylafax/ifax/bt/driver/kvers/$KERN/lib-$ARCH/$module.$EXT ]
    then
	if [ "$PAE" = "Yes" ] && [ ! -L /usr/src/kernels/$KERN-PAE-$arch ]
	then
	    ln -s $KERN-$arch /usr/src/kernels/$KERN-PAE-$arch
	fi
	echo "Building new $module.$EXT for $KERN"
	cd /var/spool/hylafax/ifax/bt/driver
        make -f Makefile.kerndep BOOTED_KERNEL="$KERN" INSTALLED_ARCH="$ARCH" > make-$KERN.log 2>&1
	if [ $? != 0 ]
	then
	    echo "Couldn't build kernel driver for $KERN"
	    echo "See build error log:"
	    echo "    /var/spool/hylafax/ifax/bt/driver/make-$KERN.log"
	    exit 2
	fi
    fi
    mkdir -p /lib/modules/$KERN/misc/
    cp /var/spool/hylafax/ifax/bt/driver/kvers/$KERN/lib-$ARCH/$module.$EXT /lib/modules/$KERN/misc/
    depmod -a || exit;
fi

