Skip to contentSkip to conversation

multilib.bbclass/package_manager.py: fix <multilib>-meta-toolchain build failure

PATCH Superseded Hongxu Jia 2 participants 4 messages Oct 15, 2014

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore

Hongxu Jia

author
#0 lore raw

v2 cover multilib.bbclass/package_manager.py: fix <multilib>-meta-toolchain build failure

Changed in V2:
V1 caused build failure of meta-toolchain, in order to avoid it, we should use DEFAULTTUNE_virtclass-multilib-lib32 first, if it is not available, and try to use DEFAULTTUNE_ML_<multilib>

Test steps:

1. env
vim local.conf
...
MACHINE = "qemux86-64"
require conf/multilib.conf
MULTILIBS ?= "multilib:lib32"
DEFAULTTUNE_virtclass-multilib-lib32 ?= "x86"
...

2. build lib32-meta-toolchain success

$ bitbake lib32-meta-toolchain

3. build meta-toolchain success

$ bitbake meta-toolchain

//Hongxu

The following changes since commit ccf5a4d2342c4fd40e4e0b332ea7e34e0bf175d4:

build-appliance-image: Update to dizzy head revision (2014-10-11 08:11:17 +0100)

are available in the git repository at:

git://git.pokylinux.org/poky-contrib hongxu/fix-lib32-meta-toolchain
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=hongxu/fix-lib32-meta-toolchain

Hongxu Jia (1):
multilib.bbclass/package_manager.py: fix <multilib>-meta-toolchain
build failure

 meta/classes/multilib.bbclass  | 1 +
 meta/lib/oe/package_manager.py | 3 +++
 2 files changed, 4 insertions(+)
Signature · 1 line
1.9.1
author
#1 lore raw

PATCH v2 1/1 multilib.bbclass/package_manager.py: fix <multilib>-meta-toolchain build failure

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

---
 meta/classes/multilib.bbclass  | 1 +
 meta/lib/oe/package_manager.py | 3 +++
 2 files changed, 4 insertions(+)
meta/classes/multilib.bbclass +1 -0
index 6e143dd..6aad894 100644
@@ -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
meta/lib/oe/package_manager.py +3 -0
index 27fdf26..d42cdcc 100644
@@ -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:
+                        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)
Signature · 1 line
1.9.1
#2 lore raw

Hi Hongxu,

Quoted 30 lines · Hongxu Jia

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 <[email protected]>
Date:   Tue May 31 23:52:50 2011 +0100

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

Quoted 7 lines

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.

Quoted 24 lines
---
 meta/classes/multilib.bbclass  | 1 +
 meta/lib/oe/package_manager.py | 3 +++
 2 files changed, 4 insertions(+)
meta/classes/multilib.bbclass +1 -0
index 6e143dd..6aad894 100644
@@ -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
meta/lib/oe/package_manager.py +0 -0
index 27fdf26..d42cdcc 100644

meta/lib/oe/package_manager.py class RpmIndexer(Indexer): · line 66

Quoted 4 lines
meta/lib/oe/package_manager.py +1 -0
@@ -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.

laurentiu

Quoted 13 lines
meta/lib/oe/package_manager.py +2 -0
+                        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)
Signature · 7 lines
1.9.1

-- 
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core
author
#3 lore raw
Quoted 36 lines · Laurentiu Palcu

Hi Hongxu,

Quoted 33 lines · Hongxu Jia

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

Quoted 6 lines
Quoted 4 lines

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'.

Quoted 17 lines
Quoted 17 lines
---
  meta/classes/multilib.bbclass  | 1 +
  meta/lib/oe/package_manager.py | 3 +++
  2 files changed, 4 insertions(+)
meta/classes/multilib.bbclass +1 -0
index 6e143dd..6aad894 100644
@@ -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)
  }
 
Quoted 12 lines

meta/lib/oe/package_manager.py class RpmIndexer(Indexer): · line 66

Quoted 10 lines
meta/classes/multilib.bbclass +0 -0
  addhandler multilib_virtclass_handler
meta/lib/oe/package_manager.py +1 -0
index 27fdf26..d42cdcc 100644
@@ -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

Quoted 15 lines

laurentiu

Quoted 13 lines
meta/lib/oe/package_manager.py +2 -0
+                        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)
Signature · 7 lines
1.9.1

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