[OE-core] [PATCH 18/50] package.bbclass: Use hard link for package split instead of copy

Koen Kooi koen at dominion.thruhere.net
Mon Feb 28 22:18:26 UTC 2011


From: Dongxiao Xu <dongxiao.xu at intel.com>

When doing package split, we use hard link instead of copy, which can
save about 10% disk space when building poky-image-minimal.

If fail, it will fall back to the copyfile function.

[Updated by Richard to use os.link and avoid an exec() call per file]

Signed-off-by: Dongxiao Xu <dongxiao.xu at intel.com>
---
 meta/classes/package.bbclass |   15 +++------------
 1 files changed, 3 insertions(+), 12 deletions(-)

diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index dcece40..2f3e9bf 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -427,22 +427,13 @@ python populate_packages () {
 			fpath = os.path.join(root,file)
 			dpath = os.path.dirname(fpath)
 			bb.mkdirhier(dpath)
-
-			# Check if this is a hardlink to something... if it is
-			# attempt to preserve the link information, instead of copy.
 			if not os.path.islink(file):
-				s = os.stat(file)
-				if s.st_nlink > 1:
-					file_reference = "%d_%d" % (s.st_dev, s.st_ino)
-					if file_reference not in file_links:
-						# Save the reference for next time...
-						file_links[file_reference] = fpath
-					else:
-						os.link(file_links[file_reference], fpath)
-						continue
+				os.link(file, fpath)
+				continue
 			ret = bb.copyfile(file, fpath)
 			if ret is False or ret == 0:
 				raise bb.build.FuncFailed("File population failed")
+
 		del localdata
 	os.chdir(workdir)
 
-- 
1.6.6.1





More information about the Openembedded-core mailing list