mkdist revision 26497
126497Sache#! /bin/bash -
226497Sache#
326497Sache# mkdist - make a distribution directory from a master manifest file
426497Sache#
526497Sache# usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-v] version
626497Sache#
726497Sache# SRCDIR defaults to src
826497Sache# MANIFEST defaults to $SRCDIR/MANIFEST
926497Sache#
1026497Sache
1126497SacheSRCDIR=src
1226497SacheROOTNAME=bash
1326497Sache
1426497Sacheusage()
1526497Sache{
1626497Sache	echo usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-v] version 1>&2
1726497Sache	exit 2
1826497Sache}
1926497Sache
2026497Sachevmsg()
2126497Sache{
2226497Sache	if [ -n "$verbose" ]; then
2326497Sache		echo mkdist: "$@"
2426497Sache	fi
2526497Sache}
2626497Sache
2726497Sachewhile getopts m:s:r:v name
2826497Sachedo
2926497Sache	case $name in
3026497Sache	m)	MANIFEST=$OPTARG ;;
3126497Sache	s)	SRCDIR=$OPTARG ;;
3226497Sache	r)	ROOTNAME=$OPTARG ;;
3326497Sache	v)	verbose=yes ;;
3426497Sache	?)	usage ;;
3526497Sache	esac
3626497Sachedone
3726497Sache
3826497Sache: ${MANIFEST:=$SRCDIR/MANIFEST}
3926497Sache
4026497Sachevmsg using $MANIFEST
4126497Sache
4226497Sacheshift $(( $OPTIND - 1 ))
4326497Sache
4426497Sacheif [ $# -lt 1 ]; then
4526497Sache	usage
4626497Sachefi
4726497Sache
4826497Sacheversion=$1
4926497Sachenewdir=${ROOTNAME}-$version
5026497Sache
5126497Sachevmsg creating distribution for version $version in $newdir
5226497Sache
5326497Sacheif [ ! -d $newdir ]; then
5426497Sache	mkdir $newdir || { echo $0: cannot make directory $newdir 1>&2 ; exit 1; }
5526497Sachefi
5626497Sache
5726497Sachedirmode=755
5826497Sachefilmode=644
5926497Sache
6026497Sachewhile read fname type mode
6126497Sachedo
6226497Sache	[ -z "$fname" ] && continue
6326497Sache
6426497Sache	case "$fname" in
6526497Sache	\#*)	continue ;;
6626497Sache	esac
6726497Sache
6826497Sache	case "$type" in
6926497Sache	d)	mkdir $newdir/$fname ;;
7026497Sache	f)	cp -p $SRCDIR/$fname $newdir/$fname ;;
7126497Sache	*)	echo "unknown file type $type" 1>&2 ;;
7226497Sache	esac
7326497Sache
7426497Sache	if [ -n "$mode" ]; then
7526497Sache		chmod $mode $newdir/$fname
7626497Sache	fi
7726497Sache
7826497Sachedone < $MANIFEST
7926497Sache
8026497Sache# cut off the `-alpha' in something like `2.0-alpha', leaving just the
8126497Sache# numeric version
8226497Sache#version=${version%%-*}
8326497Sache
8426497Sache#case "$version" in
8526497Sache#*.*.*)	vers=${version%.*} ;;
8626497Sache#*.*)	vers=${version} ;;
8726497Sache#esac
8826497Sache
8926497Sache#echo $vers > $newdir/.distribution
9026497Sache
9126497Sache#case "$version" in
9226497Sache#*.*.*)	plevel=${version##*.} ;;
9326497Sache#*)	plevel=0 ;;
9426497Sache#esac
9526497Sache#[ -z "$plevel" ] && plevel=0
9626497Sache#echo ${plevel} > $newdir/.patchlevel
9726497Sache
9826497Sachevmsg $newdir created
9926497Sache
10026497Sacheexit 0
101