Bug 3393

Summary: Build fails when using Sourcery CodeBench Lite for ARM toolchain with multiple providers errors
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Stefan Stanacar <sstncr>
Component: coreAssignee: Christopher Larson <kergoth>
Status: RESOLVED WONTFIX QA Contact:
Severity: normal    
Priority: Medium CC: bluelightning, meta.mr.watcher, meta.watcher, sgw
Version: unspecified   
Target Milestone: 1.5   
Hardware: x86   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: No (bug/feature does not impact docs)
Attachments:
Description Flags
run.do_install for the second error none

Description Stefan Stanacar 2012-11-06 11:39:08 UTC
When trying to use Sourcery CodeBench Lite ARM toolchain to build a core-image-minimal image bitbake bails out with errors about multiple .bb files providing virtual/libc and others.

In meta/conf/distro/include/tcmode-external-sourcery.inc I changed:
   TARGET_PREFIX = "${CSL_TARGET_SYS}-"
to:
   TARGET_PREFIX ?= "${CSL_TARGET_SYS}-"
and in meta-yocto/conf/distro/poky.conf I added
   TCMODE = "external-csl"
   CSL_VER_MAIN  = "2012.03-57"
   EXTERNAL_TOOLCHAIN = "/home/stefans/csl"
   TARGET_PREFIX = "arm-none-linux-gnueabi-"


bitbake core-image-minimal

Build Configuration:
BB_VERSION        = "1.16.0"
TARGET_ARCH       = "arm"
TARGET_OS         = "linux-gnueabi"
MACHINE           = "qemuarm"
DISTRO            = "poky"
DISTRO_VERSION    = "1.3+snapshot-20121106"
TUNE_FEATURES     = "armv5 dsp thumb arm926ejs"
TARGET_FPU        = "soft"
meta              
meta-yocto        
meta-yocto-bsp    = "master:78983e939ab17f02f8911c8b0d0e326b419856b9"

ERROR: Multiple .bb files are due to be built which each provide virtual/libc (/home/stefans/yocto/poky/meta/recipes-core/eglibc/eglibc_2.16.bb /home/stefans/yocto/poky/meta/recipes-core/meta/external-sourcery-toolchain.bb).
 This usually means one provides something the other doesn't and should.
ERROR: Multiple .bb files are due to be built which each provide virtual/arm-none-linux-gnueabi-libc-for-gcc (/home/stefans/yocto/poky/meta/recipes-core/eglibc/eglibc_2.16.bb /home/stefans/yocto/poky/meta/recipes-core/meta/external-sourcery-toolchain.bb).
 This usually means one provides something the other doesn't and should.
