# # This is for perl modules that use the old Makefile.PL build system # 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" # 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)}" # 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 . ${STAGING_DIR}/${TARGET_SYS}/perl/config.sh 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 () { if [ "${IS_NEW_PERL}" = "yes" ]; then oe_runmake PASTHRU_INC="${CFLAGS}" CCFLAGS="${CFLAGS}" LD="${CCLD}" 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 } cpan_do_install () { oe_runmake install_vendor } EXPORT_FUNCTIONS do_configure do_compile do_install