summaryrefslogtreecommitdiffstats
path: root/src/util/mkrel
blob: 4c96302bd589698f1ab8df8194a740ec6e04fcb8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/bin/sh
repository=:kserver:cvs.mit.edu:/cvs/krbdev
dodoc=t
dosrc=t
checkout=t
while test $# -gt 2; do
	case $1 in
	--srconly)
		dodoc=nil;;
	--doconly)
		dosrc=nil;;
	--repository)
		shift; repository=$1;;
	--nocheckout)
		checkout=nil;;
	esac
	shift
done
if test $# -lt 2; then
	echo "usage: $0 [opts] release-tag release-dir"
	exit 1
fi

reltag=$1
reldir=$2

relmajor=0
relminor=0
relpatch=0
reldate=`date +%Y%m%d`

case "$reldir" in
*/*)
	echo "release-dir may not contain slashes."
	exit 1
	;;
*" "*|*"	"*)
	echo "release-dir may  not contain whitespace."
	exit 1
	;;
krb5-*.*.*)
	release=`echo $reldir|sed -e 's/krb5-//'`
	relmajor=`echo $release|awk -F. '{print $1}'`
	relminor=`echo $release|awk -F. '{print $2}'`
	relpatch=`echo $release|awk -F. '{print $3}'`
	;;
krb5-*.*)
	release=`echo $reldir|sed -e 's/krb5-//'`
	relmajor=`echo $release|awk -F. '{print $1}'`
	relminor=`echo $release|awk -F. '{print $2}'`
	;;
krb5-current)
	release=current-$reldate
	;;
*);;
esac

if test $checkout = t; then
	echo "Checking out krb5 with tag $reltag into directory $reldir..."
	cvs -q -d $repository export -r$reltag -d $reldir krb5
fi

if test $dosrc = t; then
	echo "Building autoconf..."
	(cd $reldir/src/util/autoconf
		M4=gm4 ./configure
		make)

	echo "Creating configure scripts..."
	(cd $reldir/src; util/reconf)

	echo "Cleaning src/util/autoconf..."
	(cd $reldir/src/util/autoconf; make distclean)
fi

echo "Editing release-specific files..."

(cd $reldir/src/lib/krb5/krb && \
	sed -e '/static/s%KRB5_BRAND:[^"]*"%'"KRB5_BRAND: $reltag $release $reldate"'"%' \
		brand.c > brand.c.new && mv brand.c.new brand.c; \
	rm -f brand.c.new)

(cd $reldir/src/util/send-pr && \
	sed -e 's%RELEASE=.*%RELEASE='"krb5-$release"'%' Makefile.in \
		> Makefile.in.new && mv Makefile.in.new Makefile.in)

(cd $reldir/src && \
	cat > patchlevel.h <<EOF
#define KRB5_MAJOR_RELEASE $relmajor
#define KRB5_MINOR_RELEASE $relminor
#define KRB5_PATCHLEVEL    $relpatch
EOF
)

echo "Nuking unneeded files..."
find $reldir \( -name TODO -o -name todo -o -name .cvsignore \
	-o -name BADSYMS -o -name .Sanitize \) -print \
	| xargs rm -f

if test $dodoc = t; then
	echo "Building doc..."
	(cd $reldir/doc; make)
fi

echo "Generating tarfiles..."
GZIP=-9; export GZIP
if test $dosrc = t; then
	gtar --exclude $reldir/src/lib/crypto \
		--exclude $reldir/src/lib/des425 \
		--exclude $reldir/doc \
		-zcf ${reldir}.src.tar.gz $reldir

	gtar zcf ${reldir}.crypto.tar.gz \
		$reldir/src/lib/crypto \
		$reldir/src/lib/des425
fi

if test $dodoc = t; then
	gtar zcf ${reldir}.doc.tar.gz $reldir/doc $reldir/README
fi

ls -l ${reldir}.*.tar.gz

echo "Done."

exit 0