perl: Allow perl to cross build and native build in a directory named "t"

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:

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.

(From OE-Core rev: f8a054aca9962ebfd4c74fc1d34cd684de6b3568)

Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Jason Wessel 2012-06-04 13:47:44 -05:00 committed by Richard Purdie
parent 83b53d32eb
commit e0a7054706
3 changed files with 47 additions and 3 deletions

View File

@ -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@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>: $!";

View File

@ -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"

View File

@ -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 \