diff --git a/ChangeLog b/ChangeLog index df83bcee..b017fcb3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2008-03-17 Ralf Wildenhues + + * lib/Autom4te/FileUtils.pm (handle_exec_errors): New argument + $hint, show if the executing program does not exist. + (xsystem_hint): New function, like xsystem but allows to pass + a hint. + * bin/autoreconf.in: Use xsystem_hint for spawning autopoint and + libtoolize. + Report by Bruce Korb. + 2008-03-14 Stepan Kasal * lib/Autom4te/ChannelDefs.pm, tests/fortran.at, diff --git a/bin/autoreconf.in b/bin/autoreconf.in index 66da78e3..4ff8fb95 100644 --- a/bin/autoreconf.in +++ b/bin/autoreconf.in @@ -364,7 +364,7 @@ sub autoreconf_current_directory () } else { - xsystem "$autopoint"; + xsystem_hint ("autopoint is needed because this package uses Gettext", "$autopoint"); } @@ -528,7 +528,7 @@ sub autoreconf_current_directory () { $libtoolize .= " --ltdl"; } - xsystem ($libtoolize); + xsystem_hint ("libtoolize is needed because this package uses Libtool", $libtoolize); $rerun_aclocal = 1; } else diff --git a/lib/Autom4te/FileUtils.pm b/lib/Autom4te/FileUtils.pm index 819a7c38..ac56fd3e 100644 --- a/lib/Autom4te/FileUtils.pm +++ b/lib/Autom4te/FileUtils.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -47,7 +47,7 @@ use vars qw (@ISA @EXPORT); @EXPORT = qw (&open_quote &contents &find_file &mtime &update_file &up_to_date_p - &xsystem &xqx &dir_has_case_matching_file &reset_dir_cache); + &xsystem &xsystem_hint &xqx &dir_has_case_matching_file &reset_dir_cache); =item C @@ -231,23 +231,32 @@ sub up_to_date_p ($@) } -=item C +=item C Display an error message for C<$command>, based on the content of C<$?> and C<$!>. Be quiet if the command exited normally -with C<$expected_exit_code>. +with C<$expected_exit_code>. If C<$hint> is given, display that as well +if the command failed to run at all. =cut -sub handle_exec_errors ($;$) +sub handle_exec_errors ($;$$) { - my ($command, $expected) = @_; + my ($command, $expected, $hint) = @_; $expected = 0 unless defined $expected; + if (defined $hint) + { + $hint = "\n" . $hint; + } + else + { + $hint = ''; + } $command = (split (' ', $command))[0]; if ($!) { - fatal "failed to run $command: $!"; + fatal "failed to run $command: $!" . $hint; } else { @@ -316,6 +325,25 @@ sub xsystem (@) } +=item C + +Same as C, but allows to pass a hint that will be displayed +in case the command failed to run at all. + +=cut + +sub xsystem_hint (@) +{ + my ($hint, @command) = @_; + + verb "running: @command"; + + $! = 0; + handle_exec_errors "@command", 0, $hint + if system @command; +} + + =item C Return the contents of C<$file_name>.