[Mageia-sysadm] [301] show package build time

root at mageia.org root at mageia.org
Fri Jan 14 16:49:38 CET 2011


Revision: 301
Author:   rda
Date:     2011-01-14 16:49:38 +0100 (Fri, 14 Jan 2011)
Log Message:
-----------
show package build time

Modified Paths:
--------------
    build_system/web/index.php

Modified: build_system/web/index.php
===================================================================
--- build_system/web/index.php	2011-01-14 15:06:29 UTC (rev 300)
+++ build_system/web/index.php	2011-01-14 15:49:38 UTC (rev 301)
@@ -46,10 +46,13 @@
 
 chdir($upload_dir);
 
-$all_files = shell_exec("find \( -name '*.rpm' -o -name '*.src.rpm.info' -o -name '*.youri' -o -name '*.lock' -o -name '*.done' \) -ctime -$max_modified");
+$all_files = shell_exec("find \( -name '*.rpm' -o -name '*.src.rpm.info' -o -name '*.youri' -o -name '*.lock' -o -name '*.done' \) ! -ctime $max_modified -printf \"%p\t%T@\"");
+$re = "!^\./(\w+)/((\w+)/(\w+)/(\w+)/(\d+)\.(\w+)\.(\w+)\.(\d+))_?(.+)(\.src\.rpm(?:\.info)?|\.youri|\.lock|\.done)\s+(\d+\.\d+)$!m";
+$r = preg_match_all($re,
+    $all_files,
+    $matches,
+    PREG_SET_ORDER);
 
-preg_match_all("!^\./(\w+)/((\w+)/(\w+)/(\w+)/(\d+)\.(\w+)\.(\w+)\.(\d+))_?(.+)(\.src\.rpm(?:\.info)?|\.youri|\.lock|\.done)$!m", $all_files, $matches, PREG_SET_ORDER);
-
 $pkgs = array();
 foreach ($matches as $val) {
 
@@ -85,6 +88,10 @@
     } else if ($ext == '.lock') {
         // parse build bot from $data
         $pkgs[$key]['status']['build'] = 1;
+    } else if ($ext == '.done') {
+        $pkgs[$key]['buildtime']['start'] = strtotime($val[6]);
+        $pkgs[$key]['buildtime']['end'] = round($val[12]);
+        $pkgs[$key]['buildtime']['diff'] = $pkgs[$key]['buildtime']['end'] - $pkgs[$key]['buildtime']['start'];
     }
 }
 // sort by key in reverse order to have more recent pkgs first
@@ -126,26 +133,38 @@
 }
 
 /**
- * @param string $key
+ * Return human-readable time difference:
+ * - against $key (YmdHis expected format)
+ * - using only $diff (takes precedence over $key if provided)
  *
+ * @param string $key past date to diff against from now
+ * @param integer $diff time difference in seconds
+ *
  * @return string
 */
-function key2date($key) {
-    global $tz;    
-    $date = DateTime::createFromFormat("YmdHis", $key+0, $tz);
-    $diff = time() - $date->getTimestamp();
+function key2date($key, $diff = null) {
+    global $tz;
+
+    if (is_null($diff) || $diff <= 0) {
+        $date = DateTime::createFromFormat("YmdHis", $key+0, $tz);
+        if ($date <= 0)
+            return null;
+
+        $diff = time() - $date->getTimestamp();
+    }
     if ($diff<60)
-       return $diff . " second" . plural($diff) . " ago";
+       return $diff . " second" . plural($diff);
     $diff = round($diff/60);
     if ($diff<60)
-       return $diff . " minute" . plural($diff) . " ago";
+       return $diff . " minute" . plural($diff);
     $diff = round($diff/60);
     if ($diff<24)
-       return $diff . " hour" . plural($diff) . " ago";
+       return $diff . " hour" . plural($diff);
     $diff = round($diff/24);
 
-    return $diff . " day" . plural($diff) . " ago";
+    return $diff . " day" . plural($diff);
 }
+
 ?>
 <!DOCTYPE html>
 <html lang="en">
@@ -256,7 +275,7 @@
 
         $s .= sprintf($tmpl,
             $p['type'],
-            key2date($key),
+            key2date($key) . ' ago',
             $p['user'], $p['user'],
             $p['package'],
             $p['version'],
@@ -275,6 +294,9 @@
             sprintf('<a href="%s">%s</a>', $typelink, $p['type']) :
             $p['type'];
 
+        $s .= '</td><td>';
+        if ($p['type'] == 'uploaded')
+            $s .= duration_to_diff($p['buildtime']['diff']);
         $s .= '</td>';
         //$s .= '<td>' . sprintf($badges[$p['type']], $p['user']) . '</td>';
         $s .= '</tr>';
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/mageia-sysadm/attachments/20110114/43918ddb/attachment.html>


More information about the Mageia-sysadm mailing list