#!/bin/sh 
#
# (c) Copyright 2002 Hewlett-Packard Development Company, L.P.
#

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


CreateTarBall() {
	MANIFEST=`cat $MANIFESTFILE | egrep "^/"`
	rm -rf $STAGEDIR
	mkdir -p $STAGEDIR
	for ITEM in $MANIFEST; do 
		if [ -f $ITEM ]; then
			mkdir -p $STAGEDIR/`dirname $ITEM`
		        cp -avf $ITEM $STAGEDIR/$ITEM
		fi
		if [ -d $ITEM ]; then
			mkdir -p $STAGEDIR/$ITEM
	         	cp -avf $ITEM/* $STAGEDIR/$ITEM/.
		fi
	done
	if [ -f /etc/hp-snmp-agents.conf ]; then
		mkdir -p $STAGEDIR/etc
		cp -avf /etc/hp-snmp-agents.conf $STAGEDIR/etc
	fi
	cd $DISTDIR/SOURCES
	cp /opt/hp/hp-snmp-agents/*.xpm .
	tar cvfz $DISTDIR/SOURCES/hp-snmp-agents.tar.gz hp-snmp-agents 
	rm -rf $STAGEDIR
} 

CreateSpecFile() {
	cat $SPECTEMPLATE $MANIFESTFILE | sed \
		-e "s/^Version[ 	]*:.*/Version: $VERSION/" \
		-e "s/^Release[ 	]*:.*/Release: $RELEASE/" \
		> $DISTDIR/SPECS/$SPECFILE
        echo "%changelog" >> $DISTDIR/SPECS/$SPECFILE
	echo "* `date +"%a %b %d %Y"` HP Software" >> $DISTDIR/SPECS/$SPECFILE
	printf "\t\tCustom Build of hp-snmp-agents.\n" >> $DISTDIR/SPECS/$SPECFILE
}

is_26_kernel() {
    [ "$(uname -r | cut -d. -f1-2)" = "2.6" ]
    return $?
}


## Checking to see if OS is ESX 4.0 (from VMware)
## return code is 0 = yes, ESX 4.0
## return code is 1 = no, not ESX 4.0
##
## An assumption here is that only ESX systems would have /usr/bin/vmware
## and ESX 4x is based on the 2.6 kernel

is_OS_VMware4x() {
    test -x /usr/bin/vmware && is_26_kernel
    return $?
}


if  is_OS_VMware4x ; then 

    THIS_VERSION=` vmware -v | cut -d" " -f 1,2,3`

    echo
    echo The rebuild command is not supported in $THIS_VERSION   
    echo
    echo The ESX 4.0 Service Console does not support rpmbuild 
    echo which is called by the rebuild command
    echo 
    echo Please see VMware Technical Note 
    echo
    echo "    Upgrading the Service Console from ESX 3.x"
    echo
    echo for more details for why rpmbuild is not supported.
    echo
    echo
    echo

    exit 100

fi

echo "Setting up hp-snmp-agents sources for custom RPM"


DetermineFilePath
MANIFESTFILE=/opt/hp/hp-snmp-agents/hp-snmp-agents.manifest
SPECTEMPLATE=/opt/hp/hp-snmp-agents/hp-snmp-agents.rebuild.spec
SPECFILE=hp-snmp-agents.spec
STAGEDIR=$DISTDIR/SOURCES/hp-snmp-agents
RPMTOOL=`which rpmbuild`
FLAG="custom"
TARGET=
VERSION=`/bin/rpm -q hp-snmp-agents --qf %{VERSION} 2>&1`
RELEASE=`/bin/rpm -q hp-snmp-agents --qf %{RELEASE} 2>&1`

#Increase the release version by one. Incase the user inputs their own value, the value will be modified accordingly.

REL=`echo $RELEASE| cut -d. -f1`
OS=`echo $RELEASE| cut -d. -f2`

if [ "$OS" = "$FLAG" ]; then
      OS=`echo $RELEASE| cut -d. -f3`
fi

REL=`expr $REL + 1`
RELEASE="$REL.$FLAG.$OS"

if [ "$RPMTOOL" = "" ]; then
	RPMTOOL=rpm
fi
while [ $# -gt 0 ]; do
        case $1 in
        --version*)
                if echo $1 | grep -q '=' ; then
                        VERSION=`echo $1 | sed 's/^--version=//'`
                else
                        VERSION=$2
			shift
                fi
                ;;

        --release*)
                if echo $1 | grep -q '=' ; then
                        RELEASE=`echo $1 | sed 's/^--release=//'`.$FLAG.$OS
                else
                        RELEASE=$2.$FLAG.$OS
			shift
                fi
                ;;
        --target*)
                if echo $1 | grep -q '=' ; then
                        TARGET=`echo $1 | sed 's/^--target=//'`
                else
                        TARGET=$2
			shift
                fi
                ;;
	esac
	shift
done
CreateTarBall
CreateSpecFile
if [ -z "$TARGET" ]; then
	TARGET=`rpm -q --specfile $DISTDIR/SPECS/$SPECFILE --queryformat "%{ARCH}\n" | head -n1`
	$RPMTOOL -ba $DISTDIR/SPECS/$SPECFILE 
else 
	$RPMTOOL -ba --target $TARGET $DISTDIR/SPECS/$SPECFILE 
fi
RPMFILES=`rpm -q --specfile $DISTDIR/SPECS/$SPECFILE --queryformat "%{NAME}-%{VERSION}-%{RELEASE}\n"`
for RPMFILE in $RPMFILES; do
	if [ -f $DISTDIR/RPMS/$TARGET/$RPMFILE.$TARGET.rpm ]; then
		echo "Custom RPM    : $DISTDIR/RPMS/$TARGET/$RPMFILE.$TARGET.rpm"
	else
		echo "Could not find: $DISTDIR/RPMS/$TARGET/$RPMFILE.$TARGET.rpm"
	fi
done
exit 0
