blob: 1f51768fa006ea32e4747907cffe5e07174cb35e [file] [log] [blame]
Simon Kelleya4f04ed2012-01-06 11:47:02 +00001#!/bin/sh
2
3# Determine the version string to build into a binary.
4# When building in the git repository, we can use the output
5# of "git describe" which gives an unequivocal answer.
6#
7# Failing that, we use the contents of the VERSION file
8# which has a set of references substituted into it by git.
9# If we can find one which matches $v[0-9].* then we assume it's
10# a version-number tag, else we just use the whole string.
Simon Kelley00acd062012-08-17 14:18:50 +010011# If there is more than one v[0-9].* tag, sort them and use the
Simon Kelleyf1204a82021-01-29 23:20:06 +000012# first. The insane arguments to the sort command are to ensure
13# that, eg v2.64 comes before v2.63, but v2.63 comes before v2.63rc1
14# and v2.63rc1 comes before v2.63test1
15
Simon Kelleya4f04ed2012-01-06 11:47:02 +000016
Bert Gijsbers16f03e72017-03-06 23:07:32 +000017# Change directory to the toplevel source directory.
18if test -z "$1" || ! test -d "$1" || ! cd "$1"; then
19 echo "$0: First argument $1 must be toplevel dir." >&2
20 exit 1
21fi
22
Johnny S. Lee8efd7312015-04-26 22:23:57 +010023if which git >/dev/null 2>&1 && \
Bert Gijsbers16f03e72017-03-06 23:07:32 +000024 ([ -d .git ] || grep '^gitdir:' .git >/dev/null 2>&1) && \
25 git describe >/dev/null 2>&1; then
26 git describe | sed 's/^v//'
Simon Kelleyfdacfb02012-02-28 15:20:25 +000027elif grep '\$Format:%d\$' $1/VERSION >/dev/null 2>&1; then
Bert Gijsbers16f03e72017-03-06 23:07:32 +000028 # unsubstituted VERSION, but no git available.
Simon Kelley98d76a02012-02-10 22:16:45 +000029 echo UNKNOWN
Simon Kelleya4f04ed2012-01-06 11:47:02 +000030else
Simon Kelley990123a2012-12-14 11:56:15 +000031 vers=`cat $1/VERSION | sed 's/[(), ]/,/ g' | tr ',' '\n' | grep ^v[0-9]`
Simon Kelleya4f04ed2012-01-06 11:47:02 +000032
33 if [ $? -eq 0 ]; then
Simon Kelleycfcafdd2021-02-01 23:46:43 +000034 echo "${vers}" | sort -k1.2,1.5Vr -k1.6,1.6 -k1.8,1.9Vr -k1.10,1.11Vr | head -n 1 | sed 's/^v//'
Simon Kelleya4f04ed2012-01-06 11:47:02 +000035 else
Simon Kelleyfdacfb02012-02-28 15:20:25 +000036 cat $1/VERSION
Simon Kelleya4f04ed2012-01-06 11:47:02 +000037 fi
38fi
39
40exit 0
41