[oe-commits] Richard Purdie : staging: Use hardlinking for sysroot_stage_dir

git at git.openembedded.org git at git.openembedded.org
Thu Nov 14 14:17:02 UTC 2013


Module: openembedded-core.git
Branch: master
Commit: 7136cbc64e5efb09f3fae3e2e35a181ca3d66dd4
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=7136cbc64e5efb09f3fae3e2e35a181ca3d66dd4

Author: Richard Purdie <richard.purdie at linuxfoundation.org>
Date:   Wed Nov 13 18:05:30 2013 +0000

staging: Use hardlinking for sysroot_stage_dir

This saves about 2GB on a core-image-sato build so is worth doing and is
consistent with our efforts to try and decrease our build footprint.

Build time in my local test seemed unaffected but on more IO bound
machines it should help.

Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>

---

 meta/classes/staging.bbclass | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/meta/classes/staging.bbclass b/meta/classes/staging.bbclass
index 814f7bc..3985763 100644
--- a/meta/classes/staging.bbclass
+++ b/meta/classes/staging.bbclass
@@ -7,14 +7,11 @@ sysroot_stage_dir() {
 		 return
 	fi
 
-	# We only want to stage the contents of $src if it's non-empty so first rmdir $src
-	# then if it still exists (rmdir on non-empty dir fails) we can copy its contents
-	rmdir "$src" 2> /dev/null || true
-	# However we always want to stage a $src itself, even if it's empty
 	mkdir -p "$dest"
-	if [ -d "$src" ]; then
-		tar -cf - -C "$src" -p . | tar -xf - -C "$dest"
-	fi
+	(
+		cd $src
+		find . -print0 | cpio --null -pdlu $dest
+	)
 }
 
 sysroot_stage_libdir() {



More information about the Openembedded-commits mailing list