summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2012-10-11 13:36:53 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-10-18 12:03:28 +0100
commit8c5544c2311b080bb212efb7f6b804db63e125f5 (patch)
tree4ede45ec928d2cfb417187a30ee9aa699988566a
parent08542718504d2b53d140a9e6be73c84cc0e047e0 (diff)
downloadopenembedded-core-8c5544c2311b080bb212efb7f6b804db63e125f5.tar.gz
openembedded-core-8c5544c2311b080bb212efb7f6b804db63e125f5.tar.bz2
openembedded-core-8c5544c2311b080bb212efb7f6b804db63e125f5.zip
scripts/cp-noerror: Try and use hardlinks if possible
Since we generally have lots of copies of the directories created using this tool, use hardlinks where possible. This should save a little disk space and improve performance slightly. (From OE-Core rev: bfa11c028c2da093f7b4e6b7b1d611da90ae052f) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xscripts/cp-noerror10
1 files changed, 9 insertions, 1 deletions
diff --git a/scripts/cp-noerror b/scripts/cp-noerror
index f0cd243586..474f7aa80a 100755
--- a/scripts/cp-noerror
+++ b/scripts/cp-noerror
@@ -21,7 +21,15 @@ def copytree(src, dst, symlinks=False, ignore=None):
srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)
try:
- shutil.copy2(srcname, dstname)
+ d = dstname
+ if os.path.isdir(dstname):
+ d = os.path.join(dstname, os.path.basename(srcname))
+ if os.path.exists(d):
+ continue
+ try:
+ os.link(srcname, dstname)
+ except OSError:
+ shutil.copy2(srcname, dstname)
# catch the Error from the recursive copytree so that we can
# continue with other files
except shutil.Error, err: