Get source package size
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Fri, 24 Apr 2015 08:41:22 +0000 (05:41 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Fri, 24 Apr 2015 08:41:22 +0000 (05:41 -0300)
Print both binary and source packages, prepending an S: for source
packages. Add source files sizes to a source package size.

debsort.pl

index 561144d..318e524 100644 (file)
@@ -66,6 +66,7 @@ my @sources = ();
 my %binaries = ();
 my %csource = ();
 my %bdeps = ();
+my %ssize = ();
 
 sub add_binaries {
        my ($package, $binaries) = @_;
@@ -90,6 +91,7 @@ sub add_bdeps {
        $bdeps{$package} = $bd;
 }
 
+my $files_start = 0;
 
 while (<SOURCES>) {
        if (/^Package: ([0-9a-z-+.]+)/) {
@@ -102,6 +104,17 @@ while (<SOURCES>) {
        if (/^Build-Depends: (.*)/) {
                add_bdeps($package, $1);
        }
+       if ($files_start) {
+               if (/^ [a-f0-9]+ ([0-9]+)/) {
+                       $ssize{$package} += $1;
+               } else {
+                       $files_start = 0;
+               }
+       }
+       if (/^Files:/) {
+               $files_start = 1;
+               $ssize{$package} = 0;
+       }
 }
 
 close(SOURCES);
@@ -139,10 +152,17 @@ while (@visit) {
 }
 
 my $tsize = 0;
+
 for my $i (@pp) {
        $size{$i} = 0 if (!defined($size{$i}));
        print "$size{$i} $i\n";
        $tsize += $size{$i};
 }
 
+for my $i (@vsource) {
+       $ssize{$i} = 0 if (!defined($ssize{$i}));
+       print "$ssize{$i} S:$i\n";
+       $tsize += $ssize{$i};
+}
+
 print "$tsize Total\n";