diff options
Diffstat (limited to 'lib/version.sh')
-rwxr-xr-x | lib/version.sh | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/version.sh b/lib/version.sh new file mode 100755 index 0000000..32fd6ec --- /dev/null +++ b/lib/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 |