/[soft]/build_system/web/autobuild/results.php
ViewVC logotype

Contents of /build_system/web/autobuild/results.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6909 - (show annotations) (download)
Sun Dec 30 18:47:22 2012 UTC (5 years, 10 months ago) by pterjan
File size: 3995 byte(s)
Add a start page with some graphs
1 <html>
2 <head>
3 <?php
4
5 $runs = Array();
6 $handle = opendir('cauldron/x86_64/core/');
7 while (false !== ($entry = readdir($handle))) {
8 if (preg_match("/^....-..-..$/", $entry, $matches)) {
9 array_push($runs, $matches[0]);
10 }
11 }
12 closedir($handle);
13 sort($runs);
14
15 $latest = readlink("cauldron/x86_64/core/latest");
16 $run = $_GET['run'];
17 if (!$run) {
18 $run = $latest;
19 }
20
21 foreach ($runs as $r) {
22 if ($r==$run) {
23 break;
24 }
25 $prev = $r;
26 }
27 $packages = Array();
28 if ($handle = opendir('/distrib/bootstrap/distrib/cauldron/SRPMS/core/release/')) {
29 while (false !== ($entry = readdir($handle))) {
30 if (preg_match("/(.*)-([^-]*-[^-]*mga)[1-9].src.rpm/", $entry, $matches)) {
31 $packages[$matches[1]] = $matches[2];
32 }
33 }
34 closedir($handle);
35 }
36
37 $prev_failure = Array();
38 if ($prev) {
39 $base_dir = "cauldron/x86_64/core/$prev";
40 $status_name = "$base_dir/status.core.log";
41 $status_file = fopen($status_name, "r");
42 while (!feof($status_file)) {
43 $line = fgets($status_file);
44 if (preg_match("/^(.*): (.*)$/", $line, $matches)) {
45 $rpm = $matches[1];
46 $status = $matches[2];
47 if ($status != "ok" && $status != "unknown" && $status != "not_on_this_arch") {
48 $prev_failure[$rpm] = 1;
49 }
50 }
51 }
52 fclose($status_file);
53 }
54
55 $success = Array();
56 $failure = Array();
57 $fixed = Array();
58 $removed = Array();
59
60 $base_dir = "cauldron/x86_64/core/$run";
61
62
63 $status_name = "$base_dir/status.core.log";
64 if (!file_exists($status_name)) {
65 echo "Invalid run";
66 exit;
67 }
68 $status_file = fopen($status_name, "r");
69
70 while (!feof($status_file)) {
71 $line = fgets($status_file);
72 if (preg_match("/^(.*): (.*)$/", $line, $matches)) {
73 $rpm = $matches[1];
74 $status = $matches[2];
75 if ($status == "ok") {
76 array_push($success, $rpm);
77 } elseif ($status != "unknown" && $status != "not_on_this_arch"){
78 $failure[$rpm] = $status;
79 preg_match("/(.*)-([^-]*-[^-]*mga)[1-9].src.rpm/", $rpm, $matches);
80 if(!$packages[$matches[1]]) {
81 $removed[$rpm] = 1;
82 } elseif ($packages[$matches[1]] != $matches[2]) {
83 $fixed[$rpm] = 1;
84 }
85 }
86 }
87 }
88 fclose($status_file);
89
90 sort($success);
91 ksort($failure);
92
93 $nb_failed = count($failure);
94 $nb_success = count($success);
95 $nb_fixed = count($fixed);
96 $nb_removed = count($removed);
97 $nb_tried = $nb_failed + $nb_success;
98 $succes_percent = round($nb_success*1000/$nb_tried)/10;
99 $estimated_percent = round(($nb_success+$nb_fixed)*1000/($nb_tried-$nb_removed))/10;
100
101 echo "<title>$succes_percent% Success</title>\n";
102 echo "</head><body>\n";
103
104 echo "<div style='position:absolute;right:0;top:0;'>";
105 foreach ($runs as $r) {
106 $text = $r . (($r > $latest) ? ' (in progress)' : '');
107
108 if ($r==$run) {
109 echo $text;
110 } else {
111 echo '<a href="'.$_SERVER["PHP_SELF"].'?run='.$r.'">'.$text.'</a>';
112 }
113 echo ' ';
114 }
115
116 echo "</div>\n";
117 echo "<h1>$succes_percent% Success</h1>\n";
118 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";
119 echo "<div style='float:left'><h1>Failed builds ($nb_failed/$nb_tried):</h1><ul style='list-style:none;'>";
120
121 foreach ($failure as $rpm => $error) {
122 $status_html = "";
123 if ($fixed[$rpm]) {
124 $status_html = " <img src='icons/state-fixed.png' title='Fixed!' />";
125 } elseif ($removed[$rpm]) {
126 $status_html = " <img src='icons/state-removed.png' title='Removed' />";
127 } elseif ($prev && !$prev_failure[$rpm]) {
128 $status_html = " <img src='icons/state-new.png' title='New!' />";
129 }
130 $error_html = $error;
131 if (file_exists("icons/error-$error.png")) {
132 $error_html = "<img src='icons/error-$error.png' title='$error'/>";
133 }
134 if (file_exists("$base_dir/$rpm/")) {
135 echo "<li>$error_html <a href='$base_dir/$rpm/'>$rpm</a> $status_html</li>\n";
136 } else {
137 echo "<li>$error_html $rpm $status_html</li>\n";
138 }
139 }
140
141 echo "</ul></div><div style='float:right'><h1>Successful builds ($nb_success/$nb_tried):</h1><ul>";
142
143 foreach ($success as $rpm) {
144 echo "<li><a href='$base_dir/$rpm/'>$rpm</a></li>\n";
145 }
146
147 ?>
148 </ul></div>
149 </body>
150 </html>

  ViewVC Help
Powered by ViewVC 1.1.26