Blame src/util/mkrel

Packit fd8b60
#!/bin/sh
Packit fd8b60
set -e
Packit fd8b60
repository=git.mit.edu:/git/krb5.git
Packit fd8b60
dodoc=t
Packit fd8b60
dosrc=t
Packit fd8b60
checkout=t
Packit fd8b60
multitar=nil
Packit fd8b60
: ${TAR=tar}
Packit fd8b60
while test $# -gt 2; do
Packit fd8b60
	case $1 in
Packit fd8b60
	--srconly)
Packit fd8b60
		dodoc=nil;;
Packit fd8b60
	--doconly)
Packit fd8b60
		dosrc=nil;;
Packit fd8b60
	--multi*)
Packit fd8b60
		multitar=t;;
Packit fd8b60
	--repository)
Packit fd8b60
		shift; repository=$1;;
Packit fd8b60
	--nocheckout)
Packit fd8b60
		checkout=nil;;
Packit fd8b60
	esac
Packit fd8b60
	shift
Packit fd8b60
done
Packit fd8b60
if test $# -lt 2; then
Packit fd8b60
	echo "usage: $0 [opts] release-tag release-dir"
Packit fd8b60
	echo "	release-tag is relative to $repository/"
Packit fd8b60
	exit 1
Packit fd8b60
fi
Packit fd8b60
Packit fd8b60
reltag=$1
Packit fd8b60
reldir=$2
Packit fd8b60
Packit fd8b60
relmajor=0
Packit fd8b60
relminor=0
Packit fd8b60
relpatch=0
Packit fd8b60
relhead=
Packit fd8b60
# reltail=
Packit fd8b60
reldate=`date +%Y%m%d`
Packit fd8b60
Packit fd8b60
case "$reldir" in
Packit fd8b60
*/*)
Packit fd8b60
	echo "release-dir may not contain slashes."
Packit fd8b60
	exit 1
Packit fd8b60
	;;
Packit fd8b60
*" "*|*"	"*)
Packit fd8b60
	echo "release-dir may  not contain whitespace."
Packit fd8b60
	exit 1
Packit fd8b60
	;;
Packit fd8b60
krb5-*.*.*-*)
Packit fd8b60
	release=`echo $reldir|sed -e 's/krb5-//'`
Packit fd8b60
	relhead=`echo $release|sed -e 's/-.*//'`
Packit fd8b60
	reltail=`echo $release|sed -e 's/.*-//'`
Packit fd8b60
	relmajor=`echo $relhead|awk -F. '{print $1}'`
Packit fd8b60
	relminor=`echo $relhead|awk -F. '{print $2}'`
Packit fd8b60
	relpatch=`echo $relhead|awk -F. '{print $3}'`
Packit fd8b60
	;;
Packit fd8b60
krb5-*.*.*)
Packit fd8b60
	release=`echo $reldir|sed -e 's/krb5-//'`
Packit fd8b60
	relmajor=`echo $release|awk -F. '{print $1}'`
Packit fd8b60
	relminor=`echo $release|awk -F. '{print $2}'`
Packit fd8b60
	relpatch=`echo $release|awk -F. '{print $3}'`
Packit fd8b60
	;;
Packit fd8b60
krb5-*.*-current)
Packit fd8b60
	release=`echo $reldir|sed -e 's/krb5-//'`
Packit fd8b60
	relhead=`echo $release|sed -e 's/-.*//'`
Packit fd8b60
	relmajor=`echo $relhead|awk -F. '{print $1}'`
Packit fd8b60
	relminor=`echo $relhead|awk -F. '{print $2}'`
Packit fd8b60
	release=${relhead}-$reldate
Packit fd8b60
	;;
Packit fd8b60
krb5-*.*-*)
Packit fd8b60
	release=`echo $reldir|sed -e 's/krb5-//'`
Packit fd8b60
	relhead=`echo $release|sed -e 's/-.*//'`
Packit fd8b60
	reltail=`echo $release|sed -e 's/.*-//'`
Packit fd8b60
	relmajor=`echo $relhead|awk -F. '{print $1}'`
Packit fd8b60
	relminor=`echo $relhead|awk -F. '{print $2}'`
Packit fd8b60
	;;
Packit fd8b60
krb5-*.*)
Packit fd8b60
	release=`echo $reldir|sed -e 's/krb5-//'`
Packit fd8b60
	relmajor=`echo $release|awk -F. '{print $1}'`
