#!/bin/bash
ARCH=$1
workdir=`pwd`

get_buildable_tmp(){
mysql -h192.168.252.248 -ubuildd -pbuildd-password buildd <<EOF
SELECT pkg_v FROM $ARCH WHERE status='waiting' LIMIT 1;
EOF
}

get_status_summary(){
	logfile="$workdir/$pkg_v/*_mips64el-*.build"
	status=$(grep 'Status: ' $logfile | cut -d' ' -f2 | head -1)
	if [ "$status" != "successful" ]; then
		fstage=$(grep 'Fail-Stage: ' $logfile | cut -d' ' -f2 | head -1)
		if [ -z $fstage ]; then
			fstage="grep-error"
		else
			if [ -n "$(grep -i "error while loading shared libraries" $logfile)" ]; then
				summary="err-ld-libs"
			elif [ -n "$(grep -i "undefined reference" $logfile)" ]; then
				summary="undef-ref"
			elif [ -n "$(grep -i "operation not supported" $logfile)" ]; then
				summary="op-n-support"
			elif [ -n "$(grep -i "directory not empty" $logfile)" ]; then
				summary="dir-n-empty"
			elif [ -n "$(grep -i "no such file or directory" $logfile)" ]; then
				summary="n-file-dir"
			fi
		fi
	fi
	if [ -f $workdir/$pkg_v/*_mips64el.mips64el.upload ]; then
		status="uploaded"
	fi
}

mark_package(){
if [ -n "$1" ] && [ -n "$2" ] && [ -n "$3" ] && [ -n "$4" ]; then
mysql -h192.168.252.248 -ubuildd -pbuildd-password buildd <<EOF
UPDATE $ARCH SET status='$2', fstage='$3', summary='$4' WHERE pkg_v='$1';
EOF
elif [ -n "$1" ] && [ -n "$2" ] && [ -n "$3" ]; then
mysql -h192.168.252.248 -ubuildd -pbuildd-password buildd <<EOF
UPDATE $ARCH SET status='$2', fstage='$3' WHERE pkg_v='$1';
EOF
elif [ -n "$1" ] && [ -n "$2" ]; then
mysql -h192.168.252.248 -ubuildd -pbuildd-password buildd <<EOF
UPDATE $ARCH SET status='$2' WHERE pkg_v='$1';
EOF
fi
}

set_package(){
mysql -h192.168.252.248 -ubuildd -pbuildd-password buildd <<EOF
UPDATE $ARCH SET buildd='$2' WHERE pkg_v='$1';
EOF
}

get_buildable(){
	get_buildable_tmp |grep -v pkg_v
}

build_package(){
	pkg_v=$1
	rm -rf $pkg_v; mkdir -p $pkg_v; cd $pkg_v
	mark_package $pkg_v building
	set_package $pkg_v `hostname`
	DEB_BUILD_PARALLEL=1 DEB_BUILD_OPTIONS="parallel=4" sbuild -q --arch=$ARCH --dist=sid $pkg_v >/dev/null
	dput -u mips64el *_mips64el.changes > /dev/null
	get_status_summary
	mark_package $pkg_v $status $fstage $summary
	scp ${pkg_v}_${ARCH}-*.build `hostname`@192.168.252.248:/home/repo/buildlog/ > /dev/null
}

[ -z "$(ps aux | grep 'sbuild -q' | grep -v grep)" ] || exit 0
PKG_V="$(get_buildable)"
[ -n "$PKG_V" ] && build_package $PKG_V
