#!/usr/bin/bash
#
# Build packages in approved queues.
#

scriptdir=$( dirname $(readlink -fn $0))
source $scriptdir/lpf-defs.bash


function copy_results()
{
    local pkg=$1
    local _rpmdir=$( rpm --eval %_rpmdir )
    local resultdir="$( get_resultdir $pkg )"
    [ -d "$resultdir" ] || {
        mkdir $resultdir; chmod 775 $resultdir;
    }
    find $_rpmdir -name \*.rpm -exec chmod 664 {} \;
    find $_rpmdir -name \*.rpm -exec cp {} $resultdir \;
}


function install_rpms()
{
    local pkg=$1

    local resultdir=$( get_resultdir $pkg )
    local buildlog=$( get_logfile $pkg )

    echo "$pkg: installing rpms."
    local to_install=$( find  $resultdir  -type f )
    echo "$pkg: installing ${to_install[@]}."
    dnf --quiet -y install ${to_install[@]} && rm -rf $resultdir
    case $? in
        0) $scriptdir/lpf-packbuild 'set-state' $pkg 'OK'
           echo "$pkg: install completed, no errors"
           ;;
        *) $scriptdir/lpf-packbuild 'set-state' $pkg 'failed'
           echo "$pkg: installation errors (lpf log shows log)"
           ;;
    esac
}
 set -x

readonly pkgdirs=( $(get_arg_pkgdirs $@) )
readonly rpm_srcdir=$(rpm --eval %_sourcedir)
readonly rpmdir=$( rpm --eval %_rpmdir )


for pkgdir in ${pkgdirs[@]}; do
    source $scriptdir/../CONFIG
    [ -f $pkgdir/CONFIG ] && source $pkgdir/CONFIG
    pkg=${pkgdir##*/}
    spec=$pkgdir/$pkg.spec
    state=$( get_state $pkg )
    rm -rf $rpmdir/* 2>/dev/null || :
    cd $rpm_srcdir
    cp $PKG_DATA_DIR/$pkg/SOURCES/* $(pwd) || :
    echo "$pkg: downloading sources" && spectool -g $spec &&
        echo "$pkg: installing build dependencies" &&
        dnf --quiet builddep $spec &&
        echo "$pkg: building" && \
        rpmbuild ${rpmbuild_opts:-'-bb'} $spec && \
        echo "$pkg: storing results"  &&
        copy_results $pkg && state='install-wait' || state='failed'
    chmod 664 $buildlog
    echo "$pkg: build completed"
    install_rpms $pkg
done


# vim: set expandtab ts=4 sw=4:
