<?php // all builds aggregated in one view, with links and dates of updates to map files | |
$isEMFserver = (preg_match("/^emf(?:\.torolab\.ibm\.com)$/", $_SERVER["SERVER_NAME"])); | |
$isBuildServer = (preg_match("/^(emft|modeling|build)\.eclipse\.org$|^localhost$/", $_SERVER["SERVER_NAME"])) || $isEMFserver; | |
require_once ("../includes/buildServer-common.php"); | |
require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); $App = new App(); $Nav = new Nav(); $Menu = new Menu(); include($App->getProjectCommon()); | |
$hadLoadDirSimpleError = 1; //have we echoed the loadDirSimple() error msg yet? if 1, omit error; if 0, echo at most 1 error | |
require_once($_SERVER["DOCUMENT_ROOT"] . "/modeling/includes/downloads-scripts.php"); | |
$pageTitle = "Eclipse Modeling Builds"; | |
$pageKeywords = ""; // TODO: add something here | |
$pageAuthor = "Nick Boldt"; | |
$theme = "Phoenix"; | |
internalUseOnly(); | |
ob_start(); | |
print "<div id=\"midcolumn\">\n"; | |
$sortBy = ""; | |
if (isset($_GET["sortBy"]) && preg_match("#version#", $_GET["sortBy"], $m)) | |
{ | |
$sortBy = $m[0]; | |
} | |
print "<h1>$pageTitle</h1>"; | |
// get builds in /home/www-data/build/ | |
$buildDir = "/home/www-data/build"; | |
$dirs = array_flatten_values(findDir($buildDir, "drops")); | |
# reorder | |
foreach ($dirs as $dir) | |
{ | |
preg_match("#.+/([^/]+)/([^/]+)/downloads/drops/(\d+\.\d+\.\d+)#", $dir, $m); | |
if ($m[2] != "xsd") | |
{ | |
$dirsSorted[$m[3] . ":" . $m[1] . ":" . $m[2]] = $dir; | |
} | |
} | |
$dirs = $dirsSorted; krsort($dirs); reset($dirs); #print "<pre>"; print_r($dirs); print "</pre>"; | |
$mapLinks = array(); | |
$latestBuilds = array(); | |
$prevPr = ""; | |
foreach ($dirs as $key => $dir) | |
{ | |
list($version, $parent, $pr) = explode(":",$key); | |
$builds = loadDirSimple($dir, "[NIMRS]\d{12}", "d"); | |
if (sizeof($builds) > 0) | |
{ | |
if ($sortBy != "version" && ($pr != $prevPr && $prevPr)) | |
{ | |
print "</ul>\n"; | |
print "</div>"; | |
} | |
if ($sortBy == "version" || ($sortBy != "version" && ($pr != $prevPr || !$prevPr))) | |
{ | |
print "<div class=\"homeitem3col\">\n"; | |
print "<h3><a name=\"" . $pr . "\"></a>" . strtoupper($pr) . ($sortBy == "version" ? " " . $version : "") . "</h3>\n"; | |
print "<ul>\n"; | |
} | |
$prevPr=$pr; | |
usort($builds, "sortBuildIDByDatestamp"); reset($builds); | |
foreach ($builds as $build) | |
{ | |
$results = showBuildResults($buildDir, str_replace($buildDir, "", $dir) . "/" . $build . "/", 1); | |
$buildDirLink = preg_replace("#http://download.eclipse.org|//modeling/downloads/drops/|modeling/build|buildlog.txt#","",$results[2]); | |
$mapLink = "http://www.eclipse.org/modeling/searchcvs.php?q=file%3A$pr.map+days%3A14"; | |
print "<li><div>" . preg_replace("#http://www.eclipse.org/modeling/downloads/testResults.php?#", | |
$buildDirLink,preg_replace("#http://download.eclipse.org|//modeling/downloads/drops/|modeling/build#", "", $results[0])) . | |
"       <a href=\"${buildDirLink}directory.txt\">Map</a> " . | |
"| <a href=\"$mapLink\">Changes</a></div>" . | |
"<a href=\"" . $buildDirLink . "\">" . ($sortBy != "version" ? $version . " / ": "") . "$build</a></li>\n"; | |
$mapLinks[$pr] = $mapLink; | |
if (!isset($latestBuilds[$pr])) | |
{ | |
$latestBuilds[$pr] = array($version, $build, $buildDirLink); | |
} | |
} | |
if ($sortBy == "version") | |
{ | |
print "</ul>\n"; | |
print "</div>"; | |
} | |
} | |
} | |
if ($sortBy != "version") | |
{ | |
print "</ul>\n"; | |
print "</div>"; | |
} | |
print "<p> </p>\n"; | |
print "</div>\n"; // midcolumn | |
print "<div id=\"rightcolumn\">\n"; | |
print "<div class=\"sideitem\">\n"; | |
print "<h6>Latest Builds & Maps</h6>\n"; | |
print "<ul>\n"; | |
foreach ($latestBuilds as $pr => $lb) print "<li>[<a href=\"" . $mapLinks[$pr] . "\">M</a>] <a href=\"" . $lb[2] . "directory.txt\">" . formatProjectName($pr) . " " . $lb[0] . " " . $lb[1] . "</a></li>\n"; | |
print "</ul>\n"; | |
print "</div>\n"; | |
print "<div class=\"sideitem\">\n"; | |
print "<h6><a href=\"http://www.eclipse.org/modeling/searchcvs.php\">Search CVS</a></h6>\n"; | |
print "<ul>\n"; | |
foreach ($mapLinks as $pr => $maplink) print "<li><a href=\"" . $mapLinks[$pr] . "\">$pr.map</a></li>\n"; | |
print "</ul>\n"; | |
print "</div>\n"; | |
$relengs = array( | |
"gef" => "gef-org.eclipse.gef.releng", | |
"atl" => "m2m-org.eclipse.atl.releng", | |
"jet" => "m2t-org.eclipse.jet.releng", | |
"emf" => "emf-org.eclipse.emf.releng", | |
"query" => "emf-org.eclipse.emf.query.releng", | |
"transaction" => "emf-org.eclipse.emf.transaction.releng", | |
"validation" => "emf-org.eclipse.emf.validation.releng", | |
"eodm" => "mdt-org.eclipse.eodm.releng", | |
"ocl" => "mdt-org.eclipse.ocl.releng", | |
"uml2" => "mdt-org.eclipse.uml2.releng", | |
"uml2tools" => "mdt-org.eclipse.uml2tools.releng", | |
"cdo" => "emft-org.eclipse.emf.cdo.releng", | |
"compare" => "emft-org.eclipse.emf.compare.releng", | |
"ecoretools" => "emft-org.eclipse.emf.ecoretools.releng", | |
"emfatic" => "emft-org.eclipse.emf.emfatic.releng", | |
"mint" => "emft-org.eclipse.emf.mint.releng", | |
"mwe" => "emft-org.eclipse.emf.mwe.releng", | |
"net4j" => "emft-org.eclipse.emf.net4j.releng", | |
"search" => "emft-org.eclipse.emf.search.releng", | |
"teneo" => "emft-org.eclipse.emf.teneo.releng", | |
); | |
ksort($relengs); reset($relengs); | |
print "<div class=\"sideitem\">\n"; | |
print "<h6><a href=\"http://build.eclipse.org/modeling/build/updateSearchCVS.php\">Update Search CVS</a></h6>\n"; | |
print "<ul>\n"; | |
foreach ($relengs as $key => $path) print "<li><a href=\"http://build.eclipse.org/modeling/build/updateSearchCVS.php?previewOnly=0&projects%5B%5D=cvssrc%2F$path\">" . $key . "</a></li>\n"; | |
print "</ul>\n"; | |
print "</div>\n"; | |
print "<div class=\"sideitem\">\n"; | |
print "<h6>Sort</h6>\n"; | |
print "<ul><a href=\"?sortBy=" . ($sortBy == "version" ? "" : "version") . "\">" . ($sortBy != "version" ? "By project, version & date" : "By project & date") . "</a></ul>\n"; | |
print "</div>\n"; | |
print "</div>\n"; // rightcolumn | |
print "</div>\n"; | |
$html = ob_get_contents(); | |
ob_end_clean(); | |
# Generate the web page | |
$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/modeling/includes/downloads.css"/>' . "\n"); | |
$App->AddExtraHtmlHeader('<script src="/modeling/includes/downloads.js" type="text/javascript"></script>' . "\n"); //ie doesn't understand self closing script tags, and won't even try to render the page if you use one | |
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html); | |
function findDir($parent, $pattern, $nest=0) | |
{ | |
$found = array(); | |
$dirs = loadDirSimple($parent, ".*", "d"); | |
if (in_array($pattern, $dirs)) | |
{ | |
#print "[$nest] Found " . sizeof($dirs) . " dirs; " . (in_array($pattern, $dirs) ? "matching pattern '$pattern' found in '$parent'" : "") ."<br/>\n"; | |
$subs = loadDirSimple($parent . "/" . $pattern, "\d+\.\d+\.\d+", "d"); | |
foreach ($subs as $sub) | |
{ | |
$found[] = $parent . "/" . $pattern . "/" . $sub; | |
} | |
} | |
else | |
{ | |
$nest++; | |
foreach ($dirs as $dir) | |
{ | |
$subdir = $parent . "/" . $dir; | |
#print "[$nest] Check $subdir...<br/>\n"; | |
if (is_dir($subdir)) | |
{ | |
$newDirs = findDir($subdir, $pattern, $nest); | |
if (sizeof($newDirs)>0) | |
{ | |
$found[] = $newDirs; | |
} | |
} | |
} | |
} | |
return $found; | |
} | |
/* Thanks to http://ca.php.net/manual/en/function.array-walk-recursive.php#48181 */ | |
function array_flatten_values() { | |
global $outarray; | |
$outarray = array(); | |
function array_walk_recphp4(&$val,$key) { | |
global $outarray; | |
if (is_array($val)) array_walk($val,'array_walk_recphp4'); | |
else { | |
$outarray[] = $val; | |
} | |
} | |
$params = func_get_args(); | |
foreach ($params as $subarr) { | |
array_walk_recphp4($subarr, ''); | |
} | |
return $outarray; | |
} | |
function sortBuildIDByDatestamp($a, $b) | |
{ | |
$a = substr($a,1); | |
$b = substr($b,1); | |
if ($a == $b) { | |
return 0; | |
} | |
return ($a < $b) ? 1 : -1; | |
} | |
function formatProjectName($pr) | |
{ | |
$lim=6; | |
return strlen($pr)<=$lim ? $pr : substr($pr,0,$lim); | |
} | |
?> |