Files
poky/meta/recipes-devtools/perl/perl-native_5.24.0.bb
Aníbal Limón 066ac716e3 perl: Upgrade to 5.24.0
Configuration changes,
    Simple changes was made to bump version and api version, related to
    floating point handling now the configuration needs the inf, mantisa
    and nan bytes.

    The new version comes with the support of API calls like memmem and
    {new,free,use}locale also structure for handle siginfo supported by
    glibc and musl.

    Finally use64bit{int, all} was disable because the previous
    configure_args don't come with them and cases some tests to fail
    related to bignum's and shared memory respectively. This doesn't
    means that perl couldn't use 64-bit data types, it means that don't
    stores by default into a 64 bit that is good for embedded space
    purposes.

Modules changes,
    Some core modules are now deprecated in order to use the core ones
    like version-vpp and version-regex inside module-extutils-makemaker.
    For full review see perl-rdepends.inc file.

Patches rebased,
    - perl/debian/errno_ver.diff
    - perl/dynaloaderhack.patch
    - perl/Makefile.SH.patch
    - perl/config.s
    - perl/dynaloaderhack.patch
    - perl/perl-test-customized.patch

Patches removed, comes with the upgrade now:
    - perl/perl-remove-nm-from-libswanted.patch
    - perl/perl-fix-CVE-2015-8607.patch
    - perl/perl-fix-CVE-2016-2381.patch

Test,
    The upgrade was test using ptest the suite is fixed now.
    The pod2man and pod2text installation required now for some tests.
    Buildhistory was use to review the changes and only diff changes
    related to modules commented above.

(From OE-Core rev: add5e5982f010e13e3ad25690f01d5e4e391daf9)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-11-30 15:48:08 +00:00

128 lines
4.1 KiB
BlitzBasic

require perl.inc
EXTRA_OEMAKE = "-e MAKEFLAGS="
SRC_URI += "\
file://Configure-multilib.patch \
file://perl-configpm-switch.patch \
file://native-nopacklist.patch \
file://native-perlinc.patch \
file://MM_Unix.pm.patch \
file://debian/errno_ver.diff \
file://dynaloaderhack.patch \
file://perl-PathTools-don-t-filter-out-blib-from-INC.patch \
"
SRC_URI[md5sum] = "59456ae4bd4b06cb6e57cb19a3b2d349"
SRC_URI[sha256sum] = "a9a37c0860380ecd7b23aa06d61c20fc5bc6d95198029f3684c44a9d7e2952f2"
inherit native
NATIVE_PACKAGE_PATH_SUFFIX = "/${PN}"
export LD="${CCLD}"
do_configure () {
./Configure \
-Dcc="${CC}" \
-Dcflags="${CFLAGS}" \
-Dldflags="${LDFLAGS}" \
-Dcf_by="Open Embedded" \
-Dprefix=${prefix} \
-Dvendorprefix=${prefix} \
-Dsiteprefix=${prefix} \
\
-Dbin=${STAGING_BINDIR}/${PN} \
-Dprivlib=${STAGING_LIBDIR}/perl/${PV} \
-Darchlib=${STAGING_LIBDIR}/perl/${PV} \
-Dvendorlib=${STAGING_LIBDIR}/perl/vendor_perl/${PV} \
-Dvendorarch=${STAGING_LIBDIR}/perl/vendor_perl/${PV} \
-Dsitelib=${STAGING_LIBDIR}/perl/site_perl/${PV} \
-Dsitearch=${STAGING_LIBDIR}/perl/site_perl/${PV} \
\
-Duseshrplib \
-Dusethreads \
-Duseithreads \
-Duselargefiles \
-Dnoextensions=ODBM_File \
-Ud_dosuid \
-Ui_db \
-Ui_ndbm \
-Ui_gdbm \
-Ui_gdbm_ndbm \
-Ui_gdbmndbm \
-Di_shadow \
-Di_syslog \
-Duseperlio \
-Dman3ext=3pm \
-Dsed=/bin/sed \
-Uafs \
-Ud_csh \
-Uusesfio \
-Uusenm -des
}
do_install () {
oe_runmake 'DESTDIR=${D}' install
# We need a hostperl link for building perl
ln -sf perl${PV} ${D}${bindir}/hostperl
ln -sf perl ${D}${libdir}/perl5
install -d ${D}${libdir}/perl/${PV}/CORE \
${D}${datadir}/perl/${PV}/ExtUtils
# Save native config
install config.sh ${D}${libdir}/perl
install lib/Config.pm ${D}${libdir}/perl/${PV}/
install lib/ExtUtils/typemap ${D}${libdir}/perl/${PV}/ExtUtils/
# perl shared library headers
# reference perl 5.20.0-1 in debian:
# https://packages.debian.org/experimental/i386/perl/filelist
for i in av.h bitcount.h charclass_invlists.h config.h cop.h cv.h dosish.h \
embed.h embedvar.h EXTERN.h fakesdio.h feature.h form.h git_version.h \
gv.h handy.h hv_func.h hv.h inline.h INTERN.h intrpvar.h iperlsys.h \
keywords.h l1_char_class_tab.h malloc_ctl.h metaconfig.h mg_data.h \
mg.h mg_raw.h mg_vtable.h mydtrace.h nostdio.h opcode.h op.h \
opnames.h op_reg_common.h overload.h pad.h parser.h patchlevel.h \
perlapi.h perl.h perlio.h perliol.h perlsdio.h perlvars.h perly.h \
pp.h pp_proto.h proto.h reentr.h regcharclass.h regcomp.h regexp.h \
regnodes.h scope.h sv.h thread.h time64_config.h time64.h uconfig.h \
unicode_constants.h unixish.h utf8.h utfebcdic.h util.h uudmap.h \
vutil.h warnings.h XSUB.h
do
install $i ${D}${libdir}/perl/${PV}/CORE
done
# Those wrappers mean that perl installed from sstate (which may change
# path location) works and that in the nativesdk case, the SDK can be
# installed to a different location from the one it was built for.
create_wrapper ${D}${bindir}/perl PERL5LIB='$PERL5LIB:${STAGING_LIBDIR}/perl/site_perl/${PV}:${STAGING_LIBDIR}/perl/vendor_perl/${PV}:${STAGING_LIBDIR}/perl/${PV}'
create_wrapper ${D}${bindir}/perl${PV} PERL5LIB='$PERL5LIB:${STAGING_LIBDIR}/perl/site_perl/${PV}:${STAGING_LIBDIR}/perl/vendor_perl/${PV}:${STAGING_LIBDIR}/perl/${PV}'
# Use /usr/bin/env nativeperl for the perl script.
for f in `grep -Il '#! *${bindir}/perl' ${D}/${bindir}/*`; do
sed -i -e 's|${bindir}/perl|/usr/bin/env nativeperl|' $f
done
}
SYSROOT_PREPROCESS_FUNCS += "perl_sysroot_create_wrapper"
perl_sysroot_create_wrapper () {
mkdir -p ${SYSROOT_DESTDIR}${bindir}
# Create a wrapper that /usr/bin/env perl will use to get perl-native.
# This MUST live in the normal bindir.
cat > ${SYSROOT_DESTDIR}${bindir}/../nativeperl << EOF
#!/bin/sh
realpath=\`readlink -fn \$0\`
exec \`dirname \$realpath\`/perl-native/perl "\$@"
EOF
chmod 0755 ${SYSROOT_DESTDIR}${bindir}/../nativeperl
cat ${SYSROOT_DESTDIR}${bindir}/../nativeperl
}
# Fix the path in sstate
SSTATE_SCAN_FILES += "*.pm *.pod *.h *.pl *.sh"