summaryrefslogtreecommitdiff
path: root/version-gen.sh
diff options
context:
space:
mode:
authorAndre Noll <maan@tuebingen.mpg.de>2018-01-11 23:40:23 +0100
committerAndre Noll <maan@tuebingen.mpg.de>2018-01-11 23:40:23 +0100
commitb95de7e4b629c3ffb90ae09b53d0178285e73629 (patch)
tree2929492fa05274fc150e09c4821dbf52a65149f3 /version-gen.sh
initialinitial
Diffstat (limited to 'version-gen.sh')
-rwxr-xr-xversion-gen.sh27
1 files changed, 27 insertions, 0 deletions
diff --git a/version-gen.sh b/version-gen.sh
new file mode 100755
index 0000000..5c6b965
--- /dev/null
+++ b/version-gen.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# SPDX-License-Identifier: GPL-2.0
+
+version_file='version.c'
+ver='unnamed_version'
+# First try git, then gitweb, then default.
+if [ -e '.git' -o -e '../.git' ]; then
+ git_ver=$(git describe --abbrev=4 HEAD 2>/dev/null)
+ [ -z "$git_ver" ] && git_ver="$ver"
+ # update stat information in index to match working tree
+ git update-index -q --refresh > /dev/null
+ # if there are differences (exit code 1), the working tree is dirty
+ git diff-index --quiet HEAD || git_ver=$git_ver-dirty
+ ver=$git_ver
+elif [ "${PWD%%-*}" = 'tfortune-' ]; then
+ ver=${PWD##*/tfortune-}
+fi
+ver=${ver#v}
+
+echo "$ver"
+
+# update version file if necessary
+content="const char *lls_version(void) {return \"$ver\";};"
+[ -r "$version_file" ] && echo "$content" | cmp -s - $version_file && exit 0
+echo >&2 "new git version: $ver"
+echo "$content" > $version_file