#!/bin/sh

. autorepo-config

logdir=$AUTOREPO_HOME/logs

exit_status=0

autorepo_calculate_unmets()
{
    local target difffile
    target=$1
    difffile=$2

    tmp=$TMPDIR
    aptconflocal=$tmp/apt.conf.$target
    srclistlocal=$tmp/sources.list.$target
    aptconfremote="$AUTOREPO_LOCAL_APT_DIR/apt.conf.$target"
    srclistremote="$AUTOREPO_LOCAL_APT_DIR/sources.list.$target"
    WORKDIR1=$tmp/WD1
    WORKDIR2=$tmp/WD2

cleanup_tmpdir()
    {
	rm -f $tmp/unmets.{old,new} $aptconflocal $srclistlocal
	rm -rf $WORKDIR1 $WORKDIR2
    }
    
    cleanup_tmpdir
    mkdir -p $WORKDIR1 $WORKDIR2

    cat > $aptconflocal <<EOF
Dir::Etc::main "/dev/null";
Dir::Etc::parts "/var/empty";
Dir::Etc::SourceParts "/var/empty";

Dir::Etc::sourcelist "$srclistlocal";

Debug::PkgProblemResolver "true";

// APT::Cache-Limit 100000000;
EOF
    cp $srclistremote $srclistlocal
    echo "rpm-dir file:$AUTOREPO_HASHER_PREFIX$target/repo ${target} hasher" >> $srclistlocal

    mkaptbox --apt-config=$aptconflocal $WORKDIR2
    $WORKDIR2/aptbox/apt-cache unmet > $tmp/unmets.new
    if [ -s $tmp/unmets.new ]; then
	mkaptbox --apt-config=$aptconfremote $WORKDIR1
	$WORKDIR1/aptbox/apt-cache unmet > $tmp/unmets.old
	diff -U0 $tmp/unmets.{old,new} > $difffile
    else
	rm -f $difffile
	touch $difffile
    fi
    cleanup_tmpdir
}

for arch in $GB_ARCH; do
    mkdir -p $logdir
    rm -f "$logdir"/unmets.diff.$arch
    [ -e "$logdir"/exclude.$arch ] || autorepo_calculate_unmets $arch "$logdir"/unmets.diff.$arch
    [ -s "$logdir"/unmets.diff.$arch ] && exit_status=4
done

if [ "$exit_status" -gt 0 ]; then
    echo "unmets test failed."
    exit $exit_status
fi

touch "$logdir"/unmets.success

exit $exit_status
