#!/bin/sh

# (C) Copyright 2002-2005 Hewlett-Packard Development Company, L.P.

DetermineFilePath() {
	local rpm="$(which rpm)"
	if [ -z "$rpm" ]; then
		echo "Error: Unable to find the rpm command"
		exit 1
	fi
	RPM_SOURCEDIR="$(rpm --eval '%{_sourcedir}')"
	RPM_SPECDIR="$(rpm --eval '%{_specdir}')"
	RPM_RPMDIR="$(rpm --eval '%{_rpmdir}')"

}

CreateTarBall() {
	rm -rf $STAGEDIR
	mkdir -p $STAGEDIR
	cp -af /opt/hp/hp-ilo ${STAGEDIR}/.
	mkdir -p $STAGEDIR/hp-ilo/sh
	mv $STAGEDIR/hp-ilo/check_install_kernel.sh $STAGEDIR/hp-ilo/sh/check_install_kernel.sh
	mv -v $STAGEDIR/hp-ilo/rebuild $STAGEDIR/hp-ilo/sh/rebuild
	mv -v $STAGEDIR/hp-ilo/hp-ilo.license $STAGEDIR/hp-ilo/sh/hpqci.license
	mv -v $STAGEDIR/hp-ilo/man/hp-ilo.4 $STAGEDIR/hp-ilo/man/hpqci.4
        cp -v /etc/init.d/hp-ilo $STAGEDIR/hp-ilo/sh/hpqci.sh

	pushd $STAGEDIR
	cp /opt/hp/hp-ilo/*.xpm .
	tar cvfz "$RPM_SOURCEDIR/hp-ilo.tar.gz" hp-ilo >/dev/null 2>&1
	rm -rf $STAGEDIR/hp-ilo
	popd
} 

CreateSpecFile() {
	pushd /opt/hp/hp-ilo
	FLAG="custom"
	OLD_PASS=`egrep "^Release" $SPECFILE |cut -d: -f 2 |awk '{print $1}' |cut -d. -f 1 |awk '{print $1}'`
	NEW_PASS=`expr ${OLD_PASS} + 1`.$FLAG
	sed -e "s/\(Release[ \t]*:[ \t]*\)${OLD_PASS}/\1${NEW_PASS}/" < $SPECFILE > "$RPM_SPECDIR/$SPECFILE"
	popd
}


FixupModVersion() {
	pushd /opt/hp/hp-ilo/drivers/misc
	cp hpilo.c hpilo.c.ORIGINAL
	EFS_VER=`rpm  -q --specfile "$RPM_SPECDIR/$SPECFILE" --queryformat "%{VERSION}-%{RELEASE}\n" | head -n1`
	sed -e "/MODULE_VERSION/ c\
MODULE_VERSION\(\"$EFS_VER\"\)\;" hpilo.c.ORIGINAL > hpilo.c
popd
}
echo "Setting up hp-ilo sources for custom RPM"

DetermineFilePath

SPECFILE=hp-ilo.spec
STAGEDIR="$RPM_SOURCEDIR/"
RPMTOOL=`which rpmbuild`
if [ $? -ne 0 ]; then
	RPMTOOL=rpm
fi

CreateSpecFile
FixupModVersion
CreateTarBall

#build it
$RPMTOOL -ba "$RPM_SPECDIR/$SPECFILE"

RPMPROC=`rpm -q --specfile "$RPM_SPECDIR/$SPECFILE" --queryformat "%{ARCH}\n" | head -n1`

FULL_PASS=`egrep "^Release" "$RPM_SPECDIR/$SPECFILE" |cut -d: -f 2 |awk '{print $1}'`
RPMFILE=`ls -1t $RPM_RPMDIR/$RPMPROC/hp-ilo-*-${FULL_PASS}.$RPMPROC.rpm | grep -v debuginfo | head -n 1`
if [ ! -z "$RPMFILE" ]; then
	echo "Custom RPM(s) available: $RPMFILE"
else
	echo "RPM build with $RPM_SPECDIR/$SPECFILE failed!"
	exit 1
fi
exit 0
