#!/bin/bash

#########################################################
# Build script to build git for the locker.

LOCKERNAME=git
LOCKER=/mit/${LOCKERNAME}
GIT_DIR=$LOCKER/src/git.git

attach ${LOCKERNAME}

die() {
    $SHELL
    exit 1;
}

usage () {
    echo "Usage: $0 [-n] [-s] [-S sysname] tree-ish"
    echo "Builds git from $GIT_DIR tree-ish"
    exit 2;
}

exittrap() { :; }
for sig in 1 2 13 15; do trap "exit $(($sig + 128))" $sig; done
trap 'exittrap' EXIT

DRYRUN=
SHARE=
ATHENA_SYS="${ATHENA_SYS:-$(machtype -S)}"
CHERRY_PICKS=""

set -- `getopt c:nsS: "$@"`
[ $? -eq 0 ] || usage

for opt
do
    case "$opt" in
        -c)
            CHERRY_PICKS="${CHERRY_PICKS} $2"; shift 2 ;;
        -n)
            DRYRUN=1; shift ;;
        -s)
            SHARE=1; shift ;;
        -S)
            ATHENA_SYS="$2"; shift 2 ;;
        --)
            shift; break ;;
    esac
done
TREEISH=$1

test -z "$TREEISH" && usage
test -z "$ATHENA_SYS" && die "No sysname specified or found. Use -S to specify a sysname."

if [ -z "$GIT" ]; then
    GIT=$LOCKER/bin/git
    if [ ! -x $GIT ]; then
        GIT=$(which git)
    else
        $GIT --help >/dev/null 2>/dev/null || GIT=$(which git)
    fi
fi
test -x "$GIT" || die "No git executable found."

if [ ! -x "$PYTHON_PATH" ]; then
    PYTHON_PATH=`which python`
    test -x "$PYTHON_PATH" || die "No python executable found."
fi
export PYTHON_PATH

if [ "$(uname)" = "SunOS" ]; then
    MAKE=/afs/sipb.mit.edu/project/git/builds/gmake-4.4/@sys/bin/make
    TAR=gtar
    SED=sed
else
    MAKE=make
    TAR=tar
    SED=sed
fi

(
    TARGET=$LOCKER/builds/git-$VERS
    PREFIX=$TARGET/common
    EPREFIX=$TARGET/$ATHENA_SYS

    opt_rpath="-Wl,-R"
    [ $(uname) = "SunOS" ] && opt_rpath="-R"

    echo "Building git version $VERS for $ATHENA_SYS."

    LOCKER_CURL=$LOCKER/curl/$ATHENA_SYS
    if [ -d $LOCKER_CURL ]; then
        CURL="--with-curl=${LOCKER_CURL}"
        CURL_CONFIG=${LOCKER_CURL}/bin/curl-config
        export CURL_CONFIG
    else
        CURL="--with-curl"
    fi

    LOCKER_ZLIB=$LOCKER/zlib/$ATHENA_SYS
    if [ -d $LOCKER_ZLIB ]; then
        ZLIB="--with-zlib=${LOCKER_ZLIB}"
        CPPFLAGS="${CPPFLAGS} -I${LOCKER_ZLIB}/include"
        LDFLAGS="${LDFLAGS} -L${LOCKER_ZLIB}/lib ${opt_rpath}${LOCKER_ZLIB}/lib"
    fi

    ATHENA_INCLUDES="/usr/athena/include"
    if [ -d $ATHENA_INCLUDES ]; then
        CPPFLAGS="${CPPFLAGS} -I${ATHENA_INCLUDES}"
    fi

    ATHENA_LIBS="/usr/athena/lib"
    if [ -d $ATHENA_LIBS ]; then
        LDFLAGS="${LDFLAGS} -L${ATHENA_LIBS} ${opt_rpath}${ATHENA_LIBS}"
    fi

    export CPPFLAGS
    export LDFLAGS

    $SHELL
)