Packit fd8b60
	relminor=`echo $release|awk -F. '{print $2}'`
Packit fd8b60
	;;
Packit fd8b60
krb5-current)
Packit fd8b60
	release=current-$reldate
Packit fd8b60
	;;
Packit fd8b60
*)
Packit fd8b60
	release="$reldir"
Packit fd8b60
	;;
Packit fd8b60
esac
Packit fd8b60
Packit fd8b60
echo "release=$release"
Packit fd8b60
echo "major=$relmajor minor=$relminor patch=$relpatch"
Packit fd8b60
Packit fd8b60
# $release is used for send-pr
Packit fd8b60
# $reltag, $release, $reldate are used for brand.c currently
Packit fd8b60
# $relmajor, $relminor, $relpatch are used for patchlevel.h currently
Packit fd8b60
Packit fd8b60
if test $checkout = t; then
Packit fd8b60
	echo "Checking out krb5 with tag $reltag into directory $reldir..."
Packit fd8b60
	git clone -q -n $repository $reldir
Packit fd8b60
	(cd $reldir && git checkout -q $reltag)
Packit fd8b60
fi
Packit fd8b60
Packit fd8b60
#
Packit fd8b60
# $newstyle = t if patchlevel.h is the master version stamp file.  If
Packit fd8b60
# so, we don't edit it here.
Packit fd8b60
#
Packit fd8b60
if grep KRB5_RELDATE $reldir/src/patchlevel.h > /dev/null 2>&1; then
Packit fd8b60
	newstyle=t;
Packit fd8b60
else
Packit fd8b60
	newstyle=nil;
Packit fd8b60
fi
Packit fd8b60
Packit fd8b60
if test $newstyle = t; then
Packit fd8b60
	echo "parsing new style patchlevel.h..."
Packit fd8b60
	eval `sed -n 's/#define \([A-Z0-9_]*\)[ \t]*\(.*\)/\1=\2/p' < $reldir/src/patchlevel.h`
Packit fd8b60
	if test "$KRB5_RELTAG" != $reltag && \
Packit fd8b60
		test "$KRB5_RELTAG" != `echo $reltag|sed 's%[^/]*/%%'` ; then
Packit fd8b60
		echo "WARNING: patchlevel.h '$KRB5_RELTAG' != $reltag"
Packit fd8b60
	fi
Packit fd8b60
	if test "$KRB5_MAJOR_RELEASE" != "$relmajor" || \
Packit fd8b60
		test "$KRB5_MINOR_RELEASE" != "$relminor" || \
Packit fd8b60
		test "$KRB5_PATCHLEVEL" != "$relpatch" || \
Packit fd8b60
		( test -n "$reltail" && \
Packit fd8b60
			test "$KRB5_RELTAIL" != "$reltail" ); then
Packit fd8b60
Packit fd8b60
		echo "WARNING: patchlevel.h $KRB5_MAJOR_RELEASE.$KRB5_MINOR_RELEASE.$KRB5_PATCHLEVEL${KRB5_RELTAIL+-$KRB5_RELTAIL} != $relmajor.$relminor.$relpatch${reltail+-$reltail}"
Packit fd8b60
	fi
Packit fd8b60
else
Packit fd8b60
	echo "old style patchlevel.h"
Packit fd8b60
fi
Packit fd8b60
Packit fd8b60
echo "Editing release-specific files..."
Packit fd8b60
Packit fd8b60
if test $newstyle = t; then 
Packit fd8b60
	(cd $reldir/src && \
Packit fd8b60
		sed -e '/#[a-z 	]*KRB5_RELDATE/c\
Packit fd8b60
#define KRB5_RELDATE "'"$reldate"'"' patchlevel.h > patchlevel.h.new && \
Packit fd8b60
		mv patchlevel.h.new patchlevel.h)
Packit fd8b60
else
Packit fd8b60
Packit fd8b60
	(cd $reldir/src/lib/krb5/krb && \
Packit fd8b60
		sed -e '/static/s%KRB5_BRAND:[^"]*"%'"KRB5_BRAND: $reltag $release $reldate"'"%' \
Packit fd8b60
			brand.c > brand.c.new && mv brand.c.new brand.c; \
Packit fd8b60
		rm -f brand.c.new)
