summaryrefslogtreecommitdiffstats
path: root/version.sh
diff options
context:
space:
mode:
Diffstat (limited to 'version.sh')
-rwxr-xr-xversion.sh46
1 files changed, 46 insertions, 0 deletions
diff --git a/version.sh b/version.sh
new file mode 100755
index 0000000..32fd6ec
--- /dev/null
+++ b/version.sh
@@ -0,0 +1,46 @@
+#! /bin/bash
+#
+# version.sh: create a version string for use by configure.ac
+
+version=
+datefmt='%Y%m%d'
+
+export GIT_DIR=$(dirname $0)/.git/
+
+if head=$(git rev-parse --short=8 --verify HEAD 2>/dev/null); then
+
+ suffix=''
+ # Add a '-dirty' suffix for uncommitted changes.
+ if git diff-index HEAD | read dummy; then
+ suffix=-dirty
+ fi
+
+ if tag=$(git describe --tags --exact-match 2>/dev/null); then
+ # use a tag; remove any 'v' prefix from v<VERSION> tags
+ tag=${tag#v}
+ version=$(printf "%s%s" ${tag} ${suffix})
+ else
+ # Use the git commit revision for the package version, and add
+ # a date prefix for easy comparisons.
+ date=$(git log --pretty=format:"%ct" -1 HEAD)
+ version=$(printf "%($datefmt)T.g%s%s" ${date} ${head} ${suffix})
+ fi
+else
+ # Check if a specific version is set, eg: by buildroot
+ if [ ! -z "$PACKAGE_VERSION" ];
+ then
+ # Full git hash
+ len=$(echo -n "${PACKAGE_VERSION}" | wc -c)
+ if [[ ${len} == 40 ]]; then
+ version=`echo -n ${PACKAGE_VERSION} | \
+ sed "s/^\([0-9a-f]\{7\}\).*/\1/;"`
+ else
+ version="$PACKAGE_VERSION"
+ fi
+ else
+ # Default to current date and time.
+ version="$(date +dev.$datefmt)"
+ fi
+fi
+
+echo $version