On 11/13/2009 11:41 AM, Chris Conroy wrote:
On Fri, 2009-11-13 at 10:25 -0700, Gary Thomas wrote:
This helped me find the problem - libgcc was required by busybox and
the default provider for libgcc included gcc-cross.

I ended up with only these [few] changes to get my own toolchain to
do the job:

    #
    # Use prebuilt compiler components
    #
    TOOLCHAIN = "external"
    HOST_SYS = "${TARGET_ARCH}-${TARGET_OS}"
    TARGET_SYS = "${TARGET_ARCH}-${TARGET_OS}"
    ASSUME_PROVIDED += " linux-libc-headers "
    ASSUME_PROVIDED += " virtual/${TARGET_PREFIX}gcc "
    ASSUME_PROVIDED += " virtual/${TARGET_PREFIX}gcc-cross "
    ASSUME_PROVIDED += " virtual/${TARGET_PREFIX}gcc-initial "
    ASSUME_PROVIDED += " virtual/${TARGET_PREFIX}gcc-intermediate "
    ASSUME_PROVIDED += " virtual/${TARGET_PREFIX}binutils "
    ASSUME_PROVIDED += " virtual/${TARGET_PREFIX}libc-for-gcc "
    ASSUME_PROVIDED += " libgcc "
    ASSUME_PROVIDED += " virtual/libc "
    ASSUME_PROVIDED += " virtual/libintl "
    ASSUME_PROVIDED += " virtual/libiconv "
    export TARGET_LDFLAGS = "-L${STAGING_DIR_TARGET}${layout_libdir} \
                             
-Wl,-rpath-link,${STAGING_DIR_TARGET}${layout_libdir} \
                             -Wl,-O1"

The HOST_SYS and TARGET_SYS changes were necessary because my toolchain
is called 'powerpc-linux-XXX', not 'powerpc-oe-linux-XXX'.

I chose these changes (instead of just your advice) because I was already
down this path.  Sadly, this incantation *did* complete the build, but the
resulting file system did not import any of the "provided" libraries from
my external toolchain.  Did I miss something that would let the build
import these libraries?

Yeah, this is the problem with ASSUME_PROVIDED as I see it. It removes
the build system knowledge of these things and basically gives the
responsibility for managing them back to you. Not good.


Finally, in an effort to explore and understand more, I tried your method:
    #
    # Use prebuilt compiler components
    #
    TOOLCHAIN = "external"
    HOST_SYS = "${TARGET_ARCH}-${TARGET_OS}"
    TARGET_SYS = "${TARGET_ARCH}-${TARGET_OS}"
    export TARGET_LDFLAGS = "-L${STAGING_DIR_TARGET}${layout_libdir} \
                             
-Wl,-rpath-link,${STAGING_DIR_TARGET}${layout_libdir} \
                             -Wl,-O1"
    PREFERRED_PROVIDER_linux-libc-headers = "external-toolchain"
    PREFERRED_PROVIDER_glibc-thread-db = "external-toolchain"
    PREFERRED_PROVIDER_libstdc++-dev = "external-toolchain"
    PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "external-toolchain"
    PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "external-toolchain"
    PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = 
"external-toolchain"
    PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-intermediate =  
"external-toolchain"
    PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "external-toolchain"
    PREFERRED_PROVIDER_virtual/binutils = "external-toolchain"
    PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc =  
"external-toolchain"
    PREFERRED_PROVIDER_virtual/libc =  "external-toolchain"
    PREFERRED_PROVIDER_virtual/libintl =  "external-toolchain"
    PREFERRED_PROVIDER_virtual/libiconv =  "external-toolchain"

Which led to these errors right away:
    ERROR: Conflicting PREFERRED_PROVIDER entries were found which resulted in 
an attempt to select multiple providers
    (['/local/Angstrom_BeagleBoard  /openembedded/recipes/glibc/glibc_2.6.1.bb',
    
'/local/Angstrom_BeagleBoard/openembedded/recipes/meta/external-toolchain.bb']) 
for runtime dependecy libsegfault
    The entries resulting in this conflict were: 
['PREFERRED_PROVIDER_virtual/libc = glibc', 'PREFERRED_PROVIDER_virtual/libintl 
= external-toolchain']
    ERROR: Conflicting PREFERRED_PROVIDER entries were found which resulted in 
an attempt to select multiple providers
    (['/local/Angstrom_BeagleBoard/openembedded/recipes/gcc/gcc-cross_4.4.2.bb',
    
'/local/Angstrom_BeagleBoard/openembedded/recipes/meta/external-toolchain.bb']) 
for runtime dependecy libgcc
    The entries resulting in this conflict were: 
['PREFERRED_PROVIDER_virtual/powerpc-linux-gcc = gcc-cross', 
'PREFERRED_PROVIDER_virtual/libintl = external-toolchain']


You may need to edit the RPROVIDES of your toolchain. Here's what mine
looks like:

RPROVIDES = " glibc-dbg glibc catchsegv sln nscd ldd localedef
glibc-utils glibc-dev glibc-locale libsegfault glibc-extra-nss
glibc-thread-db glibc-pcprofile \
               libgcc libgcc-dev libstdc++-dev libstdc++"
PACKAGES_DYNAMIC = "glibc-gconv-*"
INHIBIT_DEFAULT_DEPS = "1"

Still no joy, I'm afraid.  I now get a *huge* series of messages like these:

NOTE: preferred version 2.11.4.1 of xf86-video-geode not available (for item 
libsegfault)
NOTE: preferred version 1.0.1 of font-screen-cyrillic not available (for item 
libsegfault)
NOTE: preferred version 1.2.4 of opie-securityplugin-dummy not available (for 
item libsegfault)
NOTE: preferred version 6.9.0 of xf86-video-ati not available (for item 
libsegfault)
NOTE: preferred version 12.5.1 of xf86-input-vmmouse not available (for item 
libsegfault)
ERROR: Conflicting PREFERRED_PROVIDER entries were found which resulted in an attempt to select multiple providers (['/local/Angstrom_BeagleBoard/openembedded/recipes/gcc/gcc-cross_4.4.2.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxpm_3.5.7.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libice_1.0.4.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxrandr_1.2.3.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxfixes_4.0.3.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxinerama_1.0.3.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/libqpe/libqpe-opie_1.2.4.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libx11_1.1.5.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-proto/xproto_7.0.13.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxt_1.0.5.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxv_1.0.4.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxcursor_1.1.9.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxrender_0.9.4.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-xserver/xserver-xorg_1.5.3.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/gcc/gcc-cross-intermediate_4.4.2.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxext_1.0.4.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxi_1.2.0.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxmu_1.0.4.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/glibc/glibc_2.6.1.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/binutils/binutils-cross_2.20.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/glibc/glibc-initial_2.6.1.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxcomposite_0.4.0.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libsm_1.1.0.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxft_2.1.13.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/gcc/gcc-cross-initial_4.4.2.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-app/xrandr_1.2.3.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxaw_1.0.4.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxxf86vm_1.0.2.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/qte/qte-mt_2.3.10.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/xorg-lib/libxdamage_1.1.1.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/linux-libc-headers/linux-libc-headers_2.6.23.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/gnome/gconf-dbus_svn.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/avahi/avahi_0.6.24.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/libgpewidget/libgpewidget_0.117.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/libsdl/libsdl-x11_1.2.11.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/meta/external-toolchain.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/linux/linux_2.6.31.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/gtk+/gtk+_2.14.2.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/libusb/libusb_0.1.12.bb', '/local/Angstrom_BeagleBoard/openembedded/recipes/db/db3_3.2.9.bb']) for runtime dependecy libsegfault The entries resulting in this conflict were: ['PREFERRED_PROVIDER_virtual/powerpc-linux-gcc = gcc-cross', 'PREFERRED_PROVIDER_libxpm = libxpm', 'PREFERRED_PROVIDER_libice = libice', 'PREFERRED_PROVIDER_libxrandr = libxrandr', 'PREFERRED_PROVIDER_libxfixes = libxfixes', 'PREFERRED_PROVIDER_libxinerama = libxinerama', 'PREFERRED_PROVIDER_virtual/libqpe1 = libqpe-opie', 'PREFERRED_PROVIDER_virtual/libx11 = libx11', 'PREFERRED_PROVIDER_xproto = xproto', 'PREFERRED_PROVIDER_libxt = libxt', 'PREFERRED_PROVIDER_libxv = libxv', 'PREFERRED_PROVIDER_libxcursor = libxcursor', 'PREFERRED_PROVIDER_libxrender = libxrender', 'PREFERRED_PROVIDER_virtual/xserver = xserver-xorg', 'PREFERRED_PROVIDER_virtual/powerpc-linux-gcc-intermediate = gcc-cross-intermediate', 'PREFERRED_PROVIDER_libxext = libxext', 'PREFERRED_PROVIDER_libxi = libxi', 'PREFERRED_PROVIDER_libxmu = libxmu', 'PREFERRED_PROVIDER_virtual/libc = glibc', 'PREFERRED_PROVIDER_virtual/powerpc-linux-binutils = binutils-cross', 'PREFERRED_PROVIDER_virtual/powerpc-linux-libc-initial = glibc-initial', 'PREFERRED_PROVIDER_libxcomposite = libxcomposite', 'PREFERRED_PROVIDER_libsm = libsm', 'PREFERRED_PROVIDER_libxft = libxft', 'PREFERRED_PROVIDER_virtual/powerpc-linux-gcc-initial = gcc-cross-initial', 'PREFERRED_PROVIDER_xrandr = xrandr', 'PREFERRED_PROVIDER_libxaw = libxaw', 'PREFERRED_PROVIDER_libxxf86vm = libxxf86vm', 'PREFERRED_PROVIDER_virtual/libqte2 = qte-mt', 'PREFERRED_PROVIDER_libxdamage = libxdamage', 'PREFERRED_PROVIDER_linux-libc-headers = linux-libc-headers', 'PREFERRED_PROVIDER_gconf = gconf-dbus', 'PREFERRED_PROVIDER_avahi = avahi', 'PREFERRED_PROVIDER_libgpewidget = libgpewidget', 'PREFERRED_PROVIDER_virtual/libsdl = libsdl-x11', 'PREFERRED_PROVIDER_virtual/libintl = external-toolchain', 'PREFERRED_PROVIDER_virtual/kernel = linux', 'PREFERRED_PROVIDER_gtk+ = gtk+', 'PREFERRED_PROVIDER_virtual/libusb0 = libusb', 'PREFERRED_PROVIDER_virtual/db = db3']

Why is this so hard??  I just want to use the tools I already
have (and my customers are comfortable with)!

--
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------

_______________________________________________
Openembedded-devel mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel

Reply via email to