On 10/15/2014 07:00 PM, Laurentiu Palcu wrote:
Hi Hongxu,

On Wed, Oct 15, 2014 at 05:23:16PM +0800, Hongxu Jia wrote:
There is a failure to build lib32-meta-toolchain:
...
|ERROR: lib32-packagegroup-core-standalone-sdk-target not found in the base
feeds (qemux86_64 x86 noarch any all).
...

In package_manager.py, the variable 'DEFAULTTUNE_virtclass-multilib-lib32'
is used to process multilib image/toolchain. But for the build of lib32-
meta-toolchain, the value of 'DEFAULTTUNE_virtclass-multilib-lib32' is
deleted. In 'bitbake lib32-meta-toolchain -e', we got:
...
|# $DEFAULTTUNE_virtclass-multilib-lib32 [2 operations]
|#   set? /home/jiahongxu/yocto/build-20141010-yocto/conf/local.conf:237
|#     "x86"
|#   del data_smart.py:406 [finalize]
|#     ""
|# pre-expansion value:
|#   "None"
...

The commit 899d45b90061eb3cf3e71029072eee42cd80930c in oe-core deleted
it at DataSmart.finalize
...
Author: Richard Purdie <richard.pur...@linuxfoundation.org>
Date:   Tue May 31 23:52:50 2011 +0100

     bitbake/data_smart: Change overrides behaviour to remove
        expanded variables from the datastore
...

We add an internal variable 'DEFAULTTUNE_ML_<multilib>', assign it with the
value of 'DEFAULTTUNE_virtclass-multilib-lib32' before deleting.

In package_manager.py, we use DEFAULTTUNE_virtclass-multilib-lib32 first,
if it is not available, and try to use DEFAULTTUNE_ML_<multilib>

[YOCTO #6842]
Is this an RPM only issue? (It's not clear from the bug description...) If
not, maybe this should be fixed for the other backends too.

Yes, it is rpm only, only rpm staff use the variable
'DEFAULTTUNE_virtclass-multilib-lib32'.

Signed-off-by: Hongxu Jia <hongxu....@windriver.com>
---
  meta/classes/multilib.bbclass  | 1 +
  meta/lib/oe/package_manager.py | 3 +++
  2 files changed, 4 insertions(+)

diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass
index 6e143dd..6aad894 100644
--- a/meta/classes/multilib.bbclass
+++ b/meta/classes/multilib.bbclass
@@ -60,6 +60,7 @@ python multilib_virtclass_handler () {
      newtune = e.data.getVar("DEFAULTTUNE_" + "virtclass-multilib-" + variant, 
False)
      if newtune:
          e.data.setVar("DEFAULTTUNE", newtune)
+        e.data.setVar('DEFAULTTUNE_ML_%s' % variant, newtune)
  }
addhandler multilib_virtclass_handler
diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index 27fdf26..d42cdcc 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -63,6 +63,9 @@ class RpmIndexer(Indexer):
                      localdata = bb.data.createCopy(self.d)
                      default_tune_key = "DEFAULTTUNE_virtclass-multilib-" + 
eext[1]
                      default_tune = localdata.getVar(default_tune_key, False)
+                    if not default_tune:
Testing for None should always be done using 'is' or 'is not'. There's a
good explanation for this in PEP8.

Got it, thanks for figuring it out, I will read PEP8, V3 incoming

//Hongxu

laurentiu

+                        default_tune_key = "DEFAULTTUNE_ML_" + eext[1]
+                        default_tune = localdata.getVar(default_tune_key, 
False)
                      if default_tune:
                          localdata.setVar("DEFAULTTUNE", default_tune)
                          bb.data.update_data(localdata)
--
1.9.1

--
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

--
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to