# -*- perl -*-
-# $Id: errorlib.in,v 1.46 2005/07/18 03:09:09 cjwatson Exp $
+# $Id: errorlib.in,v 1.47 2005/07/24 17:31:18 cjwatson Exp $
use Mail::Address;
use Debbugs::MIME qw(decode_rfc1522 encode_rfc1522);
+use Debbugs::Packages;
sub F_SETLK { 6; } sub F_WRLCK{ 1; }
$flockstruct= 'sslll'; # And there ought to be something for this too.
sub addfoundversions {
my $data = shift;
- my $source = shift;
+ my $package = shift;
my $version = shift;
+ my $isbinary = shift;
return unless defined $version;
- undef $source if $source =~ m[(?:\s|/)];
+ undef $package if $package =~ m[(?:\s|/)];
+ my $source = $package;
+
+ if (defined $package and $isbinary) {
+ my @srcinfo = binarytosource($package, $version, undef);
+ if (@srcinfo) {
+ # We know the source package(s). Use a fully-qualified version.
+ addfoundversions($data, $_->[0], $_->[1], '') foreach @srcinfo;
+ return;
+ }
+ # Otherwise, an unqualified version will have to do.
+ }
# Strip off various kinds of brain-damage.
$version =~ s/;.*//;
$version =~ s/ +[A-Za-z].*//;
foreach my $ver (split /[,\s]+/, $version) {
- $ver = "$source/$ver" if defined $source;
- unless (grep { $_ eq $ver } @{$data->{found_versions}}) {
- push @{$data->{found_versions}}, $ver;
+ my $sver = defined($source) ? "$source/$ver" : '';
+ unless (grep { $_ eq $ver or $_ eq $sver } @{$data->{found_versions}}) {
+ push @{$data->{found_versions}}, defined($source) ? $sver : $ver;
}
@{$data->{fixed_versions}} =
- grep { $_ ne $ver } @{$data->{fixed_versions}};
+ grep { $_ ne $ver and $_ ne $sver } @{$data->{fixed_versions}};
}
}
undef $source if $source =~ m[(?:\s|/)];
foreach my $ver (split /[,\s]+/, $version) {
- $ver = "$source/$ver" if defined $source;
+ my $sver = defined($source) ? "$source/$ver" : '';
@{$data->{found_versions}} =
- grep { $_ ne $ver } @{$data->{found_versions}};
+ grep { $_ ne $ver and $_ ne $sver } @{$data->{found_versions}};
}
}
sub addfixedversions {
my $data = shift;
- my $source = shift;
+ my $package = shift;
my $version = shift;
+ my $isbinary = shift;
return unless defined $version;
- undef $source if $source =~ m[(?:\s|/)];
+ undef $package if $package =~ m[(?:\s|/)];
+ my $source = $package;
+
+ if (defined $package and $isbinary) {
+ my @srcinfo = binarytosource($package, $version, undef);
+ if (@srcinfo) {
+ # We know the source package(s). Use a fully-qualified version.
+ addfixedversions($data, $_->[0], $_->[1], '') foreach @srcinfo;
+ return;
+ }
+ # Otherwise, an unqualified version will have to do.
+ }
# Strip off various kinds of brain-damage.
$version =~ s/;.*//;
$version =~ s/ +[A-Za-z].*//;
foreach my $ver (split /[,\s]+/, $version) {
- $ver = "$source/$ver" if defined $source;
- unless (grep { $_ eq $ver } @{$data->{fixed_versions}}) {
- push @{$data->{fixed_versions}}, $ver;
+ my $sver = (defined($source) ? "$source/$ver" : '';
+ unless (grep { $_ eq $ver or $_ eq $sver } @{$data->{fixed_versions}}) {
+ push @{$data->{fixed_versions}}, defined($source) ? $sver : $ver;
}
@{$data->{found_versions}} =
- grep { $_ ne $ver } @{$data->{found_versions}};
+ grep { $_ ne $ver and $_ ne $sver } @{$data->{found_versions}};
}
}
undef $source if $source =~ m[(?:\s|/)];
foreach my $ver (split /[,\s]+/, $version) {
- $ver = "$source/$ver" if defined $source;
+ my $sver = defined($source) ? "$source/$ver" : '';
@{$data->{fixed_versions}} =
- grep { $_ ne $ver } @{$data->{fixed_versions}};
+ grep { $_ ne $ver and $_ ne $sver } @{$data->{fixed_versions}};
}
}
#!/usr/bin/perl
-# $Id: process.in,v 1.96 2005/07/22 03:49:44 don Exp $
+# $Id: process.in,v 1.97 2005/07/24 17:31:18 cjwatson Exp $
#
# Usage: process nn
# Temps: incoming/Pnn
$data->{keywords} = join ' ', grep $_ ne 'pending',
split ' ', $data->{keywords};
if (defined $pheader{'source-version'}) {
- addfixedversions($data, $pheader{source}, $pheader{'source-version'});
+ addfixedversions($data, $pheader{source}, $pheader{'source-version'}, '');
} elsif (defined $pheader{version}) {
- addfixedversions($data, undef, $pheader{version});
+ addfixedversions($data, $pheader{package}, $pheader{version}, 'binary');
}
}
# appear that way in version trees so that we can deal with binary
# packages moving from one source package to another.
if (defined $pheader{'source-version'}) {
- addfoundversions($data, $pheader{source}, $pheader{'source-version'});
+ addfoundversions($data, $pheader{source}, $pheader{'source-version'}, '');
} elsif (defined $pheader{version}) {
- addfoundversions($data, $pheader{source}, $pheader{version});
+ addfoundversions($data, $pheader{source}, $pheader{version}, '');
}
writebug($ref, $data);
} elsif (defined $pheader{package}) {
# TODO: could handle Source-Version: by looking up the source package?
- addfoundversions($data, undef, $pheader{version}) if defined($pheader{version});
+ addfoundversions($data, $pheader{package}, $pheader{version}, 'binary');
writebug($ref, $data);
}
#!/usr/bin/perl
-# $Id: service.in,v 1.104 2005/07/18 11:52:33 cjwatson Exp $
+# $Id: service.in,v 1.105 2005/07/24 17:31:18 cjwatson Exp $
#
# Usage: service <code>.nn
# Temps: incoming/P<code>.nn
$data->{keywords}= join ' ', grep $_ ne 'pending',
@keywords;
}
- addfixedversions($data, undef, $version);
+ addfixedversions($data, $data->{package}, $version, 'binary');
$message= <<END;
From: $gMaintainerEmail ($gProject $gBug Tracking System)
$data->{found_versions}= [];
$data->{fixed_versions}= [];
# TODO: what if $newpackage is a source package?
- addfoundversions($data, undef, $version) if defined $version;
+ addfoundversions($data, $data->{package}, $version, 'binary');
&addmaintainers($data);
} while (&getnextbug);
}
my $lastfixed =
(reverse @{$data->{fixed_versions}})[0];
# TODO: what if $data->{package} is a source package?
- addfoundversions($data, undef, $version);
+ addfoundversions($data, $data->{package}, $version, 'binary');
if (defined $lastfixed and $version eq $lastfixed) {
$data->{done} = '';
}