From: Simon Wilkinson Date: Sat, 26 Jun 2010 18:35:18 +0000 (+0100) Subject: Use git describe to determine build version X-Git-Tag: openafs-devel-1_5_75~49 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=5158766dce97570e51fc3abb2c8b3405fe7c299e;p=packages%2Fo%2Fopenafs.git Use git describe to determine build version This patch makes the configure and build system use the output from 'git describe' to determine the version of the software being built. This means that all that is necessary to create a new release is to tag the repository - removing the double sources of version information. There are a couple of fallbacks for systems which do not have git available for builds. Firstly, if a file called '.version' exists in the top level of the repository, then the version information is pulled from this file. The intention is that those packaging up git checkouts for onwards distribution will use 'git describe > .version' before producing their tarballs. Secondly, if we cannot find any version information then the version will default to 'UNKNOWN' This all mirrors the way that many others have integrated git with automake and friends - although the implementation is independent. Change-Id: I7fa4605e52181d60657ad794ca8efdb5a9fb1449 Reviewed-on: http://gerrit.openafs.org/1824 Tested-by: Derrick Brashear Reviewed-by: Andrew Deason Reviewed-by: Derrick Brashear Reviewed-by: Russ Allbery --- diff --git a/.gitignore b/.gitignore index d261255c4..9ef0621bb 100644 --- a/.gitignore +++ b/.gitignore @@ -52,6 +52,7 @@ rs_state.ini /TAGS /NTLang.bat /golast.bat +/.version # Destination build directories /alpha_nbsd* diff --git a/build-tools/git-version b/build-tools/git-version new file mode 100755 index 000000000..b8c680229 --- /dev/null +++ b/build-tools/git-version @@ -0,0 +1,21 @@ +#!/bin/sh + +version_file=$1 + +if [ -f $version_file ] ; then + git_version=`cat $version_file` +else + if which git > /dev/null; then + 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" + fi + else + git_version=UNKNOWN + fi +fi + +echo "$git_version" | sed -e 's/openafs-[^-]*-//' -e 's/_/./g' | tr -d '\012' diff --git a/build-tools/libafsdep b/build-tools/libafsdep new file mode 100644 index 000000000..163773d53 --- /dev/null +++ b/build-tools/libafsdep @@ -0,0 +1 @@ +git-version diff --git a/configure-libafs.in b/configure-libafs.in index c8c476edf..77fb092a0 100644 --- a/configure-libafs.in +++ b/configure-libafs.in @@ -1,5 +1,5 @@ AC_PRERQ([2.60]) -AC_INIT([OpenAFS], [1.5.74.1]) +AC_INIT([OpenAFS], m4_esyscmd([build-tools/git-version .version])) AC_CONFIG_SRCDIR(src/libafs/Makefile.common.in) AM_INIT_AUTOMAKE diff --git a/configure.in b/configure.in index b6269e0fb..039d8c7fd 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ AC_PREREQ([2.60]) -AC_INIT([OpenAFS], [1.5.74.1]) +AC_INIT([OpenAFS], m4_esyscmd([build-tools/git-version .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 0d612ddfa..e5baf5a03 100644 --- a/src/config/Makefile.version-NOCML.in +++ b/src/config/Makefile.version-NOCML.in @@ -6,18 +6,19 @@ # directory or online at http://www.openafs.org/dl/license10.html PACKAGE=@PACKAGE@ -VERSION=@VERSION@ AFS_component_version_number.o: AFS_component_version_number.c AFS_component_version_number.c: @TOP_OBJDIR@/src/config/Makefile.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=`@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: - echo '' >version.xml - echo '' >>version.xml - echo '${VERSION}' >>version.xml + VERSION=`@abs_top_srcdir@/build-tools/git-version @abs_top_srcdir/.version` && \ + echo '' >version.xml && \ + echo '' >>version.xml && \ + echo ''$$VERSION'' >>version.xml && \ echo '' >>version.xml version.txt: diff --git a/src/config/make_libafs_tree.pl b/src/config/make_libafs_tree.pl index fb8295d75..05e1eb8b1 100755 --- a/src/config/make_libafs_tree.pl +++ b/src/config/make_libafs_tree.pl @@ -76,6 +76,8 @@ finddepth(\&find_libafsdep, $projdir); ©it("$projdir/src/libafs/MakefileProto.$ostype.in", "$treedir/src/libafs/MakefileProto.in"); +$showonly || system("$projdir/build-tools/git-version $projdir/.version > $treedir/.version"); + # We need to regenerate this to support building amd64 kernels from a # libafs_tree built on i386. unlink("$treedir/include/afs/param.h");