From 47a34dee08fcc25d896a1bdf16fa86267f0b898f Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Thu, 14 Sep 2017 16:09:41 +1200 Subject: cooker: fix watching empty directories The code that was supposed to watch directories along BBFILES for creation of new files wasn't working in the case where the directory did not initially contain any matching files - since in updateCache() we are passing the directory path to add_filewatch() and the latter function calls os.path.dirname() on the path on the assumption that it is a file path, and thus the parent of the directory got watched but not the directory itself. (If the directory wasn't empty everything worked fine since add_filewatch() was called elsewhere with the path to one of the files in that directory, and thus the directory got watched). Add a parameter to add_filewatch() to tell it we are passing it directory path(s) rather than file path(s). Signed-off-by: Paul Eggleton Signed-off-by: Richard Purdie --- lib/bb/cooker.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py index 8fe36eba1..6de04fcba 100644 --- a/lib/bb/cooker.py +++ b/lib/bb/cooker.py @@ -266,12 +266,15 @@ class BBCooker: self.inotify_modified_files.append(event.pathname) self.parsecache_valid = False - def add_filewatch(self, deps, watcher=None): + def add_filewatch(self, deps, watcher=None, dirs=False): if not watcher: watcher = self.watcher for i in deps: watcher.bbwatchedfiles.append(i[0]) - f = os.path.dirname(i[0]) + if dirs: + f = i[0] + else: + f = os.path.dirname(i[0]) if f in watcher.bbseen: continue watcher.bbseen.append(f) @@ -1512,7 +1515,7 @@ class BBCooker: # Add inotify watches for directories searched for bb/bbappend files for dirent in searchdirs: - self.add_filewatch([[dirent]]) + self.add_filewatch([[dirent]], dirs=True) self.parser = CookerParser(self, filelist, masked) self.parsecache_valid = True -- cgit 1.2.3-korg