]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Improve SWITCH_VERSION_REVISION generation
authorTravis Cross <tc@traviscross.com>
Mon, 11 Jun 2012 16:16:50 +0000 (16:16 +0000)
committerTravis Cross <tc@traviscross.com>
Mon, 11 Jun 2012 17:19:25 +0000 (17:19 +0000)
The revision was no longer picking up the last git commit.  Instead,
it was showing the last release.  This commit appends the last git
commit hash to the last release if a git repository is available.
Further, it checks whether there are uncommitted changes in the git
repository and adds an unclean tag to the version if this is the case.

Note that currently this will append the git commit hash even on a
tagged release if built directly from a git repository.  Perhaps this
isn't such a bad thing, but if it turns out not to be desired, I have
an idea on how to squelch this without making unwarranted assumptions
about the remote layout of someone's local repository.

.version.in [deleted file]
Makefile.am
configure.in

diff --git a/.version.in b/.version.in
deleted file mode 100644 (file)
index 449460b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-@SWITCH_VERSION_REVISION@
index 12dc3fa05a40e84eb12bee2a3d621a88e1a4fe4a..ca539ec6ae38834a7288f0a48c6bee9220bb5f72 100644 (file)
@@ -415,29 +415,19 @@ $(OUR_MODULES): $(switch_builddir)/modules.conf libfreeswitch.la
 $(switch_builddir)/quiet_libtool: $(switch_builddir)/libtool
        @cat libtool | sed -e 's|$$show "$$command"|if test -z "$$suppress_output" ; then $$show "Compiling $$srcfile ..." ; fi|' > $(switch_builddir)/quiet_libtool
 
-src/include/switch_version.h: src/include/switch_version.h.in .version $(libfreeswitch_la_SOURCES) $(library_include_HEADERS)
-       @have_version=1 ; \
-       force=0 ; \
-       grep -- "@SWITCH_VERSION_REVISION@" src/include/switch_version.h.in > /dev/null || have_version=0 ; \
-       test ! -f src/include/switch_version.h || grep -- "@SWITCH_VERSION_REVISION@" src/include/switch_version.h > /dev/null && force=1 ; \
-       if test $$have_version = 1 ; then \
-         cat src/include/switch_version.h.in > src/include/switch_version.h ; \
-         touch .version ; \
-       else \
-         if [ -d .git ] ; then \
-           version=`git log --pretty=format:"%h %ci" -1 HEAD | head -1 | sed -e 's|:|-|g' || echo hacked` ; \
-           if [ "x$$version" = "xhacked" ] ; then \
-             version="hacked-`date -u +%Y%m%dT%H%M%SZ`" ; \
-           else \
-             version="git-$$version" ; \
-           fi ;\
-         fi ; \
-         oldversion=`cat .version 2>/dev/null || echo "0"` ; \
-         if test "$$oldversion" != "$$version" || test $$force = 1 ; then \
-           cat src/include/switch_version.h.in | sed "s/@SWITCH_VERSION_REVISION@/$$version/g" > src/include/switch_version.h ; \
-           echo $$version > .version ; \
-         fi ; \
-       fi ;
+src/include/switch_version.h: src/include/switch_version.h.in Makefile $(libfreeswitch_la_SOURCES) $(library_include_HEADERS)
+       @cat $< > $@; \
+       if [ -d .git ]; then \
+         xdate="$$(date -d "$$(git log -n1 --format='%ci' HEAD)" -u '+%Y%m%dT%H%M%SZ')"; \
+         xcommit="$$(git rev-list -n1 --abbrev=10 --abbrev-commit HEAD)"; \
+         xver="+git~$$xdate~$$xcommit"; \
+         if ! git diff-index --quiet HEAD; then \
+           xver="$$xver+unclean~$$(date -u +%Y%m%dT%H%M%SZ)"; \
+         fi; \
+         sed \
+           -e "/#define *SWITCH_VERSION_REVISION/{s/\"\([^\"]*\)\"/\"\1$$xver\"/; :l n; b l}" \
+           $< > $@; \
+       fi;
 
 ##
 ## Dependency targets
@@ -544,7 +534,6 @@ is-scm:
 
 update: is-scm
        @if test -d .git ; then \
-         test ! -f .version || rm -f .version ; \
          echo "Pulling updates..." ; \
          git pull ; \
        else \
index 0599a0c6b73ff166e93bfab187fcf593653c26ff..514a9151e4c635269c31f3b33f4a632aecff1e67 100644 (file)
@@ -10,7 +10,6 @@ AC_SUBST(SWITCH_VERSION_MICRO, [0])
 AC_SUBST(SWITCH_VERSION_REVISION, [-rc2])
 
 AC_CONFIG_FILES([src/include/switch_version.h.in:src/include/switch_version.h.template])
-AC_CONFIG_FILES([.version:.version.in])
 
 AC_CONFIG_AUX_DIR(build/config)
 AM_INIT_AUTOMAKE(libfreeswitch,0.1)