perl: Extract common functionality from cpan and cpan_build classes into a
authorJamie Lenehan <lenehan@twibble.org>
Fri, 4 May 2007 01:24:59 +0000 (01:24 +0000)
committerJamie Lenehan <lenehan@twibble.org>
Fri, 4 May 2007 01:24:59 +0000 (01:24 +0000)
cpan-base class and update cpan_build to work with the new perl layout that
was added with perl 5.8.8.

classes/cpan-base.bbclass [new file with mode: 0644]
classes/cpan.bbclass
classes/cpan_build.bbclass

diff --git a/classes/cpan-base.bbclass b/classes/cpan-base.bbclass
new file mode 100644 (file)
index 0000000..e10148a
--- /dev/null
@@ -0,0 +1,51 @@
+#
+# This is for perl modules that use the old Makefile.PL build system
+#
+FILES_${PN} += '${libdir}/perl5 ${datadir}/perl5'
+EXTRA_CPANFLAGS ?= ""
+
+DEPENDS  += "perl perl-native"
+RDEPENDS += "perl"
+
+# Determine the staged version of perl from the perl configuration file
+def get_perl_version(d):
+       import os, bb, re
+       cfg = bb.data.expand('${STAGING_DIR}/${HOST_SYS}/perl/config.sh', d)
+       try:
+               f = open(cfg, 'r')
+       except IOError:
+               return None
+       l = f.readlines();
+       f.close();
+       r = re.compile("version='(\d\.\d\.\d)'")
+       for s in l:
+               m = r.match(s)
+               if m:
+                       return m.group(1)
+       return None
+
+# Only 5.8.7 and 5.8.4 existed at the time we moved to the new layout
+def is_new_perl(d):
+       ver = get_perl_version(d)
+       if ver == "5.8.4" or ver == "5.8.7":
+               return "no"
+       return "yes"
+
+# Determine where the library directories are
+def perl_get_libdirs(d):
+       import bb
+       libdir = bb.data.getVar('libdir', d, 1)
+       if is_new_perl(d) == "yes":
+               libdirs = libdir + '/perl5'
+       else:
+               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)}"
index be08c84..3b1a2b7 100644 (file)
@@ -1,54 +1,9 @@
 #
 # This is for perl modules that use the old Makefile.PL build system
 #
-FILES_${PN} += '${libdir}/perl5 ${datadir}/perl5'
-EXTRA_CPANFLAGS ?= ""
-
-DEPENDS  += "perl perl-native"
-RDEPENDS += "perl"
-
-# Determine the staged version of perl from the perl configuration file
-def get_perl_version(d):
-       import os, bb, re
-       cfg = bb.data.expand('${STAGING_DIR}/${HOST_SYS}/perl/config.sh', d)
-       try:
-               f = open(cfg, 'r')
-       except IOError:
-               return None
-       l = f.readlines();
-       f.close();
-       r = re.compile("version='(\d\.\d\.\d)'")
-       for s in l:
-               m = r.match(s)
-               if m:
-                       return m.group(1)
-       return None
-
-# Only 5.8.7 and 5.8.4 existed at the time we moved to the new layout
-def is_new_perl(d):
-       ver = get_perl_version(d)
-       if ver == "5.8.4" or ver == "5.8.7":
-               return "no"
-       return "yes"
+inherit cpan-base
 
-# Determine where the library directories are
-def perl_get_libdirs(d):
-       import bb
-       libdir = bb.data.getVar('libdir', d, 1)
-       if is_new_perl(d) == "yes":
-               libdirs = libdir + '/perl5'
-       else:
-               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)}"
+EXTRA_CPANFLAGS ?= ""
 
 # Env var which tells perl if it should use host (no) or target (yes) settings
 export PERLCONFIGTARGET = "${@is_target(d)}"
index 0660ef9..63e716c 100644 (file)
@@ -1,16 +1,14 @@
 #
 # This is for perl modules that use the new Build.PL build system
 #
-INHIBIT_NATIVE_STAGE_INSTALL = "1"
-FILES_${PN} += '${libdir}/perl5'
+inherit cpan-base
 
-DEPENDS  += "perl-native"
-RDEPENDS += "perl"
+INHIBIT_NATIVE_STAGE_INSTALL = "1"
 
 #
 # We also need to have built libmodule-build-perl-native for
 # everything except libmodule-build-perl-native itself (which uses
-# this class, but uses itself as the probider of
+# this class, but uses itself as the provider of
 # libmodule-build-perl)
 #
 def cpan_build_dep_prepend(d):
@@ -24,24 +22,29 @@ def cpan_build_dep_prepend(d):
 
 DEPENDS_prepend = "${@cpan_build_dep_prepend(d)}"
 
-def is_crosscompiling(d):
-    import bb
-    if not bb.data.inherits_class('native', d):
-        return "yes"
-    return "no"
-
 cpan_build_do_configure () {
-       if [ ${@is_crosscompiling(d)} == "yes" ]; then
+       if [ ${@is_target(d)} == "yes" ]; then
                # build for target
                . ${STAGING_DIR}/${TARGET_SYS}/perl/config.sh
-               perl Build.PL --installdirs vendor \
-                       --destdir ${D} \
-                       --install_path lib="${libdir}/perl5/site_perl/${version}" \
-                       --install_path arch="${libdir}/perl5/site_perl/${version}/${TARGET_SYS}" \
-                       --install_path script=${bindir} \
-                       --install_path bin=${bindir} \
-                       --install_path bindoc=${mandir}/man1 \
-                       --install_path libdoc=${mandir}/man3
+               if [ "${IS_NEW_PERL}" = "yes" ]; then
+                       perl Build.PL --installdirs vendor \
+                               --destdir ${D} \
+                               --install_path lib="${datadir}/perl5" \
+                               --install_path arch="${libdir}/perl5" \
+                               --install_path script=${bindir} \
+                               --install_path bin=${bindir} \
+                               --install_path bindoc=${mandir}/man1 \
+                               --install_path libdoc=${mandir}/man3
+               else
+                       perl Build.PL --installdirs vendor \
+                               --destdir ${D} \
+                               --install_path lib="${libdir}/perl5/site_perl/${version}" \
+                               --install_path arch="${libdir}/perl5/site_perl/${version}/${TARGET_SYS}" \
+                               --install_path script=${bindir} \
+                               --install_path bin=${bindir} \
+                               --install_path bindoc=${mandir}/man1 \
+                               --install_path libdoc=${mandir}/man3
+               fi
        else
                # build for host
                perl Build.PL --installdirs site
@@ -53,13 +56,13 @@ cpan_build_do_compile () {
 }
 
 cpan_build_do_install () {
-       if [ ${@is_crosscompiling(d)} == "yes" ]; then
+       if [ ${@is_target(d)} == "yes" ]; then
                perl Build install
        fi
 }
 
 do_stage_append () {
-       if [ ${@is_crosscompiling(d)} == "no" ]; then
+       if [ ${@is_target(d)} == "no" ]; then
                perl Build install
        fi
 }