#!/bin/bash
#Copyright 2001-2002 William Stearns <wstearns@pobox.com>
#Released under the GPL.

#set -x

#FIXME - where to make clean?

#ftp://ftp.xs4all.nl/pub/crypto/freeswan/snapshot.tar.gz

if [ -z "$FREESWANVERSION" ]; then
    echo FREESWANVERSION unset, skipping freeswan.
	exit
fi

exec 2>&1
PROJECT="freeswan"
BKLIBDIR="${BKLIBDIR:-/var/lib/buildkernel}/"
THISSCRIPT="$BKLIBDIR/bkrun-$PROJECT"   #We can't use $0 as this script is sourced; $0=/usr/bin/buildkernel

if [ -f $BKLIBDIR/${PROJECT}-options ]; then
	echo $PROJECT loading options
	. $BKLIBDIR/${PROJECT}-options
fi
if [ -n "$TEMPFREESWANVERSION" ]; then
	FREESWANVERSION=$TEMPFREESWANVERSION
fi
echo $PROJECT \(Version $FREESWANVERSION\) $1 called from Buildkernel

FREESWANSOURCEDIR=${FREESWANSOURCEDIR:-"/usr/src/freeswan-$FREESWANVERSION"}
FREESWANTAR=${FREESWANTAR:-"$BKSOURCEDIR/freeswan-$FREESWANVERSION.tar.gz"}
FREESWANTESTFILE=${FREESWANTESTFILE:-"$FREESWANSOURCEDIR/COPYING"}

case $1 in
POSTLOADVARS)
	if [ -n "`cat $BKLIBDIR/${PROJECT}-options 2>/dev/null | grep '^TEMPFREESWANVERSION='`" ]; then
		echo Stripping out old freeswan version.
		cat $BKLIBDIR/${PROJECT}-options | grep -v '^TEMPFREESWANVERSION=' >$BKLIBDIR/${PROJECT}-options.temp
		cat $BKLIBDIR/${PROJECT}-options.temp >$BKLIBDIR/${PROJECT}-options
		rm -f $BKLIBDIR/${PROJECT}-options.temp
	fi
	;;
POSTGETSOURCE)
	cd $BKSOURCEDIR
	if [ "$FREESWANVERSION" = "NEWESTBETA" ]; then
		echo -n 'Getting the freeswan NEWESTBETA snapshot '
		rm -f $BKSOURCEDIR/snapshot.tar.gz
		bkgetfile ftp ftp.xs4all.nl anonymous "$USER@$HOSTNAME" pub/crypto/freeswan snapshot.tar.gz
		TEMPFREESWANVERSION=`tar -tzf snapshot.tar.gz | sed -e 's@/.*@@' -e s'/freeswan\-//' | uniq`
		echo which is version $TEMPFREESWANVERSION .
		mv -f snapshot.tar.gz freeswan-$TEMPFREESWANVERSION.tar.gz
		echo >>$BKLIBDIR/${PROJECT}-options
		echo TEMPFREESWANVERSION=$TEMPFREESWANVERSION >>$BKLIBDIR/${PROJECT}-options
	elif [ ! -f $BKSOURCEDIR/freeswan-$FREESWANVERSION.tar.gz ]; then
		echo Getting freeswan version $FREESWANVERSION .
		rm -f $BKSOURCEDIR/freeswan-$FREESWANVERSION.tar.gz
		bkgetfile ftp ftp.xs4all.nl anonymous "$USER@$HOSTNAME" pub/crypto/freeswan freeswan-$FREESWANVERSION.tar.gz
	else
		echo $BKSOURCEDIR/freeswan-$FREESWANVERSION.tar.gz is already here.
	fi
	;;
POSTOPENSOURCE)
	if [ ! -f "$FREESWANTESTFILE" ]; then	#Open up source
		if [ -f "$FREESWANTAR" ]; then
			mkdir --parents $FREESWANSOURCEDIR
			cd $FREESWANSOURCEDIR ; cd ..
			case $FREESWANTAR in
			*.tar.gz)	tar -xzvf $FREESWANTAR												;;
			*.tar.bz2)	cat $FREESWANTAR | bunzip2 - | tar -xvf -							;;
			*.tar)		tar -xvf $FREESWANTAR												;;
			*)			echo Don\'t know how to open $FREESWANTAR \! ; bkbeep ; sleep 30		;;
			esac
			if [ ! -f "$FREESWANTESTFILE" ]; then
				echo Still no $FREESWANTESTFILE after attempting to open \! ; bkbeep ; sleep 30
			fi
		else
			echo Freeswan source is not yet opened and we don\'t have $FREESWANTAR \! ; bkbeep ; sleep 30
		fi
	fi
	if [ -n "$FREESWANSOURCEDIR" ] && [ -d "$FREESWANSOURCEDIR" ]; then
		cd $FREESWANSOURCEDIR >/dev/null
		if [ `pwd` != "$FREESWANSOURCEDIR" ]; then
			echo can\'t change directory, exiting
		else
			make insert
		fi
	fi
	;;
POSTCONFIGURE)
	if [ -n "$FREESWANSOURCEDIR" ]; then
		cd $FREESWANSOURCEDIR >/dev/null
		if [ `pwd` != "$FREESWANSOURCEDIR" ]; then
			echo can\'t change directory, exiting
		else
			make confcheck
			make programs
			make install
		fi
	fi
	;;
POSTKERNELBUILD)	:		;;
POSTMODULEBUILD)	:		;;
POSTINSTALL)		:		;;
POSTCLEAN)			:		;;
''|ALL)
	. $THISSCRIPT POSTLOADVARS
	. $THISSCRIPT POSTGETSOURCE
	. $THISSCRIPT POSTOPENSOURCE
	. $THISSCRIPT POSTCONFIGURE
	. $THISSCRIPT POSTKERNELBUILD
	. $THISSCRIPT POSTMODULEBUILD
	. $THISSCRIPT POSTINSTALL
	. $THISSCRIPT POSTCLEAN
	;;
*)	echo unrecognized phase $1 ;;
esac

