build_tools/make_version: Teach version string about git. v2.7.0.1 v2.7.0.2
authorShaun Ruffell <sruffell@digium.com>
Wed, 12 Jun 2013 17:03:55 +0000 (12:03 -0500)
committerRuss Meyerriecks <rmeyerriecks@digium.com>
Wed, 26 Jun 2013 21:45:03 +0000 (16:45 -0500)
This copies in the make_version script from DAHDI-Linux to allow the version to
be properly reported from builds in git checkouts.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>

Makefile
build_tools/make_version

index 62f430a..54bdefa 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -67,13 +67,7 @@ ifneq (,$(NETSCR_DIR))
   COPY_NETSCR  := install -D ifup-hdlc $(NETSCR_TARGET)
 endif
 
-ifneq ($(wildcard .version),)
-  TOOLSVERSION:=$(shell cat .version)
-else
-ifneq ($(wildcard .svn),)
-  TOOLSVERSION=$(shell build_tools/make_version . dahdi/tools)
-endif
-endif
+TOOLSVERSION=$(shell build_tools/make_version . dahdi/tools)
 
 LTZ_A:=libtonezone.a
 LTZ_A_OBJS:=zonedata.o tonezone.o version.o
index e6caaa2..319842b 100755 (executable)
@@ -1,10 +1,10 @@
 #!/bin/sh
 
 if [ -f ${1}/.version ]; then
-       cat ${1}.version
+       cat ${1}/.version
 elif [ -f ${1}/.svnrevision ]; then
        echo SVN-`cat ${1}/.svnbranch`-r`cat ${1}/.svnrevision`
-elif [ -d .svn ]; then
+elif [ -d ${1}/.svn ]; then
     PARTS=`LANG=C svn info ${1} | grep URL | awk '{print $2;}' | sed -e s:^.*/svn/${2}/:: | sed -e 's:/: :g'`
     BRANCH=0
     TEAM=0
@@ -53,4 +53,70 @@ elif [ -d .svn ]; then
     done
     
     echo SVN-${RESULT##-}-r${REV}
+elif [ -d ${1}/.git ]; then
+    # If the first log commit messages indicates that this is checked into
+    # subversion, we'll just use the SVN- form of the revision.
+    MODIFIED=""
+    SVN_REV=`git log --pretty=full -1 | grep -F "git-svn-id:" | sed -e "s/.*\@\([^\s]*\)\s.*/\1/g"`
+    if [ -z "$SVN_REV" ]; then
+        VERSION=`git describe --tags --dirty=M 2> /dev/null | sed -e "s/^v\([0-9]\)/\1/"`
+        if [ $? -ne 0 ]; then
+            if [ "`git ls-files -m | wc -l`" != "0" ]; then
+                MODIFIED="M"
+            fi
+            # Some older versions of git do not support all the above
+            # options.
+            VERSION=GIT-`git rev-parse --short --verify HEAD`${MODIFIED}
+        fi
+        echo ${VERSION}
+    else
+        PARTS=`LANG=C git log --pretty=full | grep -F "git-svn-id:" | head -1 | awk '{print $2;}' | sed -e s:^.*/svn/$2/:: | sed -e 's:/: :g' | sed -e 's/@.*$//g'`
+        BRANCH=0
+        TEAM=0
+
+        if [ "`git ls-files -m | wc -l`" != "0" ]; then
+            MODIFIED="M"
+        fi
+
+        if [ "${PARTS}" = "trunk" ]; then
+            echo SVN-'trunk'-r${SVN_REV}${MODIFIED}
+            exit 0
+        fi
+
+        for PART in $PARTS
+          do
+              if [ ${BRANCH} != 0 ]; then
+              RESULT="${RESULT}-${PART}"
+              break
+          fi
+
+          if [ ${TEAM} != 0 ]; then
+              RESULT="${RESULT}-${PART}"
+              continue
+          fi
+
+          if [ "${PART}" = "branches" ]; then
+              BRANCH=1
+              RESULT="branch"
+              continue
+          fi
+
+          if [ "${PART}" = "tags" ]; then
+              BRANCH=1
+              RESULT="tag"
+              continue
+          fi
+
+          if [ "${PART}" = "team" ]; then
+              TEAM=1
+              continue
+          fi
+        done
+
+        echo SVN-${RESULT##-}-r${SVN_REV}${MODIFIED}
+    fi
+else
+       # Use the directory information in the absence of any other version
+       # information
+       pwd -P
 fi