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