Bug 836

Summary: perl compilation error when using sstate cache
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Kevin Tian <kevin.tian>
Component: devtools / tool chainAssignee: Wenzong.Fan <wenzong.fan>
Status: RESOLVED WORKSFORME QA Contact:
Severity: normal    
Priority: Medium CC: liang.li2, liangliang.wang, meta.mr.watcher, meta.watcher, sgw, yi.zhao
Version: 1.0   
Target Milestone: 1.1   
Hardware: x86   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: ---

Description Kevin Tian 2011-03-09 21:18:53 UTC
this is similar to Bug 829 with same error message, but from a different reason:

| ./miniperl -Ilib make_ext.pl cpan/Archive-Extract/pm_to_blib MAKE=make LIBPERL_A=libperl.so
| 	Making Archive::Extract (all)
| 
| Creating Makefile.PL in cpan/Archive-Extract for Archive::Extract
| 
| Running Makefile.PL in cpan/Archive-Extract
| ../../miniperl Makefile.PL INSTALLDIRS=perl INSTALLMAN1DIR=none INSTALLMAN3DIR=none PERL_CORE=1 LIBPERL_A=libperl.so
| Writing Makefile for Archive::Extract
| make[2]: Entering directory `/media/builds-0/demo-0309/tmp/work/core2-poky-linux/perl-5.12.2-r2/perl-5.12.2/cpan/Archive-Extract'
| Can't locate File/Glob.pm in @INC (@INC contains: ../../lib ../../lib ../../cpan/AutoLoader/lib ../../cpan/Cwd ../../cpan/Cwd/lib ../../cpan/ExtUtils-Command/lib ../../dist/ExtUtils-Install/lib ../../cpan/ExtUtils-MakeMaker/lib ../../cpan/ExtUtils-Manifest/lib ../../cpan/File-Path/lib ../../lib /media/builds/master/demo-qemux86-0223/tmp/sysroots/x86_64-linux/usr/lib/perl/5.12.2 /media/builds/master/demo-qemux86-0223/tmp/sysroots/x86_64-linux/usr/lib/perl/5.12.2 /media/builds/master/demo-qemux86-0223/tmp/sysroots/x86_64-linux/usr/lib/perl/5.12.2 .) at ../../cpan/ExtUtils-Command/lib/ExtUtils/Command.pm line 90.
| BEGIN failed--compilation aborted at ../../cpan/ExtUtils-Command/lib/ExtUtils/Command.pm line 90.

miniperl is used which is linked to hostperl which is further linked to sysroot/perl5.12.2. Currently we only provide wrapper to the perl binary, instead of perl5.12.2. Here there're two potential issues to be solved:

a) perl5.12.2 is actually exactly same as perl. I'm not sure why there's such a separate binary with version number. Is a symbol link enough? Or else we need a seperate wrapper script for perl5.12.2 too.

b) don't create hostperl symbol link within perl source directory, which breaks the wrapper script. The wrapper script assumes that the wrapper and the real binary are in same sysroot directory (see "dirname $0" in the wrapper script). However when hostperl is created within perl source directory, the real binary can't be found then. Actually perl-native already creates a hostperl link in sysroot. So we don't need another duplication in target perl recipe.

Again you have to remove the build directory which generates sstate packages to expose this issue.
Comment 1 Wenzong.Fan 2011-08-16 01:36:23 UTC
Currently the perl version is 5.12.3 and this defect can't be reproduced again on master branch.
Comment 2 Wenzong.Fan 2011-08-20 01:58:30 UTC
Can't be reproduced now, might be fixed after the perl upgraded to 5.12.3.
Comment 3 Yi Zhao 2011-08-29 19:59:27 UTC
With latest master branch (git info: 6c2b7beac3cd23ed44bd3e195c6360a0932876bf), this issue can't be reproduced.