bitbake: utils.py: Add function for processing profile output
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 28 Jan 2013 14:40:04 +0000 (14:40 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 28 Jan 2013 14:49:05 +0000 (14:49 +0000)
(Bitbake rev: 0df64810e8d40e7761cfd5059c0617dda31a6641)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
bitbake/lib/bb/cooker.py
bitbake/lib/bb/utils.py

index caf1123..80710fb 100644 (file)
@@ -1416,25 +1416,7 @@ def server_main(cooker, func, *args):
         ret = profile.Profile.runcall(prof, func, *args)
 
         prof.dump_stats("profile.log")
-
-        # Redirect stdout to capture profile information
-        pout = open('profile.log.processed', 'w')
-        so = sys.stdout.fileno()
-        orig_so = os.dup(sys.stdout.fileno())
-        os.dup2(pout.fileno(), so)
-   
-        import pstats
-        p = pstats.Stats('profile.log')
-        p.sort_stats('time')
-        p.print_stats()
-        p.print_callers()
-        p.sort_stats('cumulative')
-        p.print_stats()
-
-        os.dup2(orig_so, so)
-        pout.flush()
-        pout.close()  
-
+        bb.utils.process_profilelog("profile.log")
         print("Raw profiling information saved to profile.log and processed statistics to profile.log.processed")
 
     else:
index cef0fdd..7e81df5 100644 (file)
@@ -820,3 +820,23 @@ def cpu_count():
 def nonblockingfd(fd):
     fcntl.fcntl(fd, fcntl.F_SETFL, fcntl.fcntl(fd, fcntl.F_GETFL) | os.O_NONBLOCK)
 
+def process_profilelog(fn):
+    # Redirect stdout to capture profile information
+    pout = open(fn + '.processed', 'w')
+    so = sys.stdout.fileno()
+    orig_so = os.dup(sys.stdout.fileno())
+    os.dup2(pout.fileno(), so)
+   
+    import pstats
+    p = pstats.Stats(fn)
+    p.sort_stats('time')
+    p.print_stats()
+    p.print_callers()
+    p.sort_stats('cumulative')
+    p.print_stats()
+
+    os.dup2(orig_so, so)
+    pout.flush()
+    pout.close()  
+
+