#!/bin/sh
#
# $XFree86: xc/programs/Xserver/hw/xfree86/etc/bindist/build-bindist,v 1.1.2.3 1997/07/27 02:41:18 dawes Exp $
#
#
# This script assumes that you have the `extract' binary installed somewhere
# in your path, as well as a link to it called `gnu-tar'.

Usage()
{
  echo `basename $0` [-l] version from-dir to-dir
  exit 1
}

listonly=NO

case $1 in
  -l)
    listonly=YES
    shift
    ;;
esac

if [ $# != 3 ]; then
  Usage
fi

VERS=$1
FROMDIR=$2
TODIR=$3

if [ ! -d $FROMDIR ]; then
  echo No such dir $FROMDIR
  exit 2
fi

if [ ! -d $TODIR ]; then
  echo No such dir $TODIR
  exit 2
fi

cd $TODIR
SUBDIRS="`find . -type d ! -name bindist -print`"

DIRFILE=dir
BINDIR=bindist
EXTRASFILE=extras
TAR="gnu-tar"
EXTRACT="extract"
TAROPTS="-c -v -z"
EXTRACTLOPTS="-t -v"
SUMFILE=SUMS.md5
LISTFILE=FILES

case `uname` in
Linux*)
  CKSUM=md5sum
  ;;
*)
  CKSUM=md5
  ;;
esac


GenList()
{
  (cd $TODIR/$BINDIR
    rm -f $SUMFILE $LISTFILE
    for i in *.tgz; do
      echo $i
      $CKSUM $i >> $SUMFILE
#      echo $i >> $LISTFILE
#      echo "------------" >> $LISTFILE
#      $TAR $TARLOPTS -f $i >> $LISTFILE
#      echo "" >> $LISTFILE
      $EXTRACT $EXTRACTLOPTS $i >> $LISTFILE
    done
    if [ -f $TODIR/$EXTRASFILE ]; then
      for i in `cat $TODIR/$EXTRASFILE`; do
	$CKSUM `basename $i` >> $SUMFILE
      done
    fi
  )
}

if [ ! -d $TODIR/$BINDIR ]; then
  mkdir $TODIR/$BINDIR
fi

if [ $listonly = YES ]; then
  GenList
  exit 0;
fi

for d in $SUBDIRS; do
  if [ ! -d $TODIR/$d ]; then
    echo No such dir $TODIR/$d
    exit 2
  fi
  (cd $TODIR/$d;
    if [ ! -f $DIRFILE ]; then
      echo No file $DIRFILE in $TODIR/$d
#      exit 3
    else
      PREFIX=`cat $DIRFILE`
      for i in *-list; do
        name=`basename $i -list`
        tarball=$VERS$name.tgz
        echo creating $tarball
        lfile="-T $TODIR/$d/$i"
        if [ -f $name-excl ]; then
          xfile="-X $TODIR/$d/$name-excl"
        else
          xfile=""
        fi
        (cd $FROMDIR/$PREFIX
          $TAR $TAROPTS -f $TODIR/$BINDIR/$tarball $lfile $xfile
        )
      done
    fi
    if [ -f $EXTRASFILE ]; then
      for i in `cat $EXTRASFILE`; do
	rm -f $TODIR/$BINDIR/`basename $i`
        cp $FROMDIR/$PREFIX/$i $TODIR/$BINDIR
      done
    fi
  )
done

GenList

exit 0
