On Wed, May 27, 2015 at 2:06 PM, Andre McCurdy <[email protected]> wrote:
> 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]>
> ---

This patch set needs the same warning as before:

Warning: This patch causes building of some packages to fail if OE and
host perl versions differ, so should not be merged until those issues
are resolved. To reproduce the current issues:

  - Use a host with perl 5.18 (e.g. Ubuntu 14.04)
  - Apply this patch to oe-core master or fido
  - bitbake -fc configure intltool


>  .../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

Reply via email to