#
#   makeRPMPackage - Create RPM Packages
#
#   Included by makePackage to create RPM packages.
#
#   Copyright (c) Embedthis Software LLC, 2003-2009. 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
    #
    cd ${ROOT_DIR}/BIN
    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}
    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 ${BLD_DOC_PREFIX}
    find . -type d -print | sed -e "s!.!%dir \"${ORIG_BLD_DOC_PREFIX}!" | sed 's/.*/&\"/' >>$RPM_DIR/BUILD/devFiles.txt
    find . -type f -print | sed -e "s!.!${ORIG_BLD_DOC_PREFIX}!" | sed 's/.*/"&"/' >>$RPM_DIR/BUILD/devFiles.txt
    cd ${BLD_MAN_PREFIX}
    find . -type d -print | sed -e "s!.!%dir \"${ORIG_BLD_MAN_PREFIX}!" | sed 's/.*/&\"/' >>$RPM_DIR/BUILD/devFiles.txt
    find . -type f -print | sed -e "s!.!${ORIG_BLD_MAN_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}

}



copyRPMFiles() {
    rm -fr ${ROOT_DIR}/rpmDist
    mkdir -p ${ROOT_DIR}/rpmDist
}



makeRPMPackage() {
    local f

cat <<!MACROS_EOF > ~/.rpmmacros
%_topdir $RPM_DIR

%__os_install_post    \
    /usr/lib/rpm/redhat/brp-compress \
    %{!?__debug_package:/usr/lib/rpm/redhat/brp-strip %{__strip}} \
    /usr/lib/rpm/redhat/brp-strip-static-archive %{__strip} \
    /usr/lib/rpm/redhat/brp-strip-comment-note %{__strip} %{__objdump} \
%{nil}
!MACROS_EOF

    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 bin dev src ; do
        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
        if [ "$suffix" = "bin" ] ; then
            rpm="$RPM_DIR/RPMS/$BLD_HOST_CPU/${BLD_PRODUCT}-${BLD_VERSION}-${BLD_NUMBER}.${BLD_HOST_CPU}.rpm"
        else
            rpm="$RPM_DIR/RPMS/$BLD_HOST_CPU/${BLD_PRODUCT}-$suffix-${BLD_VERSION}-${BLD_NUMBER}.${BLD_HOST_CPU}.rpm"
        fi
        echo "  # Creating `basename $name`"
        mv $rpm $ROOT_DIR/$name
    done
}


#
#   Main
#

setupRPM
createSpecFile
copyRPMFiles
makeRPMPackage
