diff options
-rw-r--r-- | bitbake/lib/bb/cooker.py | 30 |
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() |