The Makefiles are now in the makefiles sub-directory The "-f | -force" option in wmakeLnInclude is now "-u | -update" for consistency with the other scripts. The "Usage" entry in the headers is now consistently formatted in all scripts.
238 lines
6.7 KiB
Bash
Executable File
238 lines
6.7 KiB
Bash
Executable File
#!/bin/sh
|
|
#------------------------------------------------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration |
|
|
# \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
|
# \\/ M anipulation |
|
|
#-------------------------------------------------------------------------------
|
|
# License
|
|
# This file is part of OpenFOAM.
|
|
#
|
|
# OpenFOAM is free software: you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
# for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
# Script
|
|
# wmakePrintBuild
|
|
#
|
|
# Usage
|
|
# wmakePrintBuild [OPTION]
|
|
#
|
|
# Description
|
|
# Print the version used when building the project
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
Script=${0##*/}
|
|
|
|
usage() {
|
|
exec 1>&2
|
|
|
|
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
|
|
cat<<USAGE
|
|
Usage: $Script [OPTION]
|
|
options:
|
|
-check check the git head commit vs. \$WM_PROJECT_DIR/.build
|
|
(exit code 0 for no changes)
|
|
-major report \$WM_PROJECT_VERSION only and exit
|
|
-update update \$WM_PROJECT_DIR/.build from the git information
|
|
-pkg TAG specify packager/release tag ('none' marks an empty packager)
|
|
-short report short version information (ie, without pkg tag)
|
|
-version VER specify an alternative version
|
|
|
|
Print the version used when building the project, in this order of precedence:
|
|
* the git head commit (prefixed with \$WM_PROJECT_VERSION)
|
|
* \$WM_PROJECT_DIR/.build
|
|
* \$WM_PROJECT_VERSION
|
|
|
|
USAGE
|
|
exit 1
|
|
}
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Parse arguments and options
|
|
#------------------------------------------------------------------------------
|
|
unset checkOnly update package version shortOpt
|
|
|
|
while [ "$#" -gt 0 ]
|
|
do
|
|
case "$1" in
|
|
-h | -help)
|
|
usage
|
|
;;
|
|
-c | -check)
|
|
checkOnly=true
|
|
shift
|
|
;;
|
|
-major)
|
|
echo ${WM_PROJECT_VERSION:-unknown}
|
|
exit 0
|
|
;;
|
|
-u | -update)
|
|
update=true
|
|
shift
|
|
;;
|
|
-pkg | -package)
|
|
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
|
# Mark empty as 'none', disallow '!' in string
|
|
package=$(echo "${2:-none}" | sed -e 's/!//g')
|
|
shift 2
|
|
;;
|
|
-short)
|
|
shortOpt=true
|
|
shift
|
|
;;
|
|
-v | -version)
|
|
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
|
version="$2"
|
|
shift 2
|
|
;;
|
|
*)
|
|
usage "unknown option/argument: '$*'"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
# Persistent build tag
|
|
build="$WM_PROJECT_DIR/.build"
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Retrieve old values from the $WM_PROJECT_DIR/.build cache, stored as
|
|
# version [packager]
|
|
#------------------------------------------------------------------------------
|
|
unset oldPackage oldVersion
|
|
getOldValues()
|
|
{
|
|
set -- $(tail -1 $build 2>/dev/null)
|
|
oldVersion="$1"
|
|
[ "$#" -gt 0 ] && shift
|
|
oldPackage="$@"
|
|
[ "${oldPackage:-none}" = none ] && unset oldPackage
|
|
}
|
|
|
|
#------------------------------------------------------------------------------
|
|
# printTag - output the build tag, reuses the old -package tag if needed
|
|
#------------------------------------------------------------------------------
|
|
printTag()
|
|
{
|
|
if [ "${package:-${oldPackage:-none}}" = none ]
|
|
then
|
|
echo "$version"
|
|
else
|
|
echo "$version ${package:-$oldPackage}"
|
|
fi
|
|
}
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Get the version
|
|
#------------------------------------------------------------------------------
|
|
|
|
if [ -n "$version" ]
|
|
then
|
|
# Specified a version - no error possible
|
|
rc=0
|
|
else
|
|
# Get the head SHA1 when building under git
|
|
# if there are multiple values (eg, HEAD, origin/HEAD, ...)
|
|
# only take the first one, which is 'HEAD'
|
|
version=$(
|
|
cd $WM_PROJECT_DIR 2>/dev/null && \
|
|
git show-ref --hash=12 --head HEAD 2>/dev/null | head -1
|
|
)
|
|
|
|
if [ -n "$version" ]
|
|
then
|
|
# Mark as success and prefix with WM_PROJECT_VERSION
|
|
rc=0
|
|
version="${WM_PROJECT_VERSION}-$version"
|
|
else
|
|
# Mark as failure
|
|
rc=1
|
|
fi
|
|
fi
|
|
|
|
|
|
# Retrieve old values
|
|
getOldValues
|
|
|
|
if [ "$shortOpt" = true ]
|
|
then
|
|
unset package oldPackage
|
|
fi
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Update persistent build tag if possible
|
|
#------------------------------------------------------------------------------
|
|
if [ $rc -eq 0 -a -n "$update" ]
|
|
then
|
|
if [ "$version:$package" != "$oldVersion:$oldPackage" ]
|
|
then
|
|
if [ -w "$build" -o \( -w "$WM_PROJECT_DIR" -a ! -e "$build" \) ]
|
|
then
|
|
printTag >| "$build" 2>/dev/null
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Check git vs. persistent build tag
|
|
#------------------------------------------------------------------------------
|
|
if [ -n "$checkOnly" ]
|
|
then
|
|
if [ $rc -eq 0 ]
|
|
then
|
|
test "$version:${package:-$oldPackage}" = "$oldVersion:$oldPackage"
|
|
rc=$?
|
|
if [ $rc -eq 0 ]
|
|
then
|
|
echo "same version as previous build" 1>&2
|
|
else
|
|
echo "version changed from previous build" 1>&2
|
|
fi
|
|
else
|
|
echo "no git description found" 1>&2
|
|
fi
|
|
exit $rc
|
|
fi
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Cannot get git information or -version version
|
|
#------------------------------------------------------------------------------
|
|
if [ $rc -ne 0 ]
|
|
then
|
|
if [ -n "$oldVersion" ]
|
|
then
|
|
# Use previous version info
|
|
version="$oldVersion"
|
|
else
|
|
# Fallback to WM_PROJECT_VERSION alone
|
|
version="${WM_PROJECT_VERSION:-unknown}"
|
|
fi
|
|
fi
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Output the tag
|
|
#------------------------------------------------------------------------------
|
|
printTag
|
|
|
|
|
|
#------------------------------------------------------------------------------
|