[OE-core] [PATCH v2] perl: Allow perl to cross build and native build in a directory named "t"

Flanagan, Elizabeth elizabeth.flanagan at intel.com
Tue Jun 5 20:25:37 UTC 2012


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

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



-- 
Elizabeth Flanagan
Yocto Project
Build and Release




More information about the Openembedded-core mailing list