Patchwork perl: Add dyanloader build hack

login
register
mail settings
Submitter Richard Purdie
Date Jan. 19, 2013, 11:49 p.m.
Message ID <1358639364.14265.7.camel@ted>
Download mbox | patch
Permalink /patch/42959/
State New
Headers show

Comments

Richard Purdie - Jan. 19, 2013, 11:49 p.m.
Patch perl to allow builds to work where a native perl running against target modules
attempts to load a dynamic binary module. We assume that a native version of the
module exists as it would for the target and perform an appropriate path
substitution.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
Saul Wold - Jan. 21, 2013, 3:59 a.m.
On 01/19/2013 03:49 PM, Richard Purdie wrote:
> Patch perl to allow builds to work where a native perl running against target modules
> attempts to load a dynamic binary module. We assume that a native version of the
> module exists as it would for the target and perform an appropriate path
> substitution.
>
> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
> ---
> diff --git a/meta/recipes-devtools/perl/perl-5.14.2/dynaloaderhack.patch b/meta/recipes-devtools/perl/perl-5.14.2/dynaloaderhack.patch
> new file mode 100644
> index 0000000..c3e17f8
> --- /dev/null
> +++ b/meta/recipes-devtools/perl/perl-5.14.2/dynaloaderhack.patch
> @@ -0,0 +1,23 @@
> +Hack the dynamic module loader so that we use native modules since we can't load
> +the target ones.
> +
> +Upsteam-Status: Inappropriate

Upstream misspelled!

Sau!

> +
> +RP
> +2013/01/13
> +
> +Index: perl-5.14.2/ext/DynaLoader/DynaLoader_pm.PL
> +===================================================================
> +--- perl-5.14.2.orig/ext/DynaLoader/DynaLoader_pm.PL	2011-09-19 13:18:22.000000000 +0000
> ++++ perl-5.14.2/ext/DynaLoader/DynaLoader_pm.PL	2013-01-19 16:09:51.020584945 +0000
> +@@ -310,6 +310,10 @@
> +     foreach (@INC) {
> + 	<<$^O-eq-VMS>>chop($_ = VMS::Filespec::unixpath($_));<</$^O-eq-VMS>>
> + 	    my $dir = "$_/auto/$modpname";
> ++
> ++	if (defined $ENV{PERL_LIB} and defined $ENV{PERLHOSTLIB}) {
> ++	    $dir =~ s/$ENV{PERL_LIB}/$ENV{PERLHOSTLIB}/g;
> ++	}
> + 	
> + 	next unless -d $dir; # skip over uninteresting directories
> + 	
> 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 60fcc18..9a066e2 100644
> --- a/meta/recipes-devtools/perl/perl-native_5.14.2.bb
> +++ b/meta/recipes-devtools/perl/perl-native_5.14.2.bb
> @@ -19,6 +19,7 @@ SRC_URI = "http://www.cpan.org/src/5.0/perl-${PV}.tar.gz \
>              file://native-perlinc.patch \
>              file://MM_Unix.pm.patch \
>              file://debian/errno_ver.diff \
> +           file://dynaloaderhack.patch \
>              file://perl-build-in-t-dir.patch"
>
>   SRC_URI[md5sum] = "3306fbaf976dcebdcd49b2ac0be00eb9"
> diff --git a/meta/recipes-devtools/perl/perl_5.14.2.bb b/meta/recipes-devtools/perl/perl_5.14.2.bb
> index f924ebd..ddc9568 100644
> --- a/meta/recipes-devtools/perl/perl_5.14.2.bb
> +++ b/meta/recipes-devtools/perl/perl_5.14.2.bb
> @@ -67,6 +67,7 @@ SRC_URI = "http://www.cpan.org/src/5.0/perl-${PV}.tar.gz \
>   	file://fix_bad_rpath.patch \
>   	file://perl-build-in-t-dir.patch \
>   	file://perl-archlib-exp.patch \
> +	file://dynaloaderhack.patch \
>   	\
>           file://config.sh \
>           file://config.sh-32 \
>
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>

Patch

diff --git a/meta/recipes-devtools/perl/perl-5.14.2/dynaloaderhack.patch b/meta/recipes-devtools/perl/perl-5.14.2/dynaloaderhack.patch
new file mode 100644
index 0000000..c3e17f8
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.14.2/dynaloaderhack.patch
@@ -0,0 +1,23 @@ 
+Hack the dynamic module loader so that we use native modules since we can't load
+the target ones.
+
+Upsteam-Status: Inappropriate
+
+RP
+2013/01/13
+
+Index: perl-5.14.2/ext/DynaLoader/DynaLoader_pm.PL
+===================================================================
+--- perl-5.14.2.orig/ext/DynaLoader/DynaLoader_pm.PL	2011-09-19 13:18:22.000000000 +0000
++++ perl-5.14.2/ext/DynaLoader/DynaLoader_pm.PL	2013-01-19 16:09:51.020584945 +0000
+@@ -310,6 +310,10 @@
+     foreach (@INC) {
+ 	<<$^O-eq-VMS>>chop($_ = VMS::Filespec::unixpath($_));<</$^O-eq-VMS>>
+ 	    my $dir = "$_/auto/$modpname";
++
++	if (defined $ENV{PERL_LIB} and defined $ENV{PERLHOSTLIB}) {
++	    $dir =~ s/$ENV{PERL_LIB}/$ENV{PERLHOSTLIB}/g;
++	}
+ 	
+ 	next unless -d $dir; # skip over uninteresting directories
+ 	
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 60fcc18..9a066e2 100644
--- a/meta/recipes-devtools/perl/perl-native_5.14.2.bb
+++ b/meta/recipes-devtools/perl/perl-native_5.14.2.bb
@@ -19,6 +19,7 @@  SRC_URI = "http://www.cpan.org/src/5.0/perl-${PV}.tar.gz \
            file://native-perlinc.patch \
            file://MM_Unix.pm.patch \
            file://debian/errno_ver.diff \
+           file://dynaloaderhack.patch \
            file://perl-build-in-t-dir.patch"
 
 SRC_URI[md5sum] = "3306fbaf976dcebdcd49b2ac0be00eb9"
diff --git a/meta/recipes-devtools/perl/perl_5.14.2.bb b/meta/recipes-devtools/perl/perl_5.14.2.bb
index f924ebd..ddc9568 100644
--- a/meta/recipes-devtools/perl/perl_5.14.2.bb
+++ b/meta/recipes-devtools/perl/perl_5.14.2.bb
@@ -67,6 +67,7 @@  SRC_URI = "http://www.cpan.org/src/5.0/perl-${PV}.tar.gz \
 	file://fix_bad_rpath.patch \
 	file://perl-build-in-t-dir.patch \
 	file://perl-archlib-exp.patch \
+	file://dynaloaderhack.patch \
 	\
         file://config.sh \
         file://config.sh-32 \