]> code.ossystems Code Review - openembedded-core.git/commitdiff
scripts/cp-noerror: Try and use hardlinks if possible
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 11 Oct 2012 12:36:53 +0000 (13:36 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 18 Oct 2012 11:03:28 +0000 (12:03 +0100)
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>
scripts/cp-noerror

index f0cd2435862779848cca473cb0a1d8a4dad78d4f..474f7aa80a8323b4073840f4f08dc081168b641b 100755 (executable)
@@ -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: