diff options
Diffstat (limited to 'bitbake/lib/bb/cooker.py')
-rw-r--r-- | bitbake/lib/bb/cooker.py | 24 |
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 |