scripts/add_maintainers.pl: Add logic to use V entry

Add logic to use V section entry in THE REST for identifying xen trees

Specifically:
* Move check until after the MAINTAINERS file has been read
* Add get_xen_maintainers_file_version() for check
* Remove top_of_tree as not needed any more
* Fail with extended error message when used out of tree

Signed-off-by: Lars Kurth <lars.kurth@citrix.com>
Acked-by: Julien Grall <julien.grall@arm.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
This commit is contained in:
Lars Kurth authored and Ian Jackson committed 2019-09-12 17:20:18 +01:00
1 parent 8ed96cd071
commit 1014f47c7a
1 file changed
+35 -22
+35 -22
View File
@@ -265,11 +265,6 @@ if ($email &&
die "$P: Please select at least 1 email option\n";
}
if (!top_of_tree($xen_path)) {
die "$P: The current directory does not appear to be "
. "a Xen source tree.\n";
}
## Read MAINTAINERS for type/value pairs
my @typevalue = ();
@@ -311,6 +306,16 @@ while (<$maint>) {
}
close($maint);
# Check whether we have a V entry under the REST
# and use it to get the file's version number
my $maintainers_file_version = get_xen_maintainers_file_version();
if (!$maintainers_file_version) {
die "$P: the MAINTAINERS file ".
"in the current directory does not appear to be from ".
"the xen.git source tree or a sister tree.\n\n".
"A 'V: xen-maintainers-<version>' entry under THE REST ".
"is needed to identify a Xen MAINTAINERS file.\n\n";
}
#
# Read mail address map
@@ -564,6 +569,31 @@ sub range_has_maintainer {
return 0;
}
sub get_xen_maintainers_file_version {
my $tvi = find_first_section();
while ($tvi < @typevalue) {
my $start = find_starting_index($tvi);
my $end = find_ending_index($tvi);
my $i;
for ($i = $start; $i < $end; $i++) {
my $line = $typevalue[$i];
if ($line =~ m/^V:\s*(.*)/) {
# Note that get_maintainer_role() requires processing
# of more of the file. So do it directly
if ($typevalue[$start] eq "THE REST") {
if ($line =~ m/xen-maintainers-(.*)/) {
return $1;
}
}
}
}
$tvi = $end + 1;
}
return 0;
}
sub get_maintainers {
%email_hash_name = ();
%email_hash_address = ();
@@ -867,23 +897,6 @@ Notes:
EOT
}
sub top_of_tree {
my ($xen_path) = @_;
if ($xen_path ne "" && substr($xen_path,length($xen_path)-1,1) ne "/") {
$xen_path .= "/";
}
if ( (-f "${xen_path}COPYING")
&& (-f "${xen_path}MAINTAINERS")
&& (-f "${xen_path}Makefile")
&& (-d "${xen_path}docs")
&& (-f "${xen_path}CODING_STYLE")
&& (-d "${xen_path}xen")) {
return 1;
}
return 0;
}
sub parse_email {
my ($formatted_email) = @_;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.