All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] staging: Avoid staging the same binaries again and again
@ 2012-09-24  6:26 Phil Blundell
  2012-09-24  8:51 ` Richard Purdie
  0 siblings, 1 reply; 8+ messages in thread
From: Phil Blundell @ 2012-09-24  6:26 UTC (permalink / raw)
  To: oe-core

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@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






^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2012-09-28 10:56 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-24  6:26 [PATCH] staging: Avoid staging the same binaries again and again Phil Blundell
2012-09-24  8:51 ` Richard Purdie
2012-09-24  9:40   ` Phil Blundell
2012-09-24  9:54     ` Richard Purdie
2012-09-24  9:59       ` Phil Blundell
2012-09-27 21:18       ` Phil Blundell
2012-09-27 21:35         ` Richard Purdie
2012-09-28 10:43           ` Phil Blundell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.