[oe] [PATCH v2] cpan_build.bbclass; added cc and ld flags to the perl Build.PL invocation

Khem Raj raj.khem at gmail.com
Mon Dec 27 03:55:49 UTC 2010


On 12/26/2010 1:38 PM, Frans Meulenbroeks wrote:
> Without these gcc would be used which resolves to /usr/bin/gcc
> and one gets an intel exe.
> This showed up with libparams-validate-perl and libdatetime-perl
> The LDFLAGS are added to resolve the GNU_HASH QA error
>
> Signed-off-by: Frans Meulenbroeks<fransmeulenbroeks at gmail.com>

Why a new dir called poky ?

> ---
>   classes/cpan_build.bbclass     |    1 +
>   classes/poky/cpan-base.bbclass |   42 ++++++++++++++++++++++++++++++++++++++++
>   classes/poky/cpan.bbclass      |   38 ++++++++++++++++++++++++++++++++++++
>   3 files changed, 81 insertions(+), 0 deletions(-)
>   create mode 100644 classes/poky/cpan-base.bbclass
>   create mode 100644 classes/poky/cpan.bbclass
>
> diff --git a/classes/cpan_build.bbclass b/classes/cpan_build.bbclass
> index d1bbc4f..070e061 100644
> --- a/classes/cpan_build.bbclass
> +++ b/classes/cpan_build.bbclass
> @@ -26,6 +26,7 @@ cpan_build_do_configure () {
>   		# build for target
>   		. ${STAGING_LIBDIR}/perl/config.sh
>   		perl Build.PL --installdirs vendor \
> +		        --config cc="${CC} ${LDFLAGS}" --config ld="${CCLD} ${LDFLAGS}" \
>   			--destdir ${D} \
>   			--install_path lib="${datadir}/perl5" \
>   			--install_path arch="${libdir}/perl5" \
> diff --git a/classes/poky/cpan-base.bbclass b/classes/poky/cpan-base.bbclass
> new file mode 100644
> index 0000000..3175248
> --- /dev/null
> +++ b/classes/poky/cpan-base.bbclass
> @@ -0,0 +1,42 @@
> +#
> +# cpan-base providers various perl related information needed for building
> +# cpan modules
> +#
> +FILES_${PN} += "${libdir}/perl5 ${datadir}/perl5"
> +
> +DEPENDS  += "${@["perl", "perl-native"][(bb.data.inherits_class('native', d))]}"
> +RDEPENDS  += "${@["perl", ""][(bb.data.inherits_class('native', d))]}"
> +
> +# Determine the staged version of perl from the perl configuration file
> +def get_perl_version(d):
> +	import re
> +    	cfg = bb.data.expand('${STAGING_LIBDIR}/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
> +
> +# Determine where the library directories are
> +def perl_get_libdirs(d):
> +	libdir = bb.data.getVar('libdir', d, 1)
> +	libdirs = libdir + '/*/*/perl5'
> +	return libdirs
> +
> +def is_target(d):
> +    if not bb.data.inherits_class('native', d):
> +        return "yes"
> +    return "no"
> +
> +PERLLIBDIRS = "${@perl_get_libdirs(d)}"
> +
> +FILES_${PN}-dbg += "${PERLLIBDIRS}/auto/*/.debug \
> +                    ${PERLLIBDIRS}/auto/*/*/.debug \
> +                    ${PERLLIBDIRS}/auto/*/*/*/.debug"
> diff --git a/classes/poky/cpan.bbclass b/classes/poky/cpan.bbclass
> new file mode 100644
> index 0000000..513f0b3
> --- /dev/null
> +++ b/classes/poky/cpan.bbclass
> @@ -0,0 +1,38 @@
> +#
> +# This is for perl modules that use the old Makefile.PL build system
> +#
> +inherit cpan-base
> +
> +EXTRA_CPANFLAGS ?= ""
> +
> +# Env var which tells perl if it should use host (no) or target (yes) settings
> +export PERLCONFIGTARGET = "${@is_target(d)}"
> +
> +# Env var which tells perl where the perl include files are
> +export PERL_INC = "${STAGING_LIBDIR}/perl/${@get_perl_version(d)}/CORE"
> +export PERL_LIB = "${STAGING_DATADIR}/perl/${@get_perl_version(d)}"
> +export PERL_ARCHLIB = "${STAGING_LIBDIR}/perl/${@get_perl_version(d)}"
> +
> +cpan_do_configure () {
> +	export PERL5LIB="${PERL_ARCHLIB}"
> +	yes '' | perl Makefile.PL ${EXTRA_CPANFLAGS}
> +	if [ "${BUILD_SYS}" != "${HOST_SYS}" ]; then
> +		. ${STAGING_LIBDIR}/perl/config.sh
> +		# Use find since there can be a Makefile generated for each Makefile.PL
> +		for f in `find -name Makefile.PL`; do
> +			f2=`echo $f | sed -e 's/.PL//'`
> +			sed -i -e "s:\(PERL_ARCHLIB = \).*:\1${PERL_ARCHLIB}:" \
> +			$f2
> +		done
> +	fi
> +}
> +
> +cpan_do_compile () {
> +	oe_runmake PASTHRU_INC="${CFLAGS}" CCFLAGS="${CFLAGS}" LD="${CCLD}"
> +}
> +
> +cpan_do_install () {
> +	oe_runmake DESTDIR="${D}" install_vendor
> +}
> +
> +EXPORT_FUNCTIONS do_configure do_compile do_install





More information about the Openembedded-devel mailing list