X-Git-Url: https://git.jankratochvil.net/?p=massrebuild.git;a=blobdiff_plain;f=stat;h=4fced7e5e5624f9f296bfd7969f74d99b878bae6;hp=a209c70e0181954837b6630af54cc1391fc004b9;hb=6800a0b64f1c9709c91a9778efe964cdde0cd0aa;hpb=c6f6050ad9716117deda0285572545a2a1621d6a diff --git a/stat b/stat index a209c70..4fced7e 100755 --- a/stat +++ b/stat @@ -20,66 +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}},"$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; } @@ -97,61 +116,76 @@ if (($ARGV[0]||"") eq "-r") { } shift; } +my $all_sorted=shift @ARGV if ($ARGV[0]||"") eq "-a"; +die "" + .$0.' [-r ] [-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)); +my $extras=0; for my $srcrpmdone (glob "build/*.src.rpm.done") { (my $srcrpm=$srcrpmdone)=~s{\Q.done\E$}{} or die $srcrpmdone; if (%rpmqa) { $srcrpm=~m{^build/(.*)-[^-]*-[^-]*$} or die; next if !$rpmqa{$1}; } + if (!$allpkgs{$srcrpm}) { + warn "extra: $srcrpm\n"; + ++$extras; + next; + } + ++$allpkgs{$srcrpm}; onesrcrpm $srcrpm; } -print "dwzwinbyfile=$dwzwinbyfile"." dtwinbyfile=$dtwinbyfile"." equalbyfile=$equalbyfile"." emptybyfile=$emptybyfile"."\n"; -print "dwzwinbyrpm =$dwzwinbyrpm" ." dtwinbyrpm =$dtwinbyrpm" ." equalbyrpm =$equalbyrpm" ." emptybyrpm =$emptybyrpm" ."\n"; -print "mockfail=$mockfail dtmockfail=$dtmockfail\n"; -print "dwzfilesizetot=$dwzfilesizetot"." dtfilesizetot=$dtfilesizetot"." = ".($dwzfilesizetot/$dtfilesizetot*100)."%\n"; -print " dwzrpmsizetot=$dwzrpmsizetot" ." dtrpmsizetot=$dtrpmsizetot" ." = ".( $dwzrpmsizetot/ $dtrpmsizetot*100)."%\n"; -my $fail=0; -for my $srcrpmfail (glob "build/*.src.rpm.*fail*") { - ++$fail; +my $unbuilt=0; +for my $srcrpm (keys(%allpkgs)) { + next if $allpkgs{$srcrpm}>1; + warn "unbuilt: $srcrpm\n"; + ++$unbuilt; } -my $allpkgs=readfile "dnf -C --disablerepo='*' --enablerepo=rawhide-source repoquery -a --arch src 2>/dev/null|"; $allpkgs=~tr/\n//cd; -$allpkgs=length $allpkgs; -print "done=$done + fail=$fail = ".($done+$fail)." all=$allpkgs processed=".(($done+$fail)/$allpkgs*100)."%\n"; +die if length($allpkgs)!=keys(%allpkgs); +$allpkgs=keys(%allpkgs); +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({ my $r=$_; map(($_,$r),@{$filestat{$_}}); } sort {$a<=>$b;} keys %filestat); +my @sorted=map @{$filestat{$_}},sort {$a<=>$b;} keys(%filestat); sub out($) { my($ix)=@_; - my $name=$sorted[2*$ix+0]; - my $ratio=$sorted[2*$ix+1]; - print(sprintf("%.2f",$ratio*100)."%: $name\n"); + print($sorted[$ix]."\n"); } -my $sorted=@sorted/2; -if (@ARGV) { - out $_ for 0..$sorted-1; +if ($all_sorted) { + out $_ for 0..$#sorted; } else { my $p=5; out $_ for 0..$p-1; - out $_ for $sorted-$p..$sorted-1; -} -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; + out $_ for @sorted-$p..$#sorted; } -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)=@_; @@ -165,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";