> Am 23.03.2016 um 10:14 schrieb Jens Rehsack <rehs...@gmail.com>: > >> >> Am 23.03.2016 um 10:09 schrieb Gary Thomas <g...@mlbassoc.com>: >> >> On 2016-03-23 09:57, Jens Rehsack wrote: >>> >>>> Am 23.03.2016 um 09:40 schrieb Gary Thomas <g...@mlbassoc.com>: >>>> >>>> On 2016-03-23 09:09, Gary Thomas wrote: >>>>> On 2016-03-23 06:36, Khem Raj wrote: >>>>>> On Tue, Mar 22, 2016 at 9:53 PM, Gary Thomas <g...@mlbassoc.com> wrote: >>>>>>> I hope this is the correct place to discuss this problem. It >>>>>>> is all about a difference in behavior between a program built >>>>>>> using bitbake/OE (only OE-core is needed) vs building the program >>>>>>> on the target hardware itself. >>>>>>> >>>>>>> I've been struggling with this problem since perl was upgraded >>>>>>> to version 5.22. I'm working on Amanda (Advanced Maryland Archive >>>>>>> tool) which is written primarily in perl and uses swig interfaces >>>>>>> to access native C functions. This code works great when using >>>>>>> the previous perl (5.20.x) but fails on all 32 bit targets with >>>>>>> perl 5.22 >>>>>>> >>>>>>> The interesting thing is that if I build Amanda on my target >>>>>>> directly (using SDK tools), it works perfectly even with perl >>>>>>> 5.22, so it seems that there is some [subtle] difference between >>>>>>> building using bitbake/OE than when built on the self-hosted >>>>>>> target. I've compared the builds and the only thing I could >>>>>>> find (from the output of configure) is a difference in sizeof(off_t) >>>>>>> Sadly, when I tried to adjust this in the OE build, it didn't >>>>>>> make any difference, but perhaps I didn't make this change >>>>>>> correctly or completely. >>>>>> >>>>>> do you have largefile support turned on ? if you do then it might >>>>>> be detecting it wrongly during configure since we cache it to a >>>>>> non-largefile case >>>>>> >>>>>> so try to add something like >>>>>> >>>>>> EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'largefile', >>>>>> 'ac_cv_sizeof_off_t=8', '', d)}" >>>>>> >>>>>> while building perl or the affected program and see if that helps >>>>> >>>>> Thanks for the idea, but that didn't help. I also forced some CFLAGS >>>>> to match, in particular: >>>>> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 >>>>> but this didn't make any difference either. >>>>> >>>> >>>> On a whim I just tried a little experiment where I took the *.o files >>>> from the perl subdirectory (where all the swig shims live) from a working >>>> (self-hosted) build and moved them to my bitbake/OE build. I then touched >>>> all the *.o and *.lo files in the perl tree to force a relink. I then ran >>>> % bitbake amanda -C compile && bitbake core-image-base >>>> to my surprise, amanda works! So the culprit lies somewhere within the >>>> swig generated glue. I've tried comparing these files before and I didn't >>>> find anything other than cosmetic differences (mostly comments about the >>>> name of the file processed, etc). I've added this subtree to "results" >>>> in my github layer in case someone can see what might be relevant. >>>> >>>> Any ideas what might be different and make this swig generated glue fail? >>>> Note that the swig interface files are rebuilt as part of the build process >>>> and both bitbake/OE and self-hosted are using the same swig version. >>> >>> I digged a bit through your layer (while my up2date scanner over meta-cpan >>> blocks my build chain :P) and realized that you use perl-5.20.0 as it was >>> in poky. A "simple" downgrade would be more reasonable ... if reason applys >>> here in general :) >> >> In practice, I am doing that. However, I want to understand why perl 5.22 >> breaks things and get it fixed. > > I did a diff between your 5.20 and poky's 5.22 and realize some fixes applied > in 5.22 regarding library path's aren't applied in your copy. Maybe swig > relies > on wrong library locations and when we know, we can fix. > > So it's maybe not a 5.20 vs. 5.22 problem, it's maybe a weird swig setup > problem. > >>> When you fail on cross-build and succeed in target build, try to compare the >>> C files and includes (even swig libraries) used. >>> >>> It smells more like a "wrong source" than a "perl problem" (and even when >>> I never would read any python thread, the same problem would likely occur >>> there, too ^^). >>> >>> Which perl headers are used in your build? To dig down, more logs would >>> be reasonable ... >> >> Everything comes from the same sources, same revisions, etc, as I'm using >> either a bitbake/OE build or the embedded (self-hosted) version from the >> same build plus SDK tools. > > And your SDK does not include any host tools? Did you prove the intermediate > amanda build files (eg. generated by SWIG) for relicts from wrong source? > Did you check the logs which include directories had been used?
I give it a quick shot and got: ../../arm-poky-linux-gnueabi-libtool --tag=CC --mode=compile arm-poky-linux-gnueabi-gcc -march=armv7-a -marm -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/homes/sno/fsl-release-bsp/ornithologen-kann-man-mit-voegeln-eine-freude-machen/tmp/sysroots/curie -DHAVE_CONFIG_H -I. -I../../config -I../../common-src -I../../common-src -I../../xfer-src -I../../gnulib -I../../ndmp-src -I/homes/sno/fsl-release-bsp/ornithologen-kann-man-mit-voegeln-eine-freude-machen/tmp/sysroots/x86_64-linux/usr/lib/perl-native/perl/5.22.1/CORE -fno-strict-aliasing -D_GNU_SOURCE -pthread -I/homes/sno/fsl-release-bsp/ornithologen-kann-man-mit-voegeln-eine-freude-machen/tmp/sysroots/curie/usr/include/glib-2.0 -I/homes/sno/fsl-release-bsp/ornithologen-kann-man-mit-voegeln-eine-freude-machen/tmp/sysroots/curie/usr/lib/glib-2.0/include -DSWIG -O2 -pipe -g -feliminate-unused-debug-types -fipa-pta -ftree-partial-pre -ftree-loop-distribution -ftree-loop-distribute-patterns -fgcse-after-reload -fgcse-sm -fgcse-las -fno-strict-aliasing -c -o xferwrap.lo xferwrap.c Do you see the "-I/homes/sno/fsl-release-bsp/ornithologen-kann-man-mit-voegeln-eine-freude-machen/tmp/sysroots/x86_64-linux/usr/lib/perl-native/perl/5.22.1/CORE" ? Any further blames of perl-5.22? :) Cheers -- Jens Rehsack - rehs...@gmail.com
signature.asc
Description: Message signed with OpenPGP using GPGMail
-- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto