Don't extend package name if extended already for multilib
cover Don't extend package name if extended already for multilib
From: Kai Kang <[email protected]>
This patch is for mips64 which could set for 2 kinds of multilbs:
MULTILIBS ?= "multilib:lib32 multilib:libn32" DEFAULTTUNE_virtclass-multilib-lib32 ?= "mips" DEFAULTTUNE_virtclass-multilib-libn32 ?= "mips64-n32"
Tested on Yocto with sample config for qemux86-64:
1 set MACHINE and multilibs in local.conf
===============================================
MACHINE = "qemux86-64"
require conf/multilib.conf
MULTILIBS = "multilib:lib32 multilib:lib64"
DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
DEFAULTTUNE_virtclass-multilib-lib64 = "x86-64"
===============================================
2 bitbake lib32-meta-ide-support core-image-sato
No such error shows:
ERROR: Nothing PROVIDES 'virtual/lib32-libn32-libc'.
Kai Kang (1):
toolchain-scripts.bbclass: do not extend dependency if extended
already
meta/classes/toolchain-scripts.bbclass | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
--
2.14.1
PATCH 1/1 toolchain-scripts.bbclass: do not extend dependency if extended already
From: Kai Kang <[email protected]>
When set MULTILIBS with two or more items, such as for mips64:
MULTILIBS ?= "multilib:lib32 multilib:libn32"
It extends dependency package name once in multilib.bbclass, and expand again in toolchain-scripts.bbclass which causes error:
| ERROR: Nothing PROVIDES 'virtual/lib32-libn32-libc'. Close matches: | virtual/libn32-libc | virtual/lib32-libc | virtual/libn32-librpc | ERROR: Required build target 'libn32-meta-ide-support' has no buildable providers. | Missing or unbuildable dependency chain was: ['libn32-meta-ide-support', 'virtual/lib32-libn32-libc']
Don't extend package name if it has been extended already.
--- meta/classes/toolchain-scripts.bbclass | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
meta/classes/toolchain-scripts.bbclass +7 -1
@@ -150,11 +150,17 @@ toolchain_create_sdk_siteconfig () { toolchain_create_sdk_siteconfig[vardepsexclude] = "TOOLCHAIN_CONFIGSITE_SYSROOTCACHE" python __anonymous () { + import re import oe.classextend deps = "" for dep in (d.getVar('TOOLCHAIN_NEED_CONFIGSITE_CACHE') or "").split(): deps += " %s:do_populate_sysroot" % dep - for variant in (d.getVar('MULTILIB_VARIANTS') or "").split(): + ml_variants = (d.getVar('MULTILIB_VARIANTS') or "").split() + for variant in ml_variants: + # don't extend if dep has been extended already + if filter(lambda x: re.match('(virtual/)?' + x, dep), ml_variants): + continue + clsextend = oe.classextend.ClassExtender(variant, d) newdep = clsextend.extend_name(dep) deps += " %s:do_populate_sysroot" % newdep
Signature · 1 line
2.14.1
Re: [PATCH 1/1] toolchain-scripts.bbclass: do not extend dependency if extended already
Quoted 9 lines · On 2017年10月18日 16:02, [email protected] wrote:
From: Kai Kang <[email protected]>
When set MULTILIBS with two or more items, such as for mips64:
MULTILIBS ?= "multilib:lib32 multilib:libn32"
It extends dependency package name once in multilib.bbclass, and expand again in toolchain-scripts.bbclass which causes error:
Quoted 8 lines
| ERROR: Nothing PROVIDES 'virtual/lib32-libn32-libc'. Close matches: | virtual/libn32-libc | virtual/lib32-libc | virtual/libn32-librpc | ERROR: Required build target 'libn32-meta-ide-support' has no buildable providers. | Missing or unbuildable dependency chain was: ['libn32-meta-ide-support', 'virtual/lib32-libn32-libc']Don't extend package name if it has been extended already.
Any comment? Thanks.
--Kai
Quoted 29 lines
Signed-off-by Kai Kang <[email protected]>--- meta/classes/toolchain-scripts.bbclass | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)meta/classes/toolchain-scripts.bbclass +7
-1@@ -150,11 +150,17 @@ toolchain_create_sdk_siteconfig () { toolchain_create_sdk_siteconfig[vardepsexclude] = "TOOLCHAIN_CONFIGSITE_SYSROOTCACHE" python __anonymous () { + import re import oe.classextend deps = "" for dep in (d.getVar('TOOLCHAIN_NEED_CONFIGSITE_CACHE') or "").split(): deps += " %s:do_populate_sysroot" % dep - for variant in (d.getVar('MULTILIB_VARIANTS') or "").split(): + ml_variants = (d.getVar('MULTILIB_VARIANTS') or "").split() + for variant in ml_variants: + # don't extend if dep has been extended already + if filter(lambda x: re.match('(virtual/)?' + x, dep), ml_variants): + continue + clsextend = oe.classextend.ClassExtender(variant, d) newdep = clsextend.extend_name(dep) deps += " %s:do_populate_sysroot" % newdep
Signature · 2 lines
Regards, Neil | Kai Kang