[beast: 1/43] MISC: mkbuildid.sh: fix version extraction for -rcX releases



commit 213ad362bf8b9e27353031219211233c8f3066c4
Author: Tim Janik <timj gnu org>
Date:   Sat Jun 24 00:07:31 2017 +0200

    MISC: mkbuildid.sh: fix version extraction for -rcX releases
    
    Signed-off-by: Tim Janik <timj gnu org>

 misc/mkbuildid.sh |   24 ++++++++++++++----------
 1 files changed, 14 insertions(+), 10 deletions(-)
---
diff --git a/misc/mkbuildid.sh b/misc/mkbuildid.sh
index 0edcc6d..9c07dbf 100755
--- a/misc/mkbuildid.sh
+++ b/misc/mkbuildid.sh
@@ -9,8 +9,8 @@ SCRIPTNAME="$(basename "$0")" ; die() { e="$1"; shift; echo "$SCRIPTNAME: $*" >&
 SCRIPTDIR="$(dirname "$(readlink -f "$0")")"
 
 # Extract version, see: https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version
-FALLBACK_VERSION="$(sed -nr "/^AC_INIT\b/{ s/^[^,]*,[^0-9]*([A-Za-z0-9.:~+-]*).*/\1/; p; }" 
$SCRIPTDIR/../configure.ac)"
-test -n "$FALLBACK_VERSION" || die 7 "failed to detect AC_INIT in $SCRIPTDIR/../configure.ac"
+ACINIT_VERSION="$(sed -nr "/^AC_INIT\b/{ s/^[^,]*,[^0-9]*([A-Za-z0-9.:~+-]*).*/\1/; p; }" 
$SCRIPTDIR/../configure.ac)"
+test -n "$ACINIT_VERSION" || die 7 "failed to detect AC_INIT in $SCRIPTDIR/../configure.ac"
 
 test " $1" = " -p" && { PRINT=true; shift; } || PRINT=false
 BUILDID_CC="$1"
@@ -18,16 +18,20 @@ BUILDID_HH="$2"
 DOTGIT=`git rev-parse --git-dir 2>/dev/null` || true
 
 gen_buildid() {
-  test -e "$DOTGIT" ||                         # Tarball: lacks git version info
-      { printf %s "${FALLBACK_VERSION-0.0.0}+tarball" ; return ; }
+  # provide $ACINIT_VERSION for plain releases, otherwise
+  # provide $ACINIT_VERSION + monotonically increasing suffix + commitid
+  DESC=
   COMMITID="${1-HEAD}"
-  DESC=$(git describe --match '[0-9]*.*[0-9]' --abbrev=5 $COMMITID)
-  test "$DESC" != "${DESC%%-*}" ||             # HEAD is on release tag
-      { echo "$FALLBACK_VERSION" ; return ; }
-  # HEAD has commits on top of last release tag, transform 1.2.3-7-gabc into version postfix
-  GPOSTFIX="${DESC#*-}"                # 0.0.0-7-gabc -> 7-gabc
+  test -e "$DOTGIT" &&                                                 # Try 'git describe', shallow repos 
will yield ''
+      DESC=$(git describe --match '[0-9]*.*[0-9]' --abbrev=5 $COMMITID 2>/dev/null)
+  test -e "$DOTGIT" -a -n "$DESC" ||                                   # Check for git and git's version info
+      { printf %s "${ACINIT_VERSION-0.0.0}+tarball" ; return ; }       # otherwise treat as tarball
+  [[ "$DESC" =~ ([0-9]+[.][_#%+0-9.a-z-]*)-([0-9]+-g[a-f0-9]+)$ ]] ||  # Split version from git postfix
+      { echo "$ACINIT_VERSION" ; return ; }                            # failed to split, we're on a release 
tag
+  # HEAD has commits on top of last release tag, transform e.g. 1.2.3-rc4-7-gabc into increasing suffix
+  GPOSTFIX="${BASH_REMATCH[2]}"        # e.g. "7-gabc"
   GPOSTFIX="+${GPOSTFIX//-/.}" # 7-gabc -> +7.gabc
-  printf %s "$FALLBACK_VERSION$GPOSTFIX"
+  printf %s "$ACINIT_VERSION$GPOSTFIX"
 }
 
 BUILDID=$(gen_buildid HEAD)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]