summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJamie Lenehan <lenehan@twibble.org>2007-04-30 04:06:31 +0000
committerJamie Lenehan <lenehan@twibble.org>2007-04-30 04:06:31 +0000
commitbca1af865658a00eb25d22c0fb22b8fecc745813 (patch)
treee342293ca7717835f82ccad62121f087bc6caa81
parent21174316f8181c882e6816b923ad2ca81c3778a2 (diff)
perl 5.8.8: Improvements for cpan modules:
* Modify perl to install a copy of it's configuration during staging. This will allow us to get at the perl settings for the target when building cpan modules. * Modify perl-native to allow selection of the host or target configuration based on an environment variable. This will allow the cpan class to select the appropriate configuration based on if we are building the native package or not. * Modify cpan.bbclass to set the environment variable to an appropriate value to tell perl native to select the appropriate settings based on if we are building native or target modules. This change fixes some modules that were compiled for the host instead of the target (libversion-perl for example) and fixes up some of cpan modules that include additional subdirectories with their own makefiles.
-rw-r--r--classes/cpan.bbclass9
-rw-r--r--packages/perl/perl-5.8.8/perl-configpm-switch.patch34
-rw-r--r--packages/perl/perl-native_5.8.8.bb7
-rw-r--r--packages/perl/perl_5.8.8.bb3
4 files changed, 50 insertions, 3 deletions
diff --git a/classes/cpan.bbclass b/classes/cpan.bbclass
index 00709f7e18..687dbcd1cb 100644
--- a/classes/cpan.bbclass
+++ b/classes/cpan.bbclass
@@ -41,9 +41,18 @@ def perl_get_libdirs(d):
libdirs = libdir + '/*/*/perl5'
return libdirs
+def is_target(d):
+ import bb
+ if not bb.data.inherits_class('native', d):
+ return "yes"
+ return "no"
+
IS_NEW_PERL = "${@is_new_perl(d)}"
PERLLIBDIRS = "${@perl_get_libdirs(d)}"
+# Env var which tells perl if it should use host (no) or target (yes) settings
+export PERLCONFIGTARGET = "${@is_target(d)}"
+
cpan_do_configure () {
perl Makefile.PL ${EXTRA_CPANFLAGS}
if [ "${BUILD_SYS}" != "${HOST_SYS}" ]; then
diff --git a/packages/perl/perl-5.8.8/perl-configpm-switch.patch b/packages/perl/perl-5.8.8/perl-configpm-switch.patch
new file mode 100644
index 0000000000..1aacd35189
--- /dev/null
+++ b/packages/perl/perl-5.8.8/perl-configpm-switch.patch
@@ -0,0 +1,34 @@
+This patch is used for perl-native only. It enables the switching of
+configuration files between Config_heavy.pl and
+Config_heavy-target.pl by setting the environment variables
+PERLCONFIGTARGET - the later containing settings for the target while
+the former contains those for the host. This will allow cpan.bbclass
+to use the settings appropriate for the native and/or target builds
+as required. This also disables the use of the cache since the cached
+values would be valid for the host only.
+
+--- perl-5.8.8/configpm 2007/04/30 03:10:43 1.1
++++ perl-5.8.8/configpm 2007/04/30 03:11:56
+@@ -374,7 +374,7 @@
+ my($self, $key) = @_;
+
+ # check for cached value (which may be undef so we use exists not defined)
+- return $self->{$key} if exists $self->{$key};
++ #return $self->{$key} if exists $self->{$key};
+
+ return $self->fetch_string($key);
+ }
+@@ -530,7 +530,12 @@
+ sub DESTROY { }
+
+ sub AUTOLOAD {
+- require 'Config_heavy.pl';
++ my $cfgfile = 'Config_heavy.pl';
++ if (defined $ENV{PERLCONFIGTARGET} and $ENV{PERLCONFIGTARGET} eq "yes")
++ {
++ $cfgfile = 'Config_heavy-target.pl';
++ }
++ require $cfgfile;
+ goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/;
+ die "&Config::AUTOLOAD failed on $Config::AUTOLOAD";
+ }
diff --git a/packages/perl/perl-native_5.8.8.bb b/packages/perl/perl-native_5.8.8.bb
index e14ced8691..75002313cd 100644
--- a/packages/perl/perl-native_5.8.8.bb
+++ b/packages/perl/perl-native_5.8.8.bb
@@ -3,12 +3,15 @@ HOMEPAGE = "http://www.perl.org/"
SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "virtual/db-native gdbm-native"
-PR = "r0"
+PR = "r1"
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/perl-${PV}"
DEFAULT_PREFERENCE = "-1"
SRC_URI = "http://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz \
- file://Configure-multilib.patch;patch=1"
+ file://Configure-multilib.patch;patch=1 \
+ file://perl-configpm-switch.patch;patch=1"
S = "${WORKDIR}/perl-${PV}"
diff --git a/packages/perl/perl_5.8.8.bb b/packages/perl/perl_5.8.8.bb
index 486c999eaa..7265074ea7 100644
--- a/packages/perl/perl_5.8.8.bb
+++ b/packages/perl/perl_5.8.8.bb
@@ -5,7 +5,7 @@ LICENSE = "Artistic|GPL"
PRIORITY = "optional"
# We need gnugrep (for -I)
DEPENDS = "virtual/db perl-native grep-native"
-PR = "r7"
+PR = "r8"
# Major part of version
PVM = "5.8"
@@ -127,6 +127,7 @@ do_install() {
do_stage() {
install -d ${STAGING_DIR}/${HOST_SYS}/perl/
install config.sh ${STAGING_DIR}/${HOST_SYS}/perl/
+ install lib/Config_heavy.pl ${STAGING_DIR}/${BUILD_SYS}/lib/perl5/${PV}/Config_heavy-target.pl
}
PACKAGES = "perl-dbg perl perl-misc perl-lib perl-dev perl-pod perl-doc"