[PATCH] lib/build_OID_registry: Avoid non-destructive substitution for Perl < 5.13.2 compat

Paul Menzel posted 1 patch 1 year, 5 months ago
There is a newer version of this series
lib/build_OID_registry | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
[PATCH] lib/build_OID_registry: Avoid non-destructive substitution for Perl < 5.13.2 compat
Posted by Paul Menzel 1 year, 5 months ago
On a system with Perl 5.12.1, commit 5ef6dc08cfde
("lib/build_OID_registry: don't mention the full path of the script in
output") causes the build to fail with the error below.

     Bareword found where operator expected at ./lib/build_OID_registry line 41, near "s#^\Q$abs_srctree/\E##r"
     syntax error at ./lib/build_OID_registry line 41, near "s#^\Q$abs_srctree/\E##r"
     Execution of ./lib/build_OID_registry aborted due to compilation errors.
     make[3]: *** [lib/Makefile:352: lib/oid_registry_data.c] Error 255

Ahmad Fatoum analyzed that non-destructive substitution is only supported since
Perl 5.13.2. Instead of dropping `r` and having the side effect of modifying
`$0`, introduce a dedicated variable to support older Perl versions.

Fixes: 5ef6dc08cfde ("lib/build_OID_registry: don't mention the full path of
the script in output")
Link: https://lore.kernel.org/all/259f7a87-2692-480e-9073-1c1c35b52f67@molgen.mpg.de/
Solution-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Cc: Nicolas Schier <nicolas@fjasle.eu>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: kernel@pengutronix.de
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Ahmad Fatoum <a.fatoum@pengutronix.de>
Cc: it+linux-kconfig@molgen.mpg.de
Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de>
---
 lib/build_OID_registry | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/build_OID_registry b/lib/build_OID_registry
index 56d8bafeb848b..8267e8d71338b 100755
--- a/lib/build_OID_registry
+++ b/lib/build_OID_registry
@@ -38,7 +38,9 @@ close IN_FILE || die;
 #
 open C_FILE, ">$ARGV[1]" or die;
 print C_FILE "/*\n";
-print C_FILE " * Automatically generated by ", $0 =~ s#^\Q$abs_srctree/\E##r, ".  Do not edit\n";
+my $scriptname = $0;
+$scriptname =~ s#^\Q$abs_srctree/\E##;
+print C_FILE " * Automatically generated by ", $scriptname, ".  Do not edit\n";
 print C_FILE " */\n";
 
 #
-- 
2.40.1

Re: [PATCH] lib/build_OID_registry: Avoid non-destructive substitution for Perl < 5.13.2 compat
Posted by Uwe Kleine-König 1 year, 5 months ago
Hello Paul,

On Mon, Jul 01, 2024 at 05:58:01PM +0200, Paul Menzel wrote:
> On a system with Perl 5.12.1, commit 5ef6dc08cfde
> ("lib/build_OID_registry: don't mention the full path of the script in
> output") causes the build to fail with the error below.
> 
>      Bareword found where operator expected at ./lib/build_OID_registry line 41, near "s#^\Q$abs_srctree/\E##r"
>      syntax error at ./lib/build_OID_registry line 41, near "s#^\Q$abs_srctree/\E##r"
>      Execution of ./lib/build_OID_registry aborted due to compilation errors.
>      make[3]: *** [lib/Makefile:352: lib/oid_registry_data.c] Error 255
> 
> Ahmad Fatoum analyzed that non-destructive substitution is only supported since
> Perl 5.13.2. Instead of dropping `r` and having the side effect of modifying
> `$0`, introduce a dedicated variable to support older Perl versions.
> 
> Fixes: 5ef6dc08cfde ("lib/build_OID_registry: don't mention the full path of
> the script in output")

No real objection from my side. But if this is an issue for you, I
recommend to upgrade your build system. Looking at Debian releases
(because they are known for their up-to-date software) and their
included versions of Perl, we have:

	release  | releaseno | Perl version | release date
	---------+-----------+--------------+-------------------
	squeeze  |     6     |    5.10.1    | February 6th, 2011
	wheezy   |     7     |    5.14.2    | May 4th, 2013
	jessie   |     8     |    5.20.2    | April 26th, 2015
	stretch  |     9     |    5.24.1    | June 17th, 2017
	buster   |    10     |    5.28.1    | July 6th, 2019
	bullseye |    11     |    5.32.1    | August 14th, 2021
	bookworm |    12     |    5.36.0    | June 10th, 2023

So wheezy is new enough, and that's 11 years old.
Perl 5.13.2 was released June 22, 2010---that's 14 years ago.

I don't know about your build environment, but I wonder if a system that
old can really build a recent kernel (if the patch under discussion is
applied).

Best regards
Uwe
Re: [PATCH] lib/build_OID_registry: Avoid non-destructive substitution for Perl < 5.13.2 compat
Posted by Nicolas Schier 1 year, 5 months ago
On Mon, Jul 01, 2024 at 08:01:46PM +0200, Uwe Kleine-König wrote:
> Hello Paul,
> 
> On Mon, Jul 01, 2024 at 05:58:01PM +0200, Paul Menzel wrote:
> > On a system with Perl 5.12.1, commit 5ef6dc08cfde
> > ("lib/build_OID_registry: don't mention the full path of the script in
> > output") causes the build to fail with the error below.
> > 
> >      Bareword found where operator expected at ./lib/build_OID_registry line 41, near "s#^\Q$abs_srctree/\E##r"
> >      syntax error at ./lib/build_OID_registry line 41, near "s#^\Q$abs_srctree/\E##r"
> >      Execution of ./lib/build_OID_registry aborted due to compilation errors.
> >      make[3]: *** [lib/Makefile:352: lib/oid_registry_data.c] Error 255
> > 
> > Ahmad Fatoum analyzed that non-destructive substitution is only supported since
> > Perl 5.13.2. Instead of dropping `r` and having the side effect of modifying
> > `$0`, introduce a dedicated variable to support older Perl versions.
> > 
> > Fixes: 5ef6dc08cfde ("lib/build_OID_registry: don't mention the full path of
> > the script in output")
> 
> No real objection from my side. But if this is an issue for you, I
> recommend to upgrade your build system. Looking at Debian releases
> (because they are known for their up-to-date software) and their
> included versions of Perl, we have:
> 
> 	release  | releaseno | Perl version | release date
> 	---------+-----------+--------------+-------------------
> 	squeeze  |     6     |    5.10.1    | February 6th, 2011
> 	wheezy   |     7     |    5.14.2    | May 4th, 2013
> 	jessie   |     8     |    5.20.2    | April 26th, 2015
> 	stretch  |     9     |    5.24.1    | June 17th, 2017
> 	buster   |    10     |    5.28.1    | July 6th, 2019
> 	bullseye |    11     |    5.32.1    | August 14th, 2021
> 	bookworm |    12     |    5.36.0    | June 10th, 2023
> 
> So wheezy is new enough, and that's 11 years old.
> Perl 5.13.2 was released June 22, 2010---that's 14 years ago.
> 
> I don't know about your build environment, but I wonder if a system that
> old can really build a recent kernel (if the patch under discussion is
> applied).

I think, extending support by 6 weeks from Perl 5.13.2 (2010-06-22) to
Perl 5.12.1 (2010-05-16) [1] sounds a bit strange.  I'd like to remember
that Masahiro recommended to just remove the script name from the
generated comment [2].

Would you mind satifying my curiosity: what distribution are you using?

Kind regards,
Nicolas


[1]: https://dev.perl.org/perl5/news/
[2]: https://lore.kernel.org/linux-kbuild/CAK7LNASa-KedA_CTww6unckAGkJCQTctdbk0d-MUsN7wQpM=kQ@mail.gmail.com/