summaryrefslogtreecommitdiffstats
path: root/autobuild/results.php
diff options
context:
space:
mode:
Diffstat (limited to 'autobuild/results.php')
-rw-r--r--autobuild/results.php150
1 files changed, 150 insertions, 0 deletions
diff --git a/autobuild/results.php b/autobuild/results.php
new file mode 100644
index 0000000..a169193
--- /dev/null
+++ b/autobuild/results.php
@@ -0,0 +1,150 @@
+<html>
+<head>
+<?php
+
+$runs = Array();
+$handle = opendir('cauldron/x86_64/core/');
+while (false !== ($entry = readdir($handle))) {
+ if (preg_match("/^....-..-..$/", $entry, $matches)) {
+ array_push($runs, $matches[0]);
+ }
+}
+closedir($handle);
+sort($runs);
+
+$latest = readlink("cauldron/x86_64/core/latest");
+$run = $_GET['run'];
+if (!$run) {
+ $run = $latest;
+}
+
+foreach ($runs as $r) {
+ if ($r==$run) {
+ break;
+ }
+ $prev = $r;
+}
+$packages = Array();
+if ($handle = opendir('/distrib/bootstrap/distrib/cauldron/SRPMS/core/release/')) {
+ while (false !== ($entry = readdir($handle))) {
+ if (preg_match("/(.*)-([^-]*-[^-]*mga)[1-9].src.rpm/", $entry, $matches)) {
+ $packages[$matches[1]] = $matches[2];
+ }
+ }
+ closedir($handle);
+}
+
+$prev_failure = Array();
+if ($prev) {
+ $base_dir = "cauldron/x86_64/core/$prev";
+ $status_name = "$base_dir/status.core.log";
+ $status_file = fopen($status_name, "r");
+ while (!feof($status_file)) {
+ $line = fgets($status_file);
+ if (preg_match("/^(.*): (.*)$/", $line, $matches)) {
+ $rpm = $matches[1];
+ $status = $matches[2];
+ if ($status != "ok" && $status != "unknown" && $status != "not_on_this_arch") {
+ $prev_failure[$rpm] = 1;
+ }
+ }
+ }
+ fclose($status_file);
+}
+
+$success = Array();
+$failure = Array();
+$fixed = Array();
+$removed = Array();
+
+$base_dir = "cauldron/x86_64/core/$run";
+
+
+$status_name = "$base_dir/status.core.log";
+if (!file_exists($status_name)) {
+ echo "Invalid run";
+ exit;
+}
+$status_file = fopen($status_name, "r");
+
+while (!feof($status_file)) {
+ $line = fgets($status_file);
+ if (preg_match("/^(.*): (.*)$/", $line, $matches)) {
+ $rpm = $matches[1];
+ $status = $matches[2];
+ if ($status == "ok") {
+ array_push($success, $rpm);
+ } elseif ($status != "unknown" && $status != "not_on_this_arch"){
+ $failure[$rpm] = $status;
+ preg_match("/(.*)-([^-]*-[^-]*mga)[1-9].src.rpm/", $rpm, $matches);
+ if(!$packages[$matches[1]]) {
+ $removed[$rpm] = 1;
+ } elseif ($packages[$matches[1]] != $matches[2]) {
+ $fixed[$rpm] = 1;
+ }
+ }
+ }
+}
+fclose($status_file);
+
+sort($success);
+ksort($failure);
+
+$nb_failed = count($failure);
+$nb_success = count($success);
+$nb_fixed = count($fixed);
+$nb_removed = count($removed);
+$nb_tried = $nb_failed + $nb_success;
+$succes_percent = round($nb_success*1000/$nb_tried)/10;
+$estimated_percent = round(($nb_success+$nb_fixed)*1000/($nb_tried-$nb_removed))/10;
+
+echo "<title>$succes_percent% Success</title>\n";
+echo "</head><body>\n";
+
+echo "<div style='position:absolute;right:0;top:0;'>";
+foreach ($runs as $r) {
+ $text = $r . (($r > $latest) ? ' (in progress)' : '');
+
+ if ($r==$run) {
+ echo $text;
+ } else {
+ echo '<a href="'.$_SERVER["PHP_SELF"].'?run='.$r.'">'.$text.'</a>';
+ }
+ echo ' ';
+}
+
+echo "</div>\n";
+echo "<h1>$succes_percent% Success</h1>\n";
+echo "$nb_fixed packages have been fixed since this run and $nb_removed have been removed.<br/> If no new package was broken, success rate next time should be $estimated_percent%.<br/>\n";
+echo "<div style='float:left'><h1>Failed builds ($nb_failed/$nb_tried):</h1><ul style='list-style:none;'>";
+
+foreach ($failure as $rpm => $error) {
+ $status_html = "";
+ if ($fixed[$rpm]) {
+ $status_html = " <img src='icons/state-fixed.png' title='Fixed!' />";
+ } elseif ($removed[$rpm]) {
+ $status_html = " <img src='icons/state-removed.png' title='Removed' />";
+ } elseif ($prev && !$prev_failure[$rpm]) {
+ $status_html = " <img src='icons/state-new.png' title='New!' />";
+ }
+ $error_html = $error;
+ if (file_exists("icons/error-$error.png")) {
+ $error_html = "<img src='icons/error-$error.png' title='$error'/>";
+ }
+ if (file_exists("$base_dir/$rpm/")) {
+ echo "<li>$error_html <a href='$base_dir/$rpm/'>$rpm</a> $status_html</li>\n";
+ } else {
+ echo "<li>$error_html $rpm $status_html</li>\n";
+ }
+}
+
+echo "</ul></div><div style='float:right'><h1>Successful builds ($nb_success/$nb_tried):</h1><ul>";
+
+foreach ($success as $rpm) {
+ echo "<li><a href='$base_dir/$rpm/'>$rpm</a></li>\n";
+}
+
+?>
+</ul></div>
+</body>
+</html>