multilib.bbclass/package_manager.py: fix <multilib>-meta-toolchain build failure
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
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
@@ -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
@@ -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
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_64x86 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
899d45b90061eb3cf3e71029072eee42cd80930cin oe-core deleted it at DataSmart.finalize
...Author: Richard Purdie <[email protected]> Date: Tue May 31 23:52:50 2011 +0100bitbake/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
Signed-off-by Hongxu Jia <[email protected]>--- meta/classes/multilib.bbclass | 1 + meta/lib/oe/package_manager.py | 3 +++ 2 files changed, 4 insertions(+)meta/classes/multilib.bbclass +1
-0@@ -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_handlermeta/lib/oe/package_manager.py +0
-0
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
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_64x86 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
899d45b90061eb3cf3e71029072eee42cd80930cin oe-core deleted it at DataSmart.finalize
...Author: Richard Purdie <[email protected]> Date: Tue May 31 23:52:50 2011 +0100bitbake/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
Signed-off-by Hongxu Jia <[email protected]>--- meta/classes/multilib.bbclass | 1 + meta/lib/oe/package_manager.py | 3 +++ 2 files changed, 4 insertions(+)meta/classes/multilib.bbclass +1
-0@@ -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
-0addhandler multilib_virtclass_handlermeta/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.
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