1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-24 07:20:37 +00:00

autogen.sh: try to check for tool being present but broken

* autogen.sh (get_version): Check return status of "--version".
(check_version): Try to distinguish between a missing tool
and a broken one.  (Bug#27288)
This commit is contained in:
Glenn Morris 2017-06-19 21:13:08 -04:00
parent 8b38720220
commit c4bec6cc2a

View File

@ -45,8 +45,10 @@ autoconf_min=`sed -n 's/^ *AC_PREREQ(\([0-9\.]*\)).*/\1/p' configure.ac`
## Also note that we do not handle micro versions.
get_version ()
{
## Remove eg "./autogen.sh: line 50: autoconf: command not found".
$1 --version 2>&1 | sed -e '/not found/d' -e 's/.* //' -n -e '1 s/\([0-9][0-9\.]*\).*/\1/p'
vers=`$1 --version 2> /dev/null`
[ x"$vers" = x ] && return 1
echo "$vers" | sed -n -e '1 s/.* \([0-9][0-9\.]*\).*/\1/p'
}
## $1 = version string, eg "2.59"
@ -82,9 +84,15 @@ check_version ()
printf '%s' "(using $uprog0=$uprog) "
fi
found=`command -v $uprog 2> /dev/null`
[ x"$found" = x ] && return 1
have_version=`get_version $uprog`
[ x"$have_version" = x ] && return 1
## We should really check the return status of get_version.
## Non-zero means a broken executable, otherwise we failed to
## parse the version string.
[ x"$have_version" = x ] && return 4
have_maj=`major_version $have_version`
need_maj=`major_version $2`
@ -158,6 +166,7 @@ if $do_autoconf; then
0) stat="ok" ;;
1) stat="missing" ;;
2) stat="too old" ;;
4) stat="broken?" ;;
*) stat="unable to check" ;;
esac