[yocto] Yocto 2.7: SSTATEPOSTUNPACKFUNCS_remove not working

Wolfgang Tolkien w at tolkien.email
Wed May 29 14:17:52 PDT 2019


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 at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20190529/d7962bc2/attachment.html>


More information about the yocto mailing list