Hi there,

I'm upgrading from Yocto 2.5  to 2.7. I have a recipe that (for legacy reasons) 
builds a 32bit "-native" executable. I am disabling uninative by setting

SSTATEPOSTUNPACKFUNCS_remove = "uninative_changeinterp"

This worked well with Yocto 2.5, but with Yocto 2.7 I'm getting

ERROR: When reparsing 
virtual:native:my-32bit-recipe_1.0.bb.do_populate_sysroot, the basehash value 
changed from <before> to <after>
ERROR: When reparsing virtual:native:my-32bit-recipe_1.0.bb.do_populate_lic, 
the basehash value changed from <before> to <after>
ERROR: my-32bit-recipe-native-1.0-r0 do_populate_sysroot: Taskhash mismatch 
<hash1> versus <hash2> for 
virtual:native:my-32bit-recipe_1.0.bb.do_populate_sysroot
[... lots of these...]

====================================

My debugging efforts so far:

Running 'bitbake-dumpsig 1.0-r0.do_populate_sysroot.sigdata.<hash>' on the 
failed build I'm seeing:

[...]
Variable RECIPE_SYSROOT_NATIVE value is ${WORKDIR}/recipe-sysroot-native
Variable SSTATECREATEFUNCS value is sstate_hardcode_path
Variable SSTATEPOSTCREATEFUNCS value is
Variable SSTATEPOSTINSTFUNCS value is
Variable SSTATEPOSTUNPACKFUNCS value is sstate_hardcode_path_unpack
_remove of
Variable SSTATE_BUILDDIR value is None
Variable SSTATE_EXTRAPATH value is
Variable SSTATE_INSTDIR value is None
[...]

Note the "_remove of" after the line containing SSTATEPOSTUNPACKFUNCS.

This is not present on Yocto 2.5 and (I'm assuming) is the culprit here. 
Unfortunately I don't know where it comes from.

========================================

My current solution:

patch uninative.bbclass to prevent it from processing anything other than 
x86-64 binaries:

commit a72ed63fc43d1841b6a219cb32a19d48d161904d (HEAD -> warrior)

Author: Wolfgang Tolkien <w@tolkien.email>

Date:   Wed May 29 14:10:48 2019 -0700

    make uninative processing skip non- x86-64 binaries

diff --git a/meta/classes/uninative.bbclass b/meta/classes/uninative.bbclass

index ba99fb6e8f..714d996916 100644

--- a/meta/classes/uninative.bbclass

+++ b/meta/classes/uninative.bbclass

@@ -161,6 +161,8 @@ python uninative_changeinterp () {

                 continue

             if not elf.isDynamic():

                 continue

+            if elf.machine() != 0x3E:

+                continue

             subprocess.check_output(("patchelf-uninative", 
"--set-interpreter", d.getVar("UNINATIVE_LOADER"), f), stderr=subprocess.STDOUT)

}

Any help would be appreciated!

Thanks,
Wolfgang
-- 
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to