[OE-core] [PATCH] staging: Avoid staging the same binaries again and again

Phil Blundell philb at gnu.org
Mon Sep 24 06:26:33 UTC 2012


It is possible that some or all of ${bindir}, ${base_bindir},
${sbindir} and ${base_sbindir} might be the same directory.  In
particular, for micro it is often the case that all four are
the same.  There is clearly no point in staging the same directory
four times, so let's keep track of which paths have already been
staged and skip any later duplicates.

Signed-off-by: Phil Blundell <pb at pbcl.net>
---
 meta/classes/staging.bbclass |   24 ++++++++++++++++++++----
 1 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/meta/classes/staging.bbclass b/meta/classes/staging.bbclass
index 82624cb..bd97ed5 100644
--- a/meta/classes/staging.bbclass
+++ b/meta/classes/staging.bbclass
@@ -21,6 +21,21 @@ sysroot_stage_dir() {
 	fi
 }
 
+sysroot_stage_dir_once() {
+	src="$1"
+	dest="$2"
+
+	src_b64=`echo $src | base64 -w 0`
+	for d in $staged_dirs; do
+	    if [ $d = $src_b64 ]; then
+	       echo "$src has been staged already"
+	       return
+	    fi
+	done
+	sysroot_stage_dir $src $dest
+	staged_dirs="$staged_dirs $src_b64"
+}
+
 sysroot_stage_libdir() {
 	src="$1"
 	dest="$2"
@@ -34,10 +49,11 @@ sysroot_stage_dirs() {
 
 	sysroot_stage_dir $from${includedir} $to${includedir}
 	if [ "${BUILD_SYS}" = "${HOST_SYS}" ]; then
-		sysroot_stage_dir $from${bindir} $to${bindir}
-		sysroot_stage_dir $from${sbindir} $to${sbindir}
-		sysroot_stage_dir $from${base_bindir} $to${base_bindir}
-		sysroot_stage_dir $from${base_sbindir} $to${base_sbindir}
+		staged_dirs=
+		sysroot_stage_dir_once $from${bindir} $to${bindir}
+		sysroot_stage_dir_once $from${sbindir} $to${sbindir}
+		sysroot_stage_dir_once $from${base_bindir} $to${base_bindir}
+		sysroot_stage_dir_once $from${base_sbindir} $to${base_sbindir}
 		sysroot_stage_dir $from${libexecdir} $to${libexecdir}
 		sysroot_stage_dir $from${sysconfdir} $to${sysconfdir}
 		sysroot_stage_dir $from${localstatedir} $to${localstatedir}
-- 
1.7.9







More information about the Openembedded-core mailing list