summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Kjellerstedt <peter.kjellerstedt@axis.com>2020-01-07 23:08:57 +0100
committerArmin Kuster <akuster808@gmail.com>2020-01-25 08:14:18 -0800
commitaa770081d7d3ff678b18117a4b4e9b3da09b72be (patch)
tree11b20c8cd52a4de3b63288162b6d96e5aced1b62
parent4ce50bbd34eefeabfeca89a6a66c71598d3c58f6 (diff)
downloadbitbake-contrib-stable/1.42-next.tar.gz
bitbake-contrib-stable/1.42-next.tar.bz2
bitbake-contrib-stable/1.42-next.zip
cooker: Keep track of watched files using a set instead of a liststable/1.42-nutstable/1.42-next
When there are many watched files, keeping track of them using lists is suboptimal. Using sets improves the performance considerably. Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 1e96df260e47d160dbd36bfc92c31ef06266f662) Signed-off-by: Armin Kuster <akuster808@gmail.com>
-rw-r--r--lib/bb/cooker.py16
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index a97bafdcac..77d18a5d0c 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -171,8 +171,8 @@ class BBCooker:
bb.debug(1, "BBCooker pyinotify1 %s" % time.time())
sys.stdout.flush()
- self.configwatcher.bbseen = []
- self.configwatcher.bbwatchedfiles = []
+ self.configwatcher.bbseen = set()
+ self.configwatcher.bbwatchedfiles = set()
self.confignotifier = pyinotify.Notifier(self.configwatcher, self.config_notifications)
bb.debug(1, "BBCooker pyinotify2 %s" % time.time())
sys.stdout.flush()
@@ -182,8 +182,8 @@ class BBCooker:
self.watcher = pyinotify.WatchManager()
bb.debug(1, "BBCooker pyinotify3 %s" % time.time())
sys.stdout.flush()
- self.watcher.bbseen = []
- self.watcher.bbwatchedfiles = []
+ self.watcher.bbseen = set()
+ self.watcher.bbwatchedfiles = set()
self.notifier = pyinotify.Notifier(self.watcher, self.notifications)
bb.debug(1, "BBCooker pyinotify complete %s" % time.time())
@@ -278,14 +278,14 @@ class BBCooker:
if not watcher:
watcher = self.watcher
for i in deps:
- watcher.bbwatchedfiles.append(i[0])
+ watcher.bbwatchedfiles.add(i[0])
if dirs:
f = i[0]
else:
f = os.path.dirname(i[0])
if f in watcher.bbseen:
continue
- watcher.bbseen.append(f)
+ watcher.bbseen.add(f)
watchtarget = None
while True:
# We try and add watches for files that don't exist but if they did, would influence
@@ -294,7 +294,7 @@ class BBCooker:
try:
watcher.add_watch(f, self.watchmask, quiet=False)
if watchtarget:
- watcher.bbwatchedfiles.append(watchtarget)
+ watcher.bbwatchedfiles.add(watchtarget)
break
except pyinotify.WatchManagerError as e:
if 'ENOENT' in str(e):
@@ -302,7 +302,7 @@ class BBCooker:
f = os.path.dirname(f)
if f in watcher.bbseen:
break
- watcher.bbseen.append(f)
+ watcher.bbseen.add(f)
continue
if 'ENOSPC' in str(e):
providerlog.error("No space left on device or exceeds fs.inotify.max_user_watches?")