Hi Pádraig, thank you for looking into this quirk. Your patch looks reasonable and works for me. For one minor suggestion, see below.
Pádraig Brady wrote on Thu, Oct 23, 2014 at 02:06:13PM +0100: > On 10/18/2014 05:58 PM, Ingo Schwarze wrote: >> On OpenBSD, the usual way to install the autotools is as follows: [...] >> $ autoconf; echo $? >> Provide an AUTOCONF_VERSION environment variable, please >> 127 >> $ export AUTOCONF_VERSION=2.65 >> $ autoconf --version | head -n1; echo $? >> autoconf (GNU Autoconf) 2.65 >> 0 [...] >> Now, if you forget to set these variables before running ./bootstrap, >> bootstrap check_exists() redirects the helpful error messages to >> /dev/null and shows bogus diagnostics instead: >> >> Error: 'autoconf' not found [...] > This should be address by the attached patch. On OpenBSD, in the GNU troff repository on the automake3 branch, i end up with the following diagnostics: $ ./bootstrap Provide an AUTOCONF_VERSION environment variable, please ./bootstrap: Error: 'autoconf' not found Provide an AUTOMAKE_VERSION environment variable, please ./bootstrap: Error: 'automake' not found tar: unknown option -- - usage: tar {crtux}[014578befHhjLmNOoPpqsvwXZz] [blocking-factor | archive | replstr] [-C directory] [-I file] [file ...] tar {-crtux} [-014578eHhjLmNOoPpqvwXZz] [-b blocking-factor] [-C directory] [-f archive] [-I file] [-s replstr] [file ...] ./bootstrap: Please install the prerequisite programs This is the reason: $ uname -a OpenBSD isnote.usta.de 5.6 GENERIC.MP#5 i386 $ which tar /bin/tar $ tar --version tar: unknown option -- - usage: tar {crtux}[014578befHhjLmNOoPpqsvwXZz] [blocking-factor | archive | replstr] [-C directory] [-I file] [file ...] tar {-crtux} [-014578eHhjLmNOoPpqvwXZz] [-b blocking-factor] [-C directory] [-f archive] [-I file] [-s replstr] [file ...] $ echo $? 1 In BSD land, it is unusual to version individual utilities. The operating system is regarded as one indivisible unit and only versioned as a whole. The tweaked version of your patch given below avoids such needless complaints; it should also help with other utilities that don't support the non-POSIX --version option or require other arguments not given here. Thank you, Ingo diff --git a/bootstrap b/bootstrap index ce90bc4..afaed4f 100755 --- a/bootstrap +++ b/bootstrap @@ -210,7 +210,15 @@ bootstrap_sync=false use_git=true check_exists() { - ($1 --version </dev/null) >/dev/null 2>&1 + if test "$1" = "--verbose"; then + ($2 --version </dev/null) >/dev/null 2>&1 + if test $? -ge 126; then + ($2 --version </dev/null) + fi + else + ($1 --version </dev/null) >/dev/null 2>&1 + fi + test $? -lt 126 } @@ -408,7 +416,7 @@ sort_ver() { # sort -V is not generally available get_version() { app=$1 - $app --version >/dev/null 2>&1 || return 1 + $app --version >/dev/null 2>&1 || { $app --version; return 1; } $app --version 2>&1 | sed -n '# Move version to start of line. @@ -467,7 +475,7 @@ check_versions() { if [ "$req_ver" = "-" ]; then # Merely require app to exist; not all prereq apps are well-behaved # so we have to rely on $? rather than get_version. - if ! check_exists $app; then + if ! check_exists --verbose $app; then warn_ "Error: '$app' not found" ret=1 fi