blob: d16e5db65c802e065cce106e6bd39e1b4f11a361 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#!/usr/bin/perl
# Diff two Sources files, comparing version numbers for each package found in the second file.
# Usage example: ./diff-dists <debian-sid-main-Sources> <pgapt-sid-pgdg-testing-main-Sources>
use strict;
use warnings;
my $fulldiff = 0;
if (@ARGV and $ARGV[0] eq '-f') {
shift;
$fulldiff = 1;
}
die "Syntax: $0 [-f] <source1> <source2>" unless (@ARGV == 2);
my ($source1, $source2) = @ARGV;
my %pkgs;
$/ = ''; # slurp paragraphs
open S2, $source2 or die "$source2: $!";
while (<S2>) {
my ($pkg) = /^Package: (.+)/m or die "$source2: paragraph without Package: $_";
my ($ver) = /^Version: (.+)/m or die "$source2: paragraph without Version: $_";
$pkgs{$pkg} = $ver;
}
close S2;
open S1, $source1 or die "$source1: $!";
while (<S1>) {
my ($pkg) = /^Package: (.+)/m or die "$source1: paragraph without Package: $_";
my ($ver) = /^Version: (.+)/m or die "$source1: paragraph without Version: $_";
if (not exists $pkgs{$pkg}) {
print "$pkg $ver <missing>\n" if ($fulldiff);
next;
}
my $ver2 = $pkgs{$pkg};
if ($ver eq $ver2 or $ver2 =~ /^\Q$ver\E[.~]pgdg\+\d$/) {
#print "OK: $pkg $ver $ver2\n";
delete $pkgs{$pkg};
next;
}
print "$pkg $ver $pkgs{$pkg}\n";
delete $pkgs{$pkg};
}
close S1;
foreach my $pkg (sort keys %pkgs) {
print "$pkg <missing> $pkgs{$pkg}\n";
}
|