lib/pb-protocol: Add PB_PROTOCOL_ACTION_AUTHENTICATE
[petitboot] / version.sh
index eed8d3a72f4981761614b215df49a995d1e3a3ab..bf91f707147d90c086c49bf51b39b80c2e4be3f7 100755 (executable)
@@ -3,32 +3,44 @@
 # version.sh: create a version string for use by configure.ac
 
 version=
+datefmt='%Y%m%d'
 
-if head=$(git rev-parse --short --verify HEAD 2>/dev/null); then
+export GIT_DIR=$(dirname $0)/.git/
 
-       # If available, use the git commit revision for the package version.
-
-       # Add a date prefix for easy reading.
-       # date='2010-11-30 16:36:09 -0800'
-
-       date=$(git log --pretty=format:"%ci" -1 HEAD)
-       date=${date##20}
-       date=${date%%:[0-9][0-9] *}
-       date=${date//-/.}
-       date=${date// /.}
-       date=${date//:/.}
-
-       version=$(printf '%s-%s%s' ${date} g ${head})
-
-       # Add a '-dirty' postfix for uncommitted changes.
+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
-               version=`printf '%s%s' ${version} -dirty`
+               suffix=-dirty
        fi
-else
-       # Default to current date and time.
 
-       version="dev-$(date +%y.%m.%d-%H.%M.%S)"
+       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 "$PETITBOOT_VERSION" ];
+       then
+               # Full git hash
+               len=$(echo -n "${PETITBOOT_VERSION}" | wc -c)
+               if [[ ${len} == 40 ]]; then
+                       version=`echo -n ${PETITBOOT_VERSION} | \
+                               sed "s/^\([0-9a-f]\{7\}\).*/\1/;"`
+               else
+                       version="$PETITBOOT_VERSION"
+               fi
+       else
+               # Default to current date and time.
+               version="$(date +dev.$datefmt)"
+       fi
 fi
 
 echo $version