[OE-core] [PATCH v2] perl: Allow perl to cross build and native build in a directory named "t"
Darren Hart
dvhart at linux.intel.com
Tue Jun 5 20:51:58 UTC 2012
On 06/05/2012 01:25 PM, Flanagan, Elizabeth wrote:
> On Mon, Jun 4, 2012 at 11:47 AM, Jason Wessel
> <jason.wessel at windriver.com> wrote:
>> If any directory in leading up to your tmp directory has the name "t"
>> perl will fail to build with a very cryptic error shown below:
>
>
> Jason,
>
> I'm currently testing this patch and it seems to be causing failures
> during do_compile for poky-tiny
Which image are you trying to build with DISTRO="poky-tiny" ?
>
> http://autobuilder.yoctoproject.org:8010/builders/nightly-tiny/builds/71/steps/shell_35/logs/stdio
>
> | /bin/ln -s perldelta.pod pod/perl5142delta.pod
> | ./miniperl -Ilib autodoc.pl
> | make[1]: ./miniperl: Command not found
> | make[1]: *** [pod/perlintern.pod] Error 127
> | make[1]: Leaving directory
> `/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-tiny/build/build/tmp/work/i586-poky-linux/perl-5.14.2-r7/perl-5.14.2'
> | make: *** [perl] Error 2
> | ERROR: oe_runmake failed
>
> -b
>
>>
>> pod/buildtoc: no pods at pod/buildtoc line 305.
>> make[1]: *** [pod/perltoc.pod] Error 255
>>
>> This is a result of the perl file checking making an assumption
>> that it is only looking at files and directories with in the perl
>> source directory. This assumption fails with the way bitbake
>> sets up perl to properly cross compile.
>>
>> Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
>> ---
>> .../perl/perl-5.14.2/perl-build-in-t-dir.patch | 42 ++++++++++++++++++++
>> meta/recipes-devtools/perl/perl-native_5.14.2.bb | 5 ++-
>> meta/recipes-devtools/perl/perl_5.14.2.bb | 3 +-
>> 3 files changed, 47 insertions(+), 3 deletions(-)
>> create mode 100644 meta/recipes-devtools/perl/perl-5.14.2/perl-build-in-t-dir.patch
>>
>> diff --git a/meta/recipes-devtools/perl/perl-5.14.2/perl-build-in-t-dir.patch b/meta/recipes-devtools/perl/perl-5.14.2/perl-build-in-t-dir.patch
>> new file mode 100644
>> index 0000000..16064ed
>> --- /dev/null
>> +++ b/meta/recipes-devtools/perl/perl-5.14.2/perl-build-in-t-dir.patch
>> @@ -0,0 +1,42 @@
>> +Upstream-Status:Pending
>> +
>> +Perl cannot cross build in a path containing a directory that has the
>> +name of "t". As an example, you can make the perl build fail with
>> +"mkdir -p /tmp/build/t", go to the directory, unpack the sources,
>> +configure and cross build.
>> +
>> +You get an error like the following:
>> + pod/buildtoc: no pods at pod/buildtoc line 305.
>> + make[1]: *** [pod/perltoc.pod] Error 255
>> +
>> +The fix is to strip off the top directory that you are building in and
>> +then execute all the same logic as before against the path relative to
>> +the build directory.
>> +
>> +Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
>> +---
>> + pod/buildtoc | 4 +++-
>> + 1 file changed, 3 insertions(+), 1 deletion(-)
>> +
>> +--- a/pod/buildtoc
>> ++++ b/pod/buildtoc
>> +@@ -274,8 +274,10 @@ if ($Build{toc}) {
>> + find \&getpods => abs_from_top('lib/');
>> +
>> + sub getpods {
>> ++ my $Top = $FindBin::Bin;
>> + if (/\.p(od|m)$/) {
>> + my $file = $File::Find::name;
>> ++ $file =~ s!^$Top!!;
>> + return if $file =~ qr!/lib/Pod/Functions.pm\z!; # Used only by pod itself
>> + return if $file =~ m!(?:^|/)t/!;
>> + return if $file =~ m!lib/Attribute/Handlers/demo/!;
>> +@@ -283,7 +285,7 @@ if ($Build{toc}) {
>> + return if $file =~ m!lib/Math/BigInt/t/!;
>> + return if $file =~ m!/Devel/PPPort/[Hh]arness|lib/Devel/Harness!i;
>> + return if $file =~ m!XS/(?:APItest|Typemap)!;
>> +- my $pod = $file;
>> ++ my $pod = $file = $File::Find::name;
>> + return if $pod =~ s/pm$/pod/ && -e $pod;
>> + unless (open my $f, '<', $_) {
>> + warn "$0: bogus <$file>: $!";
>> diff --git a/meta/recipes-devtools/perl/perl-native_5.14.2.bb b/meta/recipes-devtools/perl/perl-native_5.14.2.bb
>> index c904c37..df8f058 100644
>> --- a/meta/recipes-devtools/perl/perl-native_5.14.2.bb
>> +++ b/meta/recipes-devtools/perl/perl-native_5.14.2.bb
>> @@ -4,7 +4,7 @@ SECTION = "libs"
>> LICENSE = "Artistic-1.0 | GPL-1.0"
>> LIC_FILES_CHKSUM = "file://Copying;md5=2b4c6ffbcfcbdee469f02565f253d81a \
>> file://Artistic;md5=f921793d03cc6d63ec4b15e9be8fd3f8"
>> -PR = "r0"
>> +PR = "r1"
>>
>> LIC_FILES_CHKSUM = "file://Copying;md5=2b4c6ffbcfcbdee469f02565f253d81a \
>> file://Artistic;md5=f921793d03cc6d63ec4b15e9be8fd3f8"
>> @@ -14,7 +14,8 @@ SRC_URI = "http://www.cpan.org/src/5.0/perl-${PV}.tar.gz \
>> file://perl-configpm-switch.patch \
>> file://native-nopacklist.patch \
>> file://native-perlinc.patch \
>> - file://MM_Unix.pm.patch"
>> + file://MM_Unix.pm.patch \
>> + file://perl-build-in-t-dir.patch"
>>
>> SRC_URI[md5sum] = "3306fbaf976dcebdcd49b2ac0be00eb9"
>> SRC_URI[sha256sum] = "6488359573bd7d41761bf935f66f827dc220fb3df961ef9b775d51fbd66548d3"
>> diff --git a/meta/recipes-devtools/perl/perl_5.14.2.bb b/meta/recipes-devtools/perl/perl_5.14.2.bb
>> index 809fc72..2452a44 100644
>> --- a/meta/recipes-devtools/perl/perl_5.14.2.bb
>> +++ b/meta/recipes-devtools/perl/perl_5.14.2.bb
>> @@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://Copying;md5=2b4c6ffbcfcbdee469f02565f253d81a \
>> # We need gnugrep (for -I)
>> DEPENDS = "virtual/db grep-native"
>> DEPENDS += "gdbm zlib"
>> -PR = "r6"
>> +PR = "r7"
>>
>> # 5.10.1 has Module::Build built-in
>> PROVIDES += "libmodule-build-perl"
>> @@ -65,6 +65,7 @@ SRC_URI = "http://www.cpan.org/src/5.0/perl-${PV}.tar.gz \
>> file://perl-enable-gdbm.patch \
>> file://cross-generate_uudmap.patch \
>> file://fix_bad_rpath.patch \
>> + file://perl-build-in-t-dir.patch \
>> \
>> file://config.sh \
>> file://config.sh-32 \
>> --
>> 1.7.10
>>
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core at lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
>
>
--
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel
More information about the Openembedded-core
mailing list