> 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 :) 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 ... 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