From 5853e0f482b22258c909268fe71673a29e31989b Mon Sep 17 00:00:00 2001 From: Robert Yang Date: Sat, 27 Apr 2013 05:32:07 -0400 Subject: sstate.bbclass: make hard links for staging files Make hard links for staging files instead of copy to save the disk space (3G will be saved for a core-image-sato build), and it doesn't affect much on the build time. The following directories are affected: 1) The sysroot 2) The DEPLOY_DIR 3) The pkgdata [YOCTO #4372] Signed-off-by: Robert Yang Signed-off-by: Saul Wold --- meta/lib/oe/path.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'meta/lib/oe/path.py') diff --git a/meta/lib/oe/path.py b/meta/lib/oe/path.py index faa0f61fab..4f8b66c2f3 100644 --- a/meta/lib/oe/path.py +++ b/meta/lib/oe/path.py @@ -85,13 +85,18 @@ def copytree(src, dst): check_output(cmd, shell=True, stderr=subprocess.STDOUT) def copyhardlinktree(src, dst): + """ Make the hard link when possible, otherwise copy. """ bb.utils.mkdirhier(dst) + src_bak = src 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) + if (os.stat(src_bak).st_dev == os.stat(dst).st_dev): + cmd = 'cp -afl %s %s' % (src, dst) + check_output(cmd, shell=True, stderr=subprocess.STDOUT) + else: + copytree(src_bak, dst) def remove(path, recurse=True): """Equivalent to rm -f or rm -rf""" -- cgit 1.2.3-korg