xref: /netbsd-src/external/gpl3/gdb.old/dist/readline/readline/support/mkdist (revision 7d62b00eb9ad855ffcd7da46b41e23feb5476fac)
1*7d62b00eSchristos#! /bin/bash -
2*7d62b00eSchristos#
3*7d62b00eSchristos# mkdist - make a distribution directory from a master manifest file
4*7d62b00eSchristos#
5*7d62b00eSchristos# usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-t] [-v] version
6*7d62b00eSchristos#
7*7d62b00eSchristos# SRCDIR defaults to src
8*7d62b00eSchristos# MANIFEST defaults to $SRCDIR/MANIFEST
9*7d62b00eSchristos#
10*7d62b00eSchristos# Chet Ramey
11*7d62b00eSchristos# chet@po.cwru.edu
12*7d62b00eSchristos
13*7d62b00eSchristos# Copyright (C) 1996-2002 Free Software Foundation, Inc.
14*7d62b00eSchristos#
15*7d62b00eSchristos#   This program is free software: you can redistribute it and/or modify
16*7d62b00eSchristos#   it under the terms of the GNU General Public License as published by
17*7d62b00eSchristos#   the Free Software Foundation, either version 3 of the License, or
18*7d62b00eSchristos#   (at your option) any later version.
19*7d62b00eSchristos#
20*7d62b00eSchristos#   This program is distributed in the hope that it will be useful,
21*7d62b00eSchristos#   but WITHOUT ANY WARRANTY; without even the implied warranty of
22*7d62b00eSchristos#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23*7d62b00eSchristos#   GNU General Public License for more details.
24*7d62b00eSchristos#
25*7d62b00eSchristos#   You should have received a copy of the GNU General Public License
26*7d62b00eSchristos#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
27*7d62b00eSchristos#
28*7d62b00eSchristos
29*7d62b00eSchristosSRCDIR=src
30*7d62b00eSchristosROOTNAME=bash
31*7d62b00eSchristos
32*7d62b00eSchristosusage()
33*7d62b00eSchristos{
34*7d62b00eSchristos	echo usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-t] [-v] version 1>&2
35*7d62b00eSchristos	exit 2
36*7d62b00eSchristos}
37*7d62b00eSchristos
38*7d62b00eSchristosvmsg()
39*7d62b00eSchristos{
40*7d62b00eSchristos	if [ -n "$verbose" ]; then
41*7d62b00eSchristos		echo mkdist: "$@"
42*7d62b00eSchristos	fi
43*7d62b00eSchristos}
44*7d62b00eSchristos
45*7d62b00eSchristoswhile getopts m:s:r:tv name
46*7d62b00eSchristosdo
47*7d62b00eSchristos	case $name in
48*7d62b00eSchristos	m)	MANIFEST=$OPTARG ;;
49*7d62b00eSchristos	s)	SRCDIR=$OPTARG ;;
50*7d62b00eSchristos	r)	ROOTNAME=$OPTARG ;;
51*7d62b00eSchristos	t)	maketar=yes ;;
52*7d62b00eSchristos	v)	verbose=yes ;;
53*7d62b00eSchristos	?)	usage ;;
54*7d62b00eSchristos	esac
55*7d62b00eSchristosdone
56*7d62b00eSchristos
57*7d62b00eSchristos: ${MANIFEST:=$SRCDIR/MANIFEST}
58*7d62b00eSchristos
59*7d62b00eSchristosvmsg using $MANIFEST
60*7d62b00eSchristos
61*7d62b00eSchristosshift $(( $OPTIND - 1 ))
62*7d62b00eSchristos
63*7d62b00eSchristosif [ $# -lt 1 ]; then
64*7d62b00eSchristos	usage
65*7d62b00eSchristosfi
66*7d62b00eSchristos
67*7d62b00eSchristosversion=$1
68*7d62b00eSchristosnewdir=${ROOTNAME}-$version
69*7d62b00eSchristos
70*7d62b00eSchristostarfile=${newdir}.tar
71*7d62b00eSchristos
72*7d62b00eSchristosvmsg creating distribution for $ROOTNAME version $version in $newdir
73*7d62b00eSchristos
74*7d62b00eSchristosif [ ! -d $newdir ]; then
75*7d62b00eSchristos	mkdir $newdir || { echo $0: cannot make directory $newdir 1>&2 ; exit 1; }
76*7d62b00eSchristosfi
77*7d62b00eSchristos
78*7d62b00eSchristosdirmode=755
79*7d62b00eSchristosfilmode=644
80*7d62b00eSchristos
81*7d62b00eSchristoswhile read fname type mode
82*7d62b00eSchristosdo
83*7d62b00eSchristos	[ -z "$fname" ] && continue
84*7d62b00eSchristos
85*7d62b00eSchristos	case "$fname" in
86*7d62b00eSchristos	\#*)	continue ;;
87*7d62b00eSchristos	esac
88*7d62b00eSchristos
89*7d62b00eSchristos	case "$type" in
90*7d62b00eSchristos	d)	mkdir $newdir/$fname ;;
91*7d62b00eSchristos	f)	cp -p $SRCDIR/$fname $newdir/$fname ;;
92*7d62b00eSchristos	s)	ln -s $mode $newdir/$fname ; mode= ;;		# symlink
93*7d62b00eSchristos	l)	ln $mode $newdir/$fname ; mode= ;;		# hard link
94*7d62b00eSchristos	*)	echo "unknown file type $type" 1>&2 ;;
95*7d62b00eSchristos	esac
96*7d62b00eSchristos
97*7d62b00eSchristos	if [ -n "$mode" ]; then
98*7d62b00eSchristos		chmod $mode $newdir/$fname
99*7d62b00eSchristos	fi
100*7d62b00eSchristos
101*7d62b00eSchristosdone < $MANIFEST
102*7d62b00eSchristos
103*7d62b00eSchristos# cut off the `-alpha' in something like `2.0-alpha', leaving just the
104*7d62b00eSchristos# numeric version
105*7d62b00eSchristos#version=${version%%-*}
106*7d62b00eSchristos
107*7d62b00eSchristos#case "$version" in
108*7d62b00eSchristos#*.*.*)	vers=${version%.*} ;;
109*7d62b00eSchristos#*.*)	vers=${version} ;;
110*7d62b00eSchristos#esac
111*7d62b00eSchristos
112*7d62b00eSchristos#echo $vers > $newdir/.distribution
113*7d62b00eSchristos
114*7d62b00eSchristos#case "$version" in
115*7d62b00eSchristos#*.*.*)	plevel=${version##*.} ;;
116*7d62b00eSchristos#*)	plevel=0 ;;
117*7d62b00eSchristos#esac
118*7d62b00eSchristos#[ -z "$plevel" ] && plevel=0
119*7d62b00eSchristos#echo ${plevel} > $newdir/.patchlevel
120*7d62b00eSchristos
121*7d62b00eSchristosvmsg $newdir created
122*7d62b00eSchristos
123*7d62b00eSchristosif [ -n "$maketar" ]; then
124*7d62b00eSchristos	tar cf ${tarfile} $newdir
125*7d62b00eSchristos	gzip $tarfile
126*7d62b00eSchristos	vmsg ${tarfile}.gz created
127*7d62b00eSchristosfi
128*7d62b00eSchristos
129*7d62b00eSchristosexit 0
130