Browse Source

popcon-stat.pl: sync with popcon.debian.org version: add graphs

restricted to last 3 month.
suites/ascii
Bill Allombert 14 years ago
parent
commit
2445e33866
  1. 6
      debian/changelog
  2. 144
      popcon-stat.pl

6
debian/changelog

@ -11,7 +11,11 @@ popularity-contest (1.46) UNRELEASED; urgency=low
- Korean. Closes: #491413
- Georgian. Closes: #498418
-- Christian Perrier <bubulle@debian.org> Mon, 12 May 2008 21:11:01 +0200
[ Bill Allombert ]
* popcon-stat.pl: sync with popcon.debian.org version: add graphs
restricted to last 3 month.
-- Bill Allombert <ballombe@debian.org> Thu, 18 Sep 2008 22:46:12 +0200
popularity-contest (1.45) unstable; urgency=low

144
popcon-stat.pl

@ -2,12 +2,14 @@
#
# Require the debian package libchart-perl.
BEGIN {
@INC=("./usr/share/perl5/", @INC);
}
#BEGIN {
#@INC=("./usr/share/perl5/", @INC);
#}
$ENV{PATH}="/usr/bin:/bin";
$dirpng="../www/stat";
$oneyearago = `date +"%Y-%m-%d" -d "1 year ago"`;
while (<>)
{
my ($file);
@ -30,8 +32,14 @@ while (<>)
}
elsif ($line[0] eq "Release:")
{
if (defined($line[2])) {
$rel{$f}->{$line[1]}=$line[2];
if (defined($line[2]))
{
if ($line[1] =~ m/^([0-9]+(?:\.[0-9]+)*)/)
{
$rel{$f}->{"$1"}+=$line[2];
} else {
$rel{$f}->{"unknown"}+=$line[2];
}
} else {
$rel{$f}->{"unknown"}+=$line[1];
}
@ -44,23 +52,6 @@ while (<>)
close FILE;
}
@days = sort grep { defined($sub{$_}->{'i386'}) } @date;
@data = (\@days);
@arch = sort keys %arch;
$maxv = -10;
for $arch (@arch)
{
my @res=();
for (@days)
{
my $data=defined($sub{$_}->{$arch})?log($sub{$_}->{$arch})/log(2)+1:0;
push @res,$data;
$maxv=$data if ($data > $maxv);
}
push @data,\@res;
}
@labels=(@arch);
sub ytick
{
my ($x)=$_[0]-.5;
@ -70,19 +61,53 @@ sub ytick
use Chart::LinesPoints;
$obj=Chart::LinesPoints->new (600,400);
$obj->set ('title' => 'Number of submissions per architectures');
$obj->set ('legend_labels' => [@arch]);
$obj->set ('f_y_tick' => \&ytick);
$obj->set ('brush_size' => 3);
$obj->set ('pt_size' => 7);
$obj->set ('max_val' => $maxv+1);
$obj->set ('y_ticks' => int $maxv +1);
$obj->set ('x_ticks' => 'vertical');
$obj->set ('skip_x_ticks' => 28);
$obj->png ("$dirpng/submission.png", \@data);
sub getsub
{
my ($day,$r)=@_;
return defined($sub{$day}->{$r})?$sub{$day}->{$r}:0;
}
sub submission_chart
{
my ($pngname,$startdate,$ticks,$title)=@_;
my (@days) = sort grep { defined($sub{$_}->{'i386'}) } @date;
@days = sort grep { $_ ge $startdate } @days;
my (@data) = (\@days);
my ($today)=$days[-1];
my (@arch)= sort {getsub($today,$b) <=> getsub($today,$a)} (keys %arch);
$maxv = -10;
for $arch (@arch)
{
my @res=();
for (@days)
{
my $data=defined($sub{$_}->{$arch})?log($sub{$_}->{$arch})/log(2)+1:0;
push @res,$data;
$maxv=$data if ($data > $maxv);
}
push @data,\@res;
}
$obj=Chart::LinesPoints->new (600,400);
$obj->set ('title' => "Number of submissions per architectures $title");
$obj->set ('legend_labels' => [@arch]);
$obj->set ('f_y_tick' => \&ytick);
$obj->set ('brush_size' => 3);
$obj->set ('pt_size' => 7);
$obj->set ('max_val' => $maxv+1);
$obj->set ('max_y_ticks' => 30);
$obj->set ('y_ticks' => int $maxv +1);
$obj->set ('x_ticks' => 'vertical');
$obj->set ('skip_x_ticks' => $ticks);
$obj->png ("$dirpng/submission$pngname.png", \@data);
}
submission_chart ("","0000-00-00",42,"");
submission_chart ("-1year",$oneyearago,14,"(last 12 months)");
use Chart::Composite;
my (@days) = sort grep { defined($sub{$_}->{'i386'}) } @date;
my (@arch)= sort (keys %arch);
for $arch (@arch)
{
my @data;
@ -95,36 +120,49 @@ for $arch (@arch)
}
@data=(\@days,\@res,\@tot);
@labels=($arch, 'all submissions');
$obj=Chart::Composite->new (600,400);
$obj=Chart::Composite->new (700,400);
$obj->set ('title' => "Number of submissions for $arch");
$obj->set ('legend_labels' => \@labels);
$obj->set ('brush_size' => 3);
$obj->set ('pt_size' => 7);
$obj->set ('x_ticks' => 'vertical');
$obj->set ('skip_x_ticks' => 28);
$obj->set ('skip_x_ticks' => 42);
$obj->set ('composite_info' => [ ['LinesPoints', [1]], ['LinesPoints', [2] ] ]);
$obj->png ("$dirpng/sub-$arch.png", \@data);
}
@days = sort grep { $_ ge "2004-05-14" } @date;
%release= map { map { $_ => 1 } keys %{$rel{$_}} } @days;
@data = (\@days);
@release= sort keys %release;
for $release (@release)
sub getrel
{
my @res=();
for (@days)
my ($day,$r)=@_;
return defined($rel{$day}->{$r})?$rel{$day}->{$r}:0;
}
sub release_chart
{
my ($pngname,$startdate,$ticks,$title)=@_;
my (@days) = sort grep { $_ ge $startdate } @date;
my (%release) = map { map { $_ => 1 } keys %{$rel{$_}} } @days;
my (@data) = (\@days);
my ($today)=$days[-1];
my (@release)= sort {getrel($today,$b) <=> getrel($today,$a)} (keys %release);
for $release (@release)
{
my $data=defined($rel{$_}->{$release})?$rel{$_}->{$release}:0;
push @res,$data;
my @res=();
for (@days)
{
my $data=getrel($_,$release);
push @res,$data;
}
push @data,\@res;
}
push @data,\@res;
$obj=Chart::LinesPoints->new (600,400);
$obj->set ('title' => "popularity-contest versions in use $title");
$obj->set ('legend_labels' => [@release]);
$obj->set ('brush_size' => 3);
$obj->set ('pt_size' => 7);
$obj->set ('x_ticks' => 'vertical');
$obj->set ('skip_x_ticks' => $ticks);
$obj->png ("$dirpng/release$pngname.png", \@data);
}
$obj=Chart::LinesPoints->new (600,400);
$obj->set ('title' => 'popularity-contest versions in use');
$obj->set ('legend_labels' => [@release]);
$obj->set ('brush_size' => 3);
$obj->set ('pt_size' => 7);
$obj->set ('x_ticks' => 'vertical');
$obj->set ('skip_x_ticks' => 28);
$obj->png ("$dirpng/release.png", \@data);
release_chart ("","2004-05-14",42,"");
release_chart ("-1year",$oneyearago,14,"(last 12 months)");

Loading…
Cancel
Save