* [U-Boot] [U-Boot, 1/1] scripts/get_maintainer.pl: update to current version [not found] <1509162258.1932.3.camel@localhost> @ 2017-10-28 5:26 ` Heinrich Schuchardt 2017-10-28 5:34 ` [U-Boot] [PATCH 1/1] scripts/get_maintainer.pl: enable find_maintainer_files Heinrich Schuchardt 2017-10-28 5:43 ` [U-Boot] [U-Boot, 1/1] scripts/get_maintainer.pl: update to current version waltfeasel at gmail.com 0 siblings, 2 replies; 5+ messages in thread From: Heinrich Schuchardt @ 2017-10-28 5:26 UTC (permalink / raw) To: u-boot On 10/28/2017 05:44 AM, waltfeasel at gmail.com wrote: > Heinrich, > > I ran across a problem with not getting a maintainer for a correction I > was putting together. I tracked it down to the line: > > "+my $find_maintainer_files = 0;" > > When I changed the "0" to a "1" I was able to get the maintainer as > intended. > > My error was as follows: > > $ perl scripts/get_maintainer.pl -m -r -l -f board/Marvell/dreamplug/ > Bad divisor in main::vcs_assign: 0 > "GitAuthor: Walt Feasel" <waltfeasel@gmail.com> (authored:2/1=100%) > u-boot at lists.denx.de (open list) Hello Walt, I am not able to reproduce your problem with perl v5.4.21 on Debian Stretch: $ scripts/get_maintainer.pl -f board/Marvell/dreamplug/ u-boot at lists.denx.de (open list) $ perl scripts/get_maintainer.pl -m -r -l -f board/Marvell/dreamplug/ u-boot at lists.denx.de (open list) $ I wonder why you are calling perl with -m -r -l. The get_maintainer.pl script is maintained in the Linux kernel source tree. So if you find any problem, please, send a mail TO: Joe Perches <joe@perches.com> (maintainer:GET_MAINTAINER SCRIPT) CC: linux-kernel at vger.kernel.org (open list) As we have many MAINTAINERS files in subdirectories you are right in that we should enable finding these. I will submit a patch. Best regards Heinrich > > When I changed from the "0" to the "1" as stated above I get: > > $ perl scripts/get_maintainer.pl -m -r -l -f board/Marvell/dreamplug/ > Jason Cooper <u-boot@lakedaemon.net> (maintainer:DREAMPLUG BOARD) > u-boot at lists.denx.de (open list) > > As I would expect and believe is intended. > > > I have included below the text of your e-mail to the u-boot list as a > reference. > > I do not know if this is the proper fix for it or if it may cause > issues with your intentions so I will leave it to you and or Tom to > decide what to do. > > Also, I am currently not subscribed to the mailing list so unable to > post there. > > Sincerely, > > Walt Feasel > > > ORIGINAL POST ON MAILING LIST BELOW > > > Update the script to version 0.26 (as of Linux v4.14-rc1) > Keep our "penguin_chief". > Keep our top_of_kernel_tree. > > The negative forms of the command line parameters are described > when using --help. > > New options are > > --git-blame-signatures => when used with --git-blame, > also include all commit signers > --r => include reviewer(s) if any > --letters => print all matching 'letter' types > from all matching sections > > File .get_maintainer.ignore can be used to specify > email addressees that shall be ignored. > > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> > --- > scripts/get_maintainer.pl | 202 +++++++++++++++++++++++++++++++++++--- > -------- > 1 file changed, 156 insertions(+), 46 deletions(-) > > diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl > index 83a4e5bad2..8b6037b73f 100755 > --- a/scripts/get_maintainer.pl > +++ b/scripts/get_maintainer.pl > @@ -1,4 +1,4 @@ > -#!/usr/bin/perl -w > +#!/usr/bin/env perl > # (c) 2007, Joe Perches <joe@perches.com> > # created from checkpatch.pl > # > @@ -10,18 +10,22 @@ > # > # Licensed under the terms of the GNU GPL License version 2 > > +use warnings; > use strict; > > my $P = $0; > my $V = '0.26'; > > use Getopt::Long qw(:config no_auto_abbrev); > +use Cwd; > use File::Find; > > +my $cur_path = fastgetcwd() . '/'; > my $lk_path = "./"; > my $email = 1; > my $email_usename = 1; > my $email_maintainer = 1; > +my $email_reviewer = 1; > my $email_list = 1; > my $email_subscriber_list = 0; > my $email_git_penguin_chiefs = 0; > @@ -42,10 +46,12 @@ my $output_multiline = 1; > my $output_separator = ", "; > my $output_roles = 0; > my $output_rolestats = 1; > +my $output_section_maxlen = 50; > my $scm = 0; > my $web = 0; > my $subsystem = 0; > my $status = 0; > +my $letters = ""; > my $keywords = 1; > my $sections = 0; > my $file_emails = 0; > @@ -53,6 +59,7 @@ my $from_filename = 0; > my $pattern_depth = 0; > my $version = 0; > my $help = 0; > +my $find_maintainer_files = 0; > > my $vcs_used = 0; > > @@ -128,6 +135,7 @@ my %VCS_cmds_git = ( > "author_pattern" => "^GitAuthor: (.*)", > "subject_pattern" => "^GitSubject: (.*)", > "stat_pattern" => "^(\\d+)\\t(\\d+)\\t\$file\$", > + "file_exists_cmd" => "git ls-files \$file", > ); > > my %VCS_cmds_hg = ( > @@ -156,6 +164,7 @@ my %VCS_cmds_hg = ( > "author_pattern" => "^HgAuthor: (.*)", > "subject_pattern" => "^HgSubject: (.*)", > "stat_pattern" => "^(\\d+)\t(\\d+)\t\$file\$", > + "file_exists_cmd" => "hg files \$file", > ); > > my $conf = which_conf(".get_maintainer.conf"); > @@ -184,6 +193,27 @@ if (-f $conf) { > unshift(@ARGV, @conf_args) if @conf_args; > } > > +my @ignore_emails = (); > +my $ignore_file = which_conf(".get_maintainer.ignore"); > +if (-f $ignore_file) { > + open(my $ignore, '<', "$ignore_file") > + or warn "$P: Can't find a readable .get_maintainer.ignore file > $!\n"; > + while (<$ignore>) { > + my $line = $_; > + > + $line =~ s/\s*\n?$//; > + $line =~ s/^\s*//; > + $line =~ s/\s+$//; > + $line =~ s/#.*$//; > + > + next if ($line =~ m/^\s*$/); > + if (rfc822_valid($line)) { > + push(@ignore_emails, $line); > + } > + } > + close($ignore); > +} > + > if (!GetOptions( > 'email!' => \$email, > 'git!' => \$email_git, > @@ -201,6 +231,7 @@ if (!GetOptions( > 'remove-duplicates!' => \$email_remove_duplicates, > 'mailmap!' => \$email_use_mailmap, > 'm!' => \$email_maintainer, > + 'r!' => \$email_reviewer, > 'n!' => \$email_usename, > 'l!' => \$email_list, > 's!' => \$email_subscriber_list, > @@ -212,11 +243,13 @@ if (!GetOptions( > 'status!' => \$status, > 'scm!' => \$scm, > 'web!' => \$web, > + 'letters=s' => \$letters, > 'pattern-depth=i' => \$pattern_depth, > 'k|keywords!' => \$keywords, > 'sections!' => \$sections, > 'fe|file-emails!' => \$file_emails, > 'f|file' => \$from_filename, > + 'find-maintainer-files' => \$find_maintainer_files, > 'v|version' => \$version, > 'h|help|usage' => \$help, > )) { > @@ -242,7 +275,8 @@ $output_multiline = 0 if ($output_separator ne ", > "); > $output_rolestats = 1 if ($interactive); > $output_roles = 1 if ($output_rolestats); > > -if ($sections) { > +if ($sections || $letters ne "") { > + $sections = 1; > $email = 0; > $email_list = 0; > $scm = 0; > @@ -259,42 +293,28 @@ if ($sections) { > } > > if ($email && > - ($email_maintainer + $email_list + $email_subscriber_list + > + ($email_maintainer + $email_reviewer + > + $email_list + $email_subscriber_list + > $email_git + $email_git_penguin_chiefs + $email_git_blame) == 0) > { > die "$P: Please select at least 1 email option\n"; > } > > if (!top_of_kernel_tree($lk_path)) { > die "$P: The current directory does not appear to be " > - . "a linux kernel source tree.\n"; > + . "a U-Boot source tree.\n"; > } > > ## Read MAINTAINERS for type/value pairs > > my @typevalue = (); > my %keyword_hash; > +my @mfiles = (); > > -my @maint_files = (); > -push(@maint_files, "${lk_path}MAINTAINERS"); > - > -sub maint_wanted { > - return unless $_ =~ /^MAINTAINERS/; > - push(@maint_files, "$File::Find::name"); > -} > - > -File::Find::find(\&maint_wanted, "${lk_path}board"); > - > -foreach my $maint_file (@maint_files) { > - my $maint; > - open ($maint, '<', "$maint_file") > - or die "$P: Can't open $maint_file: $!\n"; > - read_maintainers($maint); > - close($maint); > -} > - > -sub read_maintainers { > - my ($maint) = @_; > +sub read_maintainer_file { > + my ($file) = @_; > > + open (my $maint, '<', "$file") > + or die "$P: Can't open MAINTAINERS file '$file': $!\n"; > while (<$maint>) { > my $line = $_; > > @@ -315,13 +335,47 @@ sub read_maintainers { > $keyword_hash{@typevalue} = $value; > } > push(@typevalue, "$type:$value"); > - } elsif (!/^(\s)*$/) { > + } elsif (!(/^\s*$/ || /^\s*\#/)) { > $line =~ s/\n$//g; > push(@typevalue, $line); > } > } > + close($maint); > +} > + > +sub find_is_maintainer_file { > + my ($file) = $_; > + return if ($file !~ m@/MAINTAINERS$@); > + $file = $File::Find::name; > + return if (! -f $file); > + push(@mfiles, $file); > +} > + > +sub find_ignore_git { > + return grep { $_ !~ /^\.git$/; } @_; > +} > + > +if (-d "${lk_path}MAINTAINERS") { > + opendir(DIR, "${lk_path}MAINTAINERS") or die $!; > + my @files = readdir(DIR); > + closedir(DIR); > + foreach my $file (@files) { > + push(@mfiles, "${lk_path}MAINTAINERS/$file") if ($file !~ > /^\./); > + } > } > > +if ($find_maintainer_files) { > + find( { wanted => \&find_is_maintainer_file, > + preprocess => \&find_ignore_git, > + no_chdir => 1, > + }, "${lk_path}"); > +} else { > + push(@mfiles, "${lk_path}MAINTAINERS") if -f > "${lk_path}MAINTAINERS"; > +} > + > +foreach my $file (@mfiles) { > + read_maintainer_file("$file"); > +} > > # > # Read mail address map > @@ -421,7 +475,9 @@ foreach my $file (@ARGV) { > die "$P: file '${file}' not found\n"; > } > } > - if ($from_filename) { > + if ($from_filename || ($file ne "&STDIN" && > vcs_file_exists($file))) { > + $file =~ s/^\Q${cur_path}\E//; #strip any absolute path > + $file =~ s/^\Q${lk_path}\E//; #or the path to the lk > tree > push(@files, $file); > if ($file ne "MAINTAINERS" && -f $file && ($keywords || > $file_emails)) { > open(my $f, '<', $file) > @@ -528,6 +584,16 @@ if ($web) { > > exit($exit); > > +sub ignore_email_address { > + my ($address) = @_; > + > + foreach my $ignore (@ignore_emails) { > + return 1 if ($ignore eq $address); > + } > + > + return 0; > +} > + > sub range_is_maintained { > my ($start, $end) = @_; > > @@ -659,8 +725,10 @@ sub get_maintainers { > $line =~ s/\\\./\./g; ##Convert > \. to . > $line =~ s/\.\*/\*/g; ##Convert > .* to * > } > - $line =~ s/^([A-Z]):/$1:\t/g; > - print("$line\n"); > + my $count = $line =~ s/^([A-Z]):/$1:\t/g; > + if ($letters eq "" || (!$count || $letters =~ > /$1/i)) { > + print("$line\n"); > + } > } > print("\n"); > } > @@ -764,10 +832,12 @@ MAINTAINER field selection options: > --git-max-maintainers => maximum maintainers to add (default: > $email_git_max_maintainers) > --git-min-percent => minimum percentage of commits required > (default: $email_git_min_percent) > --git-blame => use git blame to find modified commits for patch or > file > + --git-blame-signatures => when used with --git-blame, also include > all commit signers > --git-since => git history to use (default: $email_git_since) > --hg-since => hg history to use (default: $email_hg_since) > --interactive => display a menu (mostly useful if used with the -- > git option) > --m => include maintainer(s) if any > + --r => include reviewer(s) if any > --n => include name 'Full Name <addr\@domain.tld>' > --l => include list(s) if any > --s => include subscriber only list(s) if any > @@ -789,12 +859,13 @@ Other options: > --pattern-depth => Number of pattern directory traversals (default: > 0 (all)) > --keywords => scan patch for keywords (default: $keywords) > --sections => print all of the subsystem sections with pattern > matches > + --letters => print all matching 'letter' types from all matching > sections > --mailmap => use .mailmap file (default: $email_use_mailmap) > --version => show version > --help => show this help information > > Default options: > - [--email --nogit --git-fallback --m --n --l --multiline -pattern- > depth=0 > + [--email --nogit --git-fallback --m --r --n --l --multiline -- > pattern-depth=0 > --remove-duplicates --rolestats] > > Notes: > @@ -826,6 +897,9 @@ Notes: > Entries in this file can be any command line argument. > This file is prepended to any additional command line arguments. > Multiple lines and # comments are allowed. > + Most options have both positive and negative forms. > + The negative forms for --<foo> are --no<foo> and --no-<foo>. > + > EOT > } > > @@ -836,7 +910,7 @@ sub top_of_kernel_tree { > $lk_path .= "/"; > } > if ( (-f "${lk_path}Kbuild") > - && (-f "${lk_path}MAINTAINERS") > + && (-e "${lk_path}MAINTAINERS") > && (-f "${lk_path}Makefile") > && (-f "${lk_path}README") > && (-d "${lk_path}arch") > @@ -954,20 +1028,29 @@ sub find_ending_index { > return $index; > } > > -sub get_maintainer_role { > +sub get_subsystem_name { > my ($index) = @_; > > - my $i; > my $start = find_starting_index($index); > - my $end = find_ending_index($index); > > - my $role = "unknown"; > my $subsystem = $typevalue[$start]; > - if (length($subsystem) > 20) { > - $subsystem = substr($subsystem, 0, 17); > + if ($output_section_maxlen && length($subsystem) > > $output_section_maxlen) { > + $subsystem = substr($subsystem, 0, $output_section_maxlen - > 3); > $subsystem =~ s/\s*$//; > $subsystem = $subsystem . "..."; > } > + return $subsystem; > +} > + > +sub get_maintainer_role { > + my ($index) = @_; > + > + my $i; > + my $start = find_starting_index($index); > + my $end = find_ending_index($index); > + > + my $role = "unknown"; > + my $subsystem = get_subsystem_name($index); > > for ($i = $start + 1; $i < $end; $i++) { > my $tv = $typevalue[$i]; > @@ -1001,16 +1084,7 @@ sub get_maintainer_role { > sub get_list_role { > my ($index) = @_; > > - my $i; > - my $start = find_starting_index($index); > - my $end = find_ending_index($index); > - > - my $subsystem = $typevalue[$start]; > - if (length($subsystem) > 20) { > - $subsystem = substr($subsystem, 0, 17); > - $subsystem =~ s/\s*$//; > - $subsystem = $subsystem . "..."; > - } > + my $subsystem = get_subsystem_name($index); > > if ($subsystem eq "THE REST") { > $subsystem = ""; > @@ -1084,6 +1158,23 @@ sub add_categories { > my $role = get_maintainer_role($i); > push_email_addresses($pvalue, $role); > } > + } elsif ($ptype eq "R") { > + my ($name, $address) = parse_email($pvalue); > + if ($name eq "") { > + if ($i > 0) { > + my $tv = $typevalue[$i - 1]; > + if ($tv =~ m/^([A-Z]):\s*(.*)/) { > + if ($1 eq "P") { > + $name = $2; > + $pvalue = format_email($name, > $address, $email_usename); > + } > + } > + } > + } > + if ($email_reviewer) { > + my $subsystem = get_subsystem_name($i); > + push_email_addresses($pvalue, > "reviewer:$subsystem"); > + } > } elsif ($ptype eq "T") { > push(@scm, $pvalue); > } elsif ($ptype eq "W") { > @@ -1868,6 +1959,7 @@ sub vcs_assign { > my $percent = $sign_offs * 100 / $divisor; > > $percent = 100 if ($percent > 100); > + next if (ignore_email_address($line)); > $count++; > last if ($sign_offs < $email_git_min_signatures || > $count > $email_git_max_maintainers || > @@ -2082,6 +2174,24 @@ sub vcs_file_blame { > } > } > > +sub vcs_file_exists { > + my ($file) = @_; > + > + my $exists; > + > + my $vcs_used = vcs_exists(); > + return 0 if (!$vcs_used); > + > + my $cmd = $VCS_cmds{"file_exists_cmd"}; > + $cmd =~ s/(\$\w+)/$1/eeg; # interpolate $cmd > + $cmd .= " 2>&1"; > + $exists = &{$VCS_cmds{"execute_cmd"}}($cmd); > + > + return 0 if ($? != 0); > + > + return $exists; > +} > + > sub uniq { > my (@parms) = @_; > > -- > 2.14.1 > ^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] [PATCH 1/1] scripts/get_maintainer.pl: enable find_maintainer_files 2017-10-28 5:26 ` [U-Boot] [U-Boot, 1/1] scripts/get_maintainer.pl: update to current version Heinrich Schuchardt @ 2017-10-28 5:34 ` Heinrich Schuchardt 2017-10-28 5:46 ` waltfeasel at gmail.com 2017-10-29 22:02 ` [U-Boot] [U-Boot, " Tom Rini 2017-10-28 5:43 ` [U-Boot] [U-Boot, 1/1] scripts/get_maintainer.pl: update to current version waltfeasel at gmail.com 1 sibling, 2 replies; 5+ messages in thread From: Heinrich Schuchardt @ 2017-10-28 5:34 UTC (permalink / raw) To: u-boot Many MAINTAINERS files are in subdirectories. We should enable searching these. Reported-by: Walt Feasel <waltfeasel@gmail.com> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> --- scripts/get_maintainer.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl index 8b6037b73f..07800e62d1 100755 --- a/scripts/get_maintainer.pl +++ b/scripts/get_maintainer.pl @@ -59,7 +59,7 @@ my $from_filename = 0; my $pattern_depth = 0; my $version = 0; my $help = 0; -my $find_maintainer_files = 0; +my $find_maintainer_files = 1; my $vcs_used = 0; -- 2.14.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [U-Boot] [PATCH 1/1] scripts/get_maintainer.pl: enable find_maintainer_files 2017-10-28 5:34 ` [U-Boot] [PATCH 1/1] scripts/get_maintainer.pl: enable find_maintainer_files Heinrich Schuchardt @ 2017-10-28 5:46 ` waltfeasel at gmail.com 2017-10-29 22:02 ` [U-Boot] [U-Boot, " Tom Rini 1 sibling, 0 replies; 5+ messages in thread From: waltfeasel at gmail.com @ 2017-10-28 5:46 UTC (permalink / raw) To: u-boot On Sat, 2017-10-28 at 07:34 +0200, Heinrich Schuchardt wrote: > Many MAINTAINERS files are in subdirectories. > We should enable searching these. > > Reported-by: Walt Feasel <waltfeasel@gmail.com> > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> > --- > scripts/get_maintainer.pl | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl > index 8b6037b73f..07800e62d1 100755 > --- a/scripts/get_maintainer.pl > +++ b/scripts/get_maintainer.pl > @@ -59,7 +59,7 @@ my $from_filename = 0; > my $pattern_depth = 0; > my $version = 0; > my $help = 0; > -my $find_maintainer_files = 0; > +my $find_maintainer_files = 1; > > my $vcs_used = 0; > You are a Rock Star! Thanks, Walt ^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] [U-Boot, 1/1] scripts/get_maintainer.pl: enable find_maintainer_files 2017-10-28 5:34 ` [U-Boot] [PATCH 1/1] scripts/get_maintainer.pl: enable find_maintainer_files Heinrich Schuchardt 2017-10-28 5:46 ` waltfeasel at gmail.com @ 2017-10-29 22:02 ` Tom Rini 1 sibling, 0 replies; 5+ messages in thread From: Tom Rini @ 2017-10-29 22:02 UTC (permalink / raw) To: u-boot On Sat, Oct 28, 2017 at 07:34:15AM +0200, Heinrich Schuchardt wrote: > Many MAINTAINERS files are in subdirectories. > We should enable searching these. > > Reported-by: Walt Feasel <waltfeasel@gmail.com> > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Applied to u-boot/master, thanks! -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171029/59b57e27/attachment.sig> ^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] [U-Boot, 1/1] scripts/get_maintainer.pl: update to current version 2017-10-28 5:26 ` [U-Boot] [U-Boot, 1/1] scripts/get_maintainer.pl: update to current version Heinrich Schuchardt 2017-10-28 5:34 ` [U-Boot] [PATCH 1/1] scripts/get_maintainer.pl: enable find_maintainer_files Heinrich Schuchardt @ 2017-10-28 5:43 ` waltfeasel at gmail.com 1 sibling, 0 replies; 5+ messages in thread From: waltfeasel at gmail.com @ 2017-10-28 5:43 UTC (permalink / raw) To: u-boot On Sat, 2017-10-28 at 07:26 +0200, Heinrich Schuchardt wrote: > On 10/28/2017 05:44 AM, waltfeasel at gmail.com wrote: > > Heinrich, > > > > I ran across a problem with not getting a maintainer for a > > correction I > > was putting together. I tracked it down to the line: > > > > "+my $find_maintainer_files = 0;" > > > > When I changed the "0" to a "1" I was able to get the maintainer as > > intended. > > > > My error was as follows: > > > > $ perl scripts/get_maintainer.pl -m -r -l -f > > board/Marvell/dreamplug/ > > Bad divisor in main::vcs_assign: 0 > > "GitAuthor: Walt Feasel" <waltfeasel@gmail.com> (authored:2/1=100%) > > u-boot at lists.denx.de (open list) > > Hello Walt, > Heinrich, > I am not able to reproduce your problem with perl v5.4.21 on Debian > Stretch: > I have perl 5.24.1-3+deb9u2 on Debian Stretch. > $ scripts/get_maintainer.pl -f board/Marvell/dreamplug/ > u-boot at lists.denx.de (open list) > $ perl scripts/get_maintainer.pl -m -r -l -f board/Marvell/dreamplug/ > u-boot at lists.denx.de (open list) > $ > These are missing Jason Cooper whom is the maintainer so neither is correct but not sure why I have the bad divisor if you also have the "+my $find_maintainer_files = 0;" setting. > I wonder why you are calling perl with -m -r -l. > From my uneducated understanding: -m = maintainer -r = reviewers -l = mailing list to get the email listings for each. > The get_maintainer.pl script is maintained in the Linux kernel source > tree. So if you find any problem, please, send a mail > Sorry, I thought you had made the modifications. > TO: Joe Perches <joe@perches.com> (maintainer:GET_MAINTAINER SCRIPT) > CC: linux-kernel at vger.kernel.org (open list) > > As we have many MAINTAINERS files in subdirectories you are right in > that we should enable finding these. I will submit a patch. > Thank you very much! > Best regards > > Heinrich > Walt > > > > When I changed from the "0" to the "1" as stated above I get: > > > > $ perl scripts/get_maintainer.pl -m -r -l -f > > board/Marvell/dreamplug/ > > Jason Cooper <u-boot@lakedaemon.net> (maintainer:DREAMPLUG BOARD) > > u-boot at lists.denx.de (open list) > > > > As I would expect and believe is intended. > > > > > > I have included below the text of your e-mail to the u-boot list as > > a > > reference. > > > > I do not know if this is the proper fix for it or if it may cause > > issues with your intentions so I will leave it to you and or Tom to > > decide what to do. > > > > Also, I am currently not subscribed to the mailing list so unable > > to > > post there. > > > > Sincerely, > > > > Walt Feasel > > > > > > ORIGINAL POST ON MAILING LIST BELOW > > > > > > Update the script to version 0.26 (as of Linux v4.14-rc1) > > Keep our "penguin_chief". > > Keep our top_of_kernel_tree. > > > > The negative forms of the command line parameters are described > > when using --help. > > > > New options are > > > > --git-blame-signatures => when used with --git-blame, > > also include all commit signers > > --r => include reviewer(s) if any > > --letters => print all matching 'letter' types > > from all matching sections > > > > File .get_maintainer.ignore can be used to specify > > email addressees that shall be ignored. > > > > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> > > --- > > scripts/get_maintainer.pl | 202 > > +++++++++++++++++++++++++++++++++++--- > > -------- > > 1 file changed, 156 insertions(+), 46 deletions(-) > > > > diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl > > index 83a4e5bad2..8b6037b73f 100755 > > --- a/scripts/get_maintainer.pl > > +++ b/scripts/get_maintainer.pl > > @@ -1,4 +1,4 @@ > > -#!/usr/bin/perl -w > > +#!/usr/bin/env perl > > # (c) 2007, Joe Perches <joe@perches.com> > > # created from checkpatch.pl > > # > > @@ -10,18 +10,22 @@ > > # > > # Licensed under the terms of the GNU GPL License version 2 > > > > +use warnings; > > use strict; > > > > my $P = $0; > > my $V = '0.26'; > > > > use Getopt::Long qw(:config no_auto_abbrev); > > +use Cwd; > > use File::Find; > > > > +my $cur_path = fastgetcwd() . '/'; > > my $lk_path = "./"; > > my $email = 1; > > my $email_usename = 1; > > my $email_maintainer = 1; > > +my $email_reviewer = 1; > > my $email_list = 1; > > my $email_subscriber_list = 0; > > my $email_git_penguin_chiefs = 0; > > @@ -42,10 +46,12 @@ my $output_multiline = 1; > > my $output_separator = ", "; > > my $output_roles = 0; > > my $output_rolestats = 1; > > +my $output_section_maxlen = 50; > > my $scm = 0; > > my $web = 0; > > my $subsystem = 0; > > my $status = 0; > > +my $letters = ""; > > my $keywords = 1; > > my $sections = 0; > > my $file_emails = 0; > > @@ -53,6 +59,7 @@ my $from_filename = 0; > > my $pattern_depth = 0; > > my $version = 0; > > my $help = 0; > > +my $find_maintainer_files = 0; > > > > my $vcs_used = 0; > > > > @@ -128,6 +135,7 @@ my %VCS_cmds_git = ( > > "author_pattern" => "^GitAuthor: (.*)", > > "subject_pattern" => "^GitSubject: (.*)", > > "stat_pattern" => "^(\\d+)\\t(\\d+)\\t\$file\$", > > + "file_exists_cmd" => "git ls-files \$file", > > ); > > > > my %VCS_cmds_hg = ( > > @@ -156,6 +164,7 @@ my %VCS_cmds_hg = ( > > "author_pattern" => "^HgAuthor: (.*)", > > "subject_pattern" => "^HgSubject: (.*)", > > "stat_pattern" => "^(\\d+)\t(\\d+)\t\$file\$", > > + "file_exists_cmd" => "hg files \$file", > > ); > > > > my $conf = which_conf(".get_maintainer.conf"); > > @@ -184,6 +193,27 @@ if (-f $conf) { > > unshift(@ARGV, @conf_args) if @conf_args; > > } > > > > +my @ignore_emails = (); > > +my $ignore_file = which_conf(".get_maintainer.ignore"); > > +if (-f $ignore_file) { > > + open(my $ignore, '<', "$ignore_file") > > + or warn "$P: Can't find a readable .get_maintainer.ignore > > file > > $!\n"; > > + while (<$ignore>) { > > + my $line = $_; > > + > > + $line =~ s/\s*\n?$//; > > + $line =~ s/^\s*//; > > + $line =~ s/\s+$//; > > + $line =~ s/#.*$//; > > + > > + next if ($line =~ m/^\s*$/); > > + if (rfc822_valid($line)) { > > + push(@ignore_emails, $line); > > + } > > + } > > + close($ignore); > > +} > > + > > if (!GetOptions( > > 'email!' => \$email, > > 'git!' => \$email_git, > > @@ -201,6 +231,7 @@ if (!GetOptions( > > 'remove-duplicates!' => \$email_remove_duplicates, > > 'mailmap!' => \$email_use_mailmap, > > 'm!' => \$email_maintainer, > > + 'r!' => \$email_reviewer, > > 'n!' => \$email_usename, > > 'l!' => \$email_list, > > 's!' => \$email_subscriber_list, > > @@ -212,11 +243,13 @@ if (!GetOptions( > > 'status!' => \$status, > > 'scm!' => \$scm, > > 'web!' => \$web, > > + 'letters=s' => \$letters, > > 'pattern-depth=i' => \$pattern_depth, > > 'k|keywords!' => \$keywords, > > 'sections!' => \$sections, > > 'fe|file-emails!' => \$file_emails, > > 'f|file' => \$from_filename, > > + 'find-maintainer-files' => > > \$find_maintainer_files, > > 'v|version' => \$version, > > 'h|help|usage' => \$help, > > )) { > > @@ -242,7 +275,8 @@ $output_multiline = 0 if ($output_separator ne > > ", > > "); > > $output_rolestats = 1 if ($interactive); > > $output_roles = 1 if ($output_rolestats); > > > > -if ($sections) { > > +if ($sections || $letters ne "") { > > + $sections = 1; > > $email = 0; > > $email_list = 0; > > $scm = 0; > > @@ -259,42 +293,28 @@ if ($sections) { > > } > > > > if ($email && > > - ($email_maintainer + $email_list + $email_subscriber_list + > > + ($email_maintainer + $email_reviewer + > > + $email_list + $email_subscriber_list + > > $email_git + $email_git_penguin_chiefs + $email_git_blame) == > > 0) > > { > > die "$P: Please select at least 1 email option\n"; > > } > > > > if (!top_of_kernel_tree($lk_path)) { > > die "$P: The current directory does not appear to be " > > - . "a linux kernel source tree.\n"; > > + . "a U-Boot source tree.\n"; > > } > > > > ## Read MAINTAINERS for type/value pairs > > > > my @typevalue = (); > > my %keyword_hash; > > +my @mfiles = (); > > > > -my @maint_files = (); > > -push(@maint_files, "${lk_path}MAINTAINERS"); > > - > > -sub maint_wanted { > > - return unless $_ =~ /^MAINTAINERS/; > > - push(@maint_files, "$File::Find::name"); > > -} > > - > > -File::Find::find(\&maint_wanted, "${lk_path}board"); > > - > > -foreach my $maint_file (@maint_files) { > > - my $maint; > > - open ($maint, '<', "$maint_file") > > - or die "$P: Can't open $maint_file: $!\n"; > > - read_maintainers($maint); > > - close($maint); > > -} > > - > > -sub read_maintainers { > > - my ($maint) = @_; > > +sub read_maintainer_file { > > + my ($file) = @_; > > > > + open (my $maint, '<', "$file") > > + or die "$P: Can't open MAINTAINERS file '$file': $!\n"; > > while (<$maint>) { > > my $line = $_; > > > > @@ -315,13 +335,47 @@ sub read_maintainers { > > $keyword_hash{@typevalue} = $value; > > } > > push(@typevalue, "$type:$value"); > > - } elsif (!/^(\s)*$/) { > > + } elsif (!(/^\s*$/ || /^\s*\#/)) { > > $line =~ s/\n$//g; > > push(@typevalue, $line); > > } > > } > > + close($maint); > > +} > > + > > +sub find_is_maintainer_file { > > + my ($file) = $_; > > + return if ($file !~ m@/MAINTAINERS$@); > > + $file = $File::Find::name; > > + return if (! -f $file); > > + push(@mfiles, $file); > > +} > > + > > +sub find_ignore_git { > > + return grep { $_ !~ /^\.git$/; } @_; > > +} > > + > > +if (-d "${lk_path}MAINTAINERS") { > > + opendir(DIR, "${lk_path}MAINTAINERS") or die $!; > > + my @files = readdir(DIR); > > + closedir(DIR); > > + foreach my $file (@files) { > > + push(@mfiles, "${lk_path}MAINTAINERS/$file") if ($file !~ > > /^\./); > > + } > > } > > > > +if ($find_maintainer_files) { > > + find( { wanted => \&find_is_maintainer_file, > > + preprocess => \&find_ignore_git, > > + no_chdir => 1, > > + }, "${lk_path}"); > > +} else { > > + push(@mfiles, "${lk_path}MAINTAINERS") if -f > > "${lk_path}MAINTAINERS"; > > +} > > + > > +foreach my $file (@mfiles) { > > + read_maintainer_file("$file"); > > +} > > > > # > > # Read mail address map > > @@ -421,7 +475,9 @@ foreach my $file (@ARGV) { > > die "$P: file '${file}' not found\n"; > > } > > } > > - if ($from_filename) { > > + if ($from_filename || ($file ne "&STDIN" && > > vcs_file_exists($file))) { > > + $file =~ s/^\Q${cur_path}\E//; #strip any absolute > > path > > + $file =~ s/^\Q${lk_path}\E//; #or the path to the > > lk > > tree > > push(@files, $file); > > if ($file ne "MAINTAINERS" && -f $file && ($keywords || > > $file_emails)) { > > open(my $f, '<', $file) > > @@ -528,6 +584,16 @@ if ($web) { > > > > exit($exit); > > > > +sub ignore_email_address { > > + my ($address) = @_; > > + > > + foreach my $ignore (@ignore_emails) { > > + return 1 if ($ignore eq $address); > > + } > > + > > + return 0; > > +} > > + > > sub range_is_maintained { > > my ($start, $end) = @_; > > > > @@ -659,8 +725,10 @@ sub get_maintainers { > > $line =~ s/\\\./\./g; ##Conv > > ert > > \. to . > > $line =~ s/\.\*/\*/g; ##Conv > > ert > > .* to * > > } > > - $line =~ s/^([A-Z]):/$1:\t/g; > > - print("$line\n"); > > + my $count = $line =~ s/^([A-Z]):/$1:\t/g; > > + if ($letters eq "" || (!$count || $letters =~ > > /$1/i)) { > > + print("$line\n"); > > + } > > } > > print("\n"); > > } > > @@ -764,10 +832,12 @@ MAINTAINER field selection options: > > --git-max-maintainers => maximum maintainers to add (default: > > $email_git_max_maintainers) > > --git-min-percent => minimum percentage of commits required > > (default: $email_git_min_percent) > > --git-blame => use git blame to find modified commits for > > patch or > > file > > + --git-blame-signatures => when used with --git-blame, also > > include > > all commit signers > > --git-since => git history to use (default: $email_git_since) > > --hg-since => hg history to use (default: $email_hg_since) > > --interactive => display a menu (mostly useful if used with > > the -- > > git option) > > --m => include maintainer(s) if any > > + --r => include reviewer(s) if any > > --n => include name 'Full Name <addr\@domain.tld>' > > --l => include list(s) if any > > --s => include subscriber only list(s) if any > > @@ -789,12 +859,13 @@ Other options: > > --pattern-depth => Number of pattern directory traversals > > (default: > > 0 (all)) > > --keywords => scan patch for keywords (default: $keywords) > > --sections => print all of the subsystem sections with pattern > > matches > > + --letters => print all matching 'letter' types from all matching > > sections > > --mailmap => use .mailmap file (default: $email_use_mailmap) > > --version => show version > > --help => show this help information > > > > Default options: > > - [--email --nogit --git-fallback --m --n --l --multiline > > -pattern- > > depth=0 > > + [--email --nogit --git-fallback --m --r --n --l --multiline -- > > pattern-depth=0 > > --remove-duplicates --rolestats] > > > > Notes: > > @@ -826,6 +897,9 @@ Notes: > > Entries in this file can be any command line argument. > > This file is prepended to any additional command line > > arguments. > > Multiple lines and # comments are allowed. > > + Most options have both positive and negative forms. > > + The negative forms for --<foo> are --no<foo> and --no-<foo>. > > + > > EOT > > } > > > > @@ -836,7 +910,7 @@ sub top_of_kernel_tree { > > $lk_path .= "/"; > > } > > if ( (-f "${lk_path}Kbuild") > > - && (-f "${lk_path}MAINTAINERS") > > + && (-e "${lk_path}MAINTAINERS") > > && (-f "${lk_path}Makefile") > > && (-f "${lk_path}README") > > && (-d "${lk_path}arch") > > @@ -954,20 +1028,29 @@ sub find_ending_index { > > return $index; > > } > > > > -sub get_maintainer_role { > > +sub get_subsystem_name { > > my ($index) = @_; > > > > - my $i; > > my $start = find_starting_index($index); > > - my $end = find_ending_index($index); > > > > - my $role = "unknown"; > > my $subsystem = $typevalue[$start]; > > - if (length($subsystem) > 20) { > > - $subsystem = substr($subsystem, 0, 17); > > + if ($output_section_maxlen && length($subsystem) > > > $output_section_maxlen) { > > + $subsystem = substr($subsystem, 0, $output_section_maxlen > > - > > 3); > > $subsystem =~ s/\s*$//; > > $subsystem = $subsystem . "..."; > > } > > + return $subsystem; > > +} > > + > > +sub get_maintainer_role { > > + my ($index) = @_; > > + > > + my $i; > > + my $start = find_starting_index($index); > > + my $end = find_ending_index($index); > > + > > + my $role = "unknown"; > > + my $subsystem = get_subsystem_name($index); > > > > for ($i = $start + 1; $i < $end; $i++) { > > my $tv = $typevalue[$i]; > > @@ -1001,16 +1084,7 @@ sub get_maintainer_role { > > sub get_list_role { > > my ($index) = @_; > > > > - my $i; > > - my $start = find_starting_index($index); > > - my $end = find_ending_index($index); > > - > > - my $subsystem = $typevalue[$start]; > > - if (length($subsystem) > 20) { > > - $subsystem = substr($subsystem, 0, 17); > > - $subsystem =~ s/\s*$//; > > - $subsystem = $subsystem . "..."; > > - } > > + my $subsystem = get_subsystem_name($index); > > > > if ($subsystem eq "THE REST") { > > $subsystem = ""; > > @@ -1084,6 +1158,23 @@ sub add_categories { > > my $role = get_maintainer_role($i); > > push_email_addresses($pvalue, $role); > > } > > + } elsif ($ptype eq "R") { > > + my ($name, $address) = parse_email($pvalue); > > + if ($name eq "") { > > + if ($i > 0) { > > + my $tv = $typevalue[$i - 1]; > > + if ($tv =~ m/^([A-Z]):\s*(.*)/) { > > + if ($1 eq "P") { > > + $name = $2; > > + $pvalue = format_email($name, > > $address, $email_usename); > > + } > > + } > > + } > > + } > > + if ($email_reviewer) { > > + my $subsystem = get_subsystem_name($i); > > + push_email_addresses($pvalue, > > "reviewer:$subsystem"); > > + } > > } elsif ($ptype eq "T") { > > push(@scm, $pvalue); > > } elsif ($ptype eq "W") { > > @@ -1868,6 +1959,7 @@ sub vcs_assign { > > my $percent = $sign_offs * 100 / $divisor; > > > > $percent = 100 if ($percent > 100); > > + next if (ignore_email_address($line)); > > $count++; > > last if ($sign_offs < $email_git_min_signatures || > > $count > $email_git_max_maintainers || > > @@ -2082,6 +2174,24 @@ sub vcs_file_blame { > > } > > } > > > > +sub vcs_file_exists { > > + my ($file) = @_; > > + > > + my $exists; > > + > > + my $vcs_used = vcs_exists(); > > + return 0 if (!$vcs_used); > > + > > + my $cmd = $VCS_cmds{"file_exists_cmd"}; > > + $cmd =~ s/(\$\w+)/$1/eeg; # interpolate $cmd > > + $cmd .= " 2>&1"; > > + $exists = &{$VCS_cmds{"execute_cmd"}}($cmd); > > + > > + return 0 if ($? != 0); > > + > > + return $exists; > > +} > > + > > sub uniq { > > my (@parms) = @_; > > > > -- > > 2.14.1 > > > > ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-10-29 22:02 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1509162258.1932.3.camel@localhost>
2017-10-28 5:26 ` [U-Boot] [U-Boot, 1/1] scripts/get_maintainer.pl: update to current version Heinrich Schuchardt
2017-10-28 5:34 ` [U-Boot] [PATCH 1/1] scripts/get_maintainer.pl: enable find_maintainer_files Heinrich Schuchardt
2017-10-28 5:46 ` waltfeasel at gmail.com
2017-10-29 22:02 ` [U-Boot] [U-Boot, " Tom Rini
2017-10-28 5:43 ` [U-Boot] [U-Boot, 1/1] scripts/get_maintainer.pl: update to current version waltfeasel at gmail.com
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.