Currently, no minimum go compiler version is required by the configure
scripts. However, the go bindings actually will not build with some
older versions of go. Add a check for a minimum go version of 1.11.1 in
accordance with tools/golang/xenlight/go.mod.

Signed-off-by: Nick Rosbrook <rosbro...@ainfosec.com>
---
 m4/golang.m4       |  4 ++++
 tools/configure    | 49 ++++++++++++++++++++++++++++++++++++++++++++++
 tools/configure.ac |  7 +++++++
 3 files changed, 60 insertions(+)

diff --git a/m4/golang.m4 b/m4/golang.m4
index 0b4bd54ce0..9cfd7e00a5 100644
--- a/m4/golang.m4
+++ b/m4/golang.m4
@@ -1,4 +1,8 @@
 AC_DEFUN([AC_PROG_GO], [
     dnl Check for the go compiler
     AC_CHECK_TOOL([GO],[go],[no])
+
+    if test "$GO" != "no"; then
+        GOVERSION=`$GO version | cut -d " " -f 3 | sed "s/go//"`
+    fi
 ])
diff --git a/tools/configure b/tools/configure
index b3668ec98d..f3f19c1a90 100755
--- a/tools/configure
+++ b/tools/configure
@@ -6845,6 +6845,10 @@ else
 fi
 
 
+    if test "$GO" != "no"; then
+        GOVERSION=`$GO version | cut -d " " -f 3 | sed "s/go//"`
+    fi
+
     if test "x$GO" = "xno"; then :
 
         if test "x$enable_golang" =  "xyes"; then :
@@ -6854,6 +6858,51 @@ fi
 fi
         golang="n"
 
+else
+
+
+
+
+  # Used to indicate true or false condition
+  ax_compare_version=false
+
+  # Convert the two version strings to be compared into a format that
+  # allows a simple string comparison.  The end result is that a version
+  # string of the form 1.12.5-r617 will be converted to the form
+  # 0001001200050617.  In other words, each number is zero padded to four
+  # digits, and non digits are removed.
+
+  ax_compare_version_A=`echo "$GOVERSION" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+                     -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/[^0-9]//g'`
+
+
+  ax_compare_version_B=`echo "1.11.1" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+                     -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/[^0-9]//g'`
+
+
+    ax_compare_version=`echo "x$ax_compare_version_A
+x$ax_compare_version_B" | sed 's/^ *//' | sort -r | sed 
"s/x${ax_compare_version_A}/false/;s/x${ax_compare_version_B}/true/;1q"`
+
+
+
+    if test "$ax_compare_version" = "true" ; then
+
+            if test "x$enable_golang" = "xyes"; then :
+
+                as_fn_error $? "\"Your version of go: $GOVERSION is not 
supported\"" "$LINENO" 5
+
+fi
+            golang="n"
+
+      fi
+
+
 fi
 
 fi
diff --git a/tools/configure.ac b/tools/configure.ac
index a9af0a21c6..9d126b7a14 100644
--- a/tools/configure.ac
+++ b/tools/configure.ac
@@ -338,6 +338,13 @@ AS_IF([test "x$golang" = "xy"], [
             AC_MSG_ERROR([Go tools enabled, but missing go compiler])
         ])
         golang="n"
+    ], [
+        AX_COMPARE_VERSION([$GOVERSION], [lt], [1.11.1], [
+            AS_IF([test "x$enable_golang" = "xyes"], [
+                AC_MSG_ERROR(["Your version of go: $GOVERSION is not 
supported"])
+            ])
+            golang="n"
+        ])
     ])
 ])
 
-- 
2.17.1


Reply via email to