diff options
-rw-r--r-- | bitbake/lib/bb/cooker.py | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 3e4f8d8e5e..9bd3460625 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
@@ -124,46 +124,39 @@ class EventWriter: | |||
124 | self.eventfile = eventfile | 124 | self.eventfile = eventfile |
125 | self.event_queue = [] | 125 | self.event_queue = [] |
126 | 126 | ||
127 | def init_file(self): | ||
128 | # write current configuration data | ||
129 | with open(eventfile, "w") as f: | ||
130 | f.write("%s\n" % json.dumps({ "allvariables" : self.cooker.getAllKeysWithFlags(["doc", "func"])})) | ||
131 | |||
132 | def write_event(self, event): | 127 | def write_event(self, event): |
133 | with open(self.eventfile, "a") as f: | 128 | with open(self.eventfile, "a") as f: |
134 | try: | 129 | try: |
135 | str_event = codecs.encode(pickle.dumps(event), 'base64').decode('utf-8') | 130 | str_event = codecs.encode(pickle.dumps(event), 'base64').decode('utf-8') |
136 | f.write("%s\n" % json.dumps({"class": event.__module__ + "." + event.__class__.__name__, | 131 | f.write("%s\n" % json.dumps({"class": event.__module__ + "." + event.__class__.__name__, |
137 | "vars": str_event})) | 132 | "vars": str_event})) |
138 | except Exception as e: | 133 | except Exception as err: |
139 | import traceback | 134 | import traceback |
140 | print(e, traceback.format_exc()) | 135 | print(err, traceback.format_exc()) |
141 | |||
142 | 136 | ||
143 | def send(self, event): | 137 | def send(self, event): |
144 | event_class = event.__module__ + "." + event.__class__.__name__ | 138 | if self.file_inited: |
139 | # we have the file, just write the event | ||
140 | self.write_event(event) | ||
141 | else: | ||
142 | # init on bb.event.BuildStarted | ||
143 | name = "%s.%s" % (event.__module__, event.__class__.__name__) | ||
144 | if name == "bb.event.BuildStarted": | ||
145 | with open(self.eventfile, "w") as f: | ||
146 | f.write("%s\n" % json.dumps({ "allvariables" : self.cooker.getAllKeysWithFlags(["doc", "func"])})) | ||
145 | 147 | ||
146 | # init on bb.event.BuildStarted | ||
147 | if self.file_inited is None: | ||
148 | if event_class == "bb.event.BuildStarted": | ||
149 | self.init_file() | ||
150 | self.file_inited = True | 148 | self.file_inited = True |
151 | 149 | ||
152 | # write pending events | 150 | # write pending events |
153 | for e in self.event_queue: | 151 | for evt in self.event_queue: |
154 | self.write_event(e) | 152 | self.write_event(evt) |
155 | 153 | ||
156 | # also write the current event | 154 | # also write the current event |
157 | self.write_event(event) | 155 | self.write_event(event) |
158 | |||
159 | else: | 156 | else: |
160 | # queue all events until the file is inited | 157 | # queue all events until the file is inited |
161 | self.event_queue.append(event) | 158 | self.event_queue.append(event) |
162 | 159 | ||
163 | else: | ||
164 | # we have the file, just write the event | ||
165 | self.write_event(event) | ||
166 | |||
167 | #============================================================================# | 160 | #============================================================================# |
168 | # BBCooker | 161 | # BBCooker |
169 | #============================================================================# | 162 | #============================================================================# |