#!/bin/sh
# $NetBSD: report,v 1.8 2008/09/16 18:21:30 joerg Exp $
#
# Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
# All rights reserved.
#
# This code was developed as part of Google's Summer of Code 2007 program.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in
#    the documentation and/or other materials provided with the
#    distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.

. /usr/pkg/etc/pbulk.conf

set -e

if [ "${config_version}" != "0.68" ]; then
	echo "Your configuration has version ${config_version}."
	echo "This version of pbulk expects version 0.68."
	exit 1
fi

echo "Build reports..."
${report_script} ${loc}
${bzip2} -zc ${loc}/report > ${loc}/report.bz2
${report_html_script} ${loc} ${bulklog}
${report_txt_script} ${loc}

${report_graph_script} ${loc}
if [ -x "${neato}" ] && \
   [ "`grep -- '->' < ${loc}/report.dot | wc -l`" -lt ${report_graph_script_limit} ]; then
	${neato} -Tsvg -Goverlap=ortho -Gsplines=true \
	    -o ${loc}/report.svg ${loc}/report.dot
else
	rm -f ${loc}/report.svg
fi

while read line; do
	case "${line}" in
	BUILD_START_ISO=*)
		build_start_iso=${line#BUILD_START_ISO=}
		;;
	BUILD_START_DIR=*)
		build_start_dir=${line#BUILD_START_DIR=}
		;;
	PLATFORM=*)
		platform=${line#PLATFORM=}
	esac
done < ${loc}/status

if [ -z "${build_start_iso}" ] || [ -z "${build_start_dir}" ]; then
	echo "Could not find start time of build."
	exit 1
fi

echo "Sending report mail..."
cat ${loc}/report.txt | ${mail} -s "${report_subject_prefix} ${platform} ${build_start_iso}" ${report_recipients}

cd ${bulklog}
echo "Uploading report..."
{
	echo "meta/report.bz2"
	echo "meta/report.txt"
	echo "meta/report.html"
	echo "meta/report.dot"
	echo "meta/report.svg"
	echo "meta/status"
	while read pkg; do
		echo "${pkg}/pre-clean.log"
		echo "${pkg}/depends.log"
		echo "${pkg}/checksum.log"
		echo "${pkg}/configure.log"
		echo "${pkg}/build.log"
		echo "${pkg}/install.log"
		echo "${pkg}/package.log"
		echo "${pkg}/clean.log"
		echo "${pkg}/deinstall.log"
		echo "${pkg}/work.log"
	done < ${loc}/error
} | {
	echo "+ meta/"
	while read pkg; do
		echo "+ ${pkg}/"
	done < ${loc}/error

	while read file; do
		[ -f "$file" ] && echo "+ $file"
	done
	echo "- *"
} | ${rsync} --exclude-from=- ${report_rsync_args} . ${report_rsync_target}/${build_start_dir}
