]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 375190 via svnmerge from
authorAutomerge script <automerge@asterisk.org>
Thu, 18 Oct 2012 20:25:26 +0000 (20:25 +0000)
committerAutomerge script <automerge@asterisk.org>
Thu, 18 Oct 2012 20:25:26 +0000 (20:25 +0000)
file:///srv/subversion/repos/asterisk/branches/10

................
  r375190 | rmudgett | 2012-10-18 14:53:08 -0500 (Thu, 18 Oct 2012) | 36 lines

  build_tools: Allow Asterisk to report git SHAs in version string.

  Make git more attractive for managing work-in-progress.  Especially
  convenient when a potential patch set needs to be tested on multiple
  platforms since one can use git to keep all the test environments in sync
  independent of a subversion server.

  Now the Asterisk version will show the exact git SHA5 that was used when
  building (still appended by "M" if there are local modifications) from a
  git clone of the Asterisk repository so the developer can more easily know
  what is actually under test.

  You will now get this:

    $ asterisk -V
    Asterisk GIT-1698298

  Instead of this:

    $ asterisk -V
    Asterisk UNKNOWN__and_probably_unsupported

  This has zero impact for those not using git with the exception of an
  extra test in the configure script to gather git's path.  This is
  necessary to prevent "sudo make install" from failing since git may not be
  in the path in make's shell environment.

  (closes issue ASTERISK-20483)
  Reported by: Shaun Ruffell
  Patches:
        0001-build_tools-Allow-Asterisk-to-report-git-SHAs-in-ver.patch (license #5417) patch uploaded by Shaun Ruffell
        Modified
  ........

  Merged revisions 375189 from http://svn.asterisk.org/svn/asterisk/branches/1.8
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10-digiumphones@375214 65c4cc65-6c06-0410-ace0-fbb531ad65f3

Makefile
build_tools/make_version
configure
configure.ac
makeopts.in

index 1386f2c47d7b2a70ad4678445996c13828c317b7..8dc2663fac898fa67a07f0e0f171ecd7628e0605 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -208,7 +208,7 @@ ifeq ($(OSARCH),SunOS)
   _ASTCFLAGS+=-Wcast-align -DSOLARIS -I../include/solaris-compat -I/opt/ssl/include -I/usr/local/ssl/include -D_XPG4_2 -D__EXTENSIONS__
 endif
 
-ASTERISKVERSION:=$(shell GREP=$(GREP) AWK=$(AWK) build_tools/make_version .)
+ASTERISKVERSION:=$(shell GREP=$(GREP) AWK=$(AWK) GIT=$(GIT) build_tools/make_version .)
 
 ifneq ($(wildcard .version),)
   ASTERISKVERSIONNUM:=$(shell $(AWK) -F. '{printf "%01d%02d%02d", $$1, $$2, $$3}' .version)
index d81325f78879eacb79bfd159d01c5916dc22d991..de0b97e1a3b80adee1febc9f65e61a0bb8abd90e 100755 (executable)
@@ -2,7 +2,7 @@
 
 if [ -f ${1}/.version ]; then
     cat ${1}/.version
-elif [ -d .svn ]; then
+elif [ -d ${1}/.svn ]; then
     PARTS=`LANG=C svn info ${1} | ${GREP} URL | ${AWK} '{print $2;}' | sed -e 's:^.*/svn/asterisk/::' | sed -e 's:/: :g'`
     BRANCH=0
     TEAM=0
@@ -36,11 +36,7 @@ elif [ -d .svn ]; then
         fi
 
         if [ ${BRANCH} != 0 ] ; then
-            if [ -z "${RESULT}" ] ; then
-                RESULT="${PART}"
-            else
-                RESULT="${RESULT}-${PART}"
-            fi
+            RESULT="${RESULT}-${PART}"
             if [ ${FEATURE} != 0 ] ; then
                 RESULT="${RESULT}-${FEATURE_NAME}"
             fi
@@ -84,6 +80,104 @@ elif [ -d .svn ]; then
     else
         echo SVN-${RESULT}-r${REV}${BASE:+-${BASE}}
     fi
+elif [ -d ${1}/.git ]; then
+    if [ -z ${GIT} ]; then
+        GIT="git"
+    fi
+
+    if ! command -v ${GIT} >/dev/null 2>&1; then
+        echo "UNKNOWN__and_probably_unsupported"
+        exit 1
+    fi
+    # 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-`${GIT} describe --long --always --tags --dirty=M 2> /dev/null`
+        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
+        TAG=0
+        FEATURE=0
+
+        if [ "`${GIT} ls-files -m | wc -l`" != "0" ]; then
+            MODIFIED="M"
+        fi
+
+        for PART in $PARTS ; do
+            if [ ${TAG} != 0 ] ; then
+                if [ "${PART}" = "autotag_for_be" ] ; then
+                    continue
+                fi
+                if [ "${PART}" = "autotag_for_sx00i" ] ; then
+                    continue
+                fi
+                RESULT="${PART}"
+                break
+            fi
+
+            if [ ${BRANCH} != 0 ] ; then
+                RESULT="${RESULT}-${PART}"
+                if [ ${FEATURE} != 0 ] ; then
+                    RESULT="${RESULT}-${FEATURE_NAME}"
+                fi
+                break
+            fi
+
+            if [ ${TEAM} != 0 ] ; then
+                if [ -z "${RESULT}" ] ; then
+                    RESULT="${PART}"
+                else
+                    RESULT="${RESULT}-${PART}"
+                fi
+                continue
+            fi
+
+            if [ "${PART}" = "certified" ] ; then
+                FEATURE=1
+                FEATURE_NAME="cert"
+                continue
+            fi
+
+            if [ "${PART}" = "branches" ] ; then
+                BRANCH=1
+                RESULT="branch"
+                continue
+            fi
+
+            if [ "${PART}" = "tags" ] ; then
+                TAG=1
+                continue
+            fi
+
+            if [ "${PART}" = "team" ] ; then
+                TEAM=1
+                continue
+            fi
+
+            if [ "${PART}" = "trunk" ]; then
+                echo SVN-trunk-r${SVN_REV}${MODIFIED}
+                exit 0
+            fi
+        done
+
+        if [ ${TAG} != 0 ] ; then
+            echo ${RESULT}
+        else
+            echo SVN-${RESULT##-}-r${SVN_REV}${MODIFIED}
+        fi
+    fi
 else
     echo "UNKNOWN__and_probably_unsupported"
 fi
index ff6d378e70a0ef8c53174ae1990652e84086d650..8ff5e4881b100fcacd8d98751d81f718d88f939c 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.ac Revision: 361956 .
+# From configure.ac Revision: 371013 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.63 for asterisk trunk.
 #
@@ -1079,6 +1079,7 @@ PBX_FLEX
 PBX_BISON
 DOWNLOAD
 FETCH
+GIT
 XMLSTARLET
 XMLLINT
 KPATHSEA
@@ -7393,6 +7394,47 @@ $as_echo "no" >&6; }
 fi
 
 
+# Extract the first word of "git", so it can be a program name with args.
+set dummy git; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_GIT+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $GIT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GIT="$GIT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_GIT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_GIT" && ac_cv_path_GIT=":"
+  ;;
+esac
+fi
+GIT=$ac_cv_path_GIT
+if test -n "$GIT"; then
+  { $as_echo "$as_me:$LINENO: result: $GIT" >&5
+$as_echo "$GIT" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
 if test "${WGET}" != ":" ; then
   DOWNLOAD=${WGET}
 else if test "${CURL}" != ":" ; then
index cd6a550ea100f0aa435e30a9f998baa6d1c77731..d13ed0d199b0ccc0e4d6bf1f519939f7aedc35a7 100644 (file)
@@ -261,6 +261,7 @@ AC_PATH_PROG([CATDVI], [catdvi], :)
 AC_PATH_PROG([KPATHSEA], [kpsewhich], :)
 AC_PATH_PROG([XMLLINT], [xmllint], :)
 AC_PATH_PROG([XMLSTARLET], [xmlstarlet], :)
+AC_PATH_PROG([GIT], [git], :)
 if test "${WGET}" != ":" ; then
   DOWNLOAD=${WGET}
 else if test "${CURL}" != ":" ; then
index 9c4ae0c02a01e16bad6987d986850312b2885a38..f1cf1ae885cb1d3957854b466bc10e28082c2733 100644 (file)
@@ -34,6 +34,7 @@ XMLSTARLET=@XMLSTARLET@
 MD5=@MD5@
 SHA1SUM=@SHA1SUM@
 OPENSSL=@OPENSSL@
+GIT=@GIT@
 
 BUILD_PLATFORM=@BUILD_PLATFORM@
 BUILD_CPU=@BUILD_CPU@