diff --git a/m4/fp_setup_project_version.m4 b/m4/fp_setup_project_version.m4 index 4ec3c51b0c8a99a8cc8ecfdc953b332d9c030ed8..031e41480e43f01b75b669a3afd962b6b32981b7 100644 --- a/m4/fp_setup_project_version.m4 +++ b/m4/fp_setup_project_version.m4 @@ -2,6 +2,9 @@ # --------------------- AC_DEFUN([FP_SETUP_PROJECT_VERSION], [ + # number of version number components + NumVersionComponents="$(( $(echo "$PACKAGE_VERSION" | tr -cd . | wc -c) + 1 ))" + if test "$RELEASE" = "NO"; then AC_MSG_CHECKING([for GHC version date]) if test -f VERSION_DATE; then @@ -62,6 +65,22 @@ AC_DEFUN([FP_SETUP_PROJECT_VERSION], VERSION_MINOR=`echo $VERSION_TMP | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\1'/` ProjectPatchLevel=`echo $VERSION_TMP | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\3'/` + # Verify that the version number has three components if a release version + # (that is, even minor version number). + AC_MSG_CHECKING([package version validity]) + StableRelease="$(( ($VERSION_MINOR & 1) == 0))" + if test "$StableRelease" = "1" -a "$NumVersionComponents" != "3"; then + AC_MSG_ERROR([Stable (even) version numbers must have three components]) + elif test "$StableRelease" = "0" -a "$NumVersionComponents" != "2"; then + AC_MSG_ERROR([Unstable (odd) version numbers must have two components]) + elif test "$RELEASE" = "YES" -a "$StableRelease" = "0"; then + AC_MSG_ERROR([RELEASE=YES despite having an unstable odd minor version number]) + elif test "$StableRelease" = "1"; then + AC_MSG_RESULT([okay stable branch version]) + else + AC_MSG_RESULT([okay unstable branch version]) + fi + # Calculate project version as an integer, using 2 digits for minor version case $VERSION_MINOR in ?) ProjectVersionInt=${VERSION_MAJOR}0${VERSION_MINOR} ;;