On Fri, Feb 14, 2020 at 5:03 AM Richard Purdie <richard.pur...@linuxfoundation.org> wrote: > > There is a long standing issue where a binary could be installed into the > sysroot before its library dependencies. We've always argued nothing should > use the binary until its been installed by a dependency but there are issues > around binaries which conflict with the host system, for example patch, > python3, gzip and more. > > With the recent patch changes we've see issues like: > ERROR: gdb-cross-canadian-powerpc-8.3.1-r0 do_patch: Command Error: 'quilt > --quiltrc > /home/pokybuild/yocto-worker/qemuppc/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/gdb-cross-canadian-powerpc/8.3.1-r0/recipe-sysroot-native/etc/quiltrc > push' exited with 0 Output: > Applying patch 0009-Change-order-of-CFLAGS.patch > patch: /lib64/libattr.so.1: version `ATTR_1.3' not found (required by patch) > Patch 0009-Change-order-of-CFLAGS.patch does not apply (enforce with -f) > > which is a symptom of this issue (libattr-native is a dependency of > patch-native). >
ah so this was the problem I wondered > There are other ways to fix this such as disabling libattr in patch, > installing > patch to a subdirectory and requiring PATH manipulation and so on. > > We can simply fix the staging code to handle /bin/ after everything else so > lets > do that and avoid all these other complications. > > Signed-off-by: Richard Purdie <richard.pur...@linuxfoundation.org> > --- > meta/classes/staging.bbclass | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/meta/classes/staging.bbclass b/meta/classes/staging.bbclass > index 4dd2ed01010..530e23b1853 100644 > --- a/meta/classes/staging.bbclass > +++ b/meta/classes/staging.bbclass > @@ -470,6 +470,7 @@ python extend_recipe_sysroot() { > elif os.path.lexists(depdir + "/" + c): > os.unlink(depdir + "/" + c) > > + binfiles = {} > # Now handle installs > for dep in configuredeps: > c = setscenedeps[dep][0] > @@ -562,7 +563,16 @@ python extend_recipe_sysroot() { > if l.endswith("/"): > staging_copydir(l, targetdir, dest, seendirs) > continue > - staging_copyfile(l, targetdir, dest, postinsts, seendirs) > + if "/bin/" in l: > + # defer /bin/* files until last in case they need > libs > + binfiles[l] = (targetdir, dest) > + else: > + staging_copyfile(l, targetdir, dest, postinsts, > seendirs) > + > + # Handle deferred binfiles > + for l in binfiles: > + (targetdir, dest) = binfiles[l] > + staging_copyfile(l, targetdir, dest, postinsts, seendirs) > > bb.note("Installed into sysroot: %s" % str(msg_adding)) > bb.note("Skipping as already exists in sysroot: %s" % str(msg_exists)) > -- > 2.20.1 > > -- > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core