[gnome-continuous-yocto/gnomeostree-3.28-rocko: 3920/8267] classes/sstate: handle filenames containing square brackets



commit 3d6c667e5455c2333dedd7a9b5040c51b0ccdd8f
Author: Paul Eggleton <paul eggleton linux intel com>
Date:   Thu Dec 22 15:19:58 2016 +1300

    classes/sstate: handle filenames containing square brackets
    
    If a recipe installs a file or directory whose name contains square
    brackets [ ] that form a valid glob expression and that file then they
    won't be correctly removed from the sysroot, because we pass each path
    in the sstate manifest to our oe.path.remove() function which calls
    glob.glob() on the path passed into it and the expression won't
    actually match the original filename. Since we don't expect to put any
    wildcarded expressions in the sstate manifests, and we already have a
    try...except around this, we can actually use os.remove() here instead.
    
    Similarly, when we pass existing file paths to "grep" looking through
    the manifests, we don't want those paths to be treated as regexes - so
    use grep's -F command line switch.
    
    Fixes [YOCTO #10836].
    
    (From OE-Core rev: fd8a57861024fc82e15a2a4ec8c20ed0ebb242f6)
    
    Signed-off-by: Paul Eggleton <paul eggleton linux intel com>
    Signed-off-by: Ross Burton <ross burton intel com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 meta/classes/sstate.bbclass |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
---
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index a7cd9ec..755bf59 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -213,7 +213,7 @@ def sstate_install(ss, d):
                     break
             if realmatch:
                 match.append(f)
-                sstate_search_cmd = "grep -rl '%s' %s --exclude=master.list | sed -e 's:^.*/::' -e 
's:\.populate-sysroot::'" % (f, d.expand("${SSTATE_MANIFESTS}"))
+                sstate_search_cmd = "grep -rlF '%s' %s --exclude=master.list | sed -e 's:^.*/::' -e 
's:\.populate-sysroot::'" % (f, d.expand("${SSTATE_MANIFESTS}"))
                 search_output = subprocess.Popen(sstate_search_cmd, shell=True, 
stdout=subprocess.PIPE).communicate()[0]
                 if search_output != "":
                     match.append("Matched in %s" % search_output.rstrip())
@@ -406,7 +406,7 @@ def sstate_clean_manifest(manifest, d):
                 elif os.path.exists(entry) and len(os.listdir(entry)) == 0:
                     os.rmdir(entry[:-1])
             else:
-                oe.path.remove(entry)
+                os.remove(entry)
         except OSError:
             pass
 


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