#!/usr/bin/perl # # Copyright Martin J. Bligh (mbligh@mbligh.org), 2006 ($file, $y_label, $columns, $title) = @ARGV; die unless (-f $file); die unless ($y_label); die unless ($columns =~ /^1:\d+/); # print " ++++++ plotgraph $file\n"; plotgraph($file, $y_label, $columns, $title); # print " ++++++ plotgraph\n"; # First column must be kernel count, second kernel version, third is job number # $columns spec is 1:y-value:y-stddev sub plotgraph { my ($file, $y_label, $columns, $title) = @_; my @xtics; if (!$title) { $title = $file; $title =~ s#.*/##; } open (INDATA, $file); open (DATA_MAIN, "> ${file}.main"); open (DATA_MM, "> ${file}.mm"); open (DATA_OTHER, "> ${file}.other"); my $count; while ($data = <INDATA>) { chomp $data; ($count, my $version, my $job) = split (/\s+/, $data); $short_ver = $version; $short_ver =~ s/\+.*/+p$job/; push @xtics, "\"$short_ver\" $count"; if ($version =~ /^2\.\d+\.\d+(\.\d+|-rc\d+)?(-git\d+)?$/) { print DATA_MAIN "$data\n"; $plot_main = "\"${file}.main\" using $columns title \"mainline\""; } elsif ($version =~ /^2\.\d+\.\d+(-rc\d+)?-mm\d+$/) { print DATA_MM "$data\n"; $plot_mm = "\"${file}.mm\" using $columns title \"-mm\""; } else { print DATA_OTHER "$data\n"; $plot_other = "\"${file}.other\" using $columns title \"other\""; } } close (INDATA); close (DATA_MAIN); close (DATA_MM); close (DATA_OTHER); die unless ($count > 0); $x_res = $count * 12; $y_res = 900; push @plots, $plot_main if ($plot_main); push @plots, $plot_mm if ($plot_mm); push @plots, $plot_other if ($plot_other); $plots = join (',', @plots); open (GNUPLOT, "> ${file}.gnuplot"); # print "MACHINE: $machine\n"; print GNUPLOT "set terminal png size $x_res,$y_res\n"; print GNUPLOT "set key below\n"; print GNUPLOT "set title \"$title\"\n"; print GNUPLOT "set xlabel \"Kernel\"\n"; print GNUPLOT "set ylabel \"${y_label}\"\n"; print GNUPLOT "set output \"${file}.png\"\n"; print GNUPLOT "set style data yerrorlines\n"; print GNUPLOT "set grid\n"; $xtics = join ',', @xtics; print GNUPLOT "\nset xtics rotate (${xtics})\n\n"; print GNUPLOT "plot $plots\n"; print GNUPLOT "replot"; close (GNUPLOT); `/usr/bin/gnuplot ${file}.gnuplot`; `chmod 644 ${file}.gnuplot`; `chmod 644 ${file}.png`; }