diff options
Diffstat (limited to 'bitbake/lib')
| -rw-r--r-- | bitbake/lib/bb/cooker.py | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index f33bca4f86..554c7f10a5 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
| @@ -151,6 +151,8 @@ class BBCooker: | |||
| 151 | 151 | ||
| 152 | def __init__(self, featureSet=None, server=None): | 152 | def __init__(self, featureSet=None, server=None): |
| 153 | self.recipecaches = None | 153 | self.recipecaches = None |
| 154 | self.baseconfig_valid = False | ||
| 155 | self.parsecache_valid = False | ||
| 154 | self.eventlog = None | 156 | self.eventlog = None |
| 155 | self.skiplist = {} | 157 | self.skiplist = {} |
| 156 | self.featureset = CookerFeatures() | 158 | self.featureset = CookerFeatures() |
| @@ -264,11 +266,25 @@ class BBCooker: | |||
| 264 | n.read_events() | 266 | n.read_events() |
| 265 | n.process_events() | 267 | n.process_events() |
| 266 | 268 | ||
| 269 | def _baseconfig_set(self, value): | ||
| 270 | if value and not self.baseconfig_valid: | ||
| 271 | bb.server.process.serverlog("Base config valid") | ||
| 272 | elif not value and self.baseconfig_valid: | ||
| 273 | bb.server.process.serverlog("Base config invalidated") | ||
| 274 | self.baseconfig_valid = value | ||
| 275 | |||
| 276 | def _parsecache_set(self, value): | ||
| 277 | if value and not self.parsecache_valid: | ||
| 278 | bb.server.process.serverlog("Parse cache valid") | ||
| 279 | elif not value and self.parsecache_valid: | ||
| 280 | bb.server.process.serverlog("Parse cache invalidated") | ||
| 281 | self.parsecache_valid = value | ||
| 282 | |||
| 267 | def config_notifications(self, event): | 283 | def config_notifications(self, event): |
| 268 | if event.maskname == "IN_Q_OVERFLOW": | 284 | if event.maskname == "IN_Q_OVERFLOW": |
| 269 | bb.warn("inotify event queue overflowed, invalidating caches.") | 285 | bb.warn("inotify event queue overflowed, invalidating caches.") |
| 270 | self.parsecache_valid = False | 286 | self._parsecache_set(False) |
| 271 | self.baseconfig_valid = False | 287 | self._baseconfig_set(False) |
| 272 | bb.parse.clear_cache() | 288 | bb.parse.clear_cache() |
| 273 | return | 289 | return |
| 274 | if not event.pathname in self.configwatcher.bbwatchedfiles: | 290 | if not event.pathname in self.configwatcher.bbwatchedfiles: |
| @@ -281,12 +297,12 @@ class BBCooker: | |||
| 281 | bb.parse.clear_cache() | 297 | bb.parse.clear_cache() |
| 282 | if not event.pathname in self.inotify_modified_files: | 298 | if not event.pathname in self.inotify_modified_files: |
| 283 | self.inotify_modified_files.append(event.pathname) | 299 | self.inotify_modified_files.append(event.pathname) |
| 284 | self.baseconfig_valid = False | 300 | self._baseconfig_set(False) |
| 285 | 301 | ||
| 286 | def notifications(self, event): | 302 | def notifications(self, event): |
| 287 | if event.maskname == "IN_Q_OVERFLOW": | 303 | if event.maskname == "IN_Q_OVERFLOW": |
| 288 | bb.warn("inotify event queue overflowed, invalidating caches.") | 304 | bb.warn("inotify event queue overflowed, invalidating caches.") |
| 289 | self.parsecache_valid = False | 305 | self._parsecache_set(False) |
| 290 | bb.parse.clear_cache() | 306 | bb.parse.clear_cache() |
| 291 | return | 307 | return |
| 292 | if event.pathname.endswith("bitbake-cookerdaemon.log") \ | 308 | if event.pathname.endswith("bitbake-cookerdaemon.log") \ |
| @@ -300,7 +316,7 @@ class BBCooker: | |||
| 300 | bb.parse.clear_cache() | 316 | bb.parse.clear_cache() |
| 301 | if not event.pathname in self.inotify_modified_files: | 317 | if not event.pathname in self.inotify_modified_files: |
| 302 | self.inotify_modified_files.append(event.pathname) | 318 | self.inotify_modified_files.append(event.pathname) |
| 303 | self.parsecache_valid = False | 319 | self._parsecache_set(False) |
| 304 | 320 | ||
| 305 | def add_filewatch(self, deps, watcher=None, dirs=False): | 321 | def add_filewatch(self, deps, watcher=None, dirs=False): |
| 306 | if not watcher: | 322 | if not watcher: |
| @@ -422,8 +438,8 @@ class BBCooker: | |||
| 422 | for mc in self.databuilder.mcdata.values(): | 438 | for mc in self.databuilder.mcdata.values(): |
| 423 | self.add_filewatch(mc.getVar("__base_depends", False), self.configwatcher) | 439 | self.add_filewatch(mc.getVar("__base_depends", False), self.configwatcher) |
| 424 | 440 | ||
| 425 | self.baseconfig_valid = True | 441 | self._baseconfig_set(True) |
| 426 | self.parsecache_valid = False | 442 | self._parsecache_set(False) |
| 427 | 443 | ||
| 428 | def handlePRServ(self): | 444 | def handlePRServ(self): |
| 429 | # Setup a PR Server based on the new configuration | 445 | # Setup a PR Server based on the new configuration |
| @@ -489,7 +505,7 @@ class BBCooker: | |||
| 489 | 505 | ||
| 490 | self.handleCollections(self.data.getVar("BBFILE_COLLECTIONS")) | 506 | self.handleCollections(self.data.getVar("BBFILE_COLLECTIONS")) |
| 491 | 507 | ||
| 492 | self.parsecache_valid = False | 508 | self._parsecache_set(False) |
| 493 | 509 | ||
| 494 | def updateConfigOpts(self, options, environment, cmdline): | 510 | def updateConfigOpts(self, options, environment, cmdline): |
| 495 | self.ui_cmdline = cmdline | 511 | self.ui_cmdline = cmdline |
| @@ -1509,7 +1525,7 @@ class BBCooker: | |||
| 1509 | bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runtaskentries), buildname, item, failures, interrupted), self.databuilder.mcdata[mc]) | 1525 | bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runtaskentries), buildname, item, failures, interrupted), self.databuilder.mcdata[mc]) |
| 1510 | bb.event.disable_heartbeat() | 1526 | bb.event.disable_heartbeat() |
| 1511 | # We trashed self.recipecaches above | 1527 | # We trashed self.recipecaches above |
| 1512 | self.parsecache_valid = False | 1528 | self._parsecache_set(False) |
| 1513 | self.configuration.limited_deps = False | 1529 | self.configuration.limited_deps = False |
| 1514 | bb.parse.siggen.reset(self.data) | 1530 | bb.parse.siggen.reset(self.data) |
| 1515 | if quietlog: | 1531 | if quietlog: |
| @@ -1678,7 +1694,7 @@ class BBCooker: | |||
| 1678 | self.add_filewatch([[dirent]], dirs=True) | 1694 | self.add_filewatch([[dirent]], dirs=True) |
| 1679 | 1695 | ||
| 1680 | self.parser = CookerParser(self, mcfilelist, total_masked) | 1696 | self.parser = CookerParser(self, mcfilelist, total_masked) |
| 1681 | self.parsecache_valid = True | 1697 | self._parsecache_set(True) |
| 1682 | 1698 | ||
| 1683 | self.state = state.parsing | 1699 | self.state = state.parsing |
| 1684 | 1700 | ||
| @@ -1796,8 +1812,7 @@ class BBCooker: | |||
| 1796 | self.data = self.databuilder.data | 1812 | self.data = self.databuilder.data |
| 1797 | # In theory tinfoil could have modified the base data before parsing, | 1813 | # In theory tinfoil could have modified the base data before parsing, |
| 1798 | # ideally need to track if anything did modify the datastore | 1814 | # ideally need to track if anything did modify the datastore |
| 1799 | self.parsecache_valid = False | 1815 | self._parsecache_set(False) |
| 1800 | |||
| 1801 | 1816 | ||
| 1802 | class CookerExit(bb.event.Event): | 1817 | class CookerExit(bb.event.Event): |
| 1803 | """ | 1818 | """ |
