On Mon, Nov 16, 2009 at 4:40 PM, Gary Thomas <[email protected]> wrote: > On 11/13/2009 04:00 PM, Gary Thomas wrote: >> >> 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)! >> > > Any ideas how I can move forward with this?
Gary, I haven't (yet) dug into org.oe.dev much myself, but I did extend and enhance some recipes for building Code Sourcery toolchains in Poky originally written by the Opened Hand crew. You won't be able to use the "POKYMODE" system out of the box, but most of the ideas are there (relevant PROVIDES, RPROVIDES, etc). You might draw some inspiration from, http://git.pokylinux.org/cgit.cgi/poky/tree/meta/packages/meta/external-csl-toolchain_2008q3-72.bb and http://git.pokylinux.org/cgit.cgi/poky/tree/meta/conf/distro/include/poky-external-csl2008q3.inc Hope you find it helpful, Mike > -- > ------------------------------------------------------------ > 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 > _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
