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

#set -x

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

exec 2>&1
PROJECT="cml2"
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 "$TEMPCML2VERSION" ]; then
	CML2VERSION=$TEMPCML2VERSION
fi
echo $PROJECT \(Version $CML2VERSION\) $1 called from Buildkernel

CML2SOURCEDIR=${CML2SOURCEDIR:-"/usr/src/cml2-$CML2VERSION"}
CML2TAR=${CML2TAR:-"$BKSOURCEDIR/cml2-$CML2VERSION.tar.gz"}
CML2TESTFILE=${CML2TESTFILE:-"$CML2SOURCEDIR/cmlconfigure.py"}

case $1 in
POSTLOADVARS)
	if [ -n "`cat $BKLIBDIR/${PROJECT}-options 2>/dev/null | grep '^TEMPCML2VERSION='`" ]; then
		echo Stripping out old $PROJECT version.
		cat $BKLIBDIR/${PROJECT}-options | grep -v '^TEMPCML2VERSION=' >$BKLIBDIR/${PROJECT}-options.temp
		cat $BKLIBDIR/${PROJECT}-options.temp >$BKLIBDIR/${PROJECT}-options
		rm -f $BKLIBDIR/${PROJECT}-options.temp
	fi
	;;
POSTGETSOURCE)
	cd $BKSOURCEDIR
	#Figure out what the newest beta or stable version is.
	if [ "$CML2VERSION" = "NEWESTSTABLE" ]; then
		echo -n 'Getting the CML2 NEWESTSTABLE snapshot '
		rm -f $BKSOURCEDIR/index.html $BKSOURCEDIR/cml2-index.html
		bkgetfile http www.tuxedo.org '' '' ~esr/kbuild index.html
		mv -f index.html cml2-index.html
		#Parse the html to find a version number.
		TEMPCML2VERSION=`cat cml2-index.html | grep 'can download a copy' | sed -e 's/.*cml2\-//' -e 's/\.tar\.gz.*//'`
		echo which is version $TEMPCML2VERSION .
		rm -f $BKSOURCEDIR/cml2-$TEMPCML2VERSION.tar.gz
		bkgetfile http www.tuxedo.org '' '' ~esr/kbuild cml2-$TEMPCML2VERSION.tar.gz
		echo >>$BKLIBDIR/${PROJECT}-options
		echo TEMPCML2VERSION=$TEMPCML2VERSION >>$BKLIBDIR/${PROJECT}-options
	elif [ ! -f $BKSOURCEDIR/cml2-$CML2VERSION.tar.gz ]; then
		echo Getting CML2 version $CML2VERSION .
		rm -f $BKSOURCEDIR/cml2-$CML2VERSION.tar.gz
		bkgetfile http www.tuxedo.org '' '' ~esr/kbuild cml2-$CML2VERSION.tar.gz
	else
		echo $BKSOURCEDIR/cml2-$CML2VERSION.tar.gz is already here.
	fi
	;;
POSTOPENSOURCE)
	#The kernel source is opened, patches applied, and .config has been restored
	if [ ! -f "$CML2TESTFILE" ]; then	#Open up source
		if [ -f "$CML2TAR" ]; then
			mkdir --parents $CML2SOURCEDIR
			cd $CML2SOURCEDIR ; cd ..
			case $CML2TAR in
			*.tar.gz)	tar -xzvf $CML2TAR						;;
			*.tar.bz2)	cat $CML2TAR | bunzip2 - | tar -xvf -				;;
			*.tar)		tar -xvf $CML2TAR						;;
			*)		echo Don\'t know how to open $CML2TAR \! ; bkbeep ; sleep 30	;;
			esac
			if [ ! -f "$CML2TESTFILE" ]; then
				echo Still no $CML2TESTFILE after attempting to open \! ; bkbeep ; sleep 30
			fi
		else
			echo CML2 source is not yet opened and we don\'t have $CML2TAR \! ; bkbeep ; sleep 30
		fi
	fi
	if [ -f "$CML2TESTFILE" ]; then
		cd $CML2SOURCEDIR
		./install-cml2 /usr/src/linux
		#Force cml2 to convert existing .config
		#FIXME - back up and restore config.out instead
		cd /usr/src/linux

		#Can't use make oldconfig here as it asks the user for response.
		#make oldconfig
		if [ ! -f config.out ]; then
			cat .config | sed -e 's/#.*//' | grep -v '^$' >config.out
		fi
	fi
	;;
POSTCONFIGURE)		:	;;
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

