[gnome-continuous-yocto/gnomeostree-3.28-rocko: 2283/8267] oe.path: fix copyhardlinktree()



commit 822c708e8fd007cdefccbdbcbf7dcbe3256dcf5a
Author: Joshua Lock <joshuagloe gmail com>
Date:   Mon Sep 5 14:35:09 2016 +0100

    oe.path: fix copyhardlinktree()
    
    The change to preserve extended attributes in copytree() and
    copyhardlinktree() (e591d69103a40ec4f76d1132a6039d9cb1555103)
    resulted in an incorrect cp invocation in copyhardlinktree() when
    the source directory contained hidden files.
    
    This was because the passed src was modified in place but some code
    paths expected it to remain unmodified from the passed value.
    Resolve the issue by constructing a new source string, rather than
    modifying the passed in string.
    
    (From OE-Core rev: 2b9fdd8448c2c29418d1c3fca9fe1789466f09b4)
    
    Signed-off-by: Joshua Lock <joshua g lock intel com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 meta/lib/oe/path.py |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)
---
diff --git a/meta/lib/oe/path.py b/meta/lib/oe/path.py
index 631c3b4..06a5af2 100644
--- a/meta/lib/oe/path.py
+++ b/meta/lib/oe/path.py
@@ -79,12 +79,15 @@ def copyhardlinktree(src, dst):
         # writers try and create a directory at the same time
         cmd = "cd %s; find . -type d -print | tar --xattrs --xattrs-include='*' -cf - -C %s -p 
--no-recursion --files-from - | tar --xattrs --xattrs-include='*' -xf - -C %s" % (src, src, dst)
         subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
+        source = ''
         if os.path.isdir(src):
             import glob
             if len(glob.glob('%s/.??*' % src)) > 0:
-                src = src + '/.??* '
-            src = src + '/*'
-        cmd = 'cp -afl --preserve=xattr %s %s' % (src, dst)
+                source = '%s/.??* ' % src
+            source = source + '%s/*' % src
+        else:
+            source = src
+        cmd = 'cp -afl --preserve=xattr %s %s' % (source, dst)
         subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
     else:
         copytree(src, dst)


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