[oe-commits] org.oe.dev cpan.bbclass: Update to enable the building cpan modules for perl 5.8.8.

lenehan commit openembedded-commits at lists.openembedded.org
Wed Apr 25 01:21:14 UTC 2007


cpan.bbclass: Update to enable the building cpan modules for perl 5.8.8.
This uses the installed perl configuration to determine if we are building
for the old or the new perl layout. Currently this just changes the
installation paths and always uses gcc to link, but more changes will be
added later to make the perl module building process a lot more reliable.

Author: lenehan at openembedded.org
Branch: org.openembedded.dev
Revision: 7121f8eb4118a3e3781075616c4aa55be5152719
ViewMTN: http://monotone.openembedded.org/revision.psp?id=7121f8eb4118a3e3781075616c4aa55be5152719
Files:
1
classes/cpan.bbclass
Diffs:

#
# mt diff -r7e5b2dc58033eff1fdd4150aea6018f74d5cdfb5 -r7121f8eb4118a3e3781075616c4aa55be5152719
#
# 
# 
# patch "classes/cpan.bbclass"
#  from [1bca01e1dd1b31531474289b48089d2f3ca41d3c]
#    to [5512037f9dd48046df019b6558d80444e89177ce]
# 
============================================================
--- classes/cpan.bbclass	1bca01e1dd1b31531474289b48089d2f3ca41d3c
+++ classes/cpan.bbclass	5512037f9dd48046df019b6558d80444e89177ce
@@ -1,38 +1,74 @@
 #
 # This is for perl modules that use the old Makefile.PL build system
 #
-FILES_${PN} += '${libdir}/perl5'
-EXTRA_CPANFLAGS = ""
+FILES_${PN} += '${libdir}/perl5 ${datadir}/perl5'
+EXTRA_CPANFLAGS ?= ""
 
 DEPENDS  += "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"
+
+IS_NEW_PERL = "${@is_new_perl(d)}"
+
 cpan_do_configure () {
 	perl Makefile.PL ${EXTRA_CPANFLAGS}
 	if [ "${BUILD_SYS}" != "${HOST_SYS}" ]; then
 		. ${STAGING_DIR}/${TARGET_SYS}/perl/config.sh
-                sed -i -e "s:\(SITELIBEXP = \).*:\1${sitelibexp}:" \
-                       -e "s:\(SITEARCHEXP = \).*:\1${sitearchexp}:" \
-                       -e "s:\(INSTALLVENDORLIB = \).*:\1${D}${libdir}/perl5/site_perl/${version}:" \
-                       -e "s:\(INSTALLVENDORARCH = \).*:\1${D}${libdir}/perl5/site_perl/${version}:" \
-                       -e "s:\(LDDLFLAGS.*\)${STAGING_DIR}/${BUILD_SYS}/lib:\1${STAGING_LIBDIR}:" \
-                       Makefile
+		if [ "${IS_NEW_PERL}" = "yes" ]; then
+			sed -i -e "s:\(SITELIBEXP = \).*:\1${sitelibexp}:" \
+				-e "s:\(SITEARCHEXP = \).*:\1${sitearchexp}:" \
+				-e "s:\(INSTALLVENDORLIB = \).*:\1${D}${datadir}/perl5:" \
+				-e "s:\(INSTALLVENDORARCH = \).*:\1${D}${libdir}/perl5:" \
+				-e "s:\(LDDLFLAGS.*\)${STAGING_DIR}/${BUILD_SYS}/lib:\1${STAGING_LIBDIR}:" \
+				Makefile
+		else
+			sed -i -e "s:\(SITELIBEXP = \).*:\1${sitelibexp}:" \
+				-e "s:\(SITEARCHEXP = \).*:\1${sitearchexp}:" \
+				-e "s:\(INSTALLVENDORLIB = \).*:\1${D}${libdir}/perl5/site_perl/${version}:" \
+				-e "s:\(INSTALLVENDORARCH = \).*:\1${D}${libdir}/perl5/site_perl/${version}:" \
+				-e "s:\(LDDLFLAGS.*\)${STAGING_DIR}/${BUILD_SYS}/lib:\1${STAGING_LIBDIR}:" \
+				Makefile
+		fi
 	fi
 }
 
 cpan_do_compile () {
-	# You must use gcc to link on sh
-	OPTIONS=""
-	if test ${TARGET_ARCH} = "sh3" -o ${TARGET_ARCH} = "sh4"; then
-		OPTIONS="LD=${TARGET_ARCH}-${TARGET_OS}-gcc"
+	if [ "${IS_NEW_PERL}" = "yes" ]; then
+		oe_runmake PASTHRU_INC="${CFLAGS}" CCFLAGS="${CFLAGS}" LD=${TARGET_SYS}-gcc
+	else
+		# You must use gcc to link on sh
+		OPTIONS=""
+		if test ${TARGET_ARCH} = "sh3" -o ${TARGET_ARCH} = "sh4"; then
+			OPTIONS="LD=${TARGET_ARCH}-${TARGET_OS}-gcc"
+		fi
+		if test ${TARGET_ARCH} = "powerpc" ; then
+			OPTIONS="LD=${TARGET_ARCH}-${TARGET_OS}-gcc"
+		fi
+		oe_runmake PASTHRU_INC="${CFLAGS}" CCFLAGS="${CFLAGS}" $OPTIONS
 	fi
-
-	if test ${TARGET_ARCH} = "powerpc" ; then
-		OPTIONS="LD=${TARGET_ARCH}-${TARGET_OS}-gcc"
-	fi
-
-
-        oe_runmake PASTHRU_INC="${CFLAGS}" CCFLAGS="${CFLAGS}" $OPTIONS
 }
 
 cpan_do_install () {






More information about the Openembedded-commits mailing list