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 |
