automake/autoconf: avoid path to perl interpreter hardcoding
cover automake/autoconf: avoid path to perl interpreter hardcoding
Hi,
In this small series I would like to address build host perl interpreter hardcoding in shebang lines of various automake/autoconf scripts.
This allows to use newer version of perl interpreter from some toolchain (e.g. devtoolset from SCL on RHEL6) when build host version is quite old to be used with automake/autoconf.
Please review.
Thanks.
Cc: XE-Linux <[email protected]>
Serhii Popovych (2):
autoconf: Adjust shebang lines to remove interpreter path hardcode
automake: Adjust shebang lines to remove interpreter path hardcode
meta/recipes-devtools/autoconf/autoconf.inc | 7 +- ...tion-in-shebangs-with-modern-use-warnings.patch | 196 +++++++++++++++++++++ meta/recipes-devtools/autoconf/autoconf_2.69.bb | 1 + ...tion-in-shebangs-with-modern-use-warnings.patch | 99 +++++++++++ meta/recipes-devtools/automake/automake_1.15.bb | 13 +- 5 files changed, 312 insertions(+), 4 deletions(-) create mode 100644 meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch create mode 100644 meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch
Signature · 1 line
2.7.4
PATCH 1/2 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").
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.
Also add RDEPENDS for class-nativesdk and add nativesdk-perl to them.
--- meta/recipes-devtools/autoconf/autoconf.inc | 7 +- ...tion-in-shebangs-with-modern-use-warnings.patch | 196 +++++++++++++++++++++ meta/recipes-devtools/autoconf/autoconf_2.69.bb | 1 + 3 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch
meta/recipes-devtools/autoconf/autoconf.inc +6 -1
@@ -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 nativesdk-perl" 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
meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch new file +196 -0
196 lines not on this page · raw message
meta/recipes-devtools/autoconf/autoconf_2.69.bb +1 -0
@@ -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"
Signature · 1 line
2.7.4
PATCH v2 2/2 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").
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.
Also add RDEPENDS for class-nativesdk and add nativesdk-perl to them.
v2: Just realized that files in quilt directory (.pc) patched
unnecessarily.
--- meta/recipes-devtools/autoconf/autoconf.inc | 7 +- ...tion-in-shebangs-with-modern-use-warnings.patch | 120 +++++++++++++++++++++ meta/recipes-devtools/autoconf/autoconf_2.69.bb | 1 + 3 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch
meta/recipes-devtools/autoconf/autoconf.inc +6 -1
@@ -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 nativesdk-perl" 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
meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch new file +120 -0
120 lines not on this page · raw message
meta/recipes-devtools/autoconf/autoconf_2.69.bb +1 -0
@@ -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"
Signature · 1 line
2.7.4
PATCH 2/2 automake: Adjust shebang lines to remove interpreter path hardcode
In reply to Serhii PopovychIf 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 automake 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 automake to replace -w option in shebang line with modern way to enable warnings on perl (i.e. "use warnings").
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 automake 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 automake-native.
Also add RDEPENDS for class-nativesdk and add nativesdk-perl to them.
--- ...tion-in-shebangs-with-modern-use-warnings.patch | 99 ++++++++++++++++++++++ meta/recipes-devtools/automake/automake_1.15.bb | 13 ++- 2 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch
meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch new file +99 -0
@@ -0,0 +1,99 @@ +From 41e06b7a354774913dcd2e32a35440e407843357 Mon Sep 17 00:00:00 2001 +From: Serhii Popovych <[email protected]> +Date: Wed, 10 Feb 2016 17:07:32 +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: Penging +Signed-off-by: Serhii Popovych <[email protected]> +--- + bin/aclocal.in | 3 ++- + bin/automake.in | 3 ++- + t/wrap/aclocal.in | 3 ++- + t/wrap/automake.in | 3 ++- + 4 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/bin/aclocal.in b/bin/aclocal.in +index 349f24a..50cb8d3 100644 +--- a/bin/aclocal.in ++++ b/bin/aclocal.in +@@ -1,4 +1,4 @@ +-#!@PERL@ -w ++#!@PERL@ + # -*- perl -*- + # @configure_input@ + +@@ -33,6 +33,7 @@ BEGIN + } + + use strict; ++use warnings; + + use Automake::Config; + use Automake::General; +diff --git a/bin/automake.in b/bin/automake.in +index eedc8bc..e0a01cf 100644 +--- a/bin/automake.in ++++ b/bin/automake.in +@@ -1,4 +1,4 @@ +-#!@PERL@ -w ++#!@PERL@ + # -*- perl -*- + # @configure_input@ + +@@ -28,6 +28,7 @@ eval 'case $# in 0) exec @PERL@ -S "$0";; *) exec @PERL@ -S "$0" "$@";; esac' + package Automake; + + use strict; ++use warnings; + + BEGIN + { +diff --git a/t/wrap/aclocal.in b/t/wrap/aclocal.in +index e64b546..9996899 100644 +--- a/t/wrap/aclocal.in ++++ b/t/wrap/aclocal.in +@@ -1,4 +1,4 @@ +-#!@PERL@ -w ++#!@PERL@ + # @configure_input@ + + # Copyright (C) 2012-2014 Free Software Foundation, Inc. +@@ -19,6 +19,7 @@ + BEGIN + { + use strict; ++ use warnings; + @Aclocal::perl_libdirs = ('@abs_top_srcdir@/lib'); + unshift @Aclocal::perl_libdirs, '@abs_top_builddir@/lib' + if '@srcdir@' ne '.'; +diff --git a/t/wrap/automake.in b/t/wrap/automake.in +index 8b943b1..be61226 100644 +--- a/t/wrap/automake.in ++++ b/t/wrap/automake.in +@@ -1,4 +1,4 @@ +-#!@PERL@ -w ++#!@PERL@ + # @configure_input@ + + # Copyright (C) 2012-2014 Free Software Foundation, Inc. +@@ -19,6 +19,7 @@ + BEGIN + { + use strict; ++ use warnings; + @Automake::perl_libdirs = ('@abs_top_srcdir@/lib'); + unshift @Automake::perl_libdirs, '@abs_top_builddir@/lib' + if '@srcdir@' ne '.'; +-- +2.3.0 +
meta/recipes-devtools/automake/automake_1.15.bb +10 -3
@@ -17,16 +17,23 @@ RDEPENDS_${PN} += "\ perl-module-vars " RDEPENDS_${PN}_class-native = "autoconf-native hostperl-runtime-native" +RDEPENDS_${PN}_class-nativesdk = "nativesdk-autoconf nativesdk-perl" -SRC_URI += " file://python-libdir.patch \ +SRC_URI += "file://python-libdir.patch \ file://buildtest.patch \ file://performance.patch \ - file://new_rt_path_for_test-driver.patch" + file://new_rt_path_for_test-driver.patch \ + file://automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch \ + " SRC_URI[md5sum] = "716946a105ca228ab545fc37a70df3a3" SRC_URI[sha256sum] = "7946e945a96e28152ba5a6beb0625ca715c6e32ac55f2e353ef54def0c8ed924" -CACHED_CONFIGUREVARS += "ac_cv_path_PERL=${USRBINPATH}/perl" +PERL = "${USRBINPATH}/perl" +PERL_class-native = "${USRBINPATH}/env perl" +PERL_class-nativesdk = "${USRBINPATH}/env perl" + +CACHED_CONFIGUREVARS += "ac_cv_path_PERL='${PERL}'" do_install_append () { install -d ${D}${datadir}
Signature · 1 line
2.7.4
✗ patchtest: failure for automake/autoconf: avoid path to perl interpreter hardcoding
In reply to Serhii Popovych== Series Details ==
Series: automake/autoconf: avoid path to perl interpreter hardcoding
Revision: 1
URL : https://patchwork.openembedded.org/series/6028/
State : failure
== Summary ==
Thank you for submitting this patch series to OpenEmbedded Core. This is an automated response. Several tests have been executed on the proposed series by patchtest resulting in the following failures:
* Issue Upstream-Status is in incorrect format [test_upstream_status_format]
Suggested fix Fix Upstream-Status format in meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch so it is one of: Pending, Submitted, Accepted, Backport, Denied, Inappropriate
If you believe any of these test results are incorrect, please reply to the mailing list ([email protected]) raising your concerns. Otherwise we would appreciate you correcting the issues and submitting a new version of the patchset if applicable. Please ensure you add/increment the version number when sending the new version (i.e. [PATCH] -> [PATCH v2] -> [PATCH v3] -> ...).
---
Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest Test suite: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe
✗ patchtest: failure for automake/autoconf: avoid path to perl interpreter hardcoding (rev2)
In reply to Serhii Popovych== Series Details ==
Series: automake/autoconf: avoid path to perl interpreter hardcoding (rev2)
Revision: 2
URL : https://patchwork.openembedded.org/series/6028/
State : failure
== Summary ==
Thank you for submitting this patch series to OpenEmbedded Core. This is an automated response. Several tests have been executed on the proposed series by patchtest resulting in the following failures:
* Issue Upstream-Status is in incorrect format [test_upstream_status_format]
Suggested fix Fix Upstream-Status format in meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch so it is one of: Pending, Submitted, Accepted, Backport, Denied, Inappropriate
If you believe any of these test results are incorrect, please reply to the mailing list ([email protected]) raising your concerns. Otherwise we would appreciate you correcting the issues and submitting a new version of the patchset if applicable. Please ensure you add/increment the version number when sending the new version (i.e. [PATCH] -> [PATCH v2] -> [PATCH v3] -> ...).
---
Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest Test suite: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe
v2 cover automake/autoconf: avoid path to perl interpreter hardcoding
Hi,
In this small series I would like to address build host perl interpreter hardcoding in shebang lines of various automake/autoconf scripts.
This allows to use newer version of perl interpreter from some toolchain (e.g. devtoolset from SCL on RHEL6) when build host version is quite old to be used with automake/autoconf.
Please review.
Thanks.
Cc: XE-Linux <[email protected]>
Serhii Popovych (2):
autoconf: Adjust shebang lines to remove interpreter path hardcode
automake: Adjust shebang lines to remove interpreter path hardcode
meta/recipes-devtools/autoconf/autoconf.inc | 7 +- ...tion-in-shebangs-with-modern-use-warnings.patch | 120 +++++++++++++++++++++ meta/recipes-devtools/autoconf/autoconf_2.69.bb | 1 + ...tion-in-shebangs-with-modern-use-warnings.patch | 99 +++++++++++++++++ meta/recipes-devtools/automake/automake_1.15.bb | 13 ++- 5 files changed, 236 insertions(+), 4 deletions(-) create mode 100644 meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch create mode 100644 meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch
Signature · 1 line
2.7.4
PATCH v3 1/2 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").
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 DE
OBPENDS 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.
Also add RDEPENDS for class-nativesdk and add nativesdk-perl to them.
v3: Corrected Upstream-Status tag.
v2: Just realized that files in quilt directory (.pc) patched
unnecessarily.
--- meta/recipes-devtools/autoconf/autoconf.inc | 7 +- ...tion-in-shebangs-with-modern-use-warnings.patch | 120 +++++++++++++++++++++ meta/recipes-devtools/autoconf/autoconf_2.69.bb | 1 + 3 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch
meta/recipes-devtools/autoconf/autoconf.inc +6 -1
@@ -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 nativesdk-perl" 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
meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch new file +120 -0
120 lines not on this page · raw message
meta/recipes-devtools/autoconf/autoconf_2.69.bb +1 -0
@@ -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"
Signature · 1 line
2.7.4
Re: [PATCH v3 1/2] autoconf: Adjust shebang lines to remove interpreter path hardcode
Quoted 15 lines · Serhii Popovych
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/envperl inac_cv_path_PERLconfiguration 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").
Quoted 5 lines
Note that
ac_cv_path_PERLmust 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 DE
OBPENDS on perl-native (and
Typo above.
Quoted 8 lines
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/envfrom autoconf-native.
Quoted 6 lines
Also add RDEPENDS for class-nativesdk and add nativesdk-perl to them.
v3: Corrected Upstream-Status tag.
v2: Just realized that files in quilt directory (.pc) patched unnecessarily.
Revision history should go under --- below.
Quoted 18 lines
Cc XE-Linux <[email protected]>Signed-off-by Serhii Popovych <[email protected]>---
meta/recipes-devtools/autoconf/autoconf.inc | 7 +- ...tion-in-shebangs-with-modern-use-warnings.patch | 120
+++++++++++++++++++++
meta/recipes-devtools/autoconf/autoconf_2.69.bb | 1 +3 files changed, 127 insertions(+), 1 deletion(-)create mode 100644 meta/recipes-devtools/autoconf/autoconf/autoconf- replace-w-option-in-shebangs-with-modern-use-warnings.patch
meta/recipes-devtools/autoconf/autoconf.inc +0
-0@@ -27,13 +27,18 @@ RDEPENDS_${PN} = "m4 gnu-config \ perl-module-data-dumper \
Quoted 4 lines
"
RDEPENDS_${PN}_class-native = "m4-native gnu-config-native" +RDEPENDS_${PN}_class-nativesdk = "nativesdk-m4 nativesdk-gnu-config nativesdk-perl"
This RDEPENDS change is not mentioned in the commit message. Does this mean we suddenly start including perl in our SDKs or buildtools tarballs? This should be a separate patch an include impact information if you're really proposing this.
Cheers,
Richard
v3 cover automake/autoconf: avoid path to perl interpreter hardcoding
Hi,
This is updated series of changes to autoconf/automake where I address all questions from previous review session.
Please review again.
Thanks.
Cc: XE-Linux <[email protected]>
Serhii Popovych (2):
autoconf: Adjust shebang lines to remove interpreter path hardcode
automake: Adjust shebang lines to remove interpreter path hardcode
meta/recipes-devtools/autoconf/autoconf.inc | 7 +- ...tion-in-shebangs-with-modern-use-warnings.patch | 120 +++++++++++++++++++++ meta/recipes-devtools/autoconf/autoconf_2.69.bb | 1 + ...tion-in-shebangs-with-modern-use-warnings.patch | 99 +++++++++++++++++ meta/recipes-devtools/automake/automake_1.15.bb | 13 ++- 5 files changed, 236 insertions(+), 4 deletions(-) create mode 100644 meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch create mode 100644 meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch
Signature · 1 line
2.5.0
PATCH v4 1/2 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.
---
v4: Address typo, and remnants of nativesdk-perl in RDEPENDS
left from internal imlementation part.
Thanks to Richard Purdie <[email protected]>
v3: Corrected Upstream-Status tag.
v2: Just realized that files in quilt directory (.pc) patched
unnecessarily.
meta/recipes-devtools/autoconf/autoconf.inc | 7 +- ...tion-in-shebangs-with-modern-use-warnings.patch | 120 +++++++++++++++++++++ meta/recipes-devtools/autoconf/autoconf_2.69.bb | 1 + 3 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch
meta/recipes-devtools/autoconf/autoconf.inc +6 -1
@@ -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
meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch new file +120 -0
120 lines not on this page · raw message
meta/recipes-devtools/autoconf/autoconf_2.69.bb +1 -0
@@ -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"
Signature · 1 line
2.5.0
PATCH v3 2/2 automake: Adjust shebang lines to remove interpreter path hardcode
In reply to Serhii PopovychIf 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 automake 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 automake to replace -w option in shebang line with modern way to enable warnings on perl (i.e. "use warnings").
Also add nativesdk-autoconf 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 automake 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 automake-native.
---
v3: Kill remnants of nativesdk-perl in RDEPENDS left from internal
imlementation part.
Thanks to Richard Purdie <[email protected]>
v2: Corrected Upstream-Status tag.
...tion-in-shebangs-with-modern-use-warnings.patch | 99 ++++++++++++++++++++++ meta/recipes-devtools/automake/automake_1.15.bb | 13 ++- 2 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch
meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch new file +99 -0
@@ -0,0 +1,99 @@ +From 41e06b7a354774913dcd2e32a35440e407843357 Mon Sep 17 00:00:00 2001 +From: Serhii Popovych <[email protected]> +Date: Wed, 10 Feb 2016 17:07:32 +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 <[email protected]> +--- + bin/aclocal.in | 3 ++- + bin/automake.in | 3 ++- + t/wrap/aclocal.in | 3 ++- + t/wrap/automake.in | 3 ++- + 4 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/bin/aclocal.in b/bin/aclocal.in +index 349f24a..50cb8d3 100644 +--- a/bin/aclocal.in ++++ b/bin/aclocal.in +@@ -1,4 +1,4 @@ +-#!@PERL@ -w ++#!@PERL@ + # -*- perl -*- + # @configure_input@ + +@@ -33,6 +33,7 @@ BEGIN + } + + use strict; ++use warnings; + + use Automake::Config; + use Automake::General; +diff --git a/bin/automake.in b/bin/automake.in +index eedc8bc..e0a01cf 100644 +--- a/bin/automake.in ++++ b/bin/automake.in +@@ -1,4 +1,4 @@ +-#!@PERL@ -w ++#!@PERL@ + # -*- perl -*- + # @configure_input@ + +@@ -28,6 +28,7 @@ eval 'case $# in 0) exec @PERL@ -S "$0";; *) exec @PERL@ -S "$0" "$@";; esac' + package Automake; + + use strict; ++use warnings; + + BEGIN + { +diff --git a/t/wrap/aclocal.in b/t/wrap/aclocal.in +index e64b546..9996899 100644 +--- a/t/wrap/aclocal.in ++++ b/t/wrap/aclocal.in +@@ -1,4 +1,4 @@ +-#!@PERL@ -w ++#!@PERL@ + # @configure_input@ + + # Copyright (C) 2012-2014 Free Software Foundation, Inc. +@@ -19,6 +19,7 @@ + BEGIN + { + use strict; ++ use warnings; + @Aclocal::perl_libdirs = ('@abs_top_srcdir@/lib'); + unshift @Aclocal::perl_libdirs, '@abs_top_builddir@/lib' + if '@srcdir@' ne '.'; +diff --git a/t/wrap/automake.in b/t/wrap/automake.in +index 8b943b1..be61226 100644 +--- a/t/wrap/automake.in ++++ b/t/wrap/automake.in +@@ -1,4 +1,4 @@ +-#!@PERL@ -w ++#!@PERL@ + # @configure_input@ + + # Copyright (C) 2012-2014 Free Software Foundation, Inc. +@@ -19,6 +19,7 @@ + BEGIN + { + use strict; ++ use warnings; + @Automake::perl_libdirs = ('@abs_top_srcdir@/lib'); + unshift @Automake::perl_libdirs, '@abs_top_builddir@/lib' + if '@srcdir@' ne '.'; +-- +2.3.0 +
meta/recipes-devtools/automake/automake_1.15.bb +10 -3
@@ -17,16 +17,23 @@ RDEPENDS_${PN} += "\ perl-module-vars " RDEPENDS_${PN}_class-native = "autoconf-native hostperl-runtime-native" +RDEPENDS_${PN}_class-nativesdk = "nativesdk-autoconf" -SRC_URI += " file://python-libdir.patch \ +SRC_URI += "file://python-libdir.patch \ file://buildtest.patch \ file://performance.patch \ - file://new_rt_path_for_test-driver.patch" + file://new_rt_path_for_test-driver.patch \ + file://automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch \ + " SRC_URI[md5sum] = "716946a105ca228ab545fc37a70df3a3" SRC_URI[sha256sum] = "7946e945a96e28152ba5a6beb0625ca715c6e32ac55f2e353ef54def0c8ed924" -CACHED_CONFIGUREVARS += "ac_cv_path_PERL=${USRBINPATH}/perl" +PERL = "${USRBINPATH}/perl" +PERL_class-native = "${USRBINPATH}/env perl" +PERL_class-nativesdk = "${USRBINPATH}/env perl" + +CACHED_CONFIGUREVARS += "ac_cv_path_PERL='${PERL}'" do_install_append () { install -d ${D}${datadir}
Signature · 1 line
2.5.0
PATCH v2 2/2 automake: Adjust shebang lines to remove interpreter path hardcode
In reply to Serhii PopovychIf 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 automake 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 automake to replace -w option in shebang line with modern way to enable warnings on perl (i.e. "use warnings").
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 automake 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 automake-native.
Also add RDEPENDS for class-nativesdk and add nativesdk-perl to them.
v2: Corrected Upstream-Status tag.
--- ...tion-in-shebangs-with-modern-use-warnings.patch | 99 ++++++++++++++++++++++ meta/recipes-devtools/automake/automake_1.15.bb | 13 ++- 2 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch
meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch new file +99 -0
@@ -0,0 +1,99 @@ +From 41e06b7a354774913dcd2e32a35440e407843357 Mon Sep 17 00:00:00 2001 +From: Serhii Popovych <[email protected]> +Date: Wed, 10 Feb 2016 17:07:32 +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 <[email protected]> +--- + bin/aclocal.in | 3 ++- + bin/automake.in | 3 ++- + t/wrap/aclocal.in | 3 ++- + t/wrap/automake.in | 3 ++- + 4 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/bin/aclocal.in b/bin/aclocal.in +index 349f24a..50cb8d3 100644 +--- a/bin/aclocal.in ++++ b/bin/aclocal.in +@@ -1,4 +1,4 @@ +-#!@PERL@ -w ++#!@PERL@ + # -*- perl -*- + # @configure_input@ + +@@ -33,6 +33,7 @@ BEGIN + } + + use strict; ++use warnings; + + use Automake::Config; + use Automake::General; +diff --git a/bin/automake.in b/bin/automake.in +index eedc8bc..e0a01cf 100644 +--- a/bin/automake.in ++++ b/bin/automake.in +@@ -1,4 +1,4 @@ +-#!@PERL@ -w ++#!@PERL@ + # -*- perl -*- + # @configure_input@ + +@@ -28,6 +28,7 @@ eval 'case $# in 0) exec @PERL@ -S "$0";; *) exec @PERL@ -S "$0" "$@";; esac' + package Automake; + + use strict; ++use warnings; + + BEGIN + { +diff --git a/t/wrap/aclocal.in b/t/wrap/aclocal.in +index e64b546..9996899 100644 +--- a/t/wrap/aclocal.in ++++ b/t/wrap/aclocal.in +@@ -1,4 +1,4 @@ +-#!@PERL@ -w ++#!@PERL@ + # @configure_input@ + + # Copyright (C) 2012-2014 Free Software Foundation, Inc. +@@ -19,6 +19,7 @@ + BEGIN + { + use strict; ++ use warnings; + @Aclocal::perl_libdirs = ('@abs_top_srcdir@/lib'); + unshift @Aclocal::perl_libdirs, '@abs_top_builddir@/lib' + if '@srcdir@' ne '.'; +diff --git a/t/wrap/automake.in b/t/wrap/automake.in +index 8b943b1..be61226 100644 +--- a/t/wrap/automake.in ++++ b/t/wrap/automake.in +@@ -1,4 +1,4 @@ +-#!@PERL@ -w ++#!@PERL@ + # @configure_input@ + + # Copyright (C) 2012-2014 Free Software Foundation, Inc. +@@ -19,6 +19,7 @@ + BEGIN + { + use strict; ++ use warnings; + @Automake::perl_libdirs = ('@abs_top_srcdir@/lib'); + unshift @Automake::perl_libdirs, '@abs_top_builddir@/lib' + if '@srcdir@' ne '.'; +-- +2.3.0 +
meta/recipes-devtools/automake/automake_1.15.bb +10 -3
@@ -17,16 +17,23 @@ RDEPENDS_${PN} += "\ perl-module-vars " RDEPENDS_${PN}_class-native = "autoconf-native hostperl-runtime-native" +RDEPENDS_${PN}_class-nativesdk = "nativesdk-autoconf nativesdk-perl" -SRC_URI += " file://python-libdir.patch \ +SRC_URI += "file://python-libdir.patch \ file://buildtest.patch \ file://performance.patch \ - file://new_rt_path_for_test-driver.patch" + file://new_rt_path_for_test-driver.patch \ + file://automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch \ + " SRC_URI[md5sum] = "716946a105ca228ab545fc37a70df3a3" SRC_URI[sha256sum] = "7946e945a96e28152ba5a6beb0625ca715c6e32ac55f2e353ef54def0c8ed924" -CACHED_CONFIGUREVARS += "ac_cv_path_PERL=${USRBINPATH}/perl" +PERL = "${USRBINPATH}/perl" +PERL_class-native = "${USRBINPATH}/env perl" +PERL_class-nativesdk = "${USRBINPATH}/env perl" + +CACHED_CONFIGUREVARS += "ac_cv_path_PERL='${PERL}'" do_install_append () { install -d ${D}${datadir}
Signature · 1 line
2.7.4
Re: [PATCH v2 2/2] automake: Adjust shebang lines to remove interpreter path hardcode
Quoted 27 lines · Serhii Popovych
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 automake 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/envperl inac_cv_path_PERLconfiguration variables for class-native and class-nativesdk. Use patch to automake to replace
-w option in shebang line with modern way to enable warnings on perl (i.e. "use warnings").Note that
ac_cv_path_PERLmust 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 automake does not DEPENDS on perl-native (and doing so fails due to circular dependencies). Only possible solution is to overwrite shebangs with nativeperl somewhere atdo_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/envfrom automake-native.
Quoted 7 lines
Also add RDEPENDS for class-nativesdk and add nativesdk-perl to them.
v2: Corrected Upstream-Status tag.
Cc XE-Linux <[email protected]>Signed-off-by Serhii Popovych <[email protected]>
Again, the patch description and what it actually does don't match (RDEPENDS)...
Cheers,
Richard
✗ patchtest: failure for "[v3,1/2] autoconf: Adjust sheb..." and 1 more (rev2)
In reply to Serhii Popovych== Series Details ==
Series: "[v3,1/2] autoconf: Adjust sheb..." and 1 more (rev2)
Revision: 2
URL : https://patchwork.openembedded.org/series/6033/
State : failure
== Summary ==
Thank you for submitting this patch series to OpenEmbedded Core. This is an automated response. Several tests have been executed on the proposed series by patchtest resulting in the following failures:
* Issue Series does not apply on top of target branch [test_series_merge_on_head]
Suggested fix Rebase your series on top of targeted branch
Targeted branch master (currently at 49772e1a1f)
If you believe any of these test results are incorrect, please reply to the mailing list ([email protected]) raising your concerns. Otherwise we would appreciate you correcting the issues and submitting a new version of the patchset if applicable. Please ensure you add/increment the version number when sending the new version (i.e. [PATCH] -> [PATCH v2] -> [PATCH v3] -> ...).
---
Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest Test suite: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe