chiark / gitweb /
configure.ac: Complicate ASDF version-number generation.
[sod] / configure.ac
index 5e121cdea92f49d98d0f046776a53fda4fe30868..765924a7045d3ffecc7f7279769413a689d2cd7e 100644 (file)
@@ -42,21 +42,25 @@ dnl--------------------------------------------------------------------------
 dnl Convert the version number for ASDF.
 
 ## This is surprisingly awful.  The convention for official version numbers
-## is that they look like MAJOR.MINOR.PATCH[.BPB][-N-gHEX[+]].  ASDF
-## insists on simple numeric things separated by dots.  If there's no Git
-## thing on the end, then the main version number will do fine.  If there
-## is, then we insert /two/ `0's in, followed by N and the HEX converted to
-## decimal.  Why two?  Because if there's no brown-paper-bag number, we
-## want to make sure that the first BPB release is higher than any of the
-## preceding Git revisions.
+## is that they look like [MAJOR.MINOR.PATCH~]MAJOR.MINOR.PATCH[.BPB]
+## [-N-gHEX[+]].  ASDF insists on simple numeric things separated by dots.
+## If there's no interim-version thing on the front or Git thing on the end,
+## then the main version number will do fine.  If there is, then we insert
+## /two/ `0's in, followed by N and the HEX converted to decimal.  Why two?
+## Because if there's no brown-paper-bag number, we want to make sure that
+## the first BPB release is higher than any of the preceding Git revisions.
 ver=AC_PACKAGE_VERSION
 case $ver in
   *-*-g*)
-    base=${ver%%-*} tail=${ver#*-}
+    case $ver in
+      *~*) pre=${ver%%~*}. tail=${ver#*~} ;;
+      *) pre= tail=$ver ;;
+    esac
+    base=${tail%%-*} tail=${tail#*-}
     n=${tail%%-*} tail=${tail#*-g}
-    case $tail in *+) grubby=.1 tail=${tail%+} ;; *) grubby= ;; esac
+    case $tail in *+) grubby=.0.1 tail=${tail%+} ;; *) grubby= ;; esac
     rev=$(( 0x$tail ))
-    ASDF_VERSION=$base.0.0.$n.$rev$grubby
+    ASDF_VERSION=$pre$base.0.0.$n.$rev$grubby
     ;;
   *)
     ASDF_VERSION=$ver