]> code.ossystems Code Review - openembedded-core.git/commitdiff
bitbake-dev: Include the worker's PID in events
authorRob Bradford <rob@linux.intel.com>
Tue, 21 Oct 2008 14:33:38 +0000 (15:33 +0100)
committerRob Bradford <rob@linux.intel.com>
Tue, 21 Oct 2008 14:51:32 +0000 (15:51 +0100)
When the runqueue forks off we save the pid inside the event module for that
thread. When we next fire an event then that PID gets included in the events.

bitbake-dev/lib/bb/event.py
bitbake-dev/lib/bb/runqueue.py

index e5cae275ace54fd7d738044ad58c5a65a4840898..8f0a1961df5159eac69ae04d50a0a920dfaca5e7 100644 (file)
@@ -25,12 +25,17 @@ BitBake build tools.
 import os, re
 import bb.utils
 
+# This is the pid for which we should generate the event. This is set when
+# the runqueue forks off.
+worker_pid = 0
+
 class Event:
     """Base class for events"""
     type = "Event"
 
     def __init__(self, d):
         self._data = d
+        self.pid = worker_pid
 
     def getData(self):
         return self._data
index 26e4c32f88ed61fca47185fb8626dfaeb970be67..16672058293926cf128367847f29dc7800ef7ad8 100644 (file)
@@ -971,8 +971,6 @@ class RunQueue:
                     self.stats.taskSkipped()
                     continue
 
-                bb.event.fire(runQueueTaskStarted(task, self.stats, self, self.cfgData))
-                bb.msg.note(1, bb.msg.domain.RunQueue, "Running task %d of %d (ID: %s, %s)" % (self.stats.completed + self.stats.active + 1, self.stats.total, task, self.get_user_idstring(task)))
                 sys.stdout.flush()
                 sys.stderr.flush()
                 try: 
@@ -980,6 +978,16 @@ class RunQueue:
                 except OSError, e: 
                     bb.msg.fatal(bb.msg.domain.RunQueue, "fork failed: %d (%s)" % (e.errno, e.strerror))
                 if pid == 0:
+                    # Save out the PID so that the event can include it the
+                    # events
+                    bb.event.worker_pid = os.getpid()
+
+                    bb.event.fire(runQueueTaskStarted(task, self.stats, self, self.cfgData))
+                    bb.msg.note(1, bb.msg.domain.RunQueue,
+                                "Running task %d of %d (ID: %s, %s)" % (self.stats.completed + self.stats.active + 1,
+                                                                        self.stats.total,
+                                                                        task,
+                                                                        self.get_user_idstring(task)))
                     self.state = runQueueChildProcess
                     # Make the child the process group leader
                     os.setpgid(0, 0)