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 <[email protected]>
---
 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




_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

Reply via email to