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.py39
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
1802class CookerExit(bb.event.Event): 1817class CookerExit(bb.event.Event):
1803 """ 1818 """