#!/bin/sh

case "`uname -m 2>/dev/null`" in
x86_64)
	USE_PIC=YesPlease
	export USE_PIC
	;;
esac

: ${J='-l 4 -j'}
G=/pub/software/scm/git &&

cd $HOME/git &&
make clean >/dev/null 2>&1 &&
git reset --hard &&
make clean >/dev/null 2>&1 &&
git checkout master &&
git pull . origin &&
make clean >/dev/null 2>&1 &&

case "$1" in
'')
	echo "* Building all"
	: ${branches='next master maint pu'}
	nstalled=install
	for branch in $branches
	do
		if git-rev-parse --verify refs/heads/$branch 2>/dev/null
		then
			echo "** $branch **" &&
			git checkout $branch &&
			make $J $nstalled &&
			make test &&
			make clean &&
			nstalled=all || exit $?
		else
			echo
			echo "* NO $branch"
			echo
		fi
	done >:all.log 2>&1
	;;

maint | master)
	case `hostname` in
	hera.kernel.org)
		narch='x86_64 i386'
		arch=x86_64 ;;
	demeter.kernel.org|demeter|old-hera.kernel.org|kunrun-vmw-fc5)
		arch=i386 ;;
	*)	echo >&2 "What are you talking about???"
		exit 1 ;;
	esac &&
	: >./:all.log &&
	echo "* Building $1" &&
	git checkout "$1" &&
	make $J git >./:all.log 2>&1 &&
	V=`./git --version | sed -e 's/git version //'` &&
	make rpm >>./:all.log 2>&1 &&
	case "$narch" in
	'')
		# This is not the primary build machine.
		status=$?
		case "$status" in
		0)
			echo >&2 "Done -- move RPMS to the master machine."
			(
				cd "$HOME/rpms/" &&
				tar cf "$HOME/$V.tar" \
					RPMS/$arch/*-$V-*.$arch.rpm &&
				ls -ld $HOME/$V.tar
			)
			make clean
			;;
		?)
			echo >&2 "Failed with status $status"
			;;
		esac
		exit $status ;;
	*)
		ln -f git-$V.tar.gz $G/. &&
		make dist-doc >>./:all.log 2>&1 &&
		ln -f git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz $G/.
		;;
	esac >>./:all.log 2>&1 &&
	case "$NO_RPM_PLEASE" in
	'')
		mkdir -p $G/RPMS/$arch $G/RPMS/SRPMS &&
		for a in $narch
		do
			mkdir -p "$G/RPMS/$a" &&
			for rr in $HOME/rpms/RPMS/$a/*-$V-*.$a.rpm
			do
				test -f "$rr" || continue
				ln -f "$rr" $G/RPMS/$a/.
			done
		done &&
		ln -f $HOME/rpms/SRPMS/git-$V-*.src.rpm $G/RPMS/SRPMS/. &&
		{
			# I do not know how it exits, and I do not care much.
			for a in $narch
			do
				/usr/local/bin/yummy $G/RPMS/$a
			done
			/usr/local/bin/yummy $G/RPMS/SRPMS
			:
		} >>./:all.log 2>&1 ;;
	*)
		echo Skipping RPM ;;
	esac &&
	make clean &&

	: ;;
esac || exit $?

git checkout master
