Files
blis/build/update-version-file.sh
Field G. Van Zee 7ed415824d Updated copyright headers (continued).
Details:
- Inserted "at Austin" into third clause of license declarations.
  Meant to include this change in previous commit.
2014-07-14 16:14:33 -05:00

176 lines
4.8 KiB
Bash
Executable File

#!/bin/bash
#
# BLIS
# An object-based framework for developing high-performance BLAS-like
# libraries.
#
# Copyright (C) 2014, The University of Texas at Austin
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
# - Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# - Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# - Neither the name of The University of Texas at Austin nor the names
# of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
#
# update-version-file.sh
#
# Field G. Van Zee
#
print_usage()
{
#local script_name
# Get the script name
#script_name=${0##*/}
# Echo usage info
echo " "
echo " "$script_name
echo " "
echo " Field G. Van Zee"
echo " "
echo " Checks whether the current BLIS distribution is a git clone: if so,"
echo " it queries git to update the 'version' file with the latest version"
echo " string; otherwise, leaves the contents of 'version' unchanged."
echo " "
echo " Usage:"
echo " ${script_name} [options] versfile"
echo " "
echo " Arguments:"
echo " "
echo " versfile The file where the version string is stored. If versfile is"
echo " is not specified, then it defaults to 'version'."
echo " "
echo " Options:"
echo " "
echo " -o SCRIPT output script name"
echo " Use SCRIPT when outputting messages instead of the script's"
echo " actual name."
echo " "
# Exit with non-zero exit status
exit 1
}
main()
{
# -- BEGIN GLOBAL VARIABLE DECLARATIONS --
# The name of the script, stripped of any preceeding path.
script_name=${0##*/}
# The name of the default version file.
version_file_def='version'
# The name of the specified version file.
version_file=''
# Strings used during version query.
git_describe_str=''
new_version_str=''
# The script name to use instead of the $0 when outputting messages.
output_name=''
# The git directory.
gitdir='.git'
# -- END GLOBAL VARIABLE DECLARATIONS --
# Process our command line options.
while getopts ":ho:" opt; do
case $opt in
o ) output_name=$OPTARG ;;
h ) print_usage ;;
\? ) print_usage
esac
done
shift $(($OPTIND - 1))
# If an output script name was given, overwrite script_name with it.
if [ -n "${output_name}" ]; then
script_name="${output_name}"
fi
echo "${script_name}: checking whether we need to update the version file."
# Check the number of arguments after command line option processing.
if [ $# = "0" ]; then
version_file=${version_file_def}
echo "${script_name}: not sure which version file to update; defaulting to '${version_file}'."
elif [ $# = "1" ]; then
version_file=$1
echo "${script_name}: checking version file '${version_file}'."
else
print_usage
fi
# Check if the .git dir exists; if it does not, we do nothing.
if [ -d "${gitdir}" ]; then
echo "${script_name}: found '${gitdir}' directory; assuming git clone."
echo "${script_name}: executing: git describe --tags."
# Query git for the version string, which is simply the current tag,
# followed by a number signifying how many commits have transpired
# since the tag, followed by a 'g' and a shortened hash tab.
git_describe_str=$(git describe --tags)
echo "${script_name}: got back ${git_describe_str}."
# Strip off the commit hash label.
new_version_str=$(echo ${git_describe_str} | cut -d- -f-2)
echo "${script_name}: truncating to ${new_version_str}."
echo "${script_name}: updating version file '${version_file}'."
# Write the new version string to the version file.
echo "${new_version_str}" > ${version_file}
fi
# Exit peacefully.
return 0
}
# The script's main entry point, passing all parameters given.
main "$@"