aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Lock <joshua.g.lock@intel.com>2016-09-05 09:20:24 +0100
committerJoshua Lock <joshua.g.lock@intel.com>2016-09-05 09:28:46 +0100
commit967bc92b0b4daec99210ebca7ef0b896ef22de38 (patch)
tree34129f220c287a1b21a644ddc1d4e8ff5744130c
parent9b08503eabf78bc1b114416523b41dcce3449f58 (diff)
downloadopenembedded-core-contrib-967bc92b0b4daec99210ebca7ef0b896ef22de38.tar.gz
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 <joshua.g.lock@intel.com>
-rw-r--r--meta/lib/oe/path.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/meta/lib/oe/path.py b/meta/lib/oe/path.py
index 631c3b430c..06a5af2659 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)