<?php
ob_start("ob_gzhandler", 1);
$buildlogs_server = "buildlogs.pld-linux.org";
-$url = "index2.php";
+$url = "index.php";
$fail_or_ok = array( "FAIL", "OK" );
/*
-$database = 'sqlite:/home/services/ftp/buildlogs.db';
+$database = 'sqlite:/home/services/ftp/buildlogs2.db';
$root_directory = "/home/services/ftp/pub/pld-buildlogs";
*/
// $database, $root_directory and others are taken from buildlogs.inc
-include('buildlogs2.inc');
+include('buildlogs.inc');
/* It should be set */
if (isset($_POST["str"]))$str=$_POST["str"];
if (isset($_POST["action"]))$action=$_POST["action"];
+if ($arch == "src")
+ $arch = "SRPMS";
+
function myheader()
{
echo '<' . '?xml version="1.0" encoding="' . _("ISO-8859-1") .'"?' . ">\n";
<style type="text/css"><!--
A { text-decoration: none; }
A:hover { text-decoration: underline; }
-H1 { font-family: arial,helvetica,sans-serif;
- font-size: 20pt;
+H1 { font-family: arial,helvetica,sans-serif;
+ font-size: 20pt;
font-weight: bold;}
-H2 { font-family: arial,helvetica,sans-serif;
- font-size: 18pt;
+H2 { font-family: arial,helvetica,sans-serif;
+ font-size: 18pt;
font-weight: bold;}
-BODY,TD { font-family: arial,helvetica,sans-serif;
+BODY,TD { font-family: arial,helvetica,sans-serif;
font-size: 13pt; }
-TH { font-family: arial,helvetica,sans-serif;
- font-size: 13pt;
+TH { font-family: arial,helvetica,sans-serif;
+ font-size: 13pt;
font-weight: bold; }
+/* error lines from build logs */
+.error {
+ background-color: #b00;
+}
+.verbose {
+ color: #886;
+}
+.section {
+ color: #111;
+ background-color: #161;
+}
+.changelog a {
+ color: #fff;
+}
//-->
</style>
</head>
function start_pre()
{
echo "<table cellpadding=\"10\"><tr><td bgcolor=\"#000000\">".
- "<font color=\"#cccccc\"><pre style=\"width: 2048px;overflow: scroll\">";
+ "<font color=\"#cccccc\"><pre style=\"white-space: pre-line; word-break: break-all;\">";
}
function end_pre()
$df = preg_replace("/.*\/([^\/]*)$/", "\\1", $f);
$df = preg_replace("/\.(bz2|gz)$/", "", $df);
+ list($name, $id) = explode(',', $df);
- echo "<h1>$df</h1>";
+ if ($name != 'command') {
+ $gitweb_url = "http://git.pld-linux.org/?p=packages/$name.git;a=summary";
+ $name = "<a href=\"$gitweb_url\">$name</a>";
+ }
+ echo "<h1>$name <small>$id</small></h1>";
- echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\" bgcolor=\"#000000\">";
+ echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\" bgcolor=\"#000000\" width=\"100%\">";
function one_item($h, $t) {
echo "<tr><td bgcolor=\"#ccccff\">$h:</td>".
return "<a href=\"$h\">$c</a>";
}
- one_item(_("Status"), ($ok == 1 ?
- "<font color=\"green\"><b>"._("OK")."</b></font>" :
+ one_item(_("Status"), ($ok == 1 ?
+ "<font color=\"green\"><b>"._("OK")."</b></font>" :
"<font color=\"red\"><b>"._("Failed")."</b></a>"));
- one_item(_("Source URL"),
- href("ftp://$buildlogs_server/$f",
+ one_item(_("Source URL"),
+ href("ftp://$buildlogs_server/$f",
"ftp://$buildlogs_server/$f"));
$big_url = "$url?dist=$dist&arch=$arch&ok=$ok&ns=$ns&cnt=$cnt";
$bu = "$big_url&off=$off";
- one_item(_("text/plain URL"),
+ one_item(_("text/plain URL"),
href("$bu&name=$name_url&id=$id&action=text",
_("View!")));
if ($tail) {
- one_item(_("full text"),
+ one_item(_("full text"),
href("$bu&name=$name_url&id=$id",
_("View!")));
}
} else {
one_item(_("rpm -qa of builder"), _("Not available"));
}
- one_item("Data", date("Y/m/d H:i:s", filemtime("$root_directory/$f")));
+ one_item("Date", date("Y/m/d H:i:s", filemtime("$root_directory/$f")));
/*
- echo "<tr><td>Here:</td><td>" .
+ echo "<tr><td>Here:</td><td>" .
"<a href=\"$url?idx=$idx&ok=$ok&id=$id\">".
"http://" . getenv("SERVER_NAME") .
getenv("SCRIPT_NAME") . "?idx=$idx&ok=$ok&id=$id</a>" .
"</td></tr>"; */
- echo "</table><h2>"._("Content:")."</h2>";
# what can I say beside PHP suxx? how the fuck should I create
}
$cmd = "$filter '$root_directory/$f'";
- if ($tail)
- $cmd = "$cmd | tail -n 100";
$fd = popen($cmd, "r");
- start_pre();
+ $toc = array();
+ $err = array();
+ $first_cut = false;
+ $first_cut_done = false;
+ $time = "";
+ $out_buf = array();
+ $out_buf_size = 0;
while (($s = fgets($fd, 102400)) != false) {
- if (strlen($s) > 800) {
- $s = chunk_split($s, 800, "\n ");
- $s = trim($s);
- }
+
+ $toc_elem = false;
+ $err_elem = false;
+
$s = htmlspecialchars($s);
- echo $s;
+ // highlight errors
+ if (preg_match("/(?:fail|error(s|\sCS\d+)?):/i", $s)) {
+ $first_cut = true;
+ $err_count++;
+ $toc_elem = "error $err_count";
+ $err_elem = $s;
+ $s = "<span class=error id=error-$err_count>$s</span>";
+ } elseif (preg_match("/(?:undefined reference to|recipe for target '.*?' failed)/i", $s)) {
+ $first_cut = true;
+ $err_count++;
+ $toc_elem = "error $err_count";
+ $err_elem = $s;
+ $s = "<span class=error id=error-$err_count>$s</span>";
+ } elseif (preg_match("#^\+ /usr/bin/make\b.*\b(?P<target>check)\b#", $s, $m)) {
+ // rpm build section
+ $toc_elem = "make {$m['target']}";
+ $err_elem = $s;
+ $s = "<span class=line id=make-{$m['target']}>$s</span>";
+ } elseif (preg_match('/^(?P<line>- For complete changelog see:) (?P<link>.+)$/', $s, $m)) {
+ // rpm changelog link
+ $link = "<a href=\"{$m['link']}\">{$m['link']}</a>";
+ $s = "<span class=changelog>{$m['line']} $link<br/></span>";
+ } elseif (preg_match('/^(?P<line>\* \w{3} \w{3} [ \d]{2} \d{4} .*?) (?P<hash>[a-z0-9]{7})$/', $s, $m)) {
+ // rpm changelogs
+ $url = "http://git.pld-linux.org/?p=packages/{$name_url}.git;a=commitdiff;h={$m['hash']}";
+ $link = "<a href=\"$url\">{$m['hash']}</a>";
+ $s = "<span class=changelog>{$m['line']} $link<br/></span>";
+ } elseif (substr($s, 0, 2) == "+ ") {
+ // shell verbose
+ $s = "<span class=verbose>$s</span>";
+ } elseif (preg_match("/^Executing\(%(?P<section>\w+)\)/", $s, $m)) {
+ // rpm build section
+ $toc_elem = $m['section'];
+ $err_elem = $s;
+ $s = "<span class=section id={$m['section']}>$s</span>";
+ } elseif (preg_match("/^Processing files: (?P<pkg>(?P<name>.+)-[^-]+-[^-]+)/", $s, $m)) {
+ $first_cut = true;
+ // processing files
+ $toc_elem = "files ".$m['name'];
+ $err_elem = $s;
+ $s = "<span class=section id=files-{$m['name']}>$s</span>";
+ } elseif (preg_match("/^ended at: (?P<date>.+), done in (?P<time>[\d:.]+)/", $s, $m)) {
+ $time = $m['time'];
+ }
+
+ $out_buf[] = $s;
+ $out_buf_size++;
+
+ // if error/processing found truncate early but keep last 100 lines before error
+ if ($tail && $first_cut && !$first_cut_done && $out_buf_size > 100) {
+ array_splice($out_buf, 0, $out_buf_size - 100);
+ $out_buf_size = 100;
+ $first_cut_done = true;
+ }
+
+ // if (not in tail mode) or (in tail mode but we have an error)
+ if (!$tail || $first_cut) {
+ if ($toc_elem)
+ $toc[] = $toc_elem;
+ if ($err_elem)
+ $err[] = $err_elem;
+ }
}
- end_pre();
pclose($fd);
+ // no errors found, no processing found but we are in tail mode
+ if ($tail && !$first_cut_done && $out_buf_size > 100) {
+ array_splice($out_buf, 0, $out_buf_size - 100);
+ $out_buf_size = 100;
+ }
+
+ $code = join('', $out_buf);
+
+ if ($time) {
+ one_item(_("Runtime"), $time);
+ }
+
+ echo "</table>";
+
+ if (!empty($toc)) {
+ echo "<h2>"._("Toc:")."</h2>";
+ echo "<ul class=toc>";
+ foreach ($toc as $i => $section) {
+ $id = str_replace(" ", "-", $section);
+ echo "<li><a href=#{$id}>{$section}</a></li>";
+ echo "<code>{$err[$i]}</code>";
+ }
+ echo "</ul>";
+ }
+
+ echo "<h2>"._("Content:")."</h2>";
+
+ start_pre();
+ echo $code;
+ end_pre();
+
?>
<table width="100%">
<tr>
[<a href="<?php echo $bu; ?>"><?=_("Back to list of logs")?></a>]
</td>
<td align=right>
- [<a href="<?php echo "$bu&action=qa"
+ [<a href="<?php echo "$bu&action=qa"
?>"><?=_("View rpm -qa of builder")?></a>]
</td>
</tr>
return;
echo "# src : ftp://$buildlogs_server/$f\n";
- echo "# date : " .
+ echo "# date : " .
date("Y/m/d H:i:s", filemtime("$root_directory/$f")) . "\n";
if (preg_match("/\.bz2$/", $f)) {
- $filter = "bzcat";
+ if (is_executable("/usr/bin/lbzcat"))
+ $filter = "lbzcat";
+ else
+ $filter = "bzcat";
} elseif (preg_match("/\.gz$/", $f)) {
$filter = "zcat";
} else {
echo "<table width=\"100%\" border=\"0\">\n";
echo "<tr><td bgcolor=\"#cccccc\" nowrap=\"nowrap\">"._("Failed")."</td><td bgcolor=\"#cccccc\">"._("Ok")."</td></tr>\n";
- foreach ($addr as $dist => $ddist) {
- foreach ($ddist as $arch) {
- echo "<tr><td nowrap=\"nowrap\">".
- "<a href=\"$url?dist=$dist&arch=$arch&ok=0&cnt=$cnt\">
- $dist/$arch</a></td><td nowrap=\"nowrap\">".
- "[<a href=\"$url?dist=$dist&arch=$arch&ok=1&cnt=$cnt\">OK</a>]</td>".
- #"<td>[<a href=\"$url?idx=$i&action=qa\">qa</a>]</td>".
- "</tr>\n";
- }
- }
+ foreach ($addr as $dist => $ddist) {
+ echo "<tr><td colspan=2 nowrap=\"nowrap\"><hr/></td></tr>\n";
+ foreach ($ddist as $arch) {
+ echo "<tr><td nowrap=\"nowrap\">".
+ "<a href=\"$url?dist=$dist&arch=$arch&ok=0&cnt=$cnt\">
+ $dist/$arch</a></td><td nowrap=\"nowrap\">".
+ "[<a href=\"$url?dist=$dist&arch=$arch&ok=1&cnt=$cnt\">OK</a>]</td>".
+ #"<td>[<a href=\"$url?idx=$i&action=qa\">qa</a>]</td>".
+ "</tr>\n";
+ }
+ }
echo "</table><hr />\n";
echo "<div align=\"center\">";
echo "<a href=\"$url\">main()</a><hr />\n";
echo "<a href=\"http://www.pld-linux.org/\"><img src=\"powpld.png\" ".
- "alt=\""._("Powered by PLD Linux")."\" border=\"0\" /></a><br />\n" .
- "<small>(c) 2002 ".
+ "alt=\""._("Powered by PLD Linux")."\" border=\"0\" /></a><br />\n" .
+ "<small>(c) 2002-". date("Y") . " ".
"<a href=\"mailto:feedback@pld-linux.org\">PLD Team</a><br />\n".
- '$Revision: 1.3 $'.
+ '$Revision: 1.37 $'.
"</small></div>\n";
# smile ;)
$pow = array("vim", "php", "brain", "power", "electricity",
"coffee", "ufo", "penguin", "GNOME", "ELF", "DWARF",
"voodoo magic", "Linux", "x-files", "X", "foobar",
- "/dev/null", "/dev/zero", "/dev/drzewo",
+ "/dev/null", "/dev/zero", "/dev/drzewo",
"Leppe'", "matrix", "Neo", "PDP-11",
"Ken", "GNU antilope", "PDP-7", "ITS", "Multics",
- "foobarbaz", "ed", "Joe", "Unix conspiracy",
+ "foobarbaz", "ed", "Joe", "Unix conspiracy",
"overclock", "The Right Thing",
"The Bad Thing", "Star Treck", "NSA", "NASA",
"achelon", "VAX", "Real Programmer",
"Paranoid Android", "Lunatic Corp", "Parallel thinking",
"sfistak", "Linus", "The Golden Path", "Dark Side of the Force",
"Przewodniczacego Lepper-a", "KDE", "Microsoft Windows 2003", "sqlite3",
- "synergy"
+ "synergy", "six Cray XMT Supercomputers"
# feel free to add sth if you change this file ;)
);
echo _("Powered by")." ";
}
echo "</small></div>";
+ echo "<div align=\"center\"><small>";
+ echo "Your IP: " . $_SERVER['REMOTE_ADDR'];
+ echo "</small></div>";
+
if (isset($dist) && isset($arch)) {
- echo "<form action=\"index2.php\" method=\"post\">";
+ echo "<form action=\"index.php\" method=\"post\">";
echo "<input type=\"hidden\" name=\"dist\" value=\"$dist\" />";
echo "<input type=\"hidden\" name=\"arch\" value=\"$arch\" />";
echo "<input type=\"hidden\" name=\"action\" value=\"sqa\" />";
if (!isset($dist) || !isset($arch))
return false;
- if($dist!='ti'){
- $addr = "http://ftp.pld-linux.org/dists/$dist/.stat/builder/$dist/rpmqa-$arch.txt";
- }else{
- $addr = "http://ftp.pld-linux.org/branches/titanium/.stat/builder/$dist/rpmqa-$arch.txt";
- }
+ $addr = "http://ftp1.pld-linux.org/dists/$dist/.stat/builder/$dist/rpmqa-$arch.txt";
return fopen("$addr", "r");
}
echo _("Sorry, cannot open.");
} else {
while (($s = fgets($f, 1000)) != false) {
+ if (stristr($s, "Query done at:")) {
+ echo "rpmqa database from " . strstr($s, ":") . "\n";
+ continue;
+ }
+
if (stristr($s, $str))
echo $s;
}
- echo "/* EOF */";
+ echo "\n/* EOF */";
}
end_pre();
}
$f = get_qa();
if ($plain) {
- header("Content-type: text/plain");
+ header("Content-type: text/plain");
echo _("# rpm -qa of")." $dist/$arch\n";
} else {
echo "<h1>"._("rpm -qa of")." $a</h1>";
if (!isset($_POST["size1"])) $_POST["size1"] = "";
if (!isset($_POST["size2"])) $_POST["size2"] = "";
- echo "<form action=\"index2.php?action=adv_search\" method=\"post\">";
+ echo "<form action=\"index.php?action=adv_search\" method=\"post\">";
echo "<div align=\"center\">";
echo "<table border=\"0\">\n";
if (!isset($_POST["$name"])) {
$check = " ";
} else {
- $check=" checked=\"on\"";
+ $check=" checked='checked'";
}
echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
$name="as1_".$i;
if (!isset($_POST["$n2"])) {
$check = " ";
} else {
- $check=" checked=\"on\"";
+ $check=" checked='checked'";
}
echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
echo "</tr>\n";
break;
}
$query .= " LIMIT $cnt OFFSET $off ";
-
+
try {
$dbh = new PDO("$database");
} catch (PDOException $e) {
{
echo _("Enter something!");
}
- echo "</form>\n";
+ echo "</div></form>\n";
}
function welcome()
<p><?=_("Welcome to PLD Build Logs WWW interface.")?></p><p>
<?=_("Feel free to email bug reports, complaints and feature requests ")?>
<!-- ech... niech strace... -->
-<a href="mailto:feedback@pld-linux.org"><?=_("to us")?></a>. <?=_("Positive opinions are also")?>
-<a href="mailto:feedback@pld-linux.org"><?=_("welcome")?></a> ;)</p>
-<p>Version: $Id: index2.php,v 1.3 2008/10/22 15:13:52 witekfl Exp $</p>
+<a href="mailto:feedback@pld-linux.org"><?=_("to us")?></a>. <?=_("Positive opinions are also")?>
+ <a href="mailto:feedback@pld-linux.org"><?=_("welcome")?></a> ;)</p>
</td><td width="20%"> </td></tr>
</table>
<?php