Skip to contentSkip to conversation

get_maintainer: lazy load JSON::PP only when --json is used

PATCH Superseded Oleg Nesterov 3 participants 13 messages Oct 30 – Oct 31 GET_MAINTAINER script

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 get_maintainer: lazy load JSON::PP only when --json is used

After commit 09d8b39563e8 ("get_maintainer: add --json output mode"), I can no longer use get_maintainer.pl; it fails at compile time if JSON::PP is not installed even when --json is not requested.

This module is only needed with the --json option. Use "require" to load this module dynamically inside the "if ($json)" block instead.

---
 scripts/get_maintainer.pl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
scripts/get_maintainer.pl +1 -1
index 16b80a700d4a..8239c8ca0fce 100755
@@ -21,7 +21,6 @@ use Cwd;
 use File::Find;
 use File::Spec::Functions;
 use open qw(:std :encoding(UTF-8));
-use JSON::PP;
 
 my $cur_path = fastgetcwd() . '/';
 my $lk_path = "./";
@@ -685,6 +684,7 @@ if ($json) {
     $result{web} = \@web if ($web);
     $result{bug} = \@bug if ($bug);
 
+    require JSON::PP;
     my $json_encoder = JSON::PP->new->canonical->utf8;
     print($json_encoder->encode(\%result) . "\n");
 } else {
Signature · 1 line
2.55.0
maintainer
#1 lore raw
Quoted 2 lines · Oleg Nesterov

After commit 09d8b39563e8 ("get_maintainer: add --json output mode"), I can no longer use get_maintainer.pl; it fails at compile time

?

Just verifying that you mean when using perl directly and not something like perlcc.

Quoted 1 line

if JSON::PP is not installed even when --json is not requested.

What version of perl are you using?

I believe JSON is bundled since perl 5.14

Quoted 2 lines

This module is only needed with the --json option. Use "require" to load this module dynamically inside the "if ($json)" block instead.

The patch may be sensible but could fail the same way if you used the --json option with your version.

scripts/get_maintainer.pl

Quoted 1 line
scripts/get_maintainer.pl +0 -0

[]

scripts/get_maintainer.pl if ($json) { · line 687

Quoted 13 lines
scripts/get_maintainer.pl +1 -1
@@ -21,7 +21,6 @@ use Cwd;
 use File::Find;
 use File::Spec::Functions;
 use open qw(:std :encoding(UTF-8));
-use JSON::PP;
 
 my $cur_path = fastgetcwd() . '/';
 my $lk_path = "./";
@@ -685,6 +684,7 @@ if ($json) {
     $result{web} = \@web if ($web);
     $result{bug} = \@bug if ($bug);
 
+    require JSON::PP;

style nit:
I likely would have placed this require immediately after the if ($json) {

Quoted 5 lines
scripts/get_maintainer.pl +0 -0
     my $json_encoder = JSON::PP->new->canonical->utf8;
     print($json_encoder->encode(\%result) . "\n");
 } else {

```

#2 lore raw
Quoted 9 lines · Joe Perches
Quoted 2 lines · Oleg Nesterov

After commit 09d8b39563e8 ("get_maintainer: add --json output mode"), I can no longer use get_maintainer.pl; it fails at compile time

?

Just verifying that you mean when using perl directly and not something like perlcc.

Yes,

Quoted 3 lines
Quoted 1 line

if JSON::PP is not installed even when --json is not requested.

What version of perl are you using?

v5.42.3

Quoted 1 line

I believe JSON is bundled since perl 5.14

Well, JSON::PP is not installed on my Fedora release 44

Quoted 5 lines
Quoted 2 lines

This module is only needed with the --json option. Use "require" to load this module dynamically inside the "if ($json)" block instead.

The patch may be sensible but could fail the same way if you used the --json option with your version.

Of course, "./scripts/get_maintainer.pl --json ..." will still fail the same way without JSON::PP. But with this patch get_maintainer.pl works without the --json option.

Quoted 14 lines

scripts/get_maintainer.pl

Quoted 1 line
scripts/get_maintainer.pl +0 -0

[]

Quoted 12 lines
scripts/get_maintainer.pl +0 -1
@@ -21,7 +21,6 @@ use Cwd;
 use File::Find;
 use File::Spec::Functions;
 use open qw(:std :encoding(UTF-8));
-use JSON::PP;
 
 my $cur_path = fastgetcwd() . '/';
 my $lk_path = "./";
@@ -685,6 +684,7 @@ if ($json) {
     $result{web} = \@web if ($web);
     $result{bug} = \@bug if ($bug);
 
Quoted 5 lines

scripts/get_maintainer.pl if ($json) { · line 687

Quoted 1 line
scripts/get_maintainer.pl +1 -0
+    require JSON::PP;

style nit:
I likely would have placed this require immediately after the if ($json) {

I am fine either way... should I send V2 ?

Oleg.

maintainer
#3 lore raw
Quoted 8 lines · Oleg Nesterov
Quoted 1 line · Joe Perches

On Fri, 2026-10-30 at 16:43 +0100, Oleg Nesterov wrote:

After commit 09d8b39563e8 ("get_maintainer: add --json output mode"),

Quoted 4 lines
Quoted 1 line

I can no longer use get_maintainer.pl; it fails at compile time

Just verifying that you mean when using perl directly and not something like perlcc.

Quoted 7 lines

Yes,

Quoted 2 lines
Quoted 1 line

if JSON::PP is not installed even when --json is not requested.

What version of perl are you using?

v5.42.3

Quoted 1 line

I believe JSON is bundled since perl 5.14

Well, JSON::PP is not installed on my Fedora release 44

Hmm. Odd.

Quoted 8 lines
Quoted 4 lines
Quoted 2 lines

This module is only needed with the --json option. Use "require" to load this module dynamically inside the "if ($json)" block instead.

The patch may be sensible but could fail the same way if you used the --json option with your version.

Of course, "./scripts/get_maintainer.pl --json ..." will still fail the same way without JSON::PP. But with this patch get_maintainer.pl works without the --json option.

What does that failure output?

Quoted 14 lines
Quoted 14 lines

scripts/get_maintainer.pl

Quoted 1 line
scripts/get_maintainer.pl +0 -0

[]

Quoted 12 lines
scripts/get_maintainer.pl +0 -1
@@ -21,7 +21,6 @@ use Cwd;
 use File::Find;
 use File::Spec::Functions;
 use open qw(:std :encoding(UTF-8));
-use JSON::PP;
 
 my $cur_path = fastgetcwd() . '/';
 my $lk_path = "./";
@@ -685,6 +684,7 @@ if ($json) {
     $result{web} = \@web if ($web);
     $result{bug} = \@bug if ($bug);
 
Quoted 6 lines
Quoted 4 lines

scripts/get_maintainer.pl if ($json) { · line 687

Quoted 1 line
scripts/get_maintainer.pl +1 -0
+    require JSON::PP;

style nit:
I likely would have placed this require immediately after the if ($json) {

I am fine either way... should I send V2 ?

Dunno. Depending on the current failure output
maybe adding something like the below is better:

use Module::Load::Conditional qw(check_install);

if (!check_install(module => 'JSON:PP')) {
    die "$P: --json not available - missing perl module JSON:PP\n";
}
#4 lore raw
Quoted 5 lines · Joe Perches
Quoted 3 lines · Oleg Nesterov
Quoted 2 lines · Joe Perches
Quoted 2 lines

This module is only needed with the --json option. Use "require" to load this module dynamically inside the "if ($json)" block instead.

Quoted 8 lines
Quoted 6 lines
Quoted 2 lines

The patch may be sensible but could fail the same way if you used the --json option with your version.

Of course, "./scripts/get_maintainer.pl --json ..." will still fail the same way without JSON::PP. But with this patch get_maintainer.pl works without the --json option.

What does that failure output?

Hmm. I am not sure I understand you concerns. Let me add more details. So, I think this patch makes no difference if JSON::PP is installed. Do you agree?

Now lets see what happens on my machine where JSON::PP is NOT installed. Without --json:

Before this patch:

	$ ./scripts/get_maintainer.pl ./scripts/get_maintainer.pl
	Can't locate JSON/PP.pm in @INC (you may need to install the JSON::PP module) (@INC entries checked: /usr/local/lib64/perl5/5.42 /usr/local/share/perl5/5.42 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at ./scripts/get_maintainer.pl line 24.
	BEGIN failed--compilation aborted at ./scripts/get_maintainer.pl line 24.

After:

	$ ./scripts/get_maintainer.pl ./scripts/get_maintainer.pl
	Joe Perches <[email protected]> (maintainer:GET_MAINTAINER SCRIPT)
	[email protected] (open list)

With --json:

Before this patch:

	$ ./scripts/get_maintainer.pl --json ./scripts/get_maintainer.pl
	Can't locate JSON/PP.pm in @INC (you may need to install the JSON::PP module) (@INC entries checked: /usr/local/lib64/perl5/5.42 /usr/local/share/perl5/5.42 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at ./scripts/get_maintainer.pl line 24.
	BEGIN failed--compilation aborted at ./scripts/get_maintainer.pl line 24.

After:

	$ ./scripts/get_maintainer.pl --json ./scripts/get_maintainer.pl
	Can't locate JSON/PP.pm in @INC (you may need to install the JSON::PP module) (@INC entries checked: /usr/local/lib64/perl5/5.42 /usr/local/share/perl5/5.42 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at ./scripts/get_maintainer.pl line 665.

Same failure. Sorry, I don't understand what is not clear for you :(

Quoted 8 lines

Dunno. Depending on the current failure output
maybe adding something like the below is better:

use Module::Load::Conditional qw(check_install);

if (!check_install(module => 'JSON:PP')) {
    die "$P: --json not available - missing perl module JSON:PP\n";
}

But why? Why make get_maintainer.pl depend on yet another module? FYI, on my Fedora 44

	$ perl -we 'use Module::Load::Conditional qw(check_install);'
	Can't locate Module/Load/Conditional.pm in @INC (you may need to install the Module::Load::Conditional module) (@INC entries checked: /usr/local/lib64/perl5/5.42 /usr/local/share/perl5/5.42 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at -e line 1.
	BEGIN failed--compilation aborted at -e line 1.

And for what ???

If we want to "improve" the errmsg, we can use "eval { require JSON::PP; }; die ... if $@" but this looks absolutely pointless to me.

Let me repeat. If JSON::PP is not installed, then get_maintainer.pl with --json:

fails the same way before or after this patch, I see nothing to improve.

without --json:

fails before this patch, works after this patch

Sorry, I really can't understand your concerns.

Oleg.

#5 lore raw
Quoted 26 lines · Oleg Nesterov
Quoted 8 lines · Joe Perches

Dunno. Depending on the current failure output
maybe adding something like the below is better:

use Module::Load::Conditional qw(check_install);

if (!check_install(module => 'JSON:PP')) {
    die "$P: --json not available - missing perl module JSON:PP\n";
}

But why? Why make get_maintainer.pl depend on yet another module? FYI, on my Fedora 44

	$ perl -we 'use Module::Load::Conditional qw(check_install);'
	Can't locate Module/Load/Conditional.pm in @INC (you may need to install the Module::Load::Conditional module) (@INC entries checked: /usr/local/lib64/perl5/5.42 /usr/local/share/perl5/5.42 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at -e line 1.
	BEGIN failed--compilation aborted at -e line 1.

And for what ???

If we want to "improve" the errmsg, we can use "eval { require JSON::PP; }; die ... if $@" but this looks absolutely pointless to me.

Let me repeat. If JSON::PP is not installed, then get_maintainer.pl with --json:

Quoted 8 lines

fails the same way before or after this patch, I see nothing to improve.

without --json:

fails before this patch, works after this patch

Sorry, I really can't understand your concerns.

I think that Oleg's change makes sense. The only reason I originally relied on JSON::PP was because I was under the impression that it falls under the "pure perl code" guidelines and gets autoinstalled with perl.

Signature · 2 lines
Thanks,
Sasha
maintainer
#6 lore raw
In reply to Oleg Nesterov
Quoted 54 lines · Oleg Nesterov
Quoted 9 lines · Joe Perches
Quoted 7 lines · Oleg Nesterov
Quoted 4 lines
Quoted 2 lines

This module is only needed with the --json option. Use "require" to load this module dynamically inside the "if ($json)" block instead.

The patch may be sensible but could fail the same way if you used the --json option with your version.

Of course, "./scripts/get_maintainer.pl --json ..." will still fail the same way without JSON::PP. But with this patch get_maintainer.pl works without the --json option.

What does that failure output?

Hmm. I am not sure I understand you concerns. Let me add more details. So, I think this patch makes no difference if JSON::PP is installed. Do you agree?

Now lets see what happens on my machine where JSON::PP is NOT installed. Without --json:

Before this patch:

	$ ./scripts/get_maintainer.pl ./scripts/get_maintainer.pl
	Can't locate JSON/PP.pm in @INC (you may need to install the JSON::PP module) (@INC entries checked: /usr/local/lib64/perl5/5.42 /usr/local/share/perl5/5.42 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at ./scripts/get_maintainer.pl line 24.
	BEGIN failed--compilation aborted at ./scripts/get_maintainer.pl line 24.

After:

	$ ./scripts/get_maintainer.pl ./scripts/get_maintainer.pl
	Joe Perches <[[email protected]](mailto:[email protected])> (maintainer:GET_MAINTAINER SCRIPT)
	[[email protected]](mailto:[email protected]) (open list)

With --json:

Before this patch:

	$ ./scripts/get_maintainer.pl --json ./scripts/get_maintainer.pl
	Can't locate JSON/PP.pm in @INC (you may need to install the JSON::PP module) (@INC entries checked: /usr/local/lib64/perl5/5.42 /usr/local/share/perl5/5.42 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at ./scripts/get_maintainer.pl line 24.
	BEGIN failed--compilation aborted at ./scripts/get_maintainer.pl line 24.

After:

	$ ./scripts/get_maintainer.pl --json ./scripts/get_maintainer.pl
	Can't locate JSON/PP.pm in @INC (you may need to install the JSON::PP module) (@INC entries checked: /usr/local/lib64/perl5/5.42 /usr/local/share/perl5/5.42 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at ./scripts/get_maintainer.pl line 665.

Same failure. Sorry, I don't understand what is not clear for you :(

Quoted 8 lines

Dunno. Depending on the current failure output
maybe adding something like the below is better:

use Module::Load::Conditional qw(check_install);

if (!check_install(module => 'JSON:PP')) {
    die "$P: --json not available - missing perl module JSON:PP\n";
}
Quoted 6 lines

But why? Why make get_maintainer.pl depend on yet another module? FYI, on my Fedora 44

	$ perl -we 'use Module::Load::Conditional qw(check_install);'
	Can't locate Module/Load/Conditional.pm in @INC (you may need to install the Module::Load::Conditional module) (@INC entries checked: /usr/local/lib64/perl5/5.42 /usr/local/share/perl5/5.42 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at -e line 1.
	BEGIN failed--compilation aborted at -e line 1.

Module::Load is a core perl module since 5.10 and

I think you are using a broken version of a perl installation and I think you should:

$ sudo dnf install perl-core
Quoted 1 line

And for what ???

My idea is to make it more obvious _why_ something fails and not like get_maintainer itself is broken.

Quoted 2 lines

If we want to "improve" the errmsg, we can use "eval { require JSON::PP; }; die ... if $@" but this looks absolutely pointless to me.

We disagree. I prefer output errors to look less broken.

#7 lore raw
Quoted 15 lines · Joe Perches
Quoted 13 lines · Oleg Nesterov
Quoted 9 lines

Dunno. Depending on the current failure output
maybe adding something like the below is better:

use Module::Load::Conditional qw(check_install);

if (!check_install(module => 'JSON:PP')) {
    die "$P: --json not available - missing perl module JSON:PP\n";
}

But why? Why make get_maintainer.pl depend on yet another module? FYI, on my Fedora 44

Quoted 7 lines
Quoted 3 lines
	$ perl -we 'use Module::Load::Conditional qw(check_install);'
	Can't locate Module/Load/Conditional.pm in @INC (you may need to install the Module::Load::Conditional module) (@INC entries checked: /usr/local/lib64/perl5/5.42 /usr/local/share/perl5/5.42 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at -e line 1.
	BEGIN failed--compilation aborted at -e line 1.

Module::Load is a core perl module since 5.10 and

I think you are using a broken version of a perl installation

And how do you think it is broken? my laptop runs the fresh Fedora 44.

I used ./scripts/get_maintainer.pl many years, almost every day, and I never needed to install the additional modules. Until ("get_maintainer: add --json output mode")

Quoted 3 lines

and I think you should:

$ sudo dnf install perl-core

Oh. I LOVE perl. Damn I still consider myself as a perl programmer ;)

But why do you think I should install the additional modules (which I will never use) on my machine???

Again, again, again. AFAICS, this patch makes no difference if JSON::PP is installed. Please correct me.

It just allows to use get_maintainer.pl without --json in the case when JSON::PP is NOT installed. This is the ONLY difference afaics.

Quoted 4 lines
Quoted 1 line

And for what ???

My idea is to make it more obvious _why_ something fails and not like get_maintainer itself is broken.

Good idea! But again, again, again, if JSON::PP is not installed, then the failure message is the same with or without my patch. Just get_maintainer.pl does NOT fail without --json.

Although to be honest "Can't locate JSON/PP.pm ..." looks very clear to me, but you can make it more obvious with or without my patch.

Quoted 4 lines
Quoted 2 lines

If we want to "improve" the errmsg, we can use "eval { require JSON::PP; }; die ... if $@" but this looks absolutely pointless to me.

We disagree. I prefer output errors to look less broken.

less broken than what? see above.

It's not that we disagree... Worse, we can't understand each other :( Perhaps is this my fault.

Oleg.

maintainer
#8 lore raw
Quoted 15 lines · Oleg Nesterov
Quoted 1 line · Joe Perches

On Fri, 2026-10-30 at 22:44 +0100, Oleg Nesterov wrote:

Dunno. Depending on the current failure output

Quoted 11 lines
Quoted 11 lines
Quoted 7 lines

maybe adding something like the below is better:

use Module::Load::Conditional qw(check_install);

if (!check_install(module => 'JSON:PP')) {
    die "$P: --json not available - missing perl module JSON:PP\n";
}

But why? Why make get_maintainer.pl depend on yet another module? FYI, on my Fedora 44

Quoted 7 lines
	$ perl -we 'use Module::Load::Conditional qw(check_install);'
	Can't locate Module/Load/Conditional.pm in @INC (you may need to install the Module::Load::Conditional module) (@INC entries checked: /usr/local/lib64/perl5/5.42 /usr/local/share/perl5/5.42 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at -e line 1.
	BEGIN failed--compilation aborted at -e line 1.
Quoted 3 lines

Module::Load is a core perl module since 5.10 and
I think you are using a broken version of a perl installation

And how do you think it is broken? my laptop runs the fresh Fedora 44.

It doesn't include perl-core ;)

Quoted 3 lines

I used ./scripts/get_maintainer.pl many years, almost every day, and I never needed to install the additional modules. Until ("get_maintainer: add --json output mode")

I think that was added in Linus' 7.2 in mid August and in -next since April

Quoted 5 lines
Quoted 3 lines

and I think you should:

$ sudo dnf install perl-core

Oh. I LOVE perl. Damn I still consider myself as a perl programmer ;)

:) I don't consider myself one...

Quoted 2 lines

But why do you think I should install the additional modules (which I will never use) on my machine???

Just like you have to add development-tools to that install.

Quoted 2 lines

Again, again, again. AFAICS, this patch makes no difference if JSON::PP is installed. Please correct me.

Why? You're not wrong.

Quoted 11 lines

It just allows to use get_maintainer.pl without --json in the case when JSON::PP is NOT installed. This is the ONLY difference afaics.

Quoted 3 lines
Quoted 1 line

And for what ???

My idea is to make it more obvious _why_ something fails and not like get_maintainer itself is broken.

Good idea! But again, again, again, if JSON::PP is not installed, then the failure message is the same with or without my patch. Just get_maintainer.pl does NOT fail without --json.

Although to be honest "Can't locate JSON/PP.pm ..." looks very clear to me, but you can make it more obvious with or without my patch.

Quoted 7 lines
Quoted 3 lines
Quoted 2 lines

If we want to "improve" the errmsg, we can use "eval { require JSON::PP; }; die ... if $@" but this looks absolutely pointless to me.

We disagree. I prefer output errors to look less broken.

less broken than what? see above.

It's not that we disagree... Worse, we can't understand each other :( Perhaps is this my fault.

I don't disagree with the concept of the patch.

I think we understand each other fine, you just care less about the output error message. What gets output now is from perl and I think it looks less like get_maintainer is working properly.

cheers, Joe

#9 lore raw
Quoted 10 lines · Joe Perches
Quoted 8 lines · Oleg Nesterov
Quoted 4 lines
Quoted 4 lines

But why? Why make get_maintainer.pl depend on yet another module? FYI, on my Fedora 44

	$ perl -we 'use Module::Load::Conditional qw(check_install);'
	Can't locate Module/Load/Conditional.pm in @INC (you may need to install the Module::Load::Conditional module) (@INC entries checked: /usr/local/lib64/perl5/5.42 /usr/local/share/perl5/5.42 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at -e line 1.
	BEGIN failed--compilation aborted at -e line 1.
Quoted 1 line
Quoted 5 lines
Quoted 3 lines
Quoted 2 lines

Module::Load is a core perl module since 5.10 and
I think you are using a broken version of a perl installation

And how do you think it is broken? my laptop runs the fresh Fedora 44.

It doesn't include perl-core ;)

you can blame the Fedora maintainers, not me ;)

Quoted 5 lines
Quoted 3 lines

I used ./scripts/get_maintainer.pl many years, almost every day, and I never needed to install the additional modules. Until ("get_maintainer: add --json output mode")

I think that was added in Linus' 7.2 in mid August and in -next since April

Yes, I hit this problem months ago, but didn't have time to send the fix. So I had to have "git revert 09d8b39563e84fc245d642182715a7e0e024b0f2" in my local trees until today.

Quoted 4 lines
Quoted 2 lines

It's not that we disagree... Worse, we can't understand each other :( Perhaps is this my fault.

I don't disagree with the concept of the patch.

Great, then perhaps you can ACK my trivial patch? Then we can discuss the possible improvements.

Quoted 2 lines

I think we understand each other fine, you just care less about the output error message.

Yes, it is true in that I don't really care about the output error message.

But then again. This error message can only happen if JSON::PP is not installed, and my patch doesn't make it worse?

Oleg.

maintainer
#10 lore raw
Quoted 4 lines · Oleg Nesterov
Quoted 3 lines · Joe Perches
Quoted 2 lines · Oleg Nesterov
Quoted 2 lines
Quoted 2 lines

But why? Why make get_maintainer.pl depend on yet another module? FYI, on my Fedora 44

[]

Quoted 7 lines
Quoted 5 lines
Quoted 4 lines
Quoted 2 lines

Module::Load is a core perl module since 5.10 and
I think you are using a broken version of a perl installation

And how do you think it is broken? my laptop runs the fresh Fedora 44.

It doesn't include perl-core ;)

you can blame the Fedora maintainers, not me ;)

<smile>

That'd be the same as blaming the Fedora maintainers for not including development-tools by default.

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

I used ./scripts/get_maintainer.pl many years, almost every day, and I never needed to install the additional modules. Until ("get_maintainer: add --json output mode")

I think that was added in Linus' 7.2 in mid August and in -next since April

Yes, I hit this problem months ago, but didn't have time to send the fix.

Nor apparently have time to send an email to the get_maintainer maintainer about it either.

Quoted 3 lines
Quoted 1 line

I don't disagree with the concept of the patch.

Great, then perhaps you can ACK my trivial patch? Then we can discuss the possible improvements.

Maybe when it's done without needing updates.
In the meantime, you have an easy workaround with dnf install perl-core.

Quoted 7 lines
Quoted 2 lines

I think we understand each other fine, you just care less about the output error message.

Yes, it is true in that I don't really care about the output error message.

But then again. This error message can only happen if JSON::PP is not installed, and my patch doesn't make it worse?

#11 lore raw
Quoted 10 lines · Joe Perches
Quoted 5 lines · Oleg Nesterov
Quoted 2 lines · Joe Perches

I think that was added in Linus' 7.2 in mid August and in -next since April

Yes, I hit this problem months ago, but didn't have time to send the fix.

Nor apparently have time to send an email to the get_maintainer maintainer about it either.

No. I knew that this problem is trivial and I can send the trivial fix when I have time to check the code and write the changelog.

Quoted 4 lines
Quoted 2 lines

Great, then perhaps you can ACK my trivial patch? Then we can discuss the possible improvements.

Maybe when it's done without needing updates.

Sorry, I don't understand...

Quoted 1 line

In the meantime, you have an easy workaround with dnf install perl-core.

Sure. Or I guess I can install perl-JSON-PP.noarch... most probably this is the necessary module.

OK. So in essence you NACK this change. OK, maintainer is always right. I won't argue even if I don't understand why you dislike this trivial change. Afaics it can't make any regression, it just allows to continue to use get_maintainer.pl without JSON::PP, as it was always possible.

Oleg.

#12 lore raw

PATCH v2 1/1 get_maintainer: lazy load JSON::PP only when --json is used

In reply to Oleg Nesterov

After commit 09d8b39563e8 ("get_maintainer: add --json output mode"), I can no longer use get_maintainer.pl; it fails at compile time if JSON::PP is not installed even when --json is not requested.

This module is only needed with the --json option. Use "require" to load this module dynamically inside the "if ($json)" block instead.

---
 scripts/get_maintainer.pl | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
scripts/get_maintainer.pl +2 -1
index 16b80a700d4a..b31b4016802f 100755
@@ -21,7 +21,6 @@ use Cwd;
 use File::Find;
 use File::Spec::Functions;
 use open qw(:std :encoding(UTF-8));
-use JSON::PP;
 
 my $cur_path = fastgetcwd() . '/';
 my $lk_path = "./";
@@ -663,6 +662,8 @@ my @maintainers = get_maintainers();
 @bug = uniq(@bug) if ($bug);
 
 if ($json) {
+    require JSON::PP;
+
     my @json_maintainers;
     for my $m (@maintainers) {
 	my ($addr, $role);
Signature · 1 line
2.55.0