. // // /************** CONFIG *****************/ $project_dir = dirname(__FILE__); $target_dir = 'target'; $error_dir = 'errors'; $inprogress_dir = 'inprogress'; $builds_limit = 10; $build_types = array('bin', 'ucl', 'log', 'ubi', 'emcoreapp', 'emcorelib', 'bootnote'); /************ END CONFIG ***************/ $projects = $libs = $apps = $errors = $targets = array(); $projects_dir = dir($project_dir); while (false !== ($project = $projects_dir->read())) { if ( '.' === $project[0] || !is_dir($project_dir . DIRECTORY_SEPARATOR . $project) || !is_dir($project_dir . DIRECTORY_SEPARATOR . $project . DIRECTORY_SEPARATOR . $target_dir) || !is_dir($project_dir . DIRECTORY_SEPARATOR . $project . DIRECTORY_SEPARATOR . $error_dir) ) { continue; } if (0 === strpos($project, 'lib')) { $libs[] = $project; } elseif (0 === strpos($project, 'app-')) { $apps[] = $project; } else { $projects[] = $project; } $targets[$project] = array(); $errors[$project] = array(); $inprogress[$project] = array(); $curr_project_dir = $project_dir . DIRECTORY_SEPARATOR . $project . DIRECTORY_SEPARATOR; $errors_dir = dir($curr_project_dir . $error_dir); $progress_dir = dir($curr_project_dir . $inprogress_dir); while (false !== ($filename = $progress_dir->read())) { $curr_file = $curr_project_dir . $inprogress_dir . DIRECTORY_SEPARATOR . $filename; if ('.' === $filename[0] || !is_file($curr_file) || !is_readable($curr_file)) { continue; } $rev = substr($filename, 1); $inprogress_targets = file($curr_file); $inprogress[$project][$rev] = array(); foreach ($inprogress_targets as $target) { $inprogress[$project][$rev][] = trim($target); } } $progress_dir->close(); krsort($inprogress[$project]); while (false !== ($filename = $errors_dir->read())) { $curr_file = $curr_project_dir . $error_dir . DIRECTORY_SEPARATOR . $filename; if ('.' === $filename[0] || !is_file($curr_file) || !is_readable($curr_file)) { continue; } $rev = substr($filename, 1); $failed_targets = file($curr_file); $errors[$project][$rev] = array(); foreach ($failed_targets as $target) { $errors[$project][$rev][] = trim($target); } } $errors_dir->close(); krsort($errors[$project]); $targets_dir = dir($curr_project_dir . $target_dir . ($project === 'umsboot' ? '/umsboot' : '')); while (false !== ($target = $targets_dir->read())) { if ('.' === $target[0] || !is_dir($curr_project_dir . $target_dir . DIRECTORY_SEPARATOR . $target)) { continue; } $targets[$project][] = $target; } $targets_dir->close(); sort($targets[$project]); } $projects_dir->close(); sort($projects); sort($apps); sort($libs); $projects = array_merge( $projects, array_merge( false !== array_search($apps, 'app-bootmenu') ? array('app-bootmenu') : array(), false !== array_search($apps, 'app-uninstaller') ? array('app-uninstaller') : array(), array_diff($apps, array( 'app-bootmenu', 'app-uninstaller', )) ), $libs ); if (isset($_GET['src'])) { switch ($_GET['src']) { case 'plain': header('Content-Type: text/plain; charset=utf-8'); readfile(__FILE__); break; case 'pretty': show_source(__FILE__); break; } exit; } ?>
These are completely untested development builds. They may contain serious bugs that might not be easy to recover from, including data loss or hardware damage.
Only install these builds if you know what you're doing, most importantly how to recover from all kinds of problems. These builds are entirely unsupported, so you'll be completely on your own.
With that in mind, if you really want to proceed, the automated builds can be found here: