[gnome-continuous-yocto/gnomeostree-3.28-rocko: 7745/8267] bitbake: cooker: ensure monkey-patching in collect_bbfiles() gets undone on error



commit 56005ab7c12545ce23f6c3b3ab4315fc7b5e2697
Author: Paul Eggleton <paul eggleton linux intel com>
Date:   Thu Sep 14 16:09:42 2017 +1200

    bitbake: cooker: ensure monkey-patching in collect_bbfiles() gets undone on error
    
    In collect_bbfiles() we're monkey-patching os.listdir in order to find
    which directories to watch, and then undoing that when we're finished -
    however if an exception occurred for any reason there was nothing to
    ensure the latter occurred. This may not have caused any issues, but as
    this kind of thing really ought to be secured using try...finally just
    in case, so do that.
    
    (Bitbake rev: 013047484a03185c0ce281c53c1db4949cdc4e69)
    
    Signed-off-by: Paul Eggleton <paul eggleton linux intel com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 bitbake/lib/bb/cooker.py |   38 +++++++++++++++++++-------------------
 1 files changed, 19 insertions(+), 19 deletions(-)
---
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 6de04fc..73a2fef 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -1695,25 +1695,25 @@ class CookerCollectFiles(object):
             return origlistdir(d)
 
         os.listdir = ourlistdir
-
-        # Can't use set here as order is important
-        newfiles = []
-        for f in files:
-            if os.path.isdir(f):
-                dirfiles = self.find_bbfiles(f)
-                for g in dirfiles:
-                    if g not in newfiles:
-                        newfiles.append(g)
-            else:
-                globbed = glob.glob(f)
-                if not globbed and os.path.exists(f):
-                    globbed = [f]
-                # glob gives files in order on disk. Sort to be deterministic.
-                for g in sorted(globbed):
-                    if g not in newfiles:
-                        newfiles.append(g)
-
-        os.listdir = origlistdir
+        try:
+            # Can't use set here as order is important
+            newfiles = []
+            for f in files:
+                if os.path.isdir(f):
+                    dirfiles = self.find_bbfiles(f)
+                    for g in dirfiles:
+                        if g not in newfiles:
+                            newfiles.append(g)
+                else:
+                    globbed = glob.glob(f)
+                    if not globbed and os.path.exists(f):
+                        globbed = [f]
+                    # glob gives files in order on disk. Sort to be deterministic.
+                    for g in sorted(globbed):
+                        if g not in newfiles:
+                            newfiles.append(g)
+        finally:
+            os.listdir = origlistdir
 
         bbmask = config.getVar('BBMASK')
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]