#!/bin/sh

. ./scripts/parse-config

if [ "$arch" = any ] ; then
	echo
	echo "ERROR: No architecture configured."
	echo
	echo "Type './scripts/Help Config' for details."
	echo
	exit 1
fi

if [ -z "$1" ] ; then
	echo
	echo "Usage: ./scripts/Build-Subdist  subdist-name"
	echo
	echo "Type './scripts/Help Build-Subdist' for details."
	echo
	exit 1
fi

if [ ! -f "subdists/$1/build-subdist.sh" ] ; then
	echo "File not found: subdists/$1/build-subdist.sh" ; exit 1
fi

sd_name=$1
sd_srcdir=$base/subdists/$sd_name
sd_instdir=$base/rock-$arch-$rockver/subdists
sd_infodir=$base/rock-$arch-$rockver/info
sd_pkgdir=$base/rock-$arch-$rockver/base-pkgs

mkdir -p $sd_instdir
cp subdists/readme.txt $sd_instdir/README

date "+%n== %D %T =[S]=> Building subdistribution $sd_name."

umount src/*.mnt src/mnt src/*/*.mnt src/*/mnt 2> /dev/null
rm -rf src/ ; mkdir -p src

{
	trap 'exit 1' INT  ;  set -e
	. $sd_srcdir/build-subdist.sh
	touch $sd_infodir/logs/s-$sd_name.log
} 2>&1 | {
	trap '' INT
	mkdir -p $sd_infodir/logs
	rm -f $sd_infodir/logs/s-$sd_name.{out,log,err}
	echo "Building. Writing output to rock-$arch-$rockver/info/logs/s-$sd_name.out"
	if [ $dontprintlogs = 1 ]
	then cat > $sd_infodir/logs/s-$sd_name.out
	else tee $sd_infodir/logs/s-$sd_name.out ; fi
}

umount src/*.mnt src/*/*.mnt 2> /dev/null

if [ -f $sd_infodir/logs/s-$sd_name.log ] ; then
	rm -rf src/ ; mkdir -p src
	echo "rock-$arch-$rockver/info/logs/s-$sd_name.out -> s-$sd_name.log"
	mv $sd_infodir/logs/s-$sd_name.out $sd_infodir/logs/s-$sd_name.log
	date "+== %D %T =[S]=> Finished building subdistribution $sd_name."
	exit 0
else
	if [ $dontprintlogs = 1 ] ; then
		echo "`tail < $sd_infodir/logs/s-$sd_name.out`" | \
			sed 's,^,> ,; s/^\(.\{70\}\).\{3,\}/\1 ../'
	fi
	echo "rock-$arch-$rockver/info/logs/s-$sd_name.out -> s-$sd_name.err"
	mv $sd_infodir/logs/s-$sd_name.out $sd_infodir/logs/s-$sd_name.err
	date "+== %D %T =[S]=> Aborted building subdistribution $sd_name."
	exit 1
fi
