#!/bin/sh

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

DetermineFilePath() {
        RC_DIR=/etc/init.d
	DIST_DIR=/usr/src/redhat
        if [ -d /usr/src/packages ]; then
                DIST_DIR=/usr/src/packages
        fi
        if [ -d /usr/src/rpm ]; then
                DIST_DIR=/usr/src/rpm
		DEB=1
        fi
}

CreateTarBall() {
	rm -rf $STAGEDIR
	mkdir -p $STAGEDIR
	cp -af /opt/hp/hp-OpenIPMI ${STAGEDIR}/.
	mkdir -p $STAGEDIR/hp-OpenIPMI/usr/share/man/man4
	cp -af /usr/share/man/man4/hp-OpenIPMI.4.gz $STAGEDIR/hp-OpenIPMI/usr/share/man/man4/.
	pushd $STAGEDIR/hp-OpenIPMI/usr/share/man/man4
	gunzip hp-OpenIPMI.4.gz
	mkdir -p $STAGEDIR/hp-OpenIPMI/opt/hp/hp-OpenIPMI
	cp /opt/hp/hp-OpenIPMI/hp-OpenIPMI $STAGEDIR/hp-OpenIPMI/opt/hp/hp-OpenIPMI
	cp /opt/hp/hp-OpenIPMI/check_install_kernel.sh $STAGEDIR/hp-OpenIPMI/opt/hp/hp-OpenIPMI/check_install_kernel.sh
	cp /opt/hp/hp-OpenIPMI/rebuild $STAGEDIR/hp-OpenIPMI/opt/hp/hp-OpenIPMI/rebuild
	cp /opt/hp/hp-OpenIPMI/COPYING $STAGEDIR/hp-OpenIPMI/opt/hp/hp-OpenIPMI/COPYING
	cp /opt/hp/hp-OpenIPMI/hp-OpenIPMI.license $STAGEDIR/hp-OpenIPMI/opt/hp/hp-OpenIPMI/hp-OpenIPMI.license
	cp /opt/hp/hp-OpenIPMI/IPMI.txt $STAGEDIR/hp-OpenIPMI/opt/hp/hp-OpenIPMI/IPMI.txt
	popd

	pushd $DIST_DIR/SOURCES
	cp /opt/hp/hp-OpenIPMI/*.xpm .
	popd

	pushd $STAGEDIR
	tar cvfz $DIST_DIR/SOURCES/hp-OpenIPMI.tar.gz hp-OpenIPMI >/dev/null 2>&1
	rm -rf $STAGEDIR/hp-OpenIPMI
	popd
} 

CreateSpecFile() {
	echo "Creating Spec File from pass ${OLD_PASS} to ${NEW_PASS}"
	pushd /opt/hp/hp-OpenIPMI
	mv hp-OpenIPMI.spec hp-OpenIPMI.spec.ORIG
	sed -e "s/\(Release[ \t]*:[ \t]*\)${OLD_PASS}/\1${NEW_PASS}/" < hp-OpenIPMI.spec.ORIG > hp-OpenIPMI.spec
	cd $DIST_DIR/SPECS
	cp /opt/hp/hp-OpenIPMI/hp-OpenIPMI.spec .
	cp /opt/hp/hp-OpenIPMI/*.xpm .
	popd
}

echo "Setting up hp-OpenIPMI sources for custom RPM"


FULL_PASS=`egrep "^Release" hp-OpenIPMI.spec |cut -d: -f 2 |awk '{print $1}'`
OLD_PASS=`echo ${FULL_PASS} |cut -d. -f 1 |awk '{print $1}'`
NEW_PASS=`expr ${OLD_PASS} + 1`

DetermineFilePath

STAGEDIR=$DIST_DIR/SOURCES/

echo "OLD PASS NUMBER:  ${OLD_PASS}   NEW PASS NUMBER:  ${NEW_PASS}"
CreateSpecFile ${OLD_PASS} ${NEW_PASS}
CreateTarBall


#build it
RPMTOOL=`which rpmbuild`
if [ $? -ne 0 ]; then
	RPMTOOL=rpm
fi
# $RPMTOOL -ba $DIST_DIR/SPECS/hp-OpenIPMI.spec >/dev/null 2>&1
$RPMTOOL -ba $DIST_DIR/SPECS/hp-OpenIPMI.spec

FULL_PASS=`egrep "^Release" $DIST_DIR/SPECS/hp-OpenIPMI.spec |cut -d: -f 2 |awk '{print $1}'`

# Debian does not have a uname -p command, only a uname -m.
if [ "$DEB" = "1" ]; then
   RPMPROC=`uname -m`
else
   RPMPROC=`uname -p`
fi

if [ "$RPMPROC" != "x86_64" ]; then
	RPMPROC=i386
	DEBPROC=i386
elif [ "$DEB" = "1" ]; then
        # The alien conversion process results in a .deb name 
	# that contains the amd64 architecture string under x86_64.
        DEBPROC=amd64
fi

RPMFILE=`ls -1t $DIST_DIR/RPMS/$RPMPROC/hp-OpenIPMI-*-${FULL_PASS}.$RPMPROC.rpm | grep -v debuginfo | head -n 1`
if [ ! -z "$RPMFILE" ]; then
	if [ "$DEB" = "1" ]; then
		if [ -f /usr/bin/alien ]; then
			cd $DIST_DIR/RPMS/$RPMPROC
			DEB_DIR=`/usr/bin/alien --keep-version --single --generate --scripts hp-OpenIPMI-*-$FULL_PASS.$RPMPROC.rpm| cut -f 2 -d' '`
			#cp $DEBCONTROL $DEB_DIR/debian/control
			cd $DEB_DIR
			debian/rules binary 1>/dev/null 2>&1
			DEBFILE=`ls -1t $DIST_DIR/RPMS/$RPMPROC/hp-openipmi*-$FULL_PASS*_$DEBPROC.deb | head -n 1`
			if [ ! -z "$DEBFILE" ]; then
				echo "Custom .deb(s) available: $DEBFILE"
				cd $DIST_DIR/RPMS/$RPMPROC
				rm -rf $DEB_DIR
			else
				echo "deb conversion with $RPMFILE failed!"
				exit 1
			fi

		else
			echo "Alien package required to convert custom $RPMFILE to .deb"
			exit 1
		fi
	else
		echo "Custom RPM(s) available: $RPMFILE"
	fi
else
	echo "RPM build with $DIST_DIR/SPECS/hp-OpenIPMI.spec failed!"
	exit 1
fi
exit 0
