Commit 822966eb authored by Andrew Heather's avatar Andrew Heather
Browse files

Merge branch 'olesenm'

parents 368eec5a 0c557151
......@@ -2,8 +2,8 @@
cd ${0%/*} || exit 1 # run from this directory
set -x
# force update of Foam::FOAMversion string (git tag or $WM_PROJECT_VERSION)
/bin/rm -f OpenFOAM/Make/$WM_OPTIONS/global.? 2>/dev/null
# update Foam::FOAMversion string if required
wmakePrintBuild -check || /bin/rm -f OpenFOAM/Make/$WM_OPTIONS/global.? 2>/dev/null
wmakeLnInclude -f OpenFOAM
wmakeLnInclude -f OSspecific/$WM_OS
......
......@@ -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)
......
.SUFFIXES: .Cver
#
# update version string
# update version string in C++ file and in $WM_PROJECT_DIR/.build file
#
Cvertoo = \
sed s/WM_PROJECT_VERSION/\"$(shell wmakePrintBuild)\"/ $$SOURCE > $*.C; \
sed 's/WM_PROJECT_VERSION/$(shell wmakePrintBuild -update)/' $$SOURCE > $*.C; \
$(CC) $(c++FLAGS) -c $*.C -o $@
.Cver.dep:
......
......@@ -35,10 +35,15 @@ Script=${0##*/}
usage() {
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
usage: $Script
usage: $Script [OPTION]
options:
-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 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
......@@ -47,11 +52,33 @@ USAGE
}
#------------------------------------------------------------------------------
# provide immediate help
if [ "$1" = "-h" -o "$1" = "-help" ]
then
usage
fi
unset checkOnly update version
# parse options
while [ "$#" -gt 0 ]
do
case "$1" in
-h | -help)
usage
;;
-check)
checkOnly=true
shift
;;
-update)
update=true
shift
;;
-version)
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
version=$2
shift 2
;;
*)
usage "unknown option/argument: '$*'"
;;
esac
done
#------------------------------------------------------------------------------
......@@ -61,35 +88,64 @@ fi
build="$WM_PROJECT_DIR/.build"
previous=$(tail -1 $build 2>/dev/null)
#
# building under git
# note: could also use --abbrev=32 for maximum resolution
#
version=$(git describe --always --tags 2>/dev/null)
if [ $? -eq 0 ]
if [ -n "$version" ]
then
# specified a version - no error possible
rc=0
else
# 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
# update persistent build tag if possible
if [ $rc -eq 0 -a -n "$update" -a "$version" != "$previous" ]
then
# update persistent build tag (this could be made optional or removed)
if [ "$version" != "$previous" ]
if [ -w "$build" -a \( -w "$WM_PROJECT_DIR" -o ! -e "$build" \) ]
then
if [ -w "$build" -a \( -w "$WM_PROJECT_DIR" -o ! -e "$build" \) ]
echo $version >| "$build" 2>/dev/null
fi
fi
# check git vs. persistent build tag - no output
if [ -n "$checkOnly" ]
then
if [ $rc -eq 0 ]
then
test "$version" = "$previous"
rc=$?
if [ $rc -eq 0 ]
then
echo $version >| "$build" 2>/dev/null
echo "same version as previous build"
else
echo "version changed from previous build"
fi
else
echo "no git description found"
fi
exit $rc
fi
echo $version
if [ $rc -eq 0 ]
then
# 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
#------------------------------------------------------------------------------
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment