Skip to contentSkip to conversation

Don't extend package name if extended already for multilib

PATCH In review [email protected] 1 participant 3 messages Oct 18, 2017 – Nov 16, 2017

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw

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
index 9bcfe708c7..4e4334abbb 100644
@@ -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
author
#2 lore raw

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
---
  meta/classes/toolchain-scripts.bbclass | 8 +++++++-
  1 file changed, 7 insertions(+), 1 deletion(-)
meta/classes/toolchain-scripts.bbclass +7 -1
index 9bcfe708c7..4e4334abbb 100644
@@ -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