From 0c5571519f445b5b2fd7208dc5804fbdcb4fee0e Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@Germany>
Date: Fri, 19 Dec 2008 13:20:14 +0100
Subject: [PATCH] changes to build version string

- version is WM_PROJECT_VERSION prefix + SHA1 from current git head
- move double quotes from make rules to global.Cver for extra safety
---
 src/OpenFOAM/global/global.Cver | 15 +++++++--------
 wmake/rules/General/version     |  2 +-
 wmake/wmakePrintBuild           | 22 +++++++++++++---------
 3 files changed, 21 insertions(+), 18 deletions(-)

diff --git a/src/OpenFOAM/global/global.Cver b/src/OpenFOAM/global/global.Cver
index e67b67b22a8..e2f411603ee 100644
--- a/src/OpenFOAM/global/global.Cver
+++ b/src/OpenFOAM/global/global.Cver
@@ -23,20 +23,19 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Description
-    Define the globals used in the FOAM library.  It is important that these
-    are constructed in the appropriate order to avoid the use of unconstructed
-    data in the global namespace.
+    Define the globals used in the OpenFOAM library.
+    It is important that these are constructed in the appropriate order to
+    avoid the use of unconstructed data in the global namespace.
 
-    This file has the extension .ver to force it to be parsed by the script
-    which converts WM_PROJECT_VERSION into the appropriate version number
-    string.
+    This file has the extension .Cver to trigger a Makefile rule that converts
+    WM_PROJECT_VERSION into the appropriate version string.
 
 \*---------------------------------------------------------------------------*/
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 #include "foamVersion.H"
 
-const char* const Foam::FOAMversion = WM_PROJECT_VERSION;
+const char* const Foam::FOAMversion = "WM_PROJECT_VERSION";
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 // Setup an error handler for the global new operator
@@ -51,7 +50,7 @@ const char* const Foam::FOAMversion = WM_PROJECT_VERSION;
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #include "JobInfo.H"
-bool Foam::JobInfo::constructed = false;
+bool Foam::JobInfo::constructed(false);
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 // Global error definitions (initialised by construction)
diff --git a/wmake/rules/General/version b/wmake/rules/General/version
index 3584779c67b..64f272ed088 100644
--- a/wmake/rules/General/version
+++ b/wmake/rules/General/version
@@ -4,7 +4,7 @@
 # update version string in C++ file and in $WM_PROJECT_DIR/.build file
 #
 Cvertoo = \
-    sed s/WM_PROJECT_VERSION/\"$(shell wmakePrintBuild -update)\"/ $$SOURCE > $*.C; \
+    sed 's/WM_PROJECT_VERSION/$(shell wmakePrintBuild -update)/' $$SOURCE > $*.C; \
     $(CC) $(c++FLAGS) -c $*.C -o $@
 
 .Cver.dep:
diff --git a/wmake/wmakePrintBuild b/wmake/wmakePrintBuild
index 3232727163e..868357fe58c 100755
--- a/wmake/wmakePrintBuild
+++ b/wmake/wmakePrintBuild
@@ -37,13 +37,13 @@ usage() {
     cat<<USAGE
 usage: $Script [OPTION]
 options:
-  -check          check git description vs. \$WM_PROJECT_DIR/.build
+  -check          check the git head commit vs. \$WM_PROJECT_DIR/.build
                   (exit code 0 for no changes)
-  -update         update the \$WM_PROJECT_DIR/.build from the git description
+  -update         update the \$WM_PROJECT_DIR/.build from the git information
   -version VER    specify an alternative version
 
 Print the version used when building the project, in this order of precedence:
-  * git description
+  * the git head commit (prefixed with \$WM_PROJECT_VERSION)
   * \$WM_PROJECT_DIR/.build
   * \$WM_PROJECT_VERSION
 
@@ -88,15 +88,20 @@ done
 build="$WM_PROJECT_DIR/.build"
 previous=$(tail -1 $build 2>/dev/null)
 
-# specified a version
 if [ -n "$version" ]
 then
     # specified a version - no error possible
     rc=0
 else
-    # building under git (could use --abbrev=32 for maximum resolution)
-    version=$(git describe --always --tags 2>/dev/null)
+    # building under git (get the head SHA1)
+    version=$(git show-ref --hash=12 --head HEAD 2>/dev/null)
     rc=$?
+
+    # prefix with WM_PROJECT_VERSION
+    if [ $rc -eq 0 ]
+    then
+        version="${WM_PROJECT_VERSION}-$version"
+    fi
 fi
 
 
@@ -130,17 +135,16 @@ then
 fi
 
 
-
 if [ $rc -eq 0 ]
 then
-    # output the git description or -version version
+    # output the git information or the -version version
     echo $version
 elif [ -n "$previous" ]
 then
     # use previous build tag
     echo $previous
 else
-    # fallback to WM_PROJECT_VERSION
+    # fallback to WM_PROJECT_VERSION alone
     echo ${WM_PROJECT_VERSION:-unknown}
 fi
 
-- 
GitLab