So since we’re building Fedora ARM packages outside of Koji first (on F13 builders and then again on F15 builders), I decided to create a simple stats page so our team could track its status.
<?php
function fileread($filename)
{
$outpstri = "";
$fileobjc = fopen($filename, "r");
$outpstri .= fread($fileobjc, filesize($filename));
fclose($fileobjc);
$outpstri .= "\n";
return $outpstri;
}
$foldname = "./done";
if (isset($_GET["pkgn"]))
{
$outpstri = "";
$outpstri .= fileread($foldname."/mock.".$_GET["pkgn"]."/build.log");
$outpstri .= fileread($foldname."/mock.".$_GET["pkgn"]."/root.log");
$outpstri .= fileread($foldname."/mock.".$_GET["pkgn"]."/state.log");
$outpstri = preg_replace("/&/", "&", $outpstri);
$outpstri = preg_replace("/</", "<", $outpstri);
$outpstri = preg_replace("/>/", ">", $outpstri);
$outpstri = str_replace("\n", " <br /> \n ", $outpstri);
print($outpstri."\n");
die;
}
exec("find ".$foldname." -type f", $outplist);
$donestri = ""; $donelist = array();
$errostri = ""; $errolist = array();
$totllist = array();
foreach ($outplist as $outpitem)
{
$safefold = preg_replace("/([\/.])/", "\\\\$1", $foldname);
if (!preg_match("/^".$safefold."\/mock\.([^\/]+)\/.*$/", $outpitem))
{
continue;
}
$pkgsname = preg_replace("/^".$safefold."\/mock\.([^\/]+)\/.*$/", "$1", $outpitem);
if (preg_match("/^.*\.src\.rpm$/", $outpitem))
{
if (!in_array($pkgsname, $donelist))
{
array_push($donelist, $pkgsname);
}
}
if (!in_array($pkgsname, $totllist))
{
array_push($totllist, $pkgsname);
}
}
foreach ($totllist as $totlitem)
{
if (!in_array($totlitem, $donelist))
{
array_push($errolist, $totlitem);
}
}
sort($donelist);
sort($errolist);
$donenumb = count($donelist);
$erronumb = count($errolist);
$donestri .= ("<script>parent.document.title += ' [ ".$donenumb.".d ] ';</script>");
$donestri .= ("<b>Built: [ ".$donenumb." ]</b> <br /> <br /> \n");
foreach ($donelist as $doneitem)
{
$donestri .= ($doneitem." <br /> \n ");
}
$errostri .= ("<script>parent.document.title += ' [ ".$erronumb.".e ] ';</script>");
$errostri .= ("<b>Error: [ ".$erronumb." ]</b> <br /> <br /> \n");
foreach ($errolist as $erroitem)
{
$errostri .= ("<a href=\"javascript:function a() { parent.document.getElementById('logswind').src = ('".$_SERVER["PHP_SELF"]."?pkgn=".$erroitem."'); } a();\">".$erroitem."</a> <br /> \n ");
}
if (isset($_GET["done"]))
{
print($donestri);
die;
}
if (isset($_GET["erro"]))
{
print($errostri);
die;
}
?>
<html>
<head>
<title>loading...</title>
<style>
table
{
width: 95%;
}
iframe
{
border: 1px dotted black;
width: 100%;
}
#errowind
{
height: 160px;
}
#logswind
{
height: 240px;
}
#donewind
{
height: 160px;
}
</style>
<script>
function pkgslist()
{
document.title = "";
document.getElementById("errowind").src = ('<?php echo $_SERVER["PHP_SELF"]; ?>?erro=true');
document.getElementById("donewind").src = ('<?php echo $_SERVER["PHP_SELF"]; ?>?done=true');
}
function pageinit()
{
setInterval("pkgslist();", 30 * 1000);
}
</script>
</head>
<body onload="pkgslist(); pageinit();">
<b>Date: [ <?php echo date("y-m-d H:i:s"); ?> ]</b>
<br /> <br />
<center>
<table>
<tr>
<td><iframe id="errowind"></iframe></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><b>Logs:</b></td>
</tr>
<tr>
<td><iframe id="logswind"></iframe></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><iframe id="donewind"></iframe></td>
</tr>
</table>
</center>
</body>
</html>
