mkdist revision 47558
1#! /bin/bash -
2#
3# mkdist - make a distribution directory from a master manifest file
4#
5# usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-v] version
6#
7# SRCDIR defaults to src
8# MANIFEST defaults to $SRCDIR/MANIFEST
9#
10
11SRCDIR=src
12ROOTNAME=bash
13
14usage()
15{
16	echo usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-v] version 1>&2
17	exit 2
18}
19
20vmsg()
21{
22	if [ -n "$verbose" ]; then
23		echo mkdist: "$@"
24	fi
25}
26
27while getopts m:s:r:v name
28do
29	case $name in
30	m)	MANIFEST=$OPTARG ;;
31	s)	SRCDIR=$OPTARG ;;
32	r)	ROOTNAME=$OPTARG ;;
33	v)	verbose=yes ;;
34	?)	usage ;;
35	esac
36done
37
38: ${MANIFEST:=$SRCDIR/MANIFEST}
39
40vmsg using $MANIFEST
41
42shift $(( $OPTIND - 1 ))
43
44if [ $# -lt 1 ]; then
45	usage
46fi
47
48version=$1
49newdir=${ROOTNAME}-$version
50
51vmsg creating distribution for $ROOTNAME version $version in $newdir
52
53if [ ! -d $newdir ]; then
54	mkdir $newdir || { echo $0: cannot make directory $newdir 1>&2 ; exit 1; }
55fi
56
57dirmode=755
58filmode=644
59
60while read fname type mode
61do
62	[ -z "$fname" ] && continue
63
64	case "$fname" in
65	\#*)	continue ;;
66	esac
67
68	case "$type" in
69	d)	mkdir $newdir/$fname ;;
70	f)	cp -p $SRCDIR/$fname $newdir/$fname ;;
71	*)	echo "unknown file type $type" 1>&2 ;;
72	esac
73
74	if [ -n "$mode" ]; then
75		chmod $mode $newdir/$fname
76	fi
77
78done < $MANIFEST
79
80# cut off the `-alpha' in something like `2.0-alpha', leaving just the
81# numeric version
82#version=${version%%-*}
83
84#case "$version" in
85#*.*.*)	vers=${version%.*} ;;
86#*.*)	vers=${version} ;;
87#esac
88
89#echo $vers > $newdir/.distribution
90
91#case "$version" in
92#*.*.*)	plevel=${version##*.} ;;
93#*)	plevel=0 ;;
94#esac
95#[ -z "$plevel" ] && plevel=0
96#echo ${plevel} > $newdir/.patchlevel
97
98vmsg $newdir created
99
100exit 0
101