array(), 'path' => $val[2], 'version' => $val[3], 'media' => $val[4], 'section' => $val[5], 'user' => $val[7], 'host' => $val[8], 'job' => $val[9] ); } $status = $val[1]; $data = $val[10]; if (preg_match("/@(\d+):/", $data, $revision)) { $pkgs[$key]['revision'] = $revision[1]; } $pkgs[$key]['status'][$status] = 1; $ext = $val[11]; if ($ext == '.src.rpm.info') { preg_match("!^(?:@\d+:)?(.*)!", $data, $name); $pkgs[$key]['package'] = $name[1]; } else if ($ext == '.src.rpm') { $pkgs[$key]['status']['src'] = 1; } else if ($ext == '.upload') { $pkgs[$key]['status']['upload'] = 1; } else if ($ext == '.lock') { preg_match("!(.*)\.iurt\.(.*)\.\d+\.\d+!", $data, $buildhost); if (!$hosts[$buildhost[2]]) { $hosts[$buildhost[2]]= array(); } $hosts[$buildhost[2]][$buildhost[1]] = $key; if ($pkgs[$key]['status']['build']) { array_push($pkgs[$key]['status']['build'], $buildhost[2]); } else { $pkgs[$key]['status']['build'] = array($buildhost[2]); } } else if ($ext == '.done') { // beware! this block is called twice for a given $key $pkgs[$key]['buildtime']['start'] = key2timestamp($val[6]); $pkgs[$key]['buildtime']['end'] = round($val[12]); $pkgs[$key]['buildtime']['diff'] = $pkgs[$key]['buildtime']['end'] - $pkgs[$key]['buildtime']['start']; @$build_dates[date('H', $pkgs[$key]['buildtime']['start'])] += 1; // keep obviously dubious values out of there // 12 hours is be an acceptable threshold given current BS global perfs // as of April 2011 if ($pkgs[$key]['buildtime']['diff'] < 43200) { $buildtime_total[$key] = $pkgs[$key]['buildtime']['diff']; } } } // filter packages if a package name was provided if (isset($_GET['package'])) { foreach ($pkgs as $key => $pkg) { preg_match("/^(.*)-[^-]*-[^-]*$/", $pkg['package'], $name); if ($_GET['package'] != $name[1]) { unset($pkgs[$key]); } } } // sort by key in reverse order to have more recent pkgs first krsort($pkgs); ksort($build_dates); $build_count = count($buildtime_total); $buildtime_total = array_sum($buildtime_total); // count all packages statuses $stats = array( 'todo' => 0, 'building' => 0, 'partial' => 0, 'uploaded' => 0, 'rejected' => 0, 'failure' => 0 ); $total = count($pkgs); // count users' packages $users = array(); if ($total > 0) { foreach ($pkgs as $key => $p) { $pkgs[$key]['type'] = pkg_gettype($p); $stats[$pkgs[$key]['type']] += 1; if (!array_key_exists($p['user'], $users)) { $users[$p['user']] = 1; } else { $users[$p['user']] += 1; } } } // check if emi is running $upload_time = null; $stat = null; if (file_exists('/var/lib/schedbot/tmp/upload')) { $stat = stat('/var/lib/schedbot/tmp/upload'); if ($stat) { $upload_time = $stat['mtime']; } } $last_pkg = ($_GET['last'] && $total > 0) ? reset($pkgs) : null publish_stats_headers($stats, $last_pkg); ?> <?php echo strip_tags($title); ?>

« Back to full list'; } $figures_list = array(); if (!isset($_GET['package'])) { // TODO should be cached. $missing_deps_count = preg_match_all("//m", file_get_contents("http://check.mageia.org/cauldron/dependencies.rss"), $matches); $unmaintained_count = file_exists(__DIR__ . '/data/unmaintained.txt') ? count(file(__DIR__ . '/data/unmaintained.txt')) : 0; if ($missing_deps_count > 0 || $unmaintained_count > 0 ) { if ($missing_deps_count > 0) { $figures_list[] = sprintf('%d broken dependencies', $missing_deps_count, 'http://check.mageia.org/cauldron/dependencies.html' ); } if ($unmaintained_count > 0) { $figures_list[] = sprintf('%d unmaintained package%s', $unmaintained_count, 'data/unmaintained.txt', plural($unmaintained_count) ); } if (count($figures_list) > 0) $figures_list[count($figures_list)-1] .= sprintf(' » %s', 'https://wiki.mageia.org/en/Importing_packages', 'you can help!'); } preg_match_all('/(\d+)/', file_get_contents("https://bugs.mageia.org/buglist.cgi?quicksearch=%40qa-bugs+-kw%3Avali"), $matches); $qa_bugs = $matches[1][0]; if ($qa_bugs > 0) { $figures_list[] = sprintf('%d package update%s to validate » %s', $qa_bugs, 'https://bugs.mageia.org/buglist.cgi?quicksearch=%40qa-bugs+-kw%3Avali', plural($qa_bugs), 'https://wiki.mageia.org/en/QA_process_for_validating_updates', 'you can help!' ); } if (!is_null($upload_time)) { $figures_list[] = sprintf('

Upload in progress for %s.

', timediff($upload_time)); } if (count($figures_list) > 0) { echo '

Generated at . Code for this page is in http://svnweb.mageia.org/soft/build_system/web/.