#!/bin/sh -u

set -o pipefail

export LANG=C
export LANGUAGE=C

PROG=`basename $0`

show_help()
{
#  -q, --quiet                       try to be more quiet;
#  -v, --verbose                     print a message for each action;
	cat <<EOF
$PROG - script perform an atomic build.
Usage: $PROG [options]
Options:
  -d,--drop        drop package at first unsuccessful build
  -n, --number N   set hasher number (for parallel builds)
  -h, --help       show this text and exit.
EOF
	exit
}
usage()
{
    show_help
    exit 1
}

use_hashercache=
hashernumber=
rapid_drop_mode=0
. autorepo-build-config

TEMP=`getopt -n $PROG -o Cdhn: -l drop,use-hasher-cache,no-use-hasher-cache,help,number: -- "$@"` || usage
eval set -- "$TEMP"

while :; do
    case "$1" in
	-d|--drop) rapid_drop_mode=1
		;;
	-C|--use-hasher-cache) use_hashercache=1
		;;
	--no-use-hasher-cache) use_hashercache=
		;;
	-n|--number) hashernumber=$2; shift;
		;;
	-h|--help) show_help
		;;
	--) shift; break
		;;
	*) echo "Error parsing arguments. see --help" ; exit 1
		;;
    esac
    shift
done

. autorepo-build-sh-functions

# set logdir
autorepo_set_logdir
rm -rf "$logdir"
mkdir -p "$logdir"

for arch in $GB_ARCH; do
    set_hasher_dir "$arch"
    rm -rf "$current_hasherdir"/repo
    if ! arch_autorepo_build $arch "$@"; then
	if [ "$rapid_drop_mode" -gt 0 ]; then
	    echo "rebuild failed."
	    exit 3
	fi
    fi
    arch_autorepo_calculate_unmets $arch && \
    arch_autorepo_install_test $arch ||:
done

autorepo_merge_arch_success
exit $?
