From: Don Armstrong Date: Sat, 9 Aug 2008 03:37:41 +0000 (-0700) Subject: * use affected_packages X-Git-Tag: release/2.6.0~488^2~4 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=5b4a34950409cc0991e5e75f0d623467b6ffa214;p=debbugs.git * use affected_packages * switch totally to Debbugs::Recipients and use determine_recipients --- diff --git a/scripts/service b/scripts/service index b606745..df289c9 100755 --- a/scripts/service +++ b/scripts/service @@ -29,7 +29,7 @@ use Debbugs::Versions::Dpkg; use Debbugs::Status qw(splitpackages); use Debbugs::CGI qw(html_escape); -use Debbugs::Control qw(:archive :log); +use Debbugs::Control qw(:archive :log :owner); use Debbugs::Log qw(:misc); use Debbugs::Text qw(:templates); @@ -157,6 +157,8 @@ our $action; # recipients of mail my %recipients; +# affected_packages +my %affected_packages; my $ok = 0; my $unknowns = 0; my $procline=0; @@ -447,15 +449,12 @@ END "closed") . ", send any further explanations to $data->{originator}"; do { - add_recipients(data => $data, recipients => \%recipients); - if ( length( $gDoneList ) > 0 and - length( $gListDomain ) > 0 ) { - add_recipients(recipients => \%recipients, - type => 'cc', - address => "$gDoneList\@$gListDomain", - ); - } - $data->{done}= $replyto; + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, + recipients => \%recipients, + actions_taken => {done => 1}, + ); + $data->{done}= $replyto; my @keywords= split ' ', $data->{keywords}; my $extramessage = ''; if (grep $_ eq 'pending', @keywords) { @@ -509,6 +508,7 @@ END $action= "$gBug assigned to package \`$newpackage'."; } do { + $affected_packages{$data->{package}} = 1; add_recipients(data => $data, recipients => \%recipients); $data->{package}= $newpackage; $data->{found_versions}= []; @@ -537,6 +537,7 @@ END $noriginator eq '' ? "$gBug reopened, originator not changed." : "$gBug reopened, originator set to $noriginator."; do { + $affected_packages{$data->{package}} = 1; add_recipients(data => $data, recipients => \%recipients); $data->{originator}= $noriginator eq '' ? $data->{originator} : $noriginator; $data->{fixed_versions}= []; @@ -561,7 +562,8 @@ END "$gBug marked as found in version $version." : "$gBug reopened."; do { - add_recipients(data => $data, recipients => \%recipients); + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, recipients => \%recipients); # The 'done' field gets a bit weird with version # tracking, because a bug may be closed by multiple # people in different branches. Until we have something @@ -600,7 +602,8 @@ END $extramessage= "(By the way, this $gBug is currently marked as done.)\n"; } do { - add_recipients(data => $data, recipients => \%recipients); + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, recipients => \%recipients); removefoundversions($data, $data->{package}, $version, 'binary'); } while (&getnextbug); } @@ -617,7 +620,8 @@ END "$gBug marked as fixed in version $version." : "$gBug reopened."; do { - add_recipients(data => $data, recipients => \%recipients); + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, recipients => \%recipients); addfixedversions($data, $data->{package}, $version, 'binary'); } while (&getnextbug); } @@ -634,7 +638,8 @@ END "$gBug no longer marked as fixed in version $version." : "$gBug reopened."; do { - add_recipients(data => $data, recipients => \%recipients); + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, recipients => \%recipients); removefixedversions($data, $data->{package}, $version, 'binary'); } while (&getnextbug); } @@ -654,7 +659,8 @@ END elsif (&getbug) { if (&checkpkglimit) { &foundbug; - add_recipients(data => $data, recipients => \%recipients); + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, recipients => \%recipients); $oldsubmitter= $data->{originator}; $data->{originator}= $newsubmitter; $action= "Changed $gBug submitter from $oldsubmitter to $newsubmitter."; @@ -714,14 +720,12 @@ END $extramessage= "(By the way, this $gBug is currently marked as done.)\n"; } do { - add_recipients(data => $data, recipients => \%recipients); - if (length($gForwardList)>0 && length($gListDomain)>0 ) { - add_recipients(recipients => \%recipients, - type => 'cc', - address => "$gForwardList\@$gListDomain", - ); - } - $data->{forwarded}= $whereto; + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, + recipients => \%recipients, + actions_taken => {forwarded => 1}, + ); + $data->{forwarded}= $whereto; } while (&getnextbug); } } elsif (m/^notforwarded\s+\#?(-?\d+)$/i) { @@ -735,7 +739,8 @@ END } else { $action= "Removed annotation that $gBug had been forwarded to $data->{forwarded}."; do { - add_recipients(data => $data, recipients => \%recipients); + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, recipients => \%recipients); $data->{forwarded}= ''; } while (&getnextbug); } @@ -759,7 +764,8 @@ END $printseverity= "$gDefaultSeverity" if $printseverity eq ''; $action= "Severity set to \`$newseverity' from \`$printseverity'"; do { - add_recipients(data => $data, recipients => \%recipients); + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, recipients => \%recipients); if (defined $gStrongList and isstrongseverity($newseverity)) { addbcc("$gStrongList\@$gListDomain"); } @@ -806,7 +812,8 @@ END $action= "Tags removed: " . join(", ", @okaytags); } do { - add_recipients(data => $data, recipients => \%recipients); + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, recipients => \%recipients); $data->{keywords} = '' if ($addsub eq "set"); # Allow removing obsolete tags. if ($addsub eq "sub") { @@ -889,7 +896,8 @@ END my %removedblocks; my %addedblocks; do { - add_recipients(data => $data, recipients => \%recipients); + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, recipients => \%recipients); my @oldblockerlist = split ' ', $data->{blockedby}; $data->{blockedby} = '' if ($addsub eq "set"); foreach my $b (@okayblockers) { @@ -938,7 +946,8 @@ END if (&getbug) { if (&checkpkglimit) { &foundbug; - add_recipients(data => $data, recipients => \%recipients); + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, recipients => \%recipients); my $oldtitle = $data->{subject}; $data->{subject}= $newtitle; $action= "Changed $gBug title to `$newtitle' from `$oldtitle'."; @@ -969,7 +978,8 @@ END my $discref= $ref; @bug_affected{@newmergelist} = 1 x @newmergelist; do { - add_recipients(data => $data, recipients => \%recipients); + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, recipients => \%recipients); $data->{mergedwith}= ($ref == $discref) ? '' : join(' ',grep($_ ne $ref,@newmergelist)); } while (&getnextbug); @@ -1022,7 +1032,8 @@ END delete @fixed{keys %found}; for $ref (@newmergelist) { &getbug || die "huh ? $gBug $ref disappeared during merge"; - add_recipients(data => $data, recipients => \%recipients); + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, recipients => \%recipients); @bug_affected{@newmergelist} = 1 x @newmergelist; $data->{mergedwith}= join(' ',grep($_ != $ref,@newmergelist)); $data->{keywords}= join(' ', keys %tags); @@ -1083,7 +1094,8 @@ END delete @fixed{keys %found}; for $ref (@newmergelist) { &getbug || die "huh ? $gBug $ref disappeared during merge"; - add_recipients(data => $data, recipients => \%recipients); + $affected_packages{$data->{package}} = 1; + add_recipients(data => $data, recipients => \%recipients); @bug_affected{@newmergelist} = 1 x @newmergelist; $data->{mergedwith}= join(' ',grep($_ != $ref,@newmergelist)); $data->{keywords}= join(' ', keys %tags); @@ -1106,6 +1118,7 @@ END $ref = $origref; $bug_affected{$ref} = 1; if (&setbug) { + $affected_packages{$data->{package}} = 1; if (length($data->{mergedwith})) { print {$transcript} "$gBug is marked as being merged with others. Use an existing clone.\n\n"; $errors++; @@ -1171,7 +1184,7 @@ END %limit_pkgs = (); print {$transcript} "Not ignoring any bugs.\n\n"; } - } elsif (m/^owner\s+\#?(-?\d+)\s+((?:\S.*\S)|\!)$/i) { + } elsif (m/^owner\s+\#?(-?\d+)\s+((?:\S.*\S)|\!)\s*$/i) { $ok++; $ref = $1; my $newowner = $2; @@ -1190,7 +1203,7 @@ END owner => $newowner, ); }; - } elsif (m/^noowner\s+\#?(-?\d+)$/i) { + } elsif (m/^noowner\s+\#?(-?\d+)\s*$/i) { $ok++; $ref = $1; $bug_affected{$ref} = 1; @@ -1266,45 +1279,18 @@ if (!$ok && !$quickabort) { print {$transcript} "\n"; } -print {$transcript} "MC\n" if $dl>1; -my @maintccs= (); -my @maintccaddrs = (); -my %maintccreasons; -for my $maint (keys %maintccreasons) { -print {$transcript} "MM|$maint|\n" if $dl>1; - next if $maint eq $replyto; - my $reasonstring= ''; - my $reasonsref= $maintccreasons{$maint}; -print {$transcript} "MY|$maint|\n" if $dl>2; - for my $p (sort keys %$reasonsref) { -print {$transcript} "MP|$p|\n" if $dl>2; - $reasonstring.= ', ' if length($reasonstring); - $reasonstring.= $p.' ' if length($p); - $reasonstring.= join(' ',map("#$_",sort keys %{$$reasonsref{$p}})); - } - if (length($reasonstring) > 40) { - (substr $reasonstring, 37) = "..."; - } - $reasonstring = "" if (!defined($reasonstring)); - push(@maintccs,"$maint ($reasonstring)"); - push(@maintccaddrs,"$maint"); -} - -my $maintccs = ""; -if (@maintccs) { - print {$transcript} "MC|".join(', ',@maintccs)."|\n" if $dl>2; - $maintccs .= "Cc: " . join(",\n ",@maintccs) . "\n"; -} +my @maintccs = determine_recipients(recipients => \%recipients, + address_only => 1, + cc => 1, + ); +my $maintccs = 'Cc: '.join(",\n ", + determine_recipients(recipients => \%recipients, + cc => 1, + ) + )."\n"; -my %packagepr; -for my $maint (keys %maintccreasons) { - for my $package (keys %{$maintccreasons{$maint}}) { - next unless length $package; - $packagepr{$package} = 1; - } -} my $packagepr = ''; -$packagepr = "X-${gProject}-PR-Package: " . join(keys %packagepr) . "\n" if keys %packagepr; +$packagepr = "X-${gProject}-PR-Package: " . join(keys %affected_packages) . "\n" if keys %affected_packages; # Add Bcc's to subscribed bugs # now handled by Debbugs::Recipients @@ -1335,7 +1321,12 @@ $gMaintainer (administrator, $gProject $gBugs database) END -my $repliedshow= join(', ',$replyto,@maintccaddrs); +my $repliedshow= join(', ',$replyto, + determine_recipients(recipients => \%recipients, + cc => 1, + address_only => 1, + ) + ); # -1 is the service.in log &filelock("lock/-1"); open(AP,">>db-h/-1.log") || die "open db-h/-1.log: $!"; @@ -1351,7 +1342,13 @@ close(AP) || die "open db-h/-1.log: $!"; &unfilelock; utime(time,time,"db-h"); -&sendmailmessage($reply,exists $header{'x-debbugs-no-ack'}?():$replyto,@maintccaddrs,@bcc); +&sendmailmessage($reply, + exists $header{'x-debbugs-no-ack'}?():$replyto, + make_list(values %{{determine_recipients(recipients => \%recipients, + address_only => 1, + )}} + ), + ); unlink("incoming/P$nn") || die "unlinking incoming/P$nn: $!";