From 034d4153c401dc77b38db6aff73c1d6c5654f4ad Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 11 Jun 2012 16:16:50 +0000 Subject: [PATCH] Improve SWITCH_VERSION_REVISION generation 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 | 1 - Makefile.am | 37 +++++++++++++------------------------ configure.in | 1 - 3 files changed, 13 insertions(+), 26 deletions(-) delete mode 100644 .version.in diff --git a/.version.in b/.version.in deleted file mode 100644 index 449460b02e..0000000000 --- a/.version.in +++ /dev/null @@ -1 +0,0 @@ -@SWITCH_VERSION_REVISION@ diff --git a/Makefile.am b/Makefile.am index 12dc3fa05a..ca539ec6ae 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 \ diff --git a/configure.in b/configure.in index 0599a0c6b7..514a9151e4 100644 --- a/configure.in +++ b/configure.in @@ -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)