[OE-core] [PATCH v2 1/3] gnu-config: improve detection of perl setup errors
Andre McCurdy
armccurdy at gmail.com
Wed May 27 21:18:40 UTC 2015
On Wed, May 27, 2015 at 2:06 PM, Andre McCurdy <armccurdy at gmail.com> 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 <armccurdy at gmail.com>
> ---
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
>
More information about the Openembedded-core
mailing list