#!/bin/bash GITEXEC=`which git` echo "gubllb --- GUB Local Lilypond Build" # abort if not exactly 3 arguments are provided if [ $# -ne 3 ]; then echo "ERROR: invalid number of command line arguments!" echo "USAGE: gubllb gub_directory lilypond_repository_directory lilypond_branch" exit 1 fi GUBDIR=$1 LILYREPODIR=$2 LILYBRANCH=$3 echo "Trying to build branch '$LILYBRANCH' of local lilypond repository '$LILYREPODIR' with gub '$GUBDIR'" # abort if a git-daemon is active ps ax | grep git-daemon | grep -v grep | grep git-daemon if [ $? -eq 0 ]; then echo "ERROR: A git-daemon is already running on this system!" exit 1 fi # abort if GUBDIR parameter is invalid if [ ! -f "$GUBDIR/bin/gub" ]; then echo "ERROR: gub_directory parameter '$GUBDIR' invalid!" exit 1 fi # abort if LILYREPODIR parameter is invalid if [ ! -f "$LILYREPODIR/lily/lilypond-version.cc" ]; then echo "ERROR: lilypond_repository_directory '$LILYREPODIR' invalid!" exit 1 fi # abort if there is no branch LILYBRANCH in LILYREPODIR cd $LILYREPODIR TESTOUT=`git branch --list $LILYBRANCH | grep -o $LILYBRANCH` if [ "$TESTOUT" != "$LILYBRANCH" ]; then echo "ERROR: lilypond branch '$LILYBRANCH'does not exist in '$LILYREPODIR' !" exit 1 fi # create a temporary git server directory in GUBDIR, abort if this fails TMPSRVDIR=$(mktemp -d -t -p $GUBDIR/ gubllb-XXXXXXXXXX) if [ ! -d "$TMPSRVDIR" ]; then echo ERROR: We failed to created the directory $TMPSRVDIR! exit 1 else echo Temporary git daemon directory is $TMPSRVDIR fi # create the lilypong.git link in TMPSRVDIR ln -s $LILYREPODIR $TMPSRVDIR/lilypond.git # start git-daemon in the background $GITEXEC daemon --log-destination=none --export-all --reuseaddr --base-path=$TMPSRVDIR/ $TMPSRVDIR &> /dev/null & GITPID=$! echo Started git daemon with PID $GITPID # wait until git-daemon starts to provide its service ... abort if this does not occur within a reasonable time i=0 while [ $i -le 10 ] do ((i++)) echo Waiting for git daemon ... TESTOUT=`git ls-remote git://localhost/lilypond.git $LILYBRANCH 2>&1 | grep -o refs/heads/$LILYBRANCH` if [ "$TESTOUT" == "refs/heads/$LILYBRANCH" ]; then break; fi if [ $i -eq 10 ]; then echo ERROR: Git daemon timed out or $LILYBRANCH does not exist! kill -n 9 -- $(ps -o pid= --ppid $GITPID) rm -rf $TMPSRVDIR exit 1 fi sleep 1 done # everything seems to be ok, build LILYBRANCH cd $GUBDIR make LILYPOND_REPO_URL=git://localhost/lilypond.git LILYPOND_BRANCH=$LILYBRANCH lilypond # kill our git daemon and remove our temporary git server directory kill -n 9 -- $(ps -o pid= --ppid $GITPID) rm -rf $TMPSRVDIR