diff options
Diffstat (limited to 'bitbake/lib/bb/cache.py')
| -rw-r--r-- | bitbake/lib/bb/cache.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py index b3c632b81c..fb02deb8ef 100644 --- a/bitbake/lib/bb/cache.py +++ b/bitbake/lib/bb/cache.py | |||
| @@ -204,14 +204,31 @@ class Cache(object): | |||
| 204 | logger.info('Bitbake version mismatch, rebuilding...') | 204 | logger.info('Bitbake version mismatch, rebuilding...') |
| 205 | return | 205 | return |
| 206 | 206 | ||
| 207 | cachesize = os.fstat(cachefile.fileno()).st_size | ||
| 208 | bb.event.fire(bb.event.CacheLoadStarted(cachesize), self.data) | ||
| 209 | |||
| 210 | previous_percent = 0 | ||
| 207 | while cachefile: | 211 | while cachefile: |
| 208 | try: | 212 | try: |
| 209 | key = pickled.load() | 213 | key = pickled.load() |
| 210 | value = pickled.load() | 214 | value = pickled.load() |
| 211 | except Exception: | 215 | except Exception: |
| 212 | break | 216 | break |
| 217 | |||
| 213 | self.depends_cache[key] = value | 218 | self.depends_cache[key] = value |
| 214 | 219 | ||
| 220 | # only fire events on even percentage boundaries | ||
| 221 | current_progress = cachefile.tell() | ||
| 222 | current_percent = 100 * current_progress / cachesize | ||
| 223 | if current_percent > previous_percent: | ||
| 224 | previous_percent = current_percent | ||
| 225 | bb.event.fire(bb.event.CacheLoadProgress(current_progress), | ||
| 226 | self.data) | ||
| 227 | |||
| 228 | bb.event.fire(bb.event.CacheLoadCompleted(cachesize, | ||
| 229 | len(self.depends_cache)), | ||
| 230 | self.data) | ||
| 231 | |||
| 215 | @staticmethod | 232 | @staticmethod |
| 216 | def virtualfn2realfn(virtualfn): | 233 | def virtualfn2realfn(virtualfn): |
| 217 | """ | 234 | """ |
