From 8e373e69acac853213a62afb8bbdf0adc0c5045a Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sun, 3 Feb 2013 17:34:54 +0000 Subject: sstate/path.py: Add copyhardlinktree() function and use for performance optimisation Add a function which copys a tree as a set of hardlinks to the original files, then use this in sstate to reduce some of the overhead of sstate package creation since the file isn't actually copied. Signed-off-by: Richard Purdie --- meta/lib/oe/path.py | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'meta/lib/oe/path.py') diff --git a/meta/lib/oe/path.py b/meta/lib/oe/path.py index 7197b23650..ea58bedc8b 100644 --- a/meta/lib/oe/path.py +++ b/meta/lib/oe/path.py @@ -83,6 +83,14 @@ def copytree(src, dst): cmd = 'tar -cf - -C %s -ps . | tar -xf - -C %s' % (src, dst) check_output(cmd, shell=True, stderr=subprocess.STDOUT) +def copyhardlinktree(src, dst): + bb.utils.mkdirhier(dst) + if os.path.isdir(src): + if not len(os.listdir(src)): + return + src = src + "/*" + cmd = 'cp -al %s %s' % (src, dst) + check_output(cmd, shell=True, stderr=subprocess.STDOUT) def remove(path, recurse=True): """Equivalent to rm -f or rm -rf""" -- cgit 1.2.3-korg