Read 'autoconf --trace' output via a temp file to improve error detection. If the command's output is read via a pipe to Autom4te::XFile then perl setup errors (e.g. mixing host and OE perl libs) which cause the autoconf command to segfault may go undetected.
Add a -k / --continue command line option to simulate the old behaviour. Signed-off-by: Andre McCurdy <[email protected]> --- .../gnu-config/gnu-config/gnu-configize.in | 32 +++++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/meta/recipes-devtools/gnu-config/gnu-config/gnu-configize.in b/meta/recipes-devtools/gnu-config/gnu-config/gnu-configize.in index d4908fc..c3dcd74 100755 --- a/meta/recipes-devtools/gnu-config/gnu-config/gnu-configize.in +++ b/meta/recipes-devtools/gnu-config/gnu-config/gnu-configize.in @@ -45,6 +45,7 @@ use Autom4te::General; use Autom4te::XFile; # Do not use Cwd::chdir, since it might hang. use Cwd 'cwd'; +use File::Temp qw/ tempfile /; use strict; ## ----------- ## @@ -64,6 +65,7 @@ Operation modes: -V, --version print version number, then exit -v, --verbose verbosely report processing -f, --force consider all files obsolete + -k, --continue ignore errors when running autoconf -s, --symlink install symbolic links instead of copies -W, --warnings=CATEGORY report the warnings falling in CATEGORY [syntax] @@ -86,6 +88,8 @@ my $configdir = '@gnu-configdir@'; #'/home/kergoth/code/build-arm/tmp/staging/i686-linux/share/gnu-config'; my $autoconf = $ENV{'AUTOCONF'} || 'autoconf'; +my $ignore_autoconf_errors = 0; + # use symlinks instead. my $symlink = 0; @@ -109,6 +113,7 @@ sub parse_args () { my $srcdir; + getopt ('k|continue' => \$ignore_autoconf_errors); getopt ('s|symlink' => \$symlink); # Even if the user specified a configure.ac, trim to get the @@ -152,16 +157,33 @@ sub gnu_configize_current_directory () my $dest; verb "$configure_ac: tracing"; - my $traces = new Autom4te::XFile - ("$autoconf" + + my $autoconf_cmd = "$autoconf" . join (' --trace=', '', # If you change this list, update the # `Autoreconf-preselections' section of autom4te.in. 'AC_CONFIG_AUX_DIR:AC_CONFIG_AUX_DIR:\$1', 'AC_CONFIG_SUBDIRS:AC_CONFIG_SUBDIRS:\$1', 'AC_INIT', - ) - . ' |'); + ); + + # Read 'autoconf --trace' output via a temp file to improve error detection. + # If the command's output is read via a pipe to Autom4te::XFile then perl + # setup errors (e.g. mixing host and OE perl libs) which cause the autoconf + # command to segfault may go undetected. + + my $tmp = File::Temp->new(); + + if ($ignore_autoconf_errors) + { + xsystem ("$autoconf_cmd > $tmp || true"); + } + else + { + xsystem ("$autoconf_cmd > $tmp"); + } + + my $traces = new Autom4te::XFile ("< $tmp"); while ($_ = $traces->getline) { $aux_dir = $1 if /AC_CONFIG_AUX_DIR:(.*)/; @@ -169,6 +191,8 @@ sub gnu_configize_current_directory () push @subdir, split (' ', $1) if /AC_CONFIG_SUBDIRS:(.*)/; } + close $tmp; + # The subdirs are *optional*, they may not exist. foreach (@subdir) { -- 1.9.1 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
