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

Reply via email to