Simplify autogen.sh version checking

* autogen.sh (get_version): Simplify and make more reliable
by using expr rather than echo | sed.  Check exit status of program.
Run program in subshell in case it cannot be executed.
(check_version): Check exit status of command rather than its output.
Check return status of get_version.
This commit is contained in:
Paul Eggert 2017-06-20 08:18:08 -07:00
parent efa2b08dcb
commit 6fcbbc393e

View file

@ -45,10 +45,8 @@ autoconf_min=`sed -n 's/^ *AC_PREREQ(\([0-9\.]*\)).*/\1/p' configure.ac`
## Also note that we do not handle micro versions.
get_version ()
{
vers=`$1 --version 2> /dev/null`
[ x"$vers" = x ] && return 1
echo "$vers" | sed -n -e '1 s/.* \([0-9][0-9\.]*\).*/\1/p'
vers=`($1 --version) 2> /dev/null` && expr "$vers" : '[^
]* \([0-9][0-9.]*\).*'
}
## $1 = version string, eg "2.59"
@ -84,15 +82,8 @@ 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`
## 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
command -v $uprog > /dev/null || return 1
have_version=`get_version $uprog` || return 4
have_maj=`major_version $have_version`
need_maj=`major_version $2`