On Tue, May 03, 2011 at 11:50:50AM +0100, Richard Purdie wrote: > On Fri, 2011-04-29 at 12:44 +0200, Michael Lippautz wrote: > > This fixes compilation/linking of Python 3rd party extensions. > > > > ${STAGING_LIBDIR}/python<pyver>/config/Makefile needs the correct > > INCDIR and LIBDIR settings to be used in cross compilation for the > > target. 3rd party module use distutils.sysconfig which uses this > > Makefile to create compiler/linker flags. > > > > Workflow: > > 1) compile needs the staged/sysroot Makefile since it is needed > > for compilation/linking > > 2) install needs the unmodified Makefile to install files (i.e. > > headers) into the right directores. (otherwise they would be > > installed in ${D}/${STAGING_...} > > 3) staging needs modified Makefile again > > 4) packaging needs unmodified to make compilation on the target > > possible > > > > Signed-off-by: Michael Lippautz <michael.lippa...@gmail.com> > > --- > > meta/recipes-devtools/python/python_2.6.6.bb | 25 > > +++++++++++++++++++------ > > 1 files changed, 19 insertions(+), 6 deletions(-) > > I'm ok with this patch but I am a little worried looking at the python > recipe that it won't interact well with sstate. I'd therefore like to > fix this whilst we have someone who understands this code around. > > The problem is that do_compile_prepend() is poking files directly into > staging. Instead, do_install should be manipulating things in ${D} > instead and then PACKAGE_PREPROCESS_FUNCS and SYSROOT_PREPROCESS_FUNCS > should be taking care of any fixups for the target/sysroot cases. > > Can we add the code in the do_compile_prepend() to the start of the > do_install() ? >
As far as I know (I am no expert though) is that we can't do this. Python cross-compilation is rather complex, because it basically utilizes the same approach described above to compile its own Python/C extensions. When you look at the do_compile section of the recipe you notice that libpython<pyver> is compiled and staged before the actual Python compilation takes place. This is needed since Python itself uses distutils.sysconfig to link iits Python/C extensions against -lpython<pyver>. [Please correct me if I am wrong, but I have tried a few things with this recipe by now, and couldn't come up with anything better.] > Cheers, > > Richard > Regards, Michael _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core