summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/cooker.py30
1 files changed, 23 insertions, 7 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 0bbbc09c33..5ebf6a1328 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -133,6 +133,19 @@ class BBCooker:
133 133
134 134
135 self.initConfigurationData() 135 self.initConfigurationData()
136
137 self.inotify_modified_files = []
138
139 def _process_inotify_updates(server, notifier_list, abort):
140 for n in notifier_list:
141 if n.check_events(timeout=0):
142 # read notified events and enqeue them
143 n.read_events()
144 n.process_events()
145 return True
146
147 self.configuration.server_register_idlecallback(_process_inotify_updates, [self.confignotifier, self.notifier])
148
136 self.baseconfig_valid = True 149 self.baseconfig_valid = True
137 self.parsecache_valid = False 150 self.parsecache_valid = False
138 151
@@ -171,11 +184,13 @@ class BBCooker:
171 signal.signal(signal.SIGHUP, self.sigterm_exception) 184 signal.signal(signal.SIGHUP, self.sigterm_exception)
172 185
173 def config_notifications(self, event): 186 def config_notifications(self, event):
174 bb.parse.update_cache(event.path) 187 if not event.path in self.inotify_modified_files:
188 self.inotify_modified_files.append(event.path)
175 self.baseconfig_valid = False 189 self.baseconfig_valid = False
176 190
177 def notifications(self, event): 191 def notifications(self, event):
178 bb.parse.update_cache(event.path) 192 if not event.path in self.inotify_modified_files:
193 self.inotify_modified_files.append(event.path)
179 self.parsecache_valid = False 194 self.parsecache_valid = False
180 195
181 def add_filewatch(self, deps, watcher=None): 196 def add_filewatch(self, deps, watcher=None):
@@ -1419,11 +1434,12 @@ class BBCooker:
1419 raise bb.BBHandledException() 1434 raise bb.BBHandledException()
1420 1435
1421 if self.state != state.parsing: 1436 if self.state != state.parsing:
1422 for n in [self.confignotifier, self.notifier]: 1437
1423 if n.check_events(timeout=0): 1438 # reload files for which we got notifications
1424 # read notified events and enqeue them 1439 for p in self.inotify_modified_files:
1425 n.read_events() 1440 bb.parse.update_cache(p)
1426 n.process_events() 1441 self.inotify_modified_files = []
1442
1427 if not self.baseconfig_valid: 1443 if not self.baseconfig_valid:
1428 logger.debug(1, "Reloading base configuration data") 1444 logger.debug(1, "Reloading base configuration data")
1429 self.initConfigurationData() 1445 self.initConfigurationData()