#!/bin/sh
# Print a version string.
-scriptversion=2010-04-26.15; # UTC
+scriptversion=2011-01-03.10; # UTC
-# Copyright (C) 2007-2010 Free Software Foundation, Inc.
+# Copyright (C) 2007-2011 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# echo $(VERSION) > $(distdir)/.tarball-version
case $# in
- 1) ;;
- *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version"; exit 1;;
+ 1|2) ;;
+ *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version" \
+ '[TAG-NORMALIZATION-SED-SCRIPT]'
+ exit 1;;
esac
tarball_version_file=$1
+tag_sed_script="${2:-s/x/x/}"
nl='
'
+# Avoid meddling by environment variable of the same name.
+v=
+
# First see if there is a tarball-only version file.
# then try "git describe", then default.
if test -f $tarball_version_file
then
- v=`cat $tarball_version_file` || exit 1
+ v=`cat $tarball_version_file` || v=
case $v in
*$nl*) v= ;; # reject multi-line output
[0-9]*) ;;
*) v= ;;
esac
test -z "$v" \
- && echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2
+ && echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2
fi
if test -n "$v"
then
: # use $v
-elif test -d .git \
+# Otherwise, if there is at least one git commit involving the working
+# directory, and "git describe" output looks sensible, use that to
+# derive a version string.
+elif test "`git log -1 --pretty=format:x . 2>&1`" = x \
&& v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \
|| git describe --abbrev=4 HEAD 2>/dev/null` \
+ && v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \
&& case $v in
v[0-9]*) ;;
*) (exit 1) ;;
esac
# Omit the trailing newline, so that m4_esyscmd can use the result directly.
-echo "$v" | tr -d '
-'
+echo "$v" | tr -d "$nl"
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)