source ../Config.sh

# Only final firmware files are created
#[ "$PP_BUILD_TYPE" = "final" ] || exit 0

ADMIN_DIR="eric_admin"
VERSIONS_SUBDIR="versions"
BUILD_NUMBER_FILE="fwbuildnr"
VERSION="0.5"

cleanup() {
    local ret=$?
    rm -rf "${ADMIN_DIR}"
    return $ret
}

get_cvs_root () {
    set -e
    echo "`cat CVS/Root`"
}

update_versions_tree () {
    set -e
    local cvs_root="`get_cvs_root`"
    mkdir -p "${ADMIN_DIR}"
    cd "${ADMIN_DIR}"
    rm -f ${VERSIONS_SUBDIR}/${BUILD_NUMBER_FILE}
    cvs -d "$cvs_root" -Q co -d ${VERSIONS_SUBDIR} eric_admin/versions
    cd -
}

increase_and_get_build_nr () {
    set -e
    local buildnr="`cat ${ADMIN_DIR}/${VERSIONS_SUBDIR}/${BUILD_NUMBER_FILE}`"
    let buildnr=$buildnr+1
    echo "$buildnr" > ${ADMIN_DIR}/${VERSIONS_SUBDIR}/${BUILD_NUMBER_FILE}
    echo "$buildnr"
}

commit_versions_tree () {
    set -e
    cd "${ADMIN_DIR}/${VERSIONS_SUBDIR}"
    cvs -Q commit -m "by mkfirmware.pl" ${BUILD_NUMBER_FILE}
    cd -
}

build_rpm () {
    local specfile="$1"
    HOME="${PWD}/RPMBUILD" rpmbuild --define "_topdir ${PWD}/RPMBUILD" -bb "$specfile"
}

pp_build_local () {
    # CC-F
    if [ "$PP_FW_TYPE" = "ccf" ]; then
	trap cleanup EXIT HUP INT TERM
	update_versions_tree
	local buildnr="`increase_and_get_build_nr`"
	[ -z "$buildnr" ] && exit 1
	commit_versions_tree
	echo "# This file is generated automatically from ccf.spec.in. Do not edit!" > ccf.spec
	sed -e "s,#BUILDNR#,${buildnr}," -e "s,#VERSION#,${VERSION}," \
	    < ccf.spec.in >> ccf.spec
	echo "# This file is generated automatically from ks.cfg.in. Do not edit!" > ../CentOS/ks.cfg
	sed -e "s,#BUILDNR#,${buildnr}," -e "s,#VERSION#,${VERSION}," \
	    < ../CentOS/ks.cfg.in >> ../CentOS/ks.cfg
	echo "${VERSION}" > ${FW_TOPDIR}/install_root/etc/fw_version
	echo "${buildnr}" > ${FW_TOPDIR}/install_root/etc/fw_buildnr
	# First create the CC-F RPM file
	tar -C ${FW_TOPDIR}/install_root -X ccf-rpm-exclude.lst -czf ${FW_TOPDIR}/install_root.tar.gz .
	build_rpm "${PWD}/ccf.spec"
	# create the firmware structure
	rm -rf tmp
	install -d tmp/KEYS
	install -d tmp/SCRIPTS
	install -d tmp/RPMS/i386
	install -m 644 RPM-GPG-KEY-CentOS-4 tmp/KEYS/
	install -m 644 ccf-pre.sh tmp/SCRIPTS/pre.sh
	install -m 644 ccf-post.sh tmp/SCRIPTS/post.sh
	install -m 644 RPMBUILD/RPMS/i386/ccf-${VERSION}-${buildnr}.i386.rpm tmp/RPMS/i386/
	tar -C ../CentOS/Extras/RPMS --wildcards --exclude CVS --exclude "*-debuginfo*" --exclude "*-devel*" --exclude "*-rpm-build-env*" --exclude "*-unixODBC-kde*" -cf - . | tar -C tmp/RPMS/i386 -xf -
	tar -C tmp -czf ccf.tar.gz .
	sha1sum < ccf.tar.gz | dd of=ccf-${VERSION}-${buildnr}.bin bs=40 count=1
	cat ccf.tar.gz >> ccf-${VERSION}-${buildnr}.bin
	rm -f ccf.tar.gz
    else
	return 0
    fi
}

pp_do "$@"
