]> code.ossystems Code Review - openembedded-core.git/commitdiff
bitbake/runqueue.py: Move SIGCHLD handler to wrap none server sleep call
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 18 Feb 2011 11:43:32 +0000 (11:43 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 18 Feb 2011 11:54:28 +0000 (11:54 +0000)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
bitbake/lib/bb/runqueue.py
bitbake/lib/bb/server/none.py

index 7d1f48aee21a85c8fb79177b5bf4ee7916a66ae6..8a88fe026dc02cf0d991f0b9f25b556af802d4c9 100644 (file)
@@ -748,9 +748,6 @@ class RunQueueData:
                            self.rqdata.runq_depends[task],
                            self.rqdata.runq_revdeps[task])
 
-# Dummy signal handler to ensure we break out of sleep upon SIGCHLD
-def chldhandler(signum, stackframe):
-    pass
 
 class RunQueue:
     def __init__(self, cooker, cfgData, dataCache, taskData, targets):
@@ -764,8 +761,6 @@ class RunQueue:
 
         self.state = runQueuePrepare
 
-        signal.signal(signal.SIGCHLD, chldhandler)
-
     def check_stamps(self):
         unchecked = {}
         current = []
@@ -1107,8 +1102,6 @@ class RunQueueExecute:
             # themselves
             bblogger.handlers = [bb.event.LogHandler()]
 
-            signal.signal(signal.SIGCHLD, signal.SIG_DFL)
-
             self.rq.state = runQueueChildProcess
             # Make the child the process group leader
             os.setpgid(0, 0)
index 2708807dfcf6957b3555831a568e5918dc0d8690..be0fb8f776007c3ea9a6e139266b2828b0aac34c 100644 (file)
@@ -36,6 +36,7 @@ import bb
 from bb.ui import uievent
 import xmlrpclib
 import pickle
+import signal
 
 DEBUG = False
 
@@ -105,6 +106,10 @@ class BBUIEventQueue:
     def system_quit( self ):
         bb.event.unregister_UIHhandler(self.EventHandle)
 
+# Dummy signal handler to ensure we break out of sleep upon SIGCHLD
+def chldhandler(signum, stackframe):
+    pass
+
 class BitBakeServer():
     # remove this when you're done with debugging
     # allow_reuse_address = True
@@ -144,7 +149,9 @@ class BitBakeServer():
                 pass
         if nextsleep is not None:
             #print "Sleeping for %s (%s)" % (nextsleep, delay)
+            signal.signal(signal.SIGCHLD, chldhandler)
             time.sleep(nextsleep)
+            signal.signal(signal.SIGCHLD, signal.SIG_DFL)
 
     def server_exit(self):
         # Tell idle functions we're exiting