diff --git a/build b/build index f347bf3..f7e5a93 100755 --- a/build +++ b/build @@ -28,6 +28,7 @@ PWD=`pwd` Static=0 Dryrun=0 Prodver="" +Repover="" Verbose=0 Go=`which go` @@ -47,10 +48,48 @@ case $BASH_VERSION in ;; esac +getvcs_version() { + local rev= + local prodv= + if [ -d "./.hg" ]; then + local xrev=$(hg id --id) || exit 1 + local brev=${xrev%+} + if [ "$brev" != "$xrev" ]; then + rev="hg:${brev}-dirty" + else + rev="hg:${brev}" + fi + prodv=$(hg log -r "branch(stable) and tag()" -T "{tags}\n" | sort -V | tail -1) + elif [ -d "./.git" ]; then + local xrev=$(git describe --always --dirty --long --abbrev=12) || exit 1 + rev="git:$xrev" + prodv=$(git tag --list | sort -V | tail -1) + else + rev="UNKNOWN-VER" + warn "Can't find version info" + fi + + [ -n "$Prodver" ] && prodv=$Prodver + + echo "$rev $prodv" + return 0 +} + +read -r Repover Prodver <<< $(getvcs_version) usage() { + declare -a progv=($Progs) + declare n=${#progv[@]} + declare pstr= + + for ((i=0; i < n; i++)); do + local ent=${progv[$i]} + local dir=${ent%%:*} + local tool=${ent##*:} + pstr=$(printf "$pstr\n\t%s $Prodver $Repover (from ./%s)" $tool $dir) + done cat <&2 -fi - # Do Protobufs if needed if [ -n "$Protobufs" ]; then @@ -374,7 +391,8 @@ if [ -n "$Protobufs" ]; then set -e fi -repover="main.RepoVersion=$rev" +# Get git/hg version info for the build +repover="main.RepoVersion=$Repover" prodver="main.ProductVersion=$Prodver" date="main.Buildtime=`date -u '+%Y-%m-%dT%H:%M.%SZ'`" ldflags="-ldflags \"-X $repover -X $prodver -X $date $ldflags\"" @@ -406,7 +424,7 @@ case $Tool in all="$@" fi - echo "Building $Prodver ($rev), $cross $msg .." + echo "Building $Prodver ($Repover), $cross $msg .." for p in $all; do if echo $p | grep -q ':' ; then