perl 5.8.8: Improvements for cpan modules:
authorJamie Lenehan <lenehan@twibble.org>
Mon, 30 Apr 2007 04:06:31 +0000 (04:06 +0000)
committerJamie Lenehan <lenehan@twibble.org>
Mon, 30 Apr 2007 04:06:31 +0000 (04:06 +0000)
* 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.

classes/cpan.bbclass
packages/perl/perl-5.8.8/perl-configpm-switch.patch [new file with mode: 0644]
packages/perl/perl-native_5.8.8.bb
packages/perl/perl_5.8.8.bb

index 00709f7..687dbcd 100644 (file)
@@ -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 (file)
index 0000000..1aacd35
--- /dev/null
@@ -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";
+ }
index e14ced8..7500231 100644 (file)
@@ -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}"
 
index 486c999..7265074 100644 (file)
@@ -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"