⛏️ index : haiku.git

#!/bin/sh

haikuTop=$1
revisionFile=$2
haikuBuildOutputDir=`dirname $revisionFile`
lastBuiltRevisionFile=${haikuBuildOutputDir}/last-built-revision

case `uname` in
Darwin)
	SED=gsed
	;;
*)
	SED=sed
	;;
esac
export SED

revision=`cat ${revisionFile} 2>/dev/null`
lastBuiltRevision=`cat $lastBuiltRevisionFile 2>/dev/null`

originalDir=`pwd`
cd ${haikuTop}
export LC_ALL=C

localRev=`git rev-parse HEAD`

# only determine the haiku-revision if anything has changed from the
# last build
if [ -z "$revision" -o "$lastBuiltRevision" != "$localRev" ]; then
	# the revision we use is the description of HEAD with respect to the
	# last reachable hrev-(haiku-revision-)tag
	revision=`git describe --dirty --tags --match=hrev* --abbrev=1`
	if [ -z "$revision" ]; then
		# failed to find any hrev tags, bail out
		echo "Error: you are using a Haiku clone without tags, please set"
		echo "       the revision tag to use (e.g. HAIKU_REVISION=hrev43210)"
		exit 1
	fi

	revision=`echo $revision | sed 's/-g[0-9a-z]\+//' | sed 's/-/+/g'`
	if echo "$revision" | grep -- '-' >/dev/null; then
		# HEAD is not directly a changeset from Haiku's central repo, so we
		# add the current branch name as additional info
		branchName=`git branch | grep '*' | cut -b 3-`
		revision="$revision [$branchName]"
	fi
fi

cd $originalDir

if [ -z "$revision" ]; then
	revision=0
fi

echo $localRev >${lastBuiltRevisionFile}
echo $revision >${revisionFile}