#!/bin/bash

#
# Copyright (c) 2018 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#

#
# Build first src.rpms, then rpms, from source, or from a downloaded tarball
# or src.rpm plus our additional patches.
#
# This program is a wrapper around build-pkgs-parallel and build-pkgs-serial
#

BUILD_PKGS_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}" )" )"

usage () {
    echo ""
    echo "Usage: "
    echo "   Create source and binary rpms:"
    echo "   build-pkgs [--serial] [args]"
}

SERIAL_FLAG=0
RC=0

for arg in "$@"; do
    case "$1" in
        --serial) SERIAL_FLAG=1 ;;
    esac
done

which mock_tmpfs_umount >> /dev/null
if [ $? -ne 0 ]; then
    SERIAL_FLAG=1
fi

export TMPDIR=$MY_WORKSPACE/tmp
mkdir -p $TMPDIR

# Make sure we have a dependency cache
DEP_CACHE="$MY_REPO/cgcs-tis-repo/dependancy-cache"

BUILD_TYPES=(" std rt installer containers")
DEP_RPM_TYPE=(" RPMS SRPMS ")
DEP_DELTAS="$DEP_CACHE/deltas-rpms-srpms"

make_cache_current_rpms () {

    FILE=${1}

    if [ -z "${FILE}" ]; then
        echo "File not specified"
        return;
    fi

    if [ -f ${FILE} ]; then
        rm ${FILE}
    fi

    for build_type in $BUILD_TYPES; do
        for rpm_type in $DEP_RPM_TYPE; do

            if  [ -d $MY_WORKSPACE/$build_type/rpmbuild/$rpm_type/repodata ]; then
                current=$MY_WORKSPACE/$build_type/rpmbuild/$rpm_type/

                repoquery \
                    --repofrompath=$build_type-$rpm_type,$current \
                    --repoid=$build_type-$rpm_type --arch=noarch,src,x86_64 -a \
                    --qf "%-10{repoid} %-40{name} %-10{version} %-10{release}" \
                    >> ${FILE}
            fi
        done;
    done;
}

if [ ! -d $DEP_CACHE ]; then
    echo "Dependency cache is missing.  Creating it now."
    $BUILD_PKGS_DIR/create_dependancy_cache.py > $MY_WORKSPACE/create_dependancy_cache.log
    make_cache_current_rpms $DEP_DELTAS
    echo "Dependency cache created."
else
    DEP_TMP=$(mktemp)
    make_cache_current_rpms $DEP_TMP
    if diff $DEP_DELTAS $DEP_TMP > /dev/null; then
        echo "No changes for stx projects"
        rm $DEP_TMP
    else
        echo "Changes detected for stx projects"
        echo "Recreating dependecy cache now."
        mv $DEP_TMP $DEP_DELTAS
        $BUILD_PKGS_DIR/create_dependancy_cache.py > $MY_WORKSPACE/create_dependancy_cache.log
        echo "Dependency cache recreated."
    fi
fi

if [ $SERIAL_FLAG -eq 1 ]; then
    echo "build-pkgs-serial $@"
    build-pkgs-serial "$@"
    RC=$?
else
    echo "build-pkgs-parallel $@"
    build-pkgs-parallel "$@"
    RC=$?
fi

exit $RC