[oe-commits] [openembedded-core] 04/07: nativesdk.bbclass: set consistent staging dirs regardless of multilib

git at git.openembedded.org git at git.openembedded.org
Thu Sep 27 22:42:20 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master
in repository openembedded-core.

commit 665934a506cc560bfbc469f5ed095e7d54e353a5
Author: Chen Qi <Qi.Chen at windriver.com>
AuthorDate: Thu Sep 27 16:48:53 2018 +0800

    nativesdk.bbclass: set consistent staging dirs regardless of multilib
    
    For now, the RECIPE_SYSROOT of nativesdk recipes is ${WORKDIR}/recipe-sysroot
    if multilib is disabled and ${WORKDIR}/nativesdk-recipe-sysroot if multilib
    is enabled. And it's causing chaos. Problems I've met include:
    1) 'File Exists' error when doing extend_recipe_sysroot
    2) Rebuilding failure about cmake based nativesdk recipes if toggling multilib
    
    In nativesdk.bbclass, We've set MULTILIBS to be "", and we've changed MLPREFIX
    to be 'nativesdk-', I think we should also set consistent RECIPE_SYSROOT to be
    ${WORKDIR}/recipe-sysroot.
    
    Below is an example showing why previous settings will cause do_prepare_recipe_sysroot
    failure.
    
    e.g.
    A -> C
    B -> C
    A's RECIPE_SYSROOT is .../recipe-sysroot and B's RECIPE_SYSROOT is
    .../nativesdk-recipe-sysroot.
    As extend_recipe_sysroot function uses shared manifest, i.e., the same
    manifest of C for both A and B, then there must be one of them having
    the wrong manifest. And the wrong manifest results in RECIPE_SYSROOT
    not cleaned up before installing new components, thus the following error.
    
      Exception: FileExistsError: [Errno 17] File exists: xxx -> xxx
    
    This happens when toggling multilib and also between nativesdk recipes and
    crosssdk, cross-canadian recipes. The latter situation also explains
    why choosing ${WORKDIR}/recipe-sysroot instead of ${WORKDIR}/nativesdk-recipe-sysroot.
    If we use 'nativesdk-recipe-sysroot', we still need to modify the extend_recipe_sysroot
    function to treat crosssdk and cross-canadian as special cases. Using
    'recipe-sysroot' does not have this problem.
    
    Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/nativesdk.bbclass | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/meta/classes/nativesdk.bbclass b/meta/classes/nativesdk.bbclass
index ab566e9..f25b0c3 100644
--- a/meta/classes/nativesdk.bbclass
+++ b/meta/classes/nativesdk.bbclass
@@ -12,6 +12,11 @@ MACHINEOVERRIDES = ""
 
 MULTILIBS = ""
 
+# we need consistent staging dir whether or not multilib is enabled
+STAGING_DIR_HOST = "${WORKDIR}/recipe-sysroot"
+STAGING_DIR_TARGET = "${WORKDIR}/recipe-sysroot"
+RECIPE_SYSROOT = "${WORKDIR}/recipe-sysroot"
+
 #
 # Update PACKAGE_ARCH and PACKAGE_ARCHS
 #

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list