#!/bin/sh

DRV_BUSLOGIC=BusLogic-2.1-0.i386.rpm
DRV_A320RAID=a320raid.rhel4qu4.i686.rpm
DRV_AIC79XX=aic79xx.rhel4qu4.i686.rpm

DRV_SRC_MEGARAID_SAS=megaraid_sas-v00.00.03.01-src.tgz
DRV_SRC_MPTLINUX=mptlinux-3.02.83.05-1.src.rpm
PKG_SRC_ISCSI_INITIATOR=iscsi-initiator-utils-4.0.3.0-4.src.rpm

PKG_IMA=IMA-2.50-309.i386.rpm
INITRD=initrd-2.6.9-42.EL.img

PKG_SRC_NAPA=2_partialb14.tgz

# backup initrd
cp -f /boot/${INITRD} /boot/${INITRD}.backup

# install BusLogic driver packages
rpm -Uvh ${DRV_BUSLOGIC}
if [ $? != 0 ] ; then
	echo "Failed to install BusLogic package!"
	exit 1
fi

# install a320raid driver package
rpm -Uvh ${DRV_A320RAID}
if [ $? != 0 ] ; then
	echo "Failed to install a320raid package!"
	exit 1
fi

# install aic79xx driver package
rpm -Uvh ${DRV_AIC79XX}
if [ $? != 0 ] ; then
	echo "Failed to install aic79xx package!"
	exit 1
fi

# install cciss driver package
DRV_CCISS=/lib/modules/2.6.9-42.EL/kernel/drivers/block/cciss.ko
DRV_CCISS_OLD=/lib/modules/2.6.9-42.EL/kernel/drivers/block/cciss.ko.old

if [ ! -f ${DRV_CCISS_OLD} ] ; then
	cp -f ${DRV_CCISS} ${DRV_CCISS_OLD}
fi
cp -f cciss.ko ${DRV_CCISS}

# install stex driver package
DRV_STEX=/lib/modules/2.6.9-42.EL/kernel/drivers/scsi/stex.ko
DRV_STEX_OLD=/lib/modules/2.6.9-42.EL/kernel/drivers/scsi/stex.ko.cp

if [ ! -f ${DRV_STEX_OLD} ] ; then
	cp -f ${DRV_STEX} ${DRV_STEX_OLD}
fi
cp -f stex.ko ${DRV_STEX}

# install dpt_iso driver package
cp -f dpt_i2o.ko /lib/modules/2.6.9-42.EL/kernel/drivers/scsi

# install adpahci driver package
cp -f adpahci.ko /lib/modules/2.6.9-42.EL/kernel/drivers/scsi

# install aar81xx driver
cp -f aar81xx.ko /lib/modules/2.6.9-42.EL/kernel/drivers/scsi

depmod -a

# install megaraid_sas driver
mkdir -p megaraid_sas
tar xfvz ${DRV_SRC_MEGARAID_SAS} -C megaraid_sas
cp -f megaraid_sas.makefile megaraid_sas/dkms_source_tree/Makefile
cd megaraid_sas/dkms_source_tree
patch -p1 -i patches/rhel4.patch
patch -p1 -i patches/rhel4_diskdump.patch
make install
if [ $? != 0 ] ; then
	echo "Failed to install megaraid_sas package!"
	exit 1
fi
cd ../../

# install mptscsih driver
#rpm -Uvh ${DRV_SRC_MPTLINUX}
#if [ $? != 0 ] ; then
#	echo "Failed to install mptlinux source package!"
#	exit 1
#fi

#rpmbuild -bb /usr/src/redhat/SPECS/mptlinux.spec
#if [ $? != 0 ] ; then
#	echo "Failed to create mptlinux binary package!"
#	exit 1
#fi

#rpm -Uvh /usr/src/redhat/RPMS/i386/mptlinux-3.02.83.05-1.i386.rpm
#if [ $? != 0 ] ; then
#	echo "Failed to install mptlinux binary package!"
#	exit 1
#fi

# install napa driver
tar xfvz ${PKG_SRC_NAPA}
cd partial
ln -nfs Makefile.partial Makefile
make clean CC=gcc KERNEL_SOURCE_DIR=/usr/src/kernels/`uname -r`-i686 DRIVER_SRC_DIR=`pwd`
make CC=gcc KERNEL_SOURCE_DIR=/usr/src/kernels/`uname -r`-i686 DRIVER_SRC_DIR=`pwd`
if [ $? != 0 ] ; then
	echo "Failed to compile napa driver!"
	exit 1
fi
cp napa.ko /lib/modules/`uname -r`/kernel/drivers/scsi
depmod -a
cd ..

# install linux iscsi
rpmbuild --recompile ${PKG_SRC_ISCSI_INITIATOR}
if [ $? != 0 ] ; then
	echo "Failed to install iscsi initiator source package!"
	exit 1
fi

CURDIR=`pwd`
cd /usr/src/redhat/BUILD/iscsi-initiator-utils-4.0.3.0/linux-iscsi-4.0.3.0
patch -p1 -i ${CURDIR}/iscsi.diff
make daemon
if [ $? != 0 ] ; then
	echo "Failed to build iscsid daemon!"
	exit 1
fi

if [ ! -f /sbin/iscsid.orig ] ; then
	cp -f /sbin/iscsid /sbin/iscsid.orig
fi
cp -f obj/iscsid /sbin

cd driver
make all
if [ $? != 0 ] ; then
	echo "Failed to build iscsi driver!"
	exit 1
fi

ISCSI_DRV_PATH=/lib/modules/`uname -r`/kernel/drivers/scsi/iscsi_sfnet/
if [ ! -f ${ISCSI_DRV_PATH}/iscsi_sfnet.ko.orig ] ; then
	cp -f ${ISCSI_DRV_PATH}/iscsi_sfnet.ko ${ISCSI_DRV_PATH}/iscsi_sfnet.ko.orig
fi
cp -f iscsi_sfnet.ko ${ISCSI_DRV_PATH}

cd ${CURDIR}

# restore initrd
mv -f /boot/${INITRD}.backup /boot/${INITRD}

# install IMA package
rpm -Uvh ${PKG_IMA}
if [ $? != 0 ] ; then
	echo "Failed to install IMA package!"
	exit 1
fi
