Parse Sources file.
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Fri, 24 Apr 2015 01:05:30 +0000 (22:05 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Fri, 24 Apr 2015 01:05:30 +0000 (22:05 -0300)
Grab list of binaries and build depends for source packages, and also
record which source some binary package come from.

debsort.pl

index 1066656..4a3e826 100644 (file)
@@ -20,7 +20,6 @@ use strict;
 use warnings;
 
 open(PACKAGES, "<Packages");
-open(SOURCES, "<Sources");
 
 my @packages = ();
 my %depends = ();
@@ -56,6 +55,51 @@ while (<PACKAGES>) {
 }
 
 close(PACKAGES);
+
+open(SOURCES, "<Sources");
+
+my @sources = ();
+my %binaries = ();
+my %csource = ();
+my %bdeps = ();
+
+sub add_binaries {
+       my ($package, $binaries) = @_;
+       my $bb = [];
+       my @vbb = split(", ", $binaries);
+       for my $i (@vbb) {
+               $i =~ qr,([0-9a-z-+.]+),;
+               push @$bb, $1;
+               $csource{$i} = $package;
+       }
+       $binaries{$package} = $bb;
+}
+
+sub add_bdeps {
+       my ($package, $bdeps) = @_;
+       my $bd = [];
+       my @vbd = split(", ", $bdeps);
+       for my $i (@vbd) {
+               $i =~ qr,([0-9a-z-+.]+),;
+               push @$bd, $1;
+       }
+       $bdeps{$package} = $bd;
+}
+
+
+while (<SOURCES>) {
+       if (/^Package: ([0-9a-z-+.]+)/) {
+               $package = $1;
+               push @packages, $package;
+       }
+       if (/^Binary: (.*)/) {
+               add_binaries($package, $1);
+       }
+       if (/^Build-Depends: (.*)/) {
+               add_bdeps($package, $1);
+       }
+}
+
 close(SOURCES);
 
 my @pp = ();