Skip to contentSkip to conversation

A QA_check fix for x32 kernel module packages

PATCH Superseded [email protected] 2 participants 4 messages Mar 4, 2014

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

cover A QA_check fix for x32 kernel module packages

From: Nitin A Kamble <[email protected]>

The kernel modules for x32 target are 64bit, but the QA_check was expecting them to be 32bit. The QA_check is fixed in this commit to avoid false errors.

Thanks,
Nitin

The following changes since commit 83b3e3e8e34a2512bcb1fe298715ece58c83dca3:

package_manager.py: RpmPM: don't add smart channel if already added (2014-03-03 15:05:32 -0800)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib nitin/fix1
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=nitin/fix1

Nitin A Kamble (1):
QA_check: special case kernel modules for x32 targets

 meta/classes/insane.bbclass | 4 ++--
 meta/classes/module.bbclass | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)
Signature · 1 line
1.8.1.4
#1 lore raw

PATCH 1/1 QA_check: special case kernel modules for x32 targets

From: Nitin A Kamble <[email protected]>

The Kernel module packages for x32 target have 64 bit binaries, which breaks the QA_check expecting all the packages to be 32bit.

Make a special case for kernel module packages for x32 targets, to avoid this false error.

Fixes Bug:
[YOCTO #5903]

---
 meta/classes/insane.bbclass | 4 ++--
 meta/classes/module.bbclass | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)
meta/classes/insane.bbclass +2 -2
index cf00e12..4d3916d 100644
@@ -443,11 +443,11 @@ def package_qa_check_arch(path,name,d, elf, messages):
 
     # Check the architecture and endiannes of the binary
     if not ((machine == elf.machine()) or \
-        ("virtual/kernel" in provides) and (target_os == "linux-gnux32")):
+        (("virtual/kernel" in provides) or (KERNEL_MODULE_RECIPE == "1")) and (target_os == "linux-gnux32")):
         messages.append("Architecture did not match (%d to %d) on %s" % \
                  (machine, elf.machine(), package_qa_clean_path(path,d)))
     elif not ((bits == elf.abiSize()) or  \
-        ("virtual/kernel" in provides) and (target_os == "linux-gnux32")):
+        (("virtual/kernel" in provides) or (KERNEL_MODULE_RECIPE == "1")) and (target_os == "linux-gnux32")):
         messages.append("Bit size did not match (%d to %d) %s on %s" % \
                  (bits, elf.abiSize(), bpn, package_qa_clean_path(path,d)))
     elif not littleendian == elf.isLittleEndian():
meta/classes/module.bbclass +1 -0
index ad6f7af..de1d97b 100644
@@ -1,4 +1,5 @@
 DEPENDS += "virtual/kernel"
+KERNEL_MODULE_RECIPE = "1"
 
 inherit module-base kernel-module-split
 
Signature · 1 line
1.8.1.4
#2 lore raw

Re: [PATCH 1/1] QA_check: special case kernel modules for x32 targets

Review

Quoted 2 lines · On Tue, 2014-03-04 at 10:28 -0800, [email protected] wrote:
(quoted diff) +1 -1
-        ("virtual/kernel" in provides) and (target_os == "linux-gnux32")):
+        (("virtual/kernel" in provides) or (KERNEL_MODULE_RECIPE == "1")) and (target_os == "linux-gnux32")):

Can you not use bb.data.inherits_class("module") rather than adding this extra variable?

Also, out of curiosity, I don't entirely understand how the code above can possibly work. KERNEL_MODULE_RECIPE is a bitbake variable that's either defined to 1 or not defined at all, right? Is there some special magic nowadays that allows you to refer to it transparently from python code without using d.getVar()?

p.

#3 lore raw

Re: [PATCH 1/1] QA_check: special case kernel modules for x32 targets

Quoted 5 lines · Phil Blundell

Review

Quoted 2 lines · On Tue, 2014-03-04 at 10:28 -0800, [email protected] wrote:
(quoted diff) +1 -1
-        ("virtual/kernel" in provides) and (target_os == "linux-gnux32")):
+        (("virtual/kernel" in provides) or (KERNEL_MODULE_RECIPE == "1")) and (target_os == "linux-gnux32")):

Can you not use bb.data.inherits_class("module") rather than adding this extra variable?

This would simplify the code.

Quoted 5 lines

Also, out of curiosity, I don't entirely understand how the code above can possibly work. KERNEL_MODULE_RECIPE is a bitbake variable that's either defined to 1 or not defined at all, right? Is there some special magic nowadays that allows you to refer to it transparently from python code without using d.getVar()?

There is no such special magic. This fix need to be fixed.

Thanks,
Nitin

Quoted 3 lines

p.