Patchwork staging: Use hardlinking for sysroot_stage_dir

login
register
mail settings
Submitter Richard Purdie
Date Nov. 13, 2013, 6:05 p.m.
Message ID <1384365930.6460.99.camel@ted>
Download mbox | patch
Permalink /patch/61663/
State New
Headers show

Comments

Richard Purdie - Nov. 13, 2013, 6:05 p.m.
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@linuxfoundation.org>
---

Patch

diff --git a/meta/classes/staging.bbclass b/meta/classes/staging.bbclass
index ddba0c9..94abcda 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_stripdir() {