From: Nick Rosbrook Date: Fri, 12 Jun 2020 14:31:02 +0000 (+0100) Subject: tools: check go compiler version if present X-Git-Tag: 4.14.0-rc3~21 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=fec6a7af5c5760b9bccd9e7c3eaf29f0401af264;p=people%2Fjgross%2Fxen.git tools: check go compiler version if present 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 Acked-by: George Dunlap Tested-by: Nick Rosbrook Acked-by: Ian Jackson Release-acked-by: Paul Durrant --- 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 3df1a01ff9..15ba28211a 100755 --- a/tools/configure +++ b/tools/configure @@ -6833,6 +6833,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 : @@ -6842,6 +6846,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" + ]) ]) ])