From 9cd83b689b5c7fcdbead9ac0c46c24fbe884c57a Mon Sep 17 00:00:00 2001 From: Joshua Lock Date: Mon, 5 Sep 2016 14:35:09 +0100 Subject: [PATCH] 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. Signed-off-by: Joshua Lock Signed-off-by: Richard Purdie --- meta/lib/oe/path.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/meta/lib/oe/path.py b/meta/lib/oe/path.py index 631c3b430cb..06a5af26594 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) -- 2.47.2