#
#	makeRPMPackage - Create RPM Packages
#
# 	Included by makePackage to create RPM packages.
#
#	Copyright (c) Mbedthis Software LLC, 2003-2007. All Rights Reserved.
#
################################################################################

RPM_DIST=$ROOT_DIR/rpmDist
RPM_DIR=$ROOT_DIR/RPM
RPM_SPEC_FILE=
BLD_DATE=`date '+%c'`

################################################################################

setupRPM() {
	echo -e "\n  #\n  # Create the RPM package ...\n  #"

	mkdir -p $RPM_DIST

	#
	#	Setup the RPM directory and create the spec file
	#
	mkdir -p $RPM_DIR $RPM_DIR/SOURCES $RPM_DIR/SPECS $RPM_DIR/BUILD
	mkdir -p $RPM_DIR/RPMS $RPM_DIR/RPMS/${BLD_HOST_CPU} $RPM_DIR/SRPMS

}

################################################################################

createSpecFile() {
	local name dir

	name=`createPackageName ${BLD_PRODUCT}`
	RPM_SPEC_FILE=$RPM_DIR/SPECS/${name}.spec

	cp package/${BLD_HOST_OS}/rpm.spec $RPM_SPEC_FILE
	patchFile $RPM_SPEC_FILE

	#
	#	Binary RPM
	#
	dir="${BLD_PRODUCT}-${BLD_VERSION}"
	cd ${ROOT_DIR}/$dir
	echo '%defattr(-,root,root)' >$RPM_DIR/BUILD/binFiles.txt
	find . -type d -print | sed -e 's!\.!!' | grep ${BLD_PRODUCT} |
		sed -e "s!^!%dir !" >>$RPM_DIR/BUILD/binFiles.txt
	find . -type f -print | sed -e "s/.//" |
		sed 's/.*/"&"/' >>$RPM_DIR/BUILD/binFiles.txt
	find . -type l -print | sed -e "s/.//" |
		sed 's/.*/"&"/' >>$RPM_DIR/BUILD/binFiles.txt
	cd ${HOME}

	#
	#	Development files: headers and samples
	#
	cd ${BLD_INC_PREFIX}
	echo '%defattr(-,root,root)' >$RPM_DIR/BUILD/devFiles.txt
	find . -type d -print | sed -e "s!.!%dir \"${ORIG_BLD_INC_PREFIX}!" |
		sed 's/.*/&\"/' >>$RPM_DIR/BUILD/devFiles.txt
	find . -type f -print | sed -e "s!.!${ORIG_BLD_INC_PREFIX}!" |
		sed 's/.*/"&"/' >>$RPM_DIR/BUILD/devFiles.txt
	cd ${BLD_SAM_PREFIX}
	echo '%defattr(-,root,root)' >>$RPM_DIR/BUILD/devFiles.txt
	find . -type d -print | sed -e "s!.!%dir \"${ORIG_BLD_SAM_PREFIX}!" |
		sed 's/.*/&\"/' >>$RPM_DIR/BUILD/devFiles.txt
	find . -type f -print | sed -e "s!.!${ORIG_BLD_SAM_PREFIX}!" |
		sed 's/.*/"&"/' >>$RPM_DIR/BUILD/devFiles.txt
	cd ${HOME}

	#
	#	Source code
	#
	cd ${BLD_SRC_PREFIX}
	echo '%defattr(-,root,root)' >$RPM_DIR/BUILD/srcFiles.txt
	find . -type d -print | sed -e "s!.!%dir \"${ORIG_BLD_SRC_PREFIX}!" |
		sed 's/.*/&\"/' >>$RPM_DIR/BUILD/srcFiles.txt
	find . -type f -print | sed -e "s!.!${ORIG_BLD_SRC_PREFIX}!" |
		sed 's/.*/"&"/' >>$RPM_DIR/BUILD/srcFiles.txt
	cd ${HOME}

	#
	#	Documentation
	#
	cd ${BLD_DOC_PREFIX}
	echo '%defattr(-,root,root)' >$RPM_DIR/BUILD/docFiles.txt
	find . -type d -print | sed -e "s!.!%dir \"${ORIG_BLD_DOC_PREFIX}!" |
		sed 's/.*/&\"/' >>$RPM_DIR/BUILD/docFiles.txt
	find . -type f -print | sed -e "s!.!${ORIG_BLD_DOC_PREFIX}!" |
		sed 's/.*/"&"/' >>$RPM_DIR/BUILD/docFiles.txt
	cd ${HOME}
}

################################################################################

copyRPMFiles() {

	rm -fr ${ROOT_DIR}/rpmDist
	mkdir -p ${ROOT_DIR}/rpmDist

#
#	Now done in rpm.spec %build
#
#		for suffix in "" -dev -doc -src ; do
#			dir="${BLD_PRODUCT}${suffix}-${BLD_VERSION}"
#			echo cp -r $ROOT_DIR/${dir}/* ${ROOT_DIR}/rpmDist
#			cp -r $ROOT_DIR/${dir}/* ${ROOT_DIR}/rpmDist
#		done
#
}

################################################################################

makeRPMPackage() {
	local f

	echo "%_topdir $RPM_DIR" > ~/.rpmmacros
	echo "  rpmbuild -ba --target ${BLD_HOST_CPU} `basename ${RPM_SPEC_FILE}`"

	cd $RPM_DIR/SPECS
	rpmbuild -ba --target ${BLD_HOST_CPU} ${RPM_SPEC_FILE} >${HOME}/rpm.log 2>&1
	if [ $? != 0 ] 
	then
		echo "RPM build failed "
		cat ${HOME}/rpm.log
		exit 255
	else 
		rm -f ${HOME}/rpm.log
	fi
	cd ${HOME}

	echo
	for suffix in "" -dev -doc -src ; do
		rpm=`createPackageName ${BLD_PRODUCT}$suffix | sed "s/-${BLD_HOST_OS}-/./"`.rpm
		if [ "$suffix" = "-src" ] ; then
			name=`echo ${BLD_PRODUCT}$suffix-${BLD_VERSION}-${BLD_NUMBER}.rpm`
		else
			name=`echo ${BLD_PRODUCT}$suffix-${BLD_VERSION}-${BLD_NUMBER}-${BLD_HOST_OS}-${BLD_HOST_CPU}.rpm`
		fi
		echo "  # Creating `basename $name`"
		mv $RPM_DIR/RPMS/$BLD_HOST_CPU/$rpm $ROOT_DIR/$name
	done
}

################################################################################
#
#	Main
#

setupRPM
createSpecFile
copyRPMFiles
makeRPMPackage

####
##
##  Local variables:
##  tab-width: 4
##  c-basic-offset: 4
##  End:
##  vim: sw=4 ts=4 
##
