summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/cooker.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/cooker.py')
-rw-r--r--bitbake/lib/bb/cooker.py24
1 files changed, 9 insertions, 15 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index f5a7b02921..e7fdb5a692 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -993,12 +993,10 @@ class CookerParser(object):
993 self.total = len(filelist) 993 self.total = len(filelist)
994 994
995 self.current = 0 995 self.current = 0
996 self.started = False
997 self.bb_cache = None 996 self.bb_cache = None
998 self.task_queue = None 997 self.task_queue = None
999 self.result_queue = None 998 self.result_queue = None
1000 self.fromcache = None 999 self.fromcache = None
1001 self.progress_chunk = self.total / 100
1002 self.num_processes = int(self.cfgdata.getVar("BB_NUMBER_PARSE_THREADS", True) or 1000 self.num_processes = int(self.cfgdata.getVar("BB_NUMBER_PARSE_THREADS", True) or
1003 multiprocessing.cpu_count()) 1001 multiprocessing.cpu_count())
1004 1002
@@ -1013,6 +1011,8 @@ class CookerParser(object):
1013 self.task_queue.put((filename, appends)) 1011 self.task_queue.put((filename, appends))
1014 else: 1012 else:
1015 self.fromcache.append((filename, appends)) 1013 self.fromcache.append((filename, appends))
1014 self.toparse = self.total - len(self.fromcache)
1015 self.progress_chunk = self.toparse / 100
1016 1016
1017 def worker(input, output, cfgdata): 1017 def worker(input, output, cfgdata):
1018 signal.signal(signal.SIGINT, signal.SIG_IGN) 1018 signal.signal(signal.SIGINT, signal.SIG_IGN)
@@ -1061,14 +1061,10 @@ class CookerParser(object):
1061 bb.event.fire(event, self.cfgdata) 1061 bb.event.fire(event, self.cfgdata)
1062 self.shutdown() 1062 self.shutdown()
1063 return False 1063 return False
1064 elif not self.started:
1065 self.started = True
1066 bb.event.fire(bb.event.ParseStarted(self.total, self.skipped, self.masked),
1067 self.cfgdata)
1068 return True
1069 elif not self.bb_cache: 1064 elif not self.bb_cache:
1070 self.bb_cache = bb.cache.Cache(self.cfgdata) 1065 self.bb_cache = bb.cache.Cache(self.cfgdata)
1071 self.launch_processes() 1066 self.launch_processes()
1067 bb.event.fire(bb.event.ParseStarted(self.toparse), self.cfgdata)
1072 return True 1068 return True
1073 1069
1074 try: 1070 try:
@@ -1076,11 +1072,17 @@ class CookerParser(object):
1076 filename, appends = self.fromcache.pop() 1072 filename, appends = self.fromcache.pop()
1077 _, result = self.bb_cache.load(filename, appends, self.cfgdata) 1073 _, result = self.bb_cache.load(filename, appends, self.cfgdata)
1078 parsed = False 1074 parsed = False
1075 self.cached += 1
1079 else: 1076 else:
1080 result = self.result_queue.get() 1077 result = self.result_queue.get()
1081 if isinstance(result, Exception): 1078 if isinstance(result, Exception):
1082 raise result 1079 raise result
1080
1083 parsed = True 1081 parsed = True
1082 self.parsed += 1
1083 if self.parsed % self.progress_chunk == 0:
1084 bb.event.fire(bb.event.ParseProgress(self.parsed),
1085 self.cfgdata)
1084 except KeyboardInterrupt: 1086 except KeyboardInterrupt:
1085 self.shutdown(clean=False) 1087 self.shutdown(clean=False)
1086 raise 1088 raise
@@ -1088,10 +1090,6 @@ class CookerParser(object):
1088 self.error += 1 1090 self.error += 1
1089 parselog.critical(str(e)) 1091 parselog.critical(str(e))
1090 else: 1092 else:
1091 if parsed:
1092 self.parsed += 1
1093 else:
1094 self.cached += 1
1095 self.virtuals += len(result) 1093 self.virtuals += len(result)
1096 1094
1097 for virtualfn, info in result: 1095 for virtualfn, info in result:
@@ -1100,10 +1098,6 @@ class CookerParser(object):
1100 else: 1098 else:
1101 self.bb_cache.add_info(virtualfn, info, self.cooker.status, 1099 self.bb_cache.add_info(virtualfn, info, self.cooker.status,
1102 parsed=parsed) 1100 parsed=parsed)
1103 finally:
1104 # only fire events on percentage boundaries
1105 if self.current % self.progress_chunk == 0:
1106 bb.event.fire(bb.event.ParseProgress(self.current), self.cfgdata)
1107 1101
1108 self.current += 1 1102 self.current += 1
1109 return True 1103 return True