git/DoKernelOrg
Junio C Hamano 81246862e8 The same duplicate build avoidance as in Doit.
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-01-14 18:19:54 -08:00

82 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
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='naster master maint'
# Make sure naster is between master and pu if exists
if naster=`git rev-parse --verify refs/heads/naster 2>/dev/null`
then
master=`git rev-parse --verify refs/heads/master` &&
pu=`git rev-parse --verify refs/heads/pu` &&
MBM=`git merge-base --all $naster $master` &&
MBN=`git merge-base --all $naster $pu` &&
case ",$MBM,$MBN," in
",$master,$naster,") ;;
*) echo >&2 "naster is not between master and pu"
exit 1 ;;
esac
# If naster is the same as pu, no point rebuilding pu.
case ",$naster,$pu," in
",$pu,$naster,") ;;
*) branches="$branches pu" ;;
esac
fi
{
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)
mkdir -p $G/RPMS/i386 $G/RPMS/SRPMS &&
echo "* Building $1"
git checkout "$1" &&
make rpm >./:rpm.log 2>&1 &&
make $J git >>./:rpm.log 2>&1 &&
V=`./git --version | sed -e 's/git version //'` &&
ln git-$V.tar.gz $G/. &&
ln $HOME/rpms/RPMS/i386/git*-$V-* $G/RPMS/i386/. &&
ln $HOME/rpms/SRPMS/git-$V-* $G/RPMS/SRPMS/. &&
{
# I do not know how it exits, and I do not care much.
/usr/local/bin/yummy $G/RPMS/i386
/usr/local/bin/yummy $G/RPMS/SRPMS
:
} &&
rm -fr ./:rpm.log &&
make clean &&
: ;;
esac || exit $?
git checkout master