autoconf: Adjust shebang lines to remove interpreter path hardcode

If build host perl (and other tools) is old and we use some kind
of toolchain to provide recent perl/python/etc to the OE build
we still locked to use build host perl due to hardcoded shebang
lines in autoconf scripts.

Behaviour was observed with Enterprise Linux 6 and devtoolset
toolchain from SCL (Software Collections) used to provide recent
version of perl (not provided with default buildtools-tarball).

Pass /usr/bin/env perl in ac_cv_path_PERL configuration variables
for class-native and class-nativesdk. Use patch to autoconf to replace
-w option in shebang line with modern way to enable warnings on perl
(i.e. "use warnings").

Also add nativesdk-m4 and nativesdk-gnu-config to RDEPENDS to bring
runtime dependencies inline with other targets.

Note that ac_cv_path_PERL must be valid perl interpreter path
since configure will check perl version and Flock implementation.
It is not possible currently to use nativeperl from native
sysroot because autoconf does not DEPENDS on perl-native (and
doing so fails due to circular dependencies). Only possible
solution is to overwrite shebangs with nativeperl somewhere at
do_install() and update RDEPENDS for class-native. Or add perl
symlinks to nativeperl in sysroot.

For now it seems good to use perl found by /usr/bin/env from
autoconf-native.

Cc: XE-Linux <xe-linux-external@cisco.com>
(From OE-Core rev: 443d2d31732fa5700aa00ff020a0d79ab245c114)

Signed-off-by: Serhii Popovych <spopovyc@cisco.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Serhii Popovych 2017-03-31 11:46:57 +00:00 committed by Richard Purdie
parent 034702f520
commit e44946bff1
3 changed files with 127 additions and 1 deletions

View File

@ -27,13 +27,18 @@ RDEPENDS_${PN} = "m4 gnu-config \
perl-module-data-dumper \
"
RDEPENDS_${PN}_class-native = "m4-native gnu-config-native"
RDEPENDS_${PN}_class-nativesdk = "nativesdk-m4 nativesdk-gnu-config"
SRC_URI = "${GNU_MIRROR}/autoconf/autoconf-${PV}.tar.gz \
file://program_prefix.patch"
inherit autotools texinfo
CACHED_CONFIGUREVARS += "ac_cv_path_PERL=${USRBINPATH}/perl"
PERL = "${USRBINPATH}/perl"
PERL_class-native = "/usr/bin/env perl"
PERL_class-nativesdk = "/usr/bin/env perl"
CACHED_CONFIGUREVARS += "ac_cv_path_PERL='${PERL}'"
do_configure() {
oe_runconf

View File

@ -0,0 +1,120 @@
From 236552ff5b9f1ebf666d8d0e9850007dcce03d26 Mon Sep 17 00:00:00 2001
From: Serhii Popovych <spopovyc@cisco.com>
Date: Wed, 10 Feb 2016 16:32:44 +0000
Subject: [PATCH] perl: Replace -w option in shebangs with modern "use
warnings"
In some builds we might provide ac_cv_path_PERL as /usr/bin/env perl
to use newer version of the perl from users PATH rather than
older from standard system path.
However using /usr/bin/env perl -w from shebang line isn't
possible because it translates to something like
/usr/bin/env -w perl and env complains about illegal option.
To address this we can remove -w option from perl shebang
line and add "use warnings" statement.
Upstream-Status: Pending
Signed-off-by: Serhii Popovych <spopovyc@cisco.com>
---
bin/autom4te.in | 3 ++-
bin/autoreconf.in | 3 ++-
bin/autoscan.in | 3 ++-
bin/autoupdate.in | 3 ++-
bin/ifnames.in | 3 ++-
5 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/bin/autom4te.in b/bin/autom4te.in
index 11773c9..a8f5e41 100644
--- a/bin/autom4te.in
+++ b/bin/autom4te.in
@@ -1,4 +1,4 @@
-#! @PERL@ -w
+#! @PERL@
# -*- perl -*-
# @configure_input@
@@ -42,6 +42,7 @@ use Autom4te::General;
use Autom4te::XFile;
use File::Basename;
use strict;
+use warnings;
# Data directory.
my $pkgdatadir = $ENV{'AC_MACRODIR'} || '@pkgdatadir@';
diff --git a/bin/autoreconf.in b/bin/autoreconf.in
index e245db4..1a318cb 100644
--- a/bin/autoreconf.in
+++ b/bin/autoreconf.in
@@ -1,4 +1,4 @@
-#! @PERL@ -w
+#! @PERL@
# -*- perl -*-
# @configure_input@
@@ -45,6 +45,7 @@ use Autom4te::XFile;
# Do not use Cwd::chdir, since it might hang.
use Cwd 'cwd';
use strict;
+use warnings;
## ----------- ##
## Variables. ##
diff --git a/bin/autoscan.in b/bin/autoscan.in
index a67c48d..b931249 100644
--- a/bin/autoscan.in
+++ b/bin/autoscan.in
@@ -1,4 +1,4 @@
-#! @PERL@ -w
+#! @PERL@
# -*- perl -*-
# @configure_input@
@@ -43,6 +43,7 @@ use Autom4te::XFile;
use File::Basename;
use File::Find;
use strict;
+use warnings;
use vars qw(@cfiles @makefiles @shfiles @subdirs %printed);
diff --git a/bin/autoupdate.in b/bin/autoupdate.in
index 9737d49..92cb147 100644
--- a/bin/autoupdate.in
+++ b/bin/autoupdate.in
@@ -1,4 +1,4 @@
-#! @PERL@ -w
+#! @PERL@
# -*- perl -*-
# @configure_input@
@@ -44,6 +44,7 @@ use Autom4te::General;
use Autom4te::XFile;
use File::Basename;
use strict;
+use warnings;
# Lib files.
my $autom4te = $ENV{'AUTOM4TE'} || '@bindir@/@autom4te-name@';
diff --git a/bin/ifnames.in b/bin/ifnames.in
index ba2cd05..74b0278 100644
--- a/bin/ifnames.in
+++ b/bin/ifnames.in
@@ -1,4 +1,4 @@
-#! @PERL@ -w
+#! @PERL@
# -*- perl -*-
# @configure_input@
@@ -44,6 +44,7 @@ BEGIN
use Autom4te::General;
use Autom4te::XFile;
use Autom4te::FileUtils;
+use warnings;
# $HELP
# -----
--
2.3.0

View File

@ -15,6 +15,7 @@ SRC_URI += "file://check-automake-cross-warning.patch \
file://add_musl_config.patch \
file://performance.patch \
file://AC_HEADER_MAJOR-port-to-glibc-2.25.patch \
file://autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch \
"
SRC_URI[md5sum] = "82d05e03b93e45f5a39b828dc9c6c29b"