version.sh: Fix in-tree case and allow external variables
authorSamuel Mendoza-Jonas <sam@mendozajonas.com>
Mon, 4 Apr 2016 03:23:43 +0000 (13:23 +1000)
committerSamuel Mendoza-Jonas <sam@mendozajonas.com>
Tue, 5 Apr 2016 00:47:38 +0000 (10:47 +1000)
"$(basename $0)" would return the name of the script, when what is
needed is the name of the directory; use 'dirname' instead.
If PETITBOOT_VERSION is set, as in a buildroot environment, use this
variable instead of the default case.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
version.sh

index f3e6268ca344e263b669b089364e230e471c1124..bf91f707147d90c086c49bf51b39b80c2e4be3f7 100755 (executable)
@@ -5,7 +5,7 @@
 version=
 datefmt='%Y%m%d'
 
-export GIT_DIR=$(basename $0)/.git/
+export GIT_DIR=$(dirname $0)/.git/
 
 if head=$(git rev-parse --short=8 --verify HEAD 2>/dev/null); then
 
@@ -26,8 +26,21 @@ if head=$(git rev-parse --short=8 --verify HEAD 2>/dev/null); then
                version=$(printf "%($datefmt)T.g%s%s" ${date} ${head} ${suffix})
        fi
 else
-       # Default to current date and time.
-       version="$(date +dev.$datefmt)"
+       # 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