Packit fd8b60
Packit fd8b60
	(cd $reldir/src/util/send-pr && \
Packit fd8b60
		sed -e 's%RELEASE=.*%RELEASE='"krb5-$release"'%' Makefile.in \
Packit fd8b60
			> Makefile.in.new && mv Makefile.in.new Makefile.in)
Packit fd8b60
Packit fd8b60
	(cd $reldir/src && \
Packit fd8b60
		cat > patchlevel.h <
Packit fd8b60
#define KRB5_MAJOR_RELEASE $relmajor
Packit fd8b60
#define KRB5_MINOR_RELEASE $relminor
Packit fd8b60
#define KRB5_PATCHLEVEL    $relpatch
Packit fd8b60
EOF
Packit fd8b60
	)
Packit fd8b60
fi
Packit fd8b60
Packit fd8b60
if test $dosrc = t; then
Packit fd8b60
	if test -d $reldir/src/util/autoconf; then
Packit fd8b60
		echo "Building autoconf..."
Packit fd8b60
		(cd $reldir/src/util/autoconf
Packit fd8b60
			M4=gm4 ./configure
Packit fd8b60
			make)
Packit fd8b60
	fi
Packit fd8b60
	echo "Creating configure scripts..."
Packit fd8b60
	(cd $reldir/src; autoreconf -v)
Packit fd8b60
Packit fd8b60
	if test -d $reldir/src/util/autoconf; then
Packit fd8b60
		echo "Cleaning src/util/autoconf..."
Packit fd8b60
		(cd $reldir/src/util/autoconf; make distclean)
Packit fd8b60
	fi
Packit fd8b60
fi
Packit fd8b60
Packit fd8b60
echo "Nuking unneeded files..."
Packit fd8b60
find $reldir \( -name TODO -o -name todo -o -name .cvsignore \
Packit fd8b60
	-o -name .gitignore -o -name BADSYMS -o -name .Sanitize \
Packit fd8b60
	-o -name .rconf \) -print | xargs rm -f || true
Packit fd8b60
find $reldir -depth -type d \( -name autom4te.cache \
Packit fd8b60
	-o -name \$ac_config_fragdir \) -exec rm -rf {} \; || true
Packit fd8b60
rm -rf $reldir/.git || true
Packit fd8b60
Packit fd8b60
if test $dodoc = t; then
Packit fd8b60
	echo "Building doc..."
Packit fd8b60
	(cd $reldir/src/doc && make -f Makefile.in \
Packit fd8b60
	    top_srcdir=.. srcdir=. SPHINX_ARGS=-W PYTHON=python3 html pdf)
Packit fd8b60
	(cd $reldir/src/doc && make -f Makefile.in \
Packit fd8b60
	    top_srcdir=.. srcdir=. SPHINX_ARGS=-W PYTHON=python3 clean)
Packit fd8b60
fi
Packit fd8b60
Packit fd8b60
echo "Generating tarfiles..."
Packit fd8b60
GZIP=-9; export GZIP
Packit fd8b60
if test $multitar = t; then
Packit fd8b60
	if test -d $reldir/src/lib/des425; then
Packit fd8b60
		des425=$reldir/src/lib/des425
Packit fd8b60
	fi
Packit fd8b60
	if test -f $reldir/NOTICE;
Packit fd8b60
		then notice=$reldir/NOTICE
Packit fd8b60
	fi
Packit fd8b60
	if test $dosrc = t; then
Packit fd8b60
		$TAR --exclude $reldir/src/lib/crypto \
Packit fd8b60
			--exclude $reldir/src/lib/des425 \
Packit fd8b60
			--exclude $reldir/doc \
Packit fd8b60
			-zcf ${reldir}.src.tar.gz $reldir
Packit fd8b60
Packit fd8b60
		$TAR zcf ${reldir}.crypto.tar.gz \
Packit fd8b60
			$reldir/src/lib/crypto \
Packit fd8b60
			$des425
Packit fd8b60
	fi
Packit fd8b60
	if test $dodoc = t; then
Packit fd8b60
		$TAR zcf ${reldir}.doc.tar.gz $reldir/doc $reldir/README $notice
Packit fd8b60
	fi
Packit fd8b60
	ls -l ${reldir}.*.tar.gz
Packit fd8b60
fi
Packit fd8b60
Packit fd8b60
$TAR zcf ${reldir}.tar.gz $reldir
Packit fd8b60
ls -l ${reldir}.tar.gz
Packit fd8b60
Packit fd8b60
echo "Done."
Packit fd8b60
Packit fd8b60
exit 0