summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/cooker.py36
1 files changed, 11 insertions, 25 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index d658db9bd8..c5bfef55d6 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -102,12 +102,15 @@ class CookerFeatures(object):
102 102
103class EventWriter: 103class EventWriter:
104 def __init__(self, cooker, eventfile): 104 def __init__(self, cooker, eventfile):
105 self.file_inited = None
106 self.cooker = cooker 105 self.cooker = cooker
107 self.eventfile = eventfile 106 self.eventfile = eventfile
108 self.event_queue = [] 107 self.event_queue = []
109 108
110 def write_event(self, event): 109 def write_variables(self):
110 with open(self.eventfile, "a") as f:
111 f.write("%s\n" % json.dumps({ "allvariables" : self.cooker.getAllKeysWithFlags(["doc", "func"])}))
112
113 def send(self, event):
111 with open(self.eventfile, "a") as f: 114 with open(self.eventfile, "a") as f:
112 try: 115 try:
113 str_event = codecs.encode(pickle.dumps(event), 'base64').decode('utf-8') 116 str_event = codecs.encode(pickle.dumps(event), 'base64').decode('utf-8')
@@ -117,28 +120,6 @@ class EventWriter:
117 import traceback 120 import traceback
118 print(err, traceback.format_exc()) 121 print(err, traceback.format_exc())
119 122
120 def send(self, event):
121 if self.file_inited:
122 # we have the file, just write the event
123 self.write_event(event)
124 else:
125 # init on bb.event.BuildStarted
126 name = "%s.%s" % (event.__module__, event.__class__.__name__)
127 if name in ("bb.event.BuildStarted", "bb.cooker.CookerExit"):
128 with open(self.eventfile, "w") as f:
129 f.write("%s\n" % json.dumps({ "allvariables" : self.cooker.getAllKeysWithFlags(["doc", "func"])}))
130
131 self.file_inited = True
132
133 # write pending events
134 for evt in self.event_queue:
135 self.write_event(evt)
136
137 # also write the current event
138 self.write_event(event)
139 else:
140 # queue all events until the file is inited
141 self.event_queue.append(event)
142 123
143#============================================================================# 124#============================================================================#
144# BBCooker 125# BBCooker
@@ -416,6 +397,7 @@ class BBCooker:
416 def setupEventLog(self, eventlog): 397 def setupEventLog(self, eventlog):
417 if self.eventlog and self.eventlog[0] != eventlog: 398 if self.eventlog and self.eventlog[0] != eventlog:
418 bb.event.unregister_UIHhandler(self.eventlog[1]) 399 bb.event.unregister_UIHhandler(self.eventlog[1])
400 self.eventlog = None
419 if not self.eventlog or self.eventlog[0] != eventlog: 401 if not self.eventlog or self.eventlog[0] != eventlog:
420 # we log all events to a file if so directed 402 # we log all events to a file if so directed
421 # register the log file writer as UI Handler 403 # register the log file writer as UI Handler
@@ -423,7 +405,7 @@ class BBCooker:
423 bb.utils.mkdirhier(os.path.dirname(eventlog)) 405 bb.utils.mkdirhier(os.path.dirname(eventlog))
424 writer = EventWriter(self, eventlog) 406 writer = EventWriter(self, eventlog)
425 EventLogWriteHandler = namedtuple('EventLogWriteHandler', ['event']) 407 EventLogWriteHandler = namedtuple('EventLogWriteHandler', ['event'])
426 self.eventlog = (eventlog, bb.event.register_UIHhandler(EventLogWriteHandler(writer))) 408 self.eventlog = (eventlog, bb.event.register_UIHhandler(EventLogWriteHandler(writer)), writer)
427 409
428 def updateConfigOpts(self, options, environment, cmdline): 410 def updateConfigOpts(self, options, environment, cmdline):
429 self.ui_cmdline = cmdline 411 self.ui_cmdline = cmdline
@@ -1404,6 +1386,8 @@ class BBCooker:
1404 buildname = self.databuilder.mcdata[mc].getVar("BUILDNAME") 1386 buildname = self.databuilder.mcdata[mc].getVar("BUILDNAME")
1405 if fireevents: 1387 if fireevents:
1406 bb.event.fire(bb.event.BuildStarted(buildname, [item]), self.databuilder.mcdata[mc]) 1388 bb.event.fire(bb.event.BuildStarted(buildname, [item]), self.databuilder.mcdata[mc])
1389 if self.eventlog:
1390 self.eventlog[2].write_variables()
1407 bb.event.enable_heartbeat() 1391 bb.event.enable_heartbeat()
1408 1392
1409 # Execute the runqueue 1393 # Execute the runqueue
@@ -1547,6 +1531,8 @@ class BBCooker:
1547 1531
1548 for mc in self.multiconfigs: 1532 for mc in self.multiconfigs:
1549 bb.event.fire(bb.event.BuildStarted(buildname, ntargets), self.databuilder.mcdata[mc]) 1533 bb.event.fire(bb.event.BuildStarted(buildname, ntargets), self.databuilder.mcdata[mc])
1534 if self.eventlog:
1535 self.eventlog[2].write_variables()
1550 bb.event.enable_heartbeat() 1536 bb.event.enable_heartbeat()
1551 1537
1552 rq = bb.runqueue.RunQueue(self, self.data, self.recipecaches, taskdata, runlist) 1538 rq = bb.runqueue.RunQueue(self, self.data, self.recipecaches, taskdata, runlist)