+compress.sh
[massrebuild.git] / stat
diff --git a/stat b/stat
index fe70111..4fced7e 100755 (executable)
--- a/stat
+++ b/stat
@@ -20,65 +20,85 @@ sub writefile {
   close F or die $fname;
 }
 
+my($exta,$extb);
 my $mockfail=0;
-my $dtmockfail=0;
+my $extbmockfail=0;
 my $emptybyfile=0;
-my $dwzwinbyfile=0;
-my $dtwinbyfile=0;
+my $extawinbyfile=0;
+my $extbwinbyfile=0;
 my $equalbyfile=0;
 my $emptybyrpm=0;
-my $dwzwinbyrpm=0;
-my $dtwinbyrpm=0;
+my $extawinbyrpm=0;
+my $extbwinbyrpm=0;
 my $equalbyrpm=0;
-my $dwzfilesizetot=0;
-my $dtfilesizetot=0;
-my $dwzrpmsizetot=0;
-my $dtrpmsizetot=0;
+my $extafilesizetot=0;
+my $extbfilesizetot=0;
+my $extarpmsizetot=0;
+my $extbrpmsizetot=0;
 my $done=0;
 my %filestat;
 my @srcrpms;
 sub onesrcrpm($) {
   my($srcrpm)=@_;
 #  print "$srcrpm\n";
-  if (-e "$srcrpm.mockfail") {
-    die if -e "$srcrpm.dt.rpm.mockfail";
+  if (-e "$srcrpm.mockfail"
+    ||-e "$srcrpm$exta.mockfail"
+    ||-e "$srcrpm$extb.mockfail") {
     warn "mockfail: $srcrpm";
     ++$mockfail;
     return;
   }
-  if (-e "$srcrpm.dt.rpm.mockfail") {
-    warn "dtmockfail: $srcrpm";
-    ++$dtmockfail;
+  if (-e "$srcrpm.bsmockfail"
+    ||-e "$srcrpm.bsmockefail"
+    ||-e "$srcrpm$exta.bsmockfail"
+    ||-e "$srcrpm$exta.bsmockefail"
+    ||-e "$srcrpm$extb.bsmockfail"
+    ||-e "$srcrpm$extb.bsmockefail"
+    ) {
+    warn "bsmock(|e)fail: $srcrpm";
+    ++$mockfail;
+    return;
+  }
+  if (-e "$srcrpm$exta.mockfail"
+    ||-e "$srcrpm$extb.mockfail") {
+    warn "${extb}mockfail: $srcrpm";
+    ++$extbmockfail;
     return;
   }
-  my $dwzfilesize=0+readfile "$srcrpm.filesize";
-  my $dwzrpmsize=0+readfile "$srcrpm.rpmsize";
-  my $dtfilesize=0+readfile "$srcrpm.dt.rpm.filesize";
-  my $dtrpmsize=0+readfile "$srcrpm.dt.rpm.rpmsize";
-  $dwzfilesizetot+=$dwzfilesize;
-  $dtfilesizetot+=$dtfilesize;
-  $dwzrpmsizetot+=$dwzrpmsize;
-  $dtrpmsizetot+=$dtrpmsize;
-  if (($dwzfilesize>=$dtfilesize)!=($dwzrpmsize>=$dtrpmsize)) {
-    #warn "file vs. rpm size do not match (dwzfilesize=$dwzfilesize dtfilesize=$dtfilesize dwzrpmsize=$dwzrpmsize dtrpmsize=$dtrpmsize: $srcrpm";
+  if (!-e "$srcrpm$exta.filesize"
+    ||!-e "$srcrpm$extb.filesize") {
+    warn "!filesize: $srcrpm";
+    ++$extbmockfail;
+    return;
   }
-  if ($dwzfilesize==0&&$dtfilesize==0) {
+  my $extafilesize=0+readfile "$srcrpm$exta.filesize";
+  my $extarpmsize=0+readfile "$srcrpm$exta.rpmsize";
+  my $extbfilesize=0+readfile "$srcrpm$extb.filesize";
+  my $extbrpmsize=0+readfile "$srcrpm$extb.rpmsize";
+  $extafilesizetot+=$extafilesize;
+  $extbfilesizetot+=$extbfilesize;
+  $extarpmsizetot+=$extarpmsize;
+  $extbrpmsizetot+=$extbrpmsize;
+  if (($extafilesize>=$extbfilesize)!=($extarpmsize>=$extbrpmsize)) {
+    #warn "file vs. rpm size do not match (${exta}filesize=$extafilesize ${extb}filesize=$extbfilesize ${exta}rpmsize=$extarpmsize ${extb}rpmsize=$extbrpmsize: $srcrpm";
+  }
+  if ($extafilesize==0&&$extbfilesize==0) {
     ++$emptybyfile;
-  } elsif ($dwzfilesize<$dtfilesize) {
-    #warn "dwz dwzfilesize $dwzfilesize < dtfilesize $dtfilesize: $srcrpm";
-    ++$dwzwinbyfile;
-  } elsif ($dwzfilesize>$dtfilesize) {
-    ++$dtwinbyfile;
+  } elsif ($extafilesize<$extbfilesize) {
+    #warn "exta ${exta}filesize $extafilesize < ${extb}filesize $extbfilesize: $srcrpm";
+    ++$extawinbyfile;
+  } elsif ($extafilesize>$extbfilesize) {
+    ++$extbwinbyfile;
   } else {
     ++$equalbyfile;
   }
-  push @{$filestat{$dwzfilesize-$dtfilesize}},sprintf("%.2f",100*$dwzfilesize/$dtfilesize).": $srcrpm dwzfilesize=$dwzfilesize dtfilesize=$dtfilesize" if $dtfilesize;
-  if ($dwzrpmsize==0&&$dtrpmsize==0) {
+  push @{$filestat{$extafilesize-$extbfilesize}},sprintf("%.2f",100*$extafilesize/$extbfilesize).": $srcrpm ${exta}filesize=$extafilesize ${extb}filesize=$extbfilesize" if $extbfilesize;
+  if ($extarpmsize==0&&$extbrpmsize==0) {
     ++$emptybyrpm;
-  } elsif ($dwzrpmsize<$dtrpmsize) {
-    ++$dwzwinbyrpm;
-  } elsif ($dwzrpmsize>$dtrpmsize) {
-    ++$dtwinbyrpm;
+  } elsif ($extarpmsize<$extbrpmsize) {
+    ++$extawinbyrpm;
+  } elsif ($extarpmsize>$extbrpmsize) {
+    ++$extbwinbyrpm;
   } else {
     ++$equalbyrpm;
   }
@@ -96,6 +116,12 @@ if (($ARGV[0]||"") eq "-r") {
   }
   shift;
 }
+my $all_sorted=shift @ARGV if ($ARGV[0]||"") eq "-a";
+die ""
+  .$0.' [-r <rpmqafile>] [-a] {""|.dt.rpm|.dt5.rpm} {""|.dt.rpm|.dt5.rpm}'."\n"
+  .$0.' .dt.rpm "";'.$0.' .dt5.rpm .dt.rpm;'.$0.' .dt5.rpm ""'."\n"
+  if @ARGV!=2;
+($exta,$extb)=@ARGV;
 #my $allpkgs=readfile "dnf -C --disablerepo='*' --enablerepo=rawhide-source repoquery -a --arch src 2>/dev/null|";
 my $allpkgs=readfile "all";
 my %allpkgs=map(("build/$_.src.rpm"=>1),grep /./,(split /\n/,$allpkgs));
@@ -123,43 +149,43 @@ for my $srcrpm (keys(%allpkgs)) {
 $allpkgs=~tr/\n//cd;
 die if length($allpkgs)!=keys(%allpkgs);
 $allpkgs=keys(%allpkgs);
-die if $allpkgs!=$done+$mockfail+$dtmockfail+$unbuilt;
-print "extras=$extras; unbuilt=$unbuilt; done=$done + mockfail=$mockfail + dtmockfail=$dtmockfail = ".($done+$mockfail+$dtmockfail)." all=$allpkgs processed=".(($done+$mockfail+$dtmockfail)/$allpkgs*100)."%\n";
-print "dwzwinbyfile=$dwzwinbyfile"." dtwinbyfile=$dtwinbyfile"." equalbyfile=$equalbyfile"." emptybyfile=$emptybyfile"."\n";
-print "dwzwinbyrpm =$dwzwinbyrpm" ." dtwinbyrpm =$dtwinbyrpm" ." equalbyrpm =$equalbyrpm" ." emptybyrpm =$emptybyrpm" ."\n";
-print "dwzfilesizetot=$dwzfilesizetot"." dtfilesizetot=$dtfilesizetot"." = ".($dwzfilesizetot/$dtfilesizetot*100)."%\n";
-print " dwzrpmsizetot=$dwzrpmsizetot" ."  dtrpmsizetot=$dtrpmsizetot" ." = ".( $dwzrpmsizetot/ $dtrpmsizetot*100)."%\n";
+die if $allpkgs!=$done+$mockfail+$extbmockfail+$unbuilt;
+print "extras=$extras; unbuilt=$unbuilt; done=$done + ${exta}mockfail=$mockfail + ${extb}mockfail=$extbmockfail = ".($done+$mockfail+$extbmockfail)." all=$allpkgs processed=".(($done+$mockfail+$extbmockfail)/$allpkgs*100)."%\n";
+print "${exta}winbyfile=$extawinbyfile"." ${extb}winbyfile=$extbwinbyfile"." equalbyfile=$equalbyfile"." emptybyfile=$emptybyfile"."\n";
+print "${exta}winbyrpm =$extawinbyrpm" ." ${extb}winbyrpm =$extbwinbyrpm" ." equalbyrpm =$equalbyrpm" ." emptybyrpm =$emptybyrpm" ."\n";
+print "${exta}filesizetot=$extafilesizetot"." ${extb}filesizetot=$extbfilesizetot"." = ".($extafilesizetot/$extbfilesizetot*100)."%\n";
+print " ${exta}rpmsizetot=$extarpmsizetot" ."  ${extb}rpmsizetot=$extbrpmsizetot" ." = ".( $extarpmsizetot/ $extbrpmsizetot*100)."%\n";
 #print "equal: $_\n" for @{$filestat{1}};
 my @sorted=map @{$filestat{$_}},sort {$a<=>$b;} keys(%filestat);
 sub out($) {
   my($ix)=@_;
   print($sorted[$ix]."\n");
 }
-if (@ARGV) {
+if ($all_sorted) {
   out $_ for 0..$#sorted;
 } else {
   my $p=5;
   out $_ for 0..$p-1;
   out $_ for @sorted-$p..$#sorted;
 }
-print "debuginfod download size: ";
-my $dwzsizetot=0;
-my $dtsizetot=0;
-for my $srcrpm (@srcrpms) {
-  my $rpmsizes="$srcrpm.rpmsizes";
-  -e $rpmsizes or (system "./debuginfosize $srcrpm" and die $srcrpm);
-  -e $rpmsizes or die $srcrpm;
-  my $f=readfile $rpmsizes;
-  $f=~/^(\d+) (\d+)\n$/s;
-  my $dwzsize=$1;
-  my $dtsize=$2;
-  $dwzsizetot+=$dwzsize;
-  $dtsizetot+=$dtsize;
-}
-print "dwzsizetot=$dwzsizetot dtsizetot=$dtsizetot = ".sprintf("%.2f",$dwzsizetot/$dtsizetot*100)."%\n";
+#print "debuginfod download size: ";
+#my $extasizetot=0;
+#my $extbsizetot=0;
+#for my $srcrpm (@srcrpms) {
+#  my $rpmsizes="$srcrpm.rpmsizes";
+#  -e $rpmsizes or (system "./debuginfosize $srcrpm" and die $srcrpm);
+#  -e $rpmsizes or die $srcrpm;
+#  my $f=readfile $rpmsizes;
+#  $f=~/^(\d+) (\d+)\n$/s;
+#  my $extasize=$1;
+#  my $extbsize=$2;
+#  $extasizetot+=$extasize;
+#  $extbsizetot+=$extbsize;
+#}
+#print "${exta}sizetot=$extasizetot ${extb}sizetot=$extbsizetot = ".sprintf("%.2f",$extasizetot/$extbsizetot*100)."%\n";
 print "build time: ";
-my $dwztime=0;
-my $dttime=0;
+my $extatime=0;
+my $extbtime=0;
 for my $srcrpm (@srcrpms) {
   sub onemocklog($) {
     my($mocklog)=@_;
@@ -173,7 +199,7 @@ for my $srcrpm (@srcrpms) {
     writefile $mocklogtime,"$t\n";
     return $t;
   }
-  $dwztime+=onemocklog "$srcrpm.mocklog";
-  $dttime+=onemocklog "$srcrpm.dt.rpm.mocklog";
+  $extatime+=onemocklog "$srcrpm$exta.mocklog";
+  $extbtime+=onemocklog "$srcrpm$extb.mocklog";
 }
-print "dwztime=$dwztime dttime=$dttime = ".sprintf("%.2f",$dwztime/$dttime*100)."%\n";
+print "${exta}time=$extatime ${extb}time=$extbtime = ".sprintf("%.2f",$extatime/$extbtime*100)."%\n";