ERROR: Multiple .bb files are due to be built which each provide virtual/libiconv (/home/stefans/yocto/poky/meta/recipes-core/eglibc/eglibc_2.16.bb /home/stefans/yocto/poky/meta/recipes-core/meta/external-sourcery-toolchain.bb).
 This usually means one provides something the other doesn't and should.
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: Function failed: do_install (see /home/stefans/yocto/builds/csl/tmp/work/armv5te-poky-linux-gnueabi/external-sourcery-toolchain-2012.03-57-r7/temp/log.do_install.2066 for further information)
ERROR: Logfile of failure stored in: /home/stefans/yocto/builds/csl/tmp/work/armv5te-poky-linux-gnueabi/external-sourcery-toolchain-2012.03-57-r7/temp/log.do_install.2066
Log data follows:
| DEBUG: Executing shell function do_install
| cp: target `/home/stefans/yocto/builds/csl/tmp/work/armv5te-poky-linux-gnueabi/external-sourcery-toolchain-2012.03-57-r7/image/lib' is not a directory
| ERROR: Function failed: do_install (see /home/stefans/yocto/builds/csl/tmp/work/armv5te-poky-linux-gnueabi/external-sourcery-toolchain-2012.03-57-r7/temp/log.do_install.2066 for further information)
ERROR: Task 260 (/home/stefans/yocto/poky/meta/recipes-core/meta/external-sourcery-toolchain.bb, do_install) failed with exit code '1'

---


[stefans@firebird csl]$ bitbake -D core-image-minimal | grep arm-none-linux-gnueabi-libc-for-gcc
DEBUG: checking PREFERRED_PROVIDER_virtual/arm-none-linux-gnueabi-libc-for-gcc (value external-sourcery-toolchain) against ['eglibc']
DEBUG: checking PREFERRED_PROVIDER_virtual/arm-none-linux-gnueabi-libc-for-gcc (value external-sourcery-toolchain) against ['eglibc']
DEBUG: checking PREFERRED_PROVIDER_virtual/arm-none-linux-gnueabi-libc-for-gcc (value external-sourcery-toolchain) against ['eglibc']
DEBUG: checking PREFERRED_PROVIDER_virtual/arm-none-linux-gnueabi-libc-for-gcc (value external-sourcery-toolchain) against ['eglibc']
DEBUG: providers for virtual/arm-none-linux-gnueabi-libc-for-gcc are: ['eglibc', 'external-sourcery-toolchain']
NOTE: selecting external-sourcery-toolchain to satisfy virtual/arm-none-linux-gnueabi-libc-for-gcc due to PREFERRED_PROVIDERS
DEBUG: sorted providers for virtual/arm-none-linux-gnueabi-libc-for-gcc are: ['/home/stefans/yocto/poky/meta/recipes-core/meta/external-sourcery-toolchain.bb', '/home/stefans/yocto/poky/meta/recipes-core/eglibc/eglibc_2.16.bb']
ERROR: Multiple .bb files are due to be built which each provide virtual/arm-none-linux-gnueabi-libc-for-gcc (/home/stefans/yocto/poky/meta/recipes-core/eglibc/eglibc_2.16.bb /home/stefans/yocto/poky/meta/recipes-core/meta/external-sourcery-toolchain.bb).

----

[stefans@firebird csl]$ ls -l /home/stefans/yocto/builds/csl/tmp/work/armv5te-poky-linux-gnueabi/external-sourcery-toolchain-2012.03-57-r7/image/
total 0
[stefans@firebird csl]$ cat /home/stefans/yocto/builds/csl/tmp/work/armv5te-poky-linux-gnueabi/external-sourcery-toolchain-2012.03-57-r7/temp/log.do_install.2066
DEBUG: Executing shell function do_install
cp: target `/home/stefans/yocto/builds/csl/tmp/work/armv5te-poky-linux-gnueabi/external-sourcery-toolchain-2012.03-57-r7/image/lib' is not a directory
ERROR: Function failed: do_install (see /home/stefans/yocto/builds/csl/tmp/work/armv5te-poky-linux-gnueabi/external-sourcery-toolchain-2012.03-57-r7/temp/log.do_install.2066 for further information)

----


There are two errors but I'm not sure if the second error (cp missing target) is related to the first one. 
Also, I have the same errors on danny release as well the above master commit.
Comment 1 Stefan Stanacar 2012-11-06 18:07:56 UTC
Created attachment 934 [details]
run.do_install for the second error
Comment 2 Stefan Stanacar 2012-11-06 18:19:07 UTC
run.do_install log has some weirdness in it: 

do_install() {
        # Use optimized files if available
        sysroot="ERROR: ld.so: object 'libpseudo.so' from LD_PRELOAD cannot be p
reloaded: ignored.
/home/stefans/csl/bin/../arm-none-linux-gnueabi/libc"

wth?!
After poking around I did this hack:

git diff meta/conf/distro/include/tcmode-external-sourcery.inc
diff --git a/meta/conf/distro/include/tcmode-external-sourcery.inc b/meta/conf/distro/include/tcmode-external-sourcery.inc
index 098c724..2e0d464 100644
--- a/meta/conf/distro/include/tcmode-external-sourcery.inc
+++ b/meta/conf/distro/include/tcmode-external-sourcery.inc
@@ -46,7 +46,7 @@ TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_HOST}"
 # files will be extracted into the OE sysroot
 def exttc_run(d, cmd):
     try:
-        return bb.process.run(cmd, shell=True, env={'PATH': d.getVar('PATH', True)})[0].rstrip()
+        return bb.process.run(cmd, shell=True, env={'PATH': d.getVar('PATH', True)}, stderr=False)[0].rstrip()
     except (OSError, bb.process.CmdError):
         return ''


Now I don't get the second error anymore (the one about cp) when doing bitbake core-image-minimal and I do see the error (instead of getting into sysroot):

NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: ld.so: object 'libpseudo.so' from LD_PRELOAD cannot be preloaded: ignored.
Currently 2 running tasks (237 of 1326):
0: external-sourcery-toolchain-2012.03-57-r7 do_install (pid 10380)
Comment 3 Paul Eggleton 2013-12-19 16:18:34 UTC
By community agreement we've removed external-sourcery-toolchain from OE-Core in master [1], in favour of meta-sourcery which is better maintained. Accordingly for 1.5 this is a WONTFIX; people should use meta-sourcery instead there also.

[1] http://cgit.openembedded.org/openembedded-core/commit/?id=7603b15415301679bccbcb89af688c211704a43a