. // // /************** 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; } ?> freemyipod.org builds

freemyipod.org builds

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:

no projects found
no builds found $failed_targets) { if ($limit >= $builds_limit) { break; } ?>
  <?php echo $target; ?>
r
FAILED
IN PROGRESS
OK
OK
 

view source: [plain] [pretty]