From 417d2c8f9585c5e3ce17512a1ae8ca596a676c03 Mon Sep 17 00:00:00 2001 From: Simon Wilkinson Date: Tue, 29 Jun 2010 21:45:36 +0100 Subject: [PATCH] Build: Rework git version detection Rework the git version detection script to handle some issues that have been pointed out. 1/ Make it work properly with objdir builds 2/ Don't try to work out if the tree is dirty if git describe failed 3/ Use the configured VERSION as a fallback if we can't obtain proper version information during a make Change-Id: I39494e1c18cf4eacbb55386334da7128fbe96310 Reviewed-on: http://gerrit.openafs.org/2283 Reviewed-by: Andrew Deason Tested-by: Andrew Deason Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- build-tools/git-version | 29 +++++++++++++++++++--------- configure-libafs.in | 2 +- configure.in | 2 +- src/config/Makefile.version-NOCML.in | 4 ++-- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/build-tools/git-version b/build-tools/git-version index b8c680229..6bc9a50c1 100755 --- a/build-tools/git-version +++ b/build-tools/git-version @@ -1,20 +1,31 @@ #!/bin/sh -version_file=$1 +srcdir=$1 +fallback=$2 -if [ -f $version_file ] ; then - git_version=`cat $version_file` +if [ "x$fallback" = "x" ]; then + fallback=UNKNOWN +fi + +if [ -f $srcdir/.version ] ; then + git_version=`cat $srcdir/.version` else if which git > /dev/null; then + cd $srcdir git_version=`git describe --abbrev=4 HEAD 2>/dev/null` - - # Is the working tree dirty? - if ! git diff-index --quiet --cached HEAD --ignore-submodules || \ - ! git diff-files --quiet --ignore-submodules ; then - git_version="$git_version-dirty" + if [ $? = 0 ]; then + # Is the working tree dirty? + if git diff-index --quiet --cached HEAD --ignore-submodules && \ + git diff-files --quiet --ignore-submodules ; then + : + else + git_version="$git_version-dirty" + fi + else + git_version=$fallback fi else - git_version=UNKNOWN + git_version=$fallback fi fi diff --git a/configure-libafs.in b/configure-libafs.in index 77fb092a0..a8ba6f2d3 100644 --- a/configure-libafs.in +++ b/configure-libafs.in @@ -1,5 +1,5 @@ AC_PRERQ([2.60]) -AC_INIT([OpenAFS], m4_esyscmd([build-tools/git-version .version])) +AC_INIT([OpenAFS], m4_esyscmd([build-tools/git-version .])) AC_CONFIG_SRCDIR(src/libafs/Makefile.common.in) AM_INIT_AUTOMAKE diff --git a/configure.in b/configure.in index 039d8c7fd..5ebc1d41a 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ AC_PREREQ([2.60]) -AC_INIT([OpenAFS], m4_esyscmd([build-tools/git-version .version])) +AC_INIT([OpenAFS], m4_esyscmd([build-tools/git-version .])) AC_CONFIG_SRCDIR([src/config/stds.h]) AM_INIT_AUTOMAKE diff --git a/src/config/Makefile.version-NOCML.in b/src/config/Makefile.version-NOCML.in index e5baf5a03..c5613ffa0 100644 --- a/src/config/Makefile.version-NOCML.in +++ b/src/config/Makefile.version-NOCML.in @@ -10,12 +10,12 @@ PACKAGE=@PACKAGE@ AFS_component_version_number.o: AFS_component_version_number.c AFS_component_version_number.c: @TOP_OBJDIR@/src/config/Makefile.version - VERSION=`@abs_top_srcdir@/build-tools/git-version @abs_top_srcdir@/.version` && \ + VERSION=`@abs_top_srcdir@/build-tools/git-version @abs_top_srcdir@ "@VERSION@"` && \ echo 'char cml_version_number[]="@(#) OpenAFS '$$VERSION' built ' `date +"%Y-%m-%d"` '";' >AFS_component_version_number.c && \ echo 'char* AFSVersion = "${PACKAGE} '$$VERSION'";' >>AFS_component_version_number.c version.xml: - VERSION=`@abs_top_srcdir@/build-tools/git-version @abs_top_srcdir/.version` && \ + VERSION=`@abs_top_srcdir@/build-tools/git-version @abs_top_srcdir@ "@VERSION@"` && \ echo '' >version.xml && \ echo '' >>version.xml && \ echo ''$$VERSION'' >>version.xml && \ -- 2.39.5