From 76e3e6e123c6b2a64905a32e5181e647107e562d Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Mon, 10 Nov 2008 21:24:04 +0000 Subject: perl and cpan.bbclass: Never reference to host instance of perl: * install MakeMaker files separately for native and target system * PERL_INC, PERL_LIB and PERL_ARCHLIB changes through environment * for more see http://lists.linuxtogo.org/pipermail/openembedded-devel/2008-November/006815.html --- classes/cpan.bbclass | 3 ++- packages/perl/perl-5.8.8/native-perlinc.patch | 14 +++++++++++--- packages/perl/perl-native_5.8.8.bb | 19 ++++++++++++++++++- packages/perl/perl_5.8.8.bb | 6 +++++- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/classes/cpan.bbclass b/classes/cpan.bbclass index 3ff3f3093d..7b3faa2561 100644 --- a/classes/cpan.bbclass +++ b/classes/cpan.bbclass @@ -10,7 +10,8 @@ export PERLCONFIGTARGET = "${@is_target(d)}" # Env var which tells perl where the perl include files are export PERL_INC = "${STAGING_LIBDIR}/perl/${@get_perl_version(d)}/CORE" -export PERL_ARCHLIB = "${STAGING_LIBDIR_NATIVE}/perl/${@get_perl_version(d)}" +export PERL_LIB = "${STAGING_DATADIR}/perl/${@get_perl_version(d)}" +export PERL_ARCHLIB = "${STAGING_LIBDIR}/perl/${@get_perl_version(d)}" cpan_do_configure () { yes '' | perl Makefile.PL ${EXTRA_CPANFLAGS} diff --git a/packages/perl/perl-5.8.8/native-perlinc.patch b/packages/perl/perl-5.8.8/native-perlinc.patch index aea38a0b56..6dc4b9538d 100644 --- a/packages/perl/perl-5.8.8/native-perlinc.patch +++ b/packages/perl/perl-5.8.8/native-perlinc.patch @@ -1,12 +1,20 @@ Index: perl-5.8.8/lib/ExtUtils/MM_Unix.pm =================================================================== ---- perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm 2007-05-30 15:16:47.000000000 +1000 -+++ perl-5.8.8/lib/ExtUtils/MM_Unix.pm 2007-05-30 15:18:12.000000000 +1000 -@@ -1597,6 +1597,11 @@ +--- perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm 2008-10-31 22:01:35.000000000 +0000 ++++ perl-5.8.8/lib/ExtUtils/MM_Unix.pm 2008-11-08 16:01:12.000000000 +0000 +@@ -1597,6 +1597,19 @@ $self->{PERL_LIB} ||= $Config{privlibexp}; $self->{PERL_ARCHLIB} ||= $Config{archlibexp}; $self->{PERL_INC} = $self->catdir("$self->{PERL_ARCHLIB}","CORE"); # wild guess for now + # Check for environment override so we'll find the headers in the correct place ++ if (defined $ENV{PERL_LIB}) ++ { ++ $self->{PERL_LIB} = $ENV{PERL_LIB}; ++ } ++ if (defined $ENV{PERL_ARCHLIB}) ++ { ++ $self->{PERL_ARCHLIB} = $ENV{PERL_ARCHLIB}; ++ } + if (defined $ENV{PERL_INC}) + { + $self->{PERL_INC} = $ENV{PERL_INC}; diff --git a/packages/perl/perl-native_5.8.8.bb b/packages/perl/perl-native_5.8.8.bb index c58f82822c..e3d73845fc 100644 --- a/packages/perl/perl-native_5.8.8.bb +++ b/packages/perl/perl-native_5.8.8.bb @@ -65,8 +65,25 @@ do_stage_append() { # We need a hostperl link for building perl ln -sf ${STAGING_BINDIR_NATIVE}/perl${PV} ${STAGING_BINDIR_NATIVE}/hostperl # Store native config in non-versioned directory - install -d ${STAGING_DIR_HOST}/perl + install -d ${STAGING_DIR_HOST}/perl \ + ${STAGING_LIBDIR_NATIVE}/perl/${PV}/CORE \ + ${STAGING_DATADIR_NATIVE}/perl/${PV}/ExtUtils install config.sh ${STAGING_DIR_HOST}/perl + # target configuration + install lib/Config.pm ${STAGING_LIBDIR_NATIVE}/perl/${PV}/ + install lib/ExtUtils/typemap ${STAGING_DATADIR_NATIVE}/perl/${PV}/ExtUtils/ + # perl shared library headers + for i in av.h embed.h gv.h keywords.h op.h perlio.h pp.h regexp.h \ + uconfig.h XSUB.h cc_runtime.h embedvar.h handy.h opnames.h \ + perliol.h pp_proto.h regnodes.h unixish.h config.h EXTERN.h \ + hv.h malloc_ctl.h pad.h perlsdio.h proto.h scope.h utf8.h \ + cop.h fakesdio.h INTERN.h mg.h patchlevel.h perlsfio.h \ + reentr.h sv.h utfebcdic.h cv.h fakethr.h intrpvar.h \ + nostdio.h perlapi.h perlvars.h reentr.inc thrdvar.h util.h \ + dosish.h form.h iperlsys.h opcode.h perl.h perly.h regcomp.h \ + thread.h warnings.h; do + install $i ${STAGING_LIBDIR_NATIVE}/perl/${PV}/CORE + done } PARALLEL_MAKE = "" diff --git a/packages/perl/perl_5.8.8.bb b/packages/perl/perl_5.8.8.bb index 8c00a61536..2118bba68f 100644 --- a/packages/perl/perl_5.8.8.bb +++ b/packages/perl/perl_5.8.8.bb @@ -139,11 +139,15 @@ do_install() { do_stage() { install -d ${STAGING_DIR_HOST}/perl \ ${STAGING_LIBDIR_NATIVE}/perl/${PV} \ - ${STAGING_LIBDIR}/perl/${PV}/CORE + ${STAGING_LIBDIR}/perl/${PV}/CORE \ + ${STAGING_DATADIR}/perl/${PV}/ExtUtils # target config, used by cpan.bbclass to extract version information install config.sh ${STAGING_DIR_HOST}/perl/ # target configuration, used by native perl when cross-compiling install lib/Config_heavy.pl ${STAGING_LIBDIR_NATIVE}/perl/${PV}/Config_heavy-target.pl + # target configuration + install lib/Config.pm ${STAGING_LIBDIR}/perl/${PV}/ + install lib/ExtUtils/typemap ${STAGING_DATADIR}/perl/${PV}/ExtUtils/ # perl shared library headers for i in av.h embed.h gv.h keywords.h op.h perlio.h pp.h regexp.h \ uconfig.h XSUB.h cc_runtime.h embedvar.h handy.h opnames.h \ -- cgit v1.2.3