On Sat, 2012-02-25 at 01:05 +0100, Martin Jansa wrote:
> On Thu, Feb 23, 2012 at 10:27:53AM +0000, Richard Purdie wrote:
> > On Mon, 2012-02-13 at 16:40 +0100, Martin Jansa wrote:
> > > * seems like config/config in -L was also wrong
> > > 
> > > Signed-off-by: Martin Jansa <martin.ja...@gmail.com>
> > > ---
> > >  meta/recipes-devtools/gdb/gdb-cross-canadian.inc |   10 ++++++++--
> > >  1 files changed, 8 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/meta/recipes-devtools/gdb/gdb-cross-canadian.inc 
> > > b/meta/recipes-devtools/gdb/gdb-cross-canadian.inc
> > > index b5746ce..bac63b7 100644
> > > --- a/meta/recipes-devtools/gdb/gdb-cross-canadian.inc
> > > +++ b/meta/recipes-devtools/gdb/gdb-cross-canadian.inc
> > > @@ -10,12 +10,18 @@ RDEPENDS += "python-nativesdk-core 
> > > python-nativesdk-lang python-nativesdk-re \
> > >  
> > >  EXTRA_OECONF_append = "--with-python=${WORKDIR}/python"
> > >  
> > > +NATIVESDK_NAME = "oecore-${SDK_ARCH}-${SDK_ARCH}"
> > > +NATIVESDK_PATH = "/usr/local/${NATIVESDK_NAME}"
> > > +NATIVESDK_PATHNATIVE = "${NATIVESDK_PATH}/sysroots/${SDK_SYS}"
> > > +NATIVESDK_LIBDIR = "${NATIVESDK_PATHNATIVE}${libdir_nativesdk}"
> > > +NATIVESDK_INCLUDEDIR = "${NATIVESDK_PATHNATIVE}${includedir_nativesdk}"
> > > +
> > >  do_configure_prepend() {
> > >  cat > ${WORKDIR}/python << EOF
> > >  #! /bin/sh
> > >  case "\$2" in
> > > -        --includes) echo 
> > > "-I${STAGING_DIR}/${HOST_ARCH}-nativesdk${HOST_VENDOR}-${HOST_OS}${exec_prefix}/include/python${PYTHON_BASEVERSION}/"
> > >  ;;
> > > -        --ldflags) echo 
> > > "-L${STAGING_DIR}/${HOST_ARCH}-nativesdk${HOST_VENDOR}-${HOST_OS}${libdir}/python${PYTHON_BASEVERSION}/config/config
> > >  -lpthread -ldl -lutil -lm -lpython${PYTHON_BASEVERSION}" ;;
> > > +        --includes) echo 
> > > "-I${STAGING_DIR}/${HOST_ARCH}-nativesdk${HOST_VENDOR}-${HOST_OS}${NATIVESDK_INCLUDEDIR}/python${PYTHON_BASEVERSION}/"
> > >  ;;
> > > +        --ldflags) echo 
> > > "-L${STAGING_DIR}/${HOST_ARCH}-nativesdk${HOST_VENDOR}-${HOST_OS}${NATIVESDK_LIBDIR}/python${PYTHON_BASEVERSION}/config
> > >  -lpthread -ldl -lutil -lm -lpython${PYTHON_BASEVERSION}" ;;
> > >          --exec-prefix) echo "/usr" ;;
> > >          *) exit 1 ;;
> > >  esac
> > 
> > I made some experiments with "bitbake gdb-cross-canadian-x86-64 -e" and
> > it seems to me that:
> > 
> >        --includes) echo "-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}/" 
> > ;;
> >        --ldflags) echo 
> > "-L${STAGING_LIBDIR}/../python${PYTHON_BASEVERSION}/config -lpthread -ldl 
> > -lutil -lm -lpython${PYTHON_BASEVERSION}" ;;
> > 
> > should work ok here?
> 
> No it's not the same.
> 
> With default oe-core settings it behaves like this:
> 
> python-nativesdk is staged in the same directory for all 3 MACHINEs I
> was using for test (qemuarm, qemux86, qemux86-64)
> 
> SDKMACHINE=i686:   
> SYSROOTS/i686-nativesdk-oesdk-linux/usr/local/oecore-i686-i686/sysroots/i686-oesdk-linux/
> SDKMACHINE=x86-64: 
> SYSROOTS/x86_64-nativesdk-oesdk-linux/usr/local/oecore-x86_64-x86_64/sysroots/x86_64-oesdk-linux
> 
> while STAGING_INCDIR is different for each machine
> SDKMACHINE=i686:
>   
> STAGING_LIBDIR="SYSROOTS/i686-oesdk-linux-nativesdk/usr/local/oecore-i686-i586/sysroots/i686-oesdk-linux/usr/lib/i586-oe-linux"
>   
> STAGING_LIBDIR="SYSROOTS/i686-oesdk-linux-nativesdk/usr/local/oecore-i686-x86_64/sysroots/i686-oesdk-linux/usr/lib/x86_64-oe-linux"
>   
> STAGING_LIBDIR="SYSROOTS/i686-oesdk-linux-nativesdk/usr/local/oecore-i686-arm/sysroots/i686-oesdk-linux/usr/lib/armv5te-oe-linux-gnueabi"
> SDKMACHINE=x86-64:
>   
> STAGING_LIBDIR="SYSROOTS/x86_64-oesdk-linux-nativesdk/usr/local/oecore-x86_64-i586/sysroots/x86_64-oesdk-linux/usr/lib/i586-oe-linux"
>   
> STAGING_LIBDIR="SYSROOTS/x86_64-oesdk-linux-nativesdk/usr/local/oecore-x86_64-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/x86_64-oe-linux"
>   
> STAGING_LIBDIR="SYSROOTS/x86_64-oesdk-linux-nativesdk/usr/local/oecore-x86_64-arm/sysroots/x86_64-oesdk-linux/usr/lib/armv5te-oe-linux-gnueabi"
> 
> notice that not only SDK_NAME tripple is changing
> SDK_NAME = "${SDK_NAME_PREFIX}-${SDK_ARCH}-${TARGET_ARCH}"
> so we keep it the same across all MACHINES with:
> NATIVESDK_SDK_NAME = "${SDK_NAME_PREFIX}-${SDK_ARCH}-${SDK_ARCH}"
> 
> but also toplevel SYSROOT is different
> i686-nativesdk-oesdk-linux
> i686-oesdk-linux-nativesdk
> and
> x86_64-nativesdk-oesdk-linux
> x86_64-oesdk-linux-nativesdk
> 
> So nativesdk staging is broken and python-nativesdk should be staged
> separately for each SDK_ARCH/TARGET_ARCH combination or we need those
> NATIVESDK_SDK_NAME variables for cross-canadian -> nativesdk deps.

All becomes clear now. 

I seem to remember strongly disagreeing with:

SDK_NAME = "oecore-${SDK_ARCH}-${TARGET_ARCH}"
SDKPATH = "/usr/local/${SDK_NAME}"

that is in bitbake.conf but probably wasn't able to articulate why at
the time. You'll note that poky.conf does:

SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}"
SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${TARGET_ARCH}"
SDKPATH = "/opt/${DISTRO}/${SDK_VERSION}"

so the SDKPATH is not dependent on TARGET_ARCH. It doesn't need to
depend on SDK_ARCH either although that is not the problematic part
here.

If you think about what is happening, bitbake will reuse the sstate
files for each nativesdk, they are meant to be equivalent for each
SDKMACHINE. If you hardcode TARGET_ARCH into the path, they are not.

So I'd say that SDKPATH containing SDK_NAME is clearly bogus and
TARGET_ARCH needs to be removed in somehow at the very least. Fix that
and your problems should go away. The patches you're sending don't fix
the root problem though.

Cheers,

Richard


_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

Reply via email to