#!/bin/sh
##
#  Korinf project
#
#  Check built packages
#
#  Copyright (c) Etersoft <http://etersoft.ru> 2005-2009
#  Copyright (c) Vitaly Lipatov <lav@etersoft.ru> 2009
#
#  This program is free software: you can redistribute it and/or modify
#  it under the terms of the GNU Affero General Public License as published by
#  the Free Software Foundation, either version 3 of the License, or
#  (at your option) any later version.

#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU Affero General Public License for more details.

#  You should have received a copy of the GNU Affero General Public License
#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
##

# check package existing by REBUILDLIST
# used TARGETPATH
check_built_package()
{
	assert_var TARGETPATH BUILDSRPM

	local NAME FILEDATE FILESIZE BASENAME FILENAME DESTDIR

	local BUILDNAME=$1

	for i in $(get_distro_list $REBUILDLIST) ; do

		NAME=$i
		ST="   "
		DESTDIR=$TARGETPATH/$i
		test -L "$DESTDIR" && NAME="$NAME [L]"
		FILENAME=$(get_bin_package "$DESTDIR" $BUILDNAME check)

		if [ -r "$FILENAME" ] ; then
			FILEDATE=`stat -c"%y" $FILENAME | sed -e "s|:[0-9][0-9]\..*$||"`
			FILESIZE=`stat -c"%s" $FILENAME`
			BASENAME=`basename $FILENAME`
			[ "$BUILDSRPM" -nt "$FILENAME" ] && ST="OBS"
			is_autobuild_failed && ST="ABF"
			is_build_failed && ST="FIL"
		else
			if [ -d "$DESTDIR/" ] ; then
				FILEDATE="MISSED"
			else
				FILEDATE="MISDIR"
			fi
			ST="MIS"
			FILESIZE=""
			BASENAME="$BUILDNAME"
		fi

		printf "%22s: %17s  %8s" "$NAME" "$FILEDATE" "$FILESIZE"
		[ "$ST" = "OBS" ] && SETCOLOR_WARNING || SETCOLOR_FAILURE
		printf " %s " "$ST"
		SETCOLOR_NORMAL
		printf "%s" "$BASENAME"
		test -L "$DESTDIR" && echo -n " (link to `readlink $DESTDIR`)"
		echo
	done
	echo "Legend: MIS - missed, OBS - obsoleted build, ABF - autobuild failed, FIL - manual build failed"
}

# args: BUILDNAME
# use external $BUILDSRPM $DESTDIR $MAINFILESLIST
do_need_build_package()
{
	assert_var DESTDIR

	local BUILDNAME=$1
	local FILENAME

	FILENAME=$(get_bin_package "$DESTDIR" $BUILDNAME check)
	# (extra dir already checked in get_bin_package)
	
	if [ -n "$ADEBUG" ]
	then
	    debug_print_var FILENAME BUILDSRPM
	    debug_print_backtrace
	fi
	
	[ -n "$BUILDSRPM" ] || fatal "BUILDSRPM is empty"
	if [ -r "$FILENAME" ] ; then
		[ "$BUILDSRPM" -nt "$FILENAME" ] || return 1
	elif [ -n "$FILENAME" ] ; then
		warning "Check package files, possible duplicates: $FILENAME"
	fi

	return 0
}
