Retrieve beta release numbers from git tags.
authorWerner Koch <wk@gnupg.org>
Thu, 3 May 2012 13:32:16 +0000 (15:32 +0200)
committerWerner Koch <wk@gnupg.org>
Thu, 3 May 2012 13:32:16 +0000 (15:32 +0200)
* configure.ac: Add git magic.
--

This new scheme makes sure that we have increasing numbers for beta
releases - this is what users usually expect.

README
configure.ac

diff --git a/README b/README
index 27c236d..845d8fb 100644 (file)
--- a/README
+++ b/README
@@ -129,10 +129,9 @@ example:
   1.0.1-svn1240     - yet another snapshot
   1.0.1             - The final 1.0.1 release
   2.1.1             - The final 2.1.1 release
-  2.1.1-34299-beta  - A snapshot before the 2.1.1 release.
-                      (The number 34299 is computed from the first 4
-                       characters of the GIT SHA-1 (85fb) converted to
-                       decimal.)
+  2.1.1-beta88      - A snapshot before the 2.1.1 release.
+                      (The 88 in this example is the number of
+                       commits since the last release).
 
 The important point is that we bump up the version number before we do
 an release and append a suffix to mark it as a development version.
@@ -146,7 +145,7 @@ Copyright
 
 The entire Gpg4win package is
 
-  Copyright (C) 2005, 2006, 2007, 2008, 2009 g10 Code GmbH
+  Copyright (C) 2005, 2006, 2007, 2008, 2009, 2012 g10 Code GmbH
 
   GPG4Win is free software; you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published by
index f8d8f0f..0b642b6 100644 (file)
 AC_PREREQ(2.59)
 min_automake_version="1.9.3"
 
-# Remember to change the version number immediately *after* a release.
-# Set my_isgit to "yes" for non-released code.
-# Right after a release the make target "copy-news" is to be called!
+# To build a release you need to create a tag with the version number
+# (git tag -s gpg4win-2.x.y) and run "./autogen.sh --force".  Please
+# bump the version number immediately after the release and do another
+# commit and push so that the git magic is able to work.
+#
+# After a release the make target "copy-news" is to be called as well!
 m4_define([my_version], [2.1.1])
-m4_define([my_isgit], [yes])
 
+# Below is m4 magic to extract and compute the git revision number,
+# the decimalized short revision number, a beta version string and a
+# flag indicating a development version (my_isgit). The latter works
+# by requiring the final tag in the repository.
 m4_define([git_revision], m4_esyscmd([git branch -v 2>/dev/null \
           | awk '/^\* / {printf "%s",$3}']))
-# We also define a decimal version of the git revision.
 m4_define([git_revision_dec],
-  m4_esyscmd_s([echo 0000$((0x$(echo ]git_revision[|head -c 4)))|tail -c 6]))
-m4_define([my_full_version],
-          [my_version[]m4_if(my_isgit,[yes],[-[]git_revision_dec[]-beta])])
+          m4_esyscmd_s([echo $((0x$(echo ]git_revision[|head -c 4)))]))
+m4_define([git_betastring],
+          m4_esyscmd_s([git describe --match 'gpg4win-[0-9].*.*[0-9]' --long|\
+                        awk -F- '$3!=0{print"-beta"$3}']))
+m4_define([my_isgit],m4_if(git_betastring,[],[no],[yes]))
+m4_define([my_full_version],[my_version[]git_betastring])
+
 AC_INIT([gpg4win],[my_full_version],[gpg4win-devel@wald.intevation.org])
 
 # Remember to update these version numbers also in the NEWS file.
@@ -408,3 +417,10 @@ if test -n "$missing_opt_tools"; then
       AC_MSG_NOTICE([$i is missing])
     done
 fi
+
+echo "
+        $PACKAGE_NAME-$PACKAGE_VERSION prepared for make
+
+        Revision: ${GIT_REVISION}  (${GIT_REVISION_DEC})
+        Platform: $host
+"