[gnome-continuous-yocto/gnomeostree-3.28-rocko: 3028/8267] insane.bbclass: fix package_qa_check_arch() for mips64-o32



commit 901e632a492bd85067f34e8734b151718594c00f
Author: Robert Yang <liezhi yang windriver com>
Date:   Fri Oct 14 03:08:37 2016 -0700

    insane.bbclass: fix package_qa_check_arch() for mips64-o32
    
    Fixed:
    MACHINE = "qemumips64"
    DEFAULTTUNE = "mips64-o32"
    
    $ bitbake linux-yocto
    ERROR: linux-yocto-4.8+gitAUTOINC+03bf3dd731_674818dad5-r0 do_package_qa: QA Issue: Bit size did not 
match (32 to 64) linux-yocto on
        
/work/qemumips64-poky-linux/linux-yocto/4.8+gitAUTOINC+03bf3dd731_674818dad5-r0/packages-split/kernel-module-parport/lib/modules/4.8.0-yocto-standard/kernel/drivers/parport/parport.ko
 [arch]
    
    The mips64-n32 works since it would set ABIEXTENSION to "n32" so that
    TARGET_OS is linux-gnun32, and it will skip the check, but "mips64-o32"
    doesn't set ABIEXTENSION to "o32", "n32" or "32", so the error happend.
    
    Skip the check if mips64.*32 matches DEFAULTTUNE can fix the problem.
    Another way to fix the problem is define ABIEXTENSION to "o32" or "32"
    for mips64-o32, but that may make things confused since "o32" is purely
    32 bit.
    
    [YOCTO #10305]
    
    (From OE-Core rev: 4e61d8d6f4619dbfaeb5ca642449de7cf4b3e92d)
    
    Signed-off-by: Robert Yang <liezhi yang windriver com>
    Signed-off-by: Ross Burton <ross burton intel com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 meta/classes/insane.bbclass |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)
---
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index 29687d0..1d73778 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -515,6 +515,8 @@ def package_qa_check_arch(path,name,d, elf, messages):
     """
     Check if archs are compatible
     """
+    import re
+
     if not elf:
         return
 
@@ -543,12 +545,12 @@ def package_qa_check_arch(path,name,d, elf, messages):
         = package_qa_get_machine_dict(d)[target_os][target_arch]
 
     # Check the architecture and endiannes of the binary
-    if not ((machine == elf.machine()) or \
-        ((("virtual/kernel" in provides) or bb.data.inherits_class("module", d) ) and (target_os == 
"linux-gnux32" or target_os == "linux-gnun32"))):
+    is_32 = (("virtual/kernel" in provides) or bb.data.inherits_class("module", d)) and \
+            (target_os == "linux-gnux32" or re.match('mips64.*32', d.getVar('DEFAULTTUNE', True)))
+    if not ((machine == elf.machine()) or is_32):
         package_qa_add_message(messages, "arch", "Architecture did not match (%s, expected %s) on %s" % \
                  (oe.qa.elf_machine_to_string(elf.machine()), oe.qa.elf_machine_to_string(machine), 
package_qa_clean_path(path,d)))
-    elif not ((bits == elf.abiSize()) or  \
-        ((("virtual/kernel" in provides) or bb.data.inherits_class("module", d) ) and (target_os == 
"linux-gnux32" or target_os == "linux-gnun32"))):
+    elif not ((bits == elf.abiSize()) or is_32):
         package_qa_add_message(messages, "arch", "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():


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]