#!/bin/bash

# athena-tarball: Pull Athena sources out of the dev.mit.edu CVS 
# repository, and pack them into a tarball for later Debian packing.
# Anders Kaseorg <andersk@mit.edu>

set -e

#cvs="cvs -d /afs/dev.mit.edu/source/repository -R"
cvs="cvs -d /afs/athena.mit.edu/astaff/project/moiradev/repository -R"

if [ $# -lt 2 ]; then
    echo "Usage: $0 <debname> <package> [<version>]" >&2
    echo "e.g. $0 libathdir athena/lib/athdir 9.4.0" >&2
    exit 2
fi
debname=$1
package=$2

tmpdir=$(mktemp -td "athena-tarball.XXXXXXXXXX")
trap 'rm -rf "$tmpdir"' EXIT

echo "=== Checking out $package:"

pushd "$tmpdir" >/dev/null
$cvs co $cvs_co_options -d "$debname" "$package"
use_autoconf_pack=0
if [ -f "$debname/configure.in" -o -f "$debname/configure.ac" ]; then
    if [ ! -f "$debname/aclocal.m4" -a ! -f "$debname/install-sh" -a ! -f "$debname/mkinstalldirs" -a ! -f "$debname/config.guess" -a ! -f "$debname/config.sub" ]; then
	use_autoconf_pack=1
    else
	echo "NOTE: autoconf files included in package already?  Weird." >&2
    fi
fi
if [ $use_autoconf_pack -eq 1 ]; then
    $cvs co packs/build/autoconf packs/build/aclocal.m4
fi
popd >/dev/null

if [ -z "$3" ]; then
    echo "=== Finding version of $package:"

    version=ERROR

    exec 3<"$(dirname "$0")/athena-cvs-tags.txt"
    pushd "$tmpdir" >/dev/null
    while
	read tag tversion <&3
	[ -n "$tag" ] && [ -z "$($cvs diff -u -r "$tag" "$debname")" ]
    do
	version=$tversion
    done
    popd >/dev/null
    exec 3<&-
else
    echo "=== Using $package version $3"
    version="$3"
fi

if [ "$version" == "ERROR" ]; then
    echo "$0: could not determine version of $package" >&2
    exit 1
fi

echo "version $version"

dir=${debname}-${version}
tarball=debathena-${debname}_${version}.orig.tar.gz

echo "=== Creating $tarball:"

pushd "$tmpdir" >/dev/null
mv "$tmpdir/$debname" "$dir"
if [ $use_autoconf_pack -eq 1 ]; then
    grep -qs ATHENA_ "$dir/configure.in" && mv packs/build/aclocal.m4 "$dir"
    grep -qs AC_PROG_INSTALL "$dir/configure.in" "$dir/configure.ac" && mv packs/build/autoconf/install-sh "$dir"
    grep -qs mkinstalldirs $(find "$dir" -name Makefile.in) && mv packs/build/autoconf/mkinstalldirs "$dir"
    mv packs/build/autoconf/config.guess packs/build/autoconf/config.sub "$dir"
fi
popd >/dev/null

tar --exclude-from="$(dirname "$0")/athena-tarball.exclude" -C "$tmpdir" -cvf - "$dir" | gzip -9 >"$tmpdir/$tarball"

mv "$tmpdir/$tarball" .

echo "=== Done."
