first cut
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@18235 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		
							
								
								
									
										175
									
								
								tools/heimdal-build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										175
									
								
								tools/heimdal-build.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,175 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
# Fetches, builds and store the result of a heimdal build
 | 
			
		||||
# $Id$
 | 
			
		||||
 | 
			
		||||
fetchmethod=curl	   #options are: wget, curl, ftp, afs
 | 
			
		||||
resultdir=
 | 
			
		||||
email=heimdal-build-log@it.su.se
 | 
			
		||||
baseurl=ftp://ftp.pdc.kth.se/pub/heimdal/src
 | 
			
		||||
afsdir=/afs/pdc.kth.se/public/ftp/pub/heimdal/src
 | 
			
		||||
keeptree=no
 | 
			
		||||
 | 
			
		||||
# no more use configurabled part below (hopefully)
 | 
			
		||||
 | 
			
		||||
usage="[--current] [--release version] [--cvs] [--cvs-flags] [--result-directory dir] [--fetch-method method --keep-tree] [--autotools]"
 | 
			
		||||
 | 
			
		||||
date=`date +%Y%m%d`
 | 
			
		||||
if test "$?" != 0; then
 | 
			
		||||
    echo "have no sane date, punting"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
hostname=`hostname`
 | 
			
		||||
if test "$?" != 0; then
 | 
			
		||||
    echo "have no sane hostname, punting"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
dir=
 | 
			
		||||
hversion=
 | 
			
		||||
cvsroot=
 | 
			
		||||
cvsflags=
 | 
			
		||||
autotools=no
 | 
			
		||||
 | 
			
		||||
while true
 | 
			
		||||
do
 | 
			
		||||
	case $1 in
 | 
			
		||||
	--autotools)
 | 
			
		||||
		autotools=yes
 | 
			
		||||
		;;
 | 
			
		||||
	--current)
 | 
			
		||||
		dir="snapshots/"
 | 
			
		||||
		hversion="heimdal-${date}"
 | 
			
		||||
		shift
 | 
			
		||||
		;;
 | 
			
		||||
	--release)
 | 
			
		||||
		hversion="heimdal-$2"
 | 
			
		||||
		shift 2
 | 
			
		||||
		;;
 | 
			
		||||
	--cvs)
 | 
			
		||||
		hversion="heimdal-cvs-${date}"
 | 
			
		||||
		cvsroot=$2
 | 
			
		||||
		fetchmethod=cvs
 | 
			
		||||
		shift 2
 | 
			
		||||
		;;
 | 
			
		||||
	--cvs-flags)
 | 
			
		||||
		cvsflags="$2"
 | 
			
		||||
		shift 2
 | 
			
		||||
		;;
 | 
			
		||||
	--result-directory)
 | 
			
		||||
		resultdir="$2"
 | 
			
		||||
		if [ ! -d "$resultdir" ]; then
 | 
			
		||||
		    echo "$resultdir doesn't exists"
 | 
			
		||||
		    exit 1
 | 
			
		||||
		fi
 | 
			
		||||
		shift 2
 | 
			
		||||
		;;
 | 
			
		||||
	--fetch-method)
 | 
			
		||||
		fetchmethod="$2"
 | 
			
		||||
		shift 2
 | 
			
		||||
		;;
 | 
			
		||||
	--keep-tree)
 | 
			
		||||
		keeptree=yes
 | 
			
		||||
		shift
 | 
			
		||||
		;;
 | 
			
		||||
	-*)
 | 
			
		||||
		echo "unknown option: $1"
 | 
			
		||||
		break
 | 
			
		||||
		;;
 | 
			
		||||
	*)
 | 
			
		||||
		break
 | 
			
		||||
		;;
 | 
			
		||||
	esac
 | 
			
		||||
done
 | 
			
		||||
if test $# -gt 0; then
 | 
			
		||||
	echo $usage
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ "X${hversion}" = X ]; then
 | 
			
		||||
	echo "no version given"
 | 
			
		||||
	exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
hfile="${hversion}.tar.gz"
 | 
			
		||||
url="${baseurl}/${dir}${hfile}"
 | 
			
		||||
afsfile="${afsdir}/${dir}${hfile}"
 | 
			
		||||
unpack=yes
 | 
			
		||||
 | 
			
		||||
echo "Removing old source" 
 | 
			
		||||
rm -rf ${hversion}
 | 
			
		||||
 | 
			
		||||
echo "Fetching ${hversion} using $fetchmethod"
 | 
			
		||||
case "$fetchmethod" in
 | 
			
		||||
wget|ftp)
 | 
			
		||||
	${fetchmethod} $url > /dev/null
 | 
			
		||||
	res=$?
 | 
			
		||||
	;;
 | 
			
		||||
curl)
 | 
			
		||||
	${fetchmethod} -o ${hfile} ${url} > /dev/null
 | 
			
		||||
	res=$?
 | 
			
		||||
	;;
 | 
			
		||||
afs)
 | 
			
		||||
	cp ${afsfile} ${hfile}
 | 
			
		||||
	res=$?
 | 
			
		||||
	;;
 | 
			
		||||
cvs)
 | 
			
		||||
	cvs ${cvsflags} -d "${cvsroot}" co -P -d ${hversion} heimdal
 | 
			
		||||
	res=?
 | 
			
		||||
	unpack=yes
 | 
			
		||||
	autotools=yes
 | 
			
		||||
	;;
 | 
			
		||||
*)
 | 
			
		||||
	echo "unknown fetch method"
 | 
			
		||||
	;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
if [ "X$res" != X0 ]; then
 | 
			
		||||
	echo "Failed to download the tar-ball"
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
confflags=
 | 
			
		||||
case "${hversion}" in
 | 
			
		||||
    0.7*)
 | 
			
		||||
	#true for Mac OS X, but how about the rest?
 | 
			
		||||
	confflags="--enable-shared --disable-static"
 | 
			
		||||
	;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
if [ X"$unpack" = Xyes ]; then
 | 
			
		||||
	echo Unpatching source
 | 
			
		||||
	(gzip -dc ${hfile} | tar xf -) || exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ X"$autotools" = Xyes ]; then
 | 
			
		||||
	echo Autotooling (via fix-export)
 | 
			
		||||
	env DATEDVERSION="cvs-${date}" ${hversion}/fix-export ${hversion}
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
cd ${hversion} || exit 1
 | 
			
		||||
 | 
			
		||||
echo "Configuring and building ($hversion)"
 | 
			
		||||
(./configure ${confflags} && make check) > ab.txt 2>&1
 | 
			
		||||
 | 
			
		||||
if [ "X${resultdir}" != X ] ; then
 | 
			
		||||
	cp ab.txt "${resultdir}/ab-${hversion}-${hostname}-${date}.txt"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ "X${email}" != X ] ; then
 | 
			
		||||
	cat >> email-header <<EOF
 | 
			
		||||
From: ${USER:-unknown-user}@${hostname}
 | 
			
		||||
To: <heimdal-build-log@it.su.se>
 | 
			
		||||
Subject: heimdal-build-log SPAM COOKIE
 | 
			
		||||
 | 
			
		||||
EOF
 | 
			
		||||
	cat email-header ab.txt | sendmail "${email}"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
cd ..
 | 
			
		||||
if [ X"$keeptree" != Xyes ] ; then
 | 
			
		||||
    rm -rf ${hversion}
 | 
			
		||||
fi
 | 
			
		||||
rm ${hfile}
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
		Reference in New Issue
	
	Block a user