bootstrap: specify particular version in buildreq with =x.y.

* gl/build-aux/bootstrap.in (func_check_versions): If the version
number begins with '=' then it must match the installed version of
the named tool exactly.
* gl/doc/bootstrap.texi (buildreq): Document the '=vernum' feature.
* bootstrap: Regenerate.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
This commit is contained in:
Gary V. Vaughan 2014-01-07 14:16:34 +13:00
parent 1f14273e95
commit 5e5cf7a7d6
3 changed files with 45 additions and 12 deletions

View File

@ -4805,9 +4805,6 @@ delimited list of triples; 'program min-version url'."
else else
_G_instver=`func_get_version $_G_app` _G_instver=`func_get_version $_G_app`
test -z "$_G_instver" \
|| func_verbose "found '$_G_app' version $_G_instver."
# Fail if --version didn't work. # Fail if --version didn't work.
if test -z "$_G_instver"; then if test -z "$_G_instver"; then
func_error "Prerequisite '$_G_app' not found. Please install it, or func_error "Prerequisite '$_G_app' not found. Please install it, or
@ -4816,12 +4813,29 @@ delimited list of triples; 'program min-version url'."
# Fail if a newer version than what we have is required. # Fail if a newer version than what we have is required.
else else
func_verbose "found '$_G_app' version $_G_instver."
case $_G_reqver in
=*)
# If $buildreq version starts with '=', version must
# match the installed program exactly.
test "x$_G_reqver" = "x=$_G_instver" || {
func_error "\
'$_G_app' version == $_G_instver is too old
'exactly $_G_app-$_G_reqver is required"
func_check_versions_result=false
}
;;
*)
# Otherwise, anything that is not older is a match.
func_lt_ver "$_G_reqver" "$_G_instver" || { func_lt_ver "$_G_reqver" "$_G_instver" || {
func_error "\ func_error "\
'$_G_app' version == $_G_instver is too old '$_G_app' version == $_G_instver is too old
'$_G_app' version >= $_G_reqver is required" '$_G_app' version >= $_G_reqver is required"
func_check_versions_result=false func_check_versions_result=false
} }
;;
esac
fi fi
fi fi
done done

View File

@ -2474,9 +2474,6 @@ delimited list of triples; 'program min-version url'."
else else
_G_instver=`func_get_version $_G_app` _G_instver=`func_get_version $_G_app`
test -z "$_G_instver" \
|| func_verbose "found '$_G_app' version $_G_instver."
# Fail if --version didn't work. # Fail if --version didn't work.
if test -z "$_G_instver"; then if test -z "$_G_instver"; then
func_error "Prerequisite '$_G_app' not found. Please install it, or func_error "Prerequisite '$_G_app' not found. Please install it, or
@ -2485,12 +2482,29 @@ delimited list of triples; 'program min-version url'."
# Fail if a newer version than what we have is required. # Fail if a newer version than what we have is required.
else else
func_verbose "found '$_G_app' version $_G_instver."
case $_G_reqver in
=*)
# If $buildreq version starts with '=', version must
# match the installed program exactly.
test "x$_G_reqver" = "x=$_G_instver" || {
func_error "\
'$_G_app' version == $_G_instver is too old
'exactly $_G_app-$_G_reqver is required"
func_check_versions_result=false
}
;;
*)
# Otherwise, anything that is not older is a match.
func_lt_ver "$_G_reqver" "$_G_instver" || { func_lt_ver "$_G_reqver" "$_G_instver" || {
func_error "\ func_error "\
'$_G_app' version == $_G_instver is too old '$_G_app' version == $_G_instver is too old
'$_G_app' version >= $_G_reqver is required" '$_G_app' version >= $_G_reqver is required"
func_check_versions_result=false func_check_versions_result=false
} }
;;
esac
fi fi
fi fi
done done

View File

@ -82,6 +82,11 @@ requirement for Autobuild is added automatically, and finally if there
are any diff files under @code{local_gl_dir}, then a versionless are any diff files under @code{local_gl_dir}, then a versionless
requirement for patch is also added. requirement for patch is also added.
When there are backwards incompatibilities in a newer build-tool
release, you can pin the version requirement for your program by
prefixing the version number field in buildreq with a single '='
character (no spaces).
When @command{bootstrap} is invoked, it will check that all the listed When @command{bootstrap} is invoked, it will check that all the listed
and automatically added tools are available at the given minimum version, and automatically added tools are available at the given minimum version,
or else bail out with a diagnostic. or else bail out with a diagnostic.