#! /bin/sh
# Copyright 2006 Kari Pahula <kaol@debian.org>
# License GNU GPL version 2 or, at your option, later, as published
# by Free Software Foundation.

usage () {
    cat >&2 <<EOF
usage: kloned-build [-d dir] [-o file] [--] directory
  -d dir	builds the kloned server in dir (default: /tmp/TMPNAME/)
  -o file	output the generated kloned server as file (default: ./kloned)
EOF
}
CLEANDIR=

OPTS=`getopt -o d:o: -n kloned-build -- "$@"`

if [ $? != 0 ] ; then
    usage
    exit 1
fi

eval set -- "$OPTS"

while :; do
    case "$1" in
	-d)
	BUILDDIR="$2"
	shift 2
	;;
	-o)
	OUTFILE="$2"
	shift 2
	;;
	--)
	shift;
	break;
	;;
	*)
	echo "kloned-build: internal error" 2>&1
	exit 1
	;;
    esac
done

SOURCEDIR="$1"

if [ "x$SOURCEDIR" = "x" ] ; then
    usage
    exit 1
fi

set -e

if [ "x$OUTFILE" = "x" ] ; then
    OUTFILE=kloned
fi
if echo "$OUTFILE" | egrep -cv '^[/~]' > /dev/null ; then
    OUTFILE="`pwd`/$OUTFILE"
fi
if echo "$SOURCEDIR" | egrep -cv '^[/~]' > /dev/null ; then
    SOURCEDIR="`pwd`/$SOURCEDIR"
fi

if [ "x$BUILDDIR" = "x" ] ; then
    BUILDDIR=`mktemp -d -t kloned-build.XXXXXX`
    CLEANDIR=1
fi
cd $BUILDDIR
if [ ! -e configure ] ; then
    ln -s . klone-source
    tar xf /usr/src/klone-source.tar.bz2 --bzip2
    rm klone-source
    QUILT_PATCHES=/usr/share/webserver-package/klone/patches/ quilt push -a
fi
cd site
klone -c import "$SOURCEDIR"
cd ..
make toolchain
./configure
make KLONE=/usr/bin/klone
mv src/kloned/kloned "$OUTFILE"

if [ "x$CLEANDIR" != "x" ] ; then
    cd /
    rm -rf $BUILDDIR
fi
