summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/perl/perl_5.24.0.bb
diff options
context:
space:
mode:
authorAníbal Limón <anibal.limon@linux.intel.com>2016-11-24 15:06:04 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-11-30 15:48:08 +0000
commit066ac716e397e685e429095e2899227c89852122 (patch)
tree090b2c3b91bcf69d85e281ed7072c0554a282515 /meta/recipes-devtools/perl/perl_5.24.0.bb
parent50f5c4e9113513bf63e5adf77f091d8bf5831fc4 (diff)
downloadpoky-066ac716e397e685e429095e2899227c89852122.tar.gz
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>
Diffstat (limited to 'meta/recipes-devtools/perl/perl_5.24.0.bb')
-rw-r--r--meta/recipes-devtools/perl/perl_5.24.0.bb373
1 files changed, 373 insertions, 0 deletions
diff --git a/meta/recipes-devtools/perl/perl_5.24.0.bb b/meta/recipes-devtools/perl/perl_5.24.0.bb
new file mode 100644
index 0000000000..ab50d29d33
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl_5.24.0.bb
@@ -0,0 +1,373 @@
1require perl.inc
2
3# We need gnugrep (for -I)
4DEPENDS = "virtual/db grep-native"
5DEPENDS += "gdbm zlib"
6
7# Pick up patches from debian
8# http://ftp.de.debian.org/debian/pool/main/p/perl/perl_5.22.0-1.debian.tar.xz
9SRC_URI += " \
10 file://debian/cpan_definstalldirs.diff \
11 file://debian/db_file_ver.diff \
12 file://debian/doc_info.diff \
13 file://debian/enc2xs_inc.diff \
14 file://debian/errno_ver.diff \
15 file://debian/libperl_embed_doc.diff \
16 file://debian/fixes/respect_umask.diff \
17 file://debian/writable_site_dirs.diff \
18 file://debian/extutils_set_libperl_path.diff \
19 file://debian/no_packlist_perllocal.diff \
20 file://debian/prefix_changes.diff \
21 file://debian/instmodsh_doc.diff \
22 file://debian/ld_run_path.diff \
23 file://debian/libnet_config_path.diff \
24 file://debian/mod_paths.diff \
25 file://debian/prune_libs.diff \
26 file://debian/fixes/net_smtp_docs.diff \
27 file://debian/perlivp.diff \
28 file://debian/squelch-locale-warnings.diff \
29 file://debian/skip-upstream-git-tests.diff \
30 file://debian/skip-kfreebsd-crash.diff \
31 file://debian/fixes/document_makemaker_ccflags.diff \
32 file://debian/find_html2text.diff \
33 file://debian/perl5db-x-terminal-emulator.patch \
34 file://debian/cpan-missing-site-dirs.diff \
35 file://debian/fixes/memoize_storable_nstore.diff \
36 file://debian/regen-skip.diff \
37"
38
39SRC_URI += " \
40 file://Makefile.patch \
41 file://Makefile.SH.patch \
42 file://installperl.patch \
43 file://perl-archlib-exp.patch \
44 file://perl-dynloader.patch \
45 file://perl-moreconfig.patch \
46 file://letgcc-find-errno.patch \
47 file://generate-sh.patch \
48 file://native-perlinc.patch \
49 file://perl-enable-gdbm.patch \
50 file://cross-generate_uudmap.patch \
51 file://fix_bad_rpath.patch \
52 file://dynaloaderhack.patch \
53 file://config.sh \
54 file://config.sh-32 \
55 file://config.sh-32-le \
56 file://config.sh-32-be \
57 file://config.sh-64 \
58 file://config.sh-64-le \
59 file://config.sh-64-be \
60 file://make_ext.pl-fix-regenerate-makefile-failed-while-cc-.patch \
61 file://t-run-switches.t-perl5-perl.patch \
62 file://ext-ODBM_File-hints-linux.pl-link-libgdbm_compat.patch \
63 file://ext-ODBM_File-t-odbm.t-fix-the-path-of-dbmt_common.p.patch \
64 file://perl-PathTools-don-t-filter-out-blib-from-INC.patch \
65 file://perl-errno-generation-gcc5.patch \
66 file://perl-fix-conflict-between-skip_all-and-END.patch \
67 file://perl-test-customized.patch \
68 file://perl-fix-CVE-2016-6185.patch \
69 file://perl-fix-CVE-2016-1238.patch \
70"
71
72# Fix test case issues
73SRC_URI_append_class-target = " \
74 file://test/dist-threads-t-join.t-adjust-ps-option.patch \
75 file://test/ext-DynaLoader-t-DynaLoader.t-fix-calling-dl_findfil.patch \
76 "
77
78SRC_URI[md5sum] = "59456ae4bd4b06cb6e57cb19a3b2d349"
79SRC_URI[sha256sum] = "a9a37c0860380ecd7b23aa06d61c20fc5bc6d95198029f3684c44a9d7e2952f2"
80
81inherit perlnative siteinfo
82
83# Where to find the native perl
84HOSTPERL = "${STAGING_BINDIR_NATIVE}/perl-native/perl${PV}"
85
86# Where to find .so files - use the -native versions not those from the target build
87export PERLHOSTLIB = "${STAGING_LIBDIR_NATIVE}/perl-native/perl/${PV}/"
88
89# Where to find perl @INC/#include files
90# - use the -native versions not those from the target build
91export PERL_LIB = "${STAGING_LIBDIR_NATIVE}/perl-native/perl/${PV}/"
92export PERL_ARCHLIB = "${STAGING_LIBDIR_NATIVE}/perl-native/perl/${PV}/"
93
94EXTRA_OEMAKE = "-e MAKEFLAGS="
95
96# LDFLAGS for shared libraries
97export LDDLFLAGS = "${LDFLAGS} -shared"
98
99LDFLAGS_append = " -fstack-protector"
100
101# We're almost Debian, aren't we?
102CFLAGS += "-DDEBIAN"
103
104do_nolargefile() {
105 sed -i -e "s,\(uselargefiles=\)'define',\1'undef',g" \
106 -e "s,\(d_readdir64_r=\)'define',\1'undef',g" \
107 -e "s,\(readdir64_r_proto=\)'\w+',\1'0',g" \
108 -e "/ccflags_uselargefiles/d" \
109 -e "s/-Duselargefiles//" \
110 -e "s/-D_FILE_OFFSET_BITS=64//" \
111 -e "s/-D_LARGEFILE_SOURCE//" \
112 ${S}/Cross/config.sh-${TARGET_ARCH}-${TARGET_OS}
113}
114
115do_configure() {
116 # Make hostperl in build directory be the native perl
117 ln -sf ${HOSTPERL} hostperl
118
119 if [ -n "${CONFIGURESTAMPFILE}" -a -e "${CONFIGURESTAMPFILE}" ]; then
120 if [ "`cat ${CONFIGURESTAMPFILE}`" != "${BB_TASKHASH}" -a -e Makefile ]; then
121 ${MAKE} clean
122 fi
123 find ${S} -name *.so -delete
124 fi
125 if [ -n "${CONFIGURESTAMPFILE}" ]; then
126 echo ${BB_TASKHASH} > ${CONFIGURESTAMPFILE}
127 fi
128
129 # Do our work in the cross subdir
130 cd Cross
131
132 # Generate configuration
133 rm -f config.sh-${TARGET_ARCH}-${TARGET_OS}
134 for i in ${WORKDIR}/config.sh \
135 ${WORKDIR}/config.sh-${SITEINFO_BITS} \
136 ${WORKDIR}/config.sh-${SITEINFO_BITS}-${SITEINFO_ENDIANNESS}; do
137 cat $i >> config.sh-${TARGET_ARCH}-${TARGET_OS}
138 done
139
140 # Fixups for uclibc
141 if [ "${TARGET_OS}" = "linux-uclibc" -o "${TARGET_OS}" = "linux-uclibceabi" ]; then
142 sed -i -e "s,\(d_crypt_r=\)'define',\1'undef',g" \
143 -e "s,\(d_futimes=\)'define',\1'undef',g" \
144 -e "s,\(d_finitel=\)'define',\1'undef',g" \
145 -e "s,\(crypt_r_proto=\)'\w+',\1'0',g" \
146 -e "s,\(d_getnetbyname_r=\)'define',\1'undef',g" \
147 -e "s,\(getnetbyname_r_proto=\)'\w+',\1'0',g" \
148 -e "s,\(d_getnetbyaddr_r=\)'define',\1'undef',g" \
149 -e "s,\(getnetbyaddr_r_proto=\)'\w+',\1'0',g" \
150 -e "s,\(d_getnetent_r=\)'define',\1'undef',g" \
151 -e "s,\(getnetent_r_proto=\)'\w+',\1'0',g" \
152 -e "s,\(d_sockatmark=\)'define',\1'undef',g" \
153 -e "s,\(d_sockatmarkproto=\)'\w+',\1'0',g" \
154 -e "s,\(d_eaccess=\)'define',\1'undef',g" \
155 -e "s,\(d_stdio_ptr_lval=\)'define',\1'undef',g" \
156 -e "s,\(d_stdio_ptr_lval_sets_cnt=\)'define',\1'undef',g" \
157 -e "s,\(d_stdiobase=\)'define',\1'undef',g" \
158 -e "s,\(d_stdstdio=\)'define',\1'undef',g" \
159 -e "s,-fstack-protector,-fno-stack-protector,g" \
160 config.sh-${TARGET_ARCH}-${TARGET_OS}
161 fi
162 # Fixups for musl
163 if [ "${TARGET_OS}" = "linux-musl" -o "${TARGET_OS}" = "linux-musleabi" ]; then
164 sed -i -e "s,\(d_libm_lib_version=\)'define',\1'undef',g" \
165 -e "s,\(d_stdio_ptr_lval=\)'define',\1'undef',g" \
166 -e "s,\(d_stdio_ptr_lval_sets_cnt=\)'define',\1'undef',g" \
167 -e "s,\(d_stdiobase=\)'define',\1'undef',g" \
168 -e "s,\(d_stdstdio=\)'define',\1'undef',g" \
169 -e "s,\(d_getnetbyname_r=\)'define',\1'undef',g" \
170 -e "s,\(d_finitel=\)'define',\1'undef',g" \
171 -e "s,\(getprotobyname_r=\)'define',\1'undef',g" \
172 -e "s,\(getpwent_r=\)'define',\1'undef',g" \
173 -e "s,\(getservent_r=\)'define',\1'undef',g" \
174 -e "s,\(gethostent_r=\)'define',\1'undef',g" \
175 -e "s,\(getnetent_r=\)'define',\1'undef',g" \
176 -e "s,\(getnetbyaddr_r=\)'define',\1'undef',g" \
177 -e "s,\(getprotoent_r=\)'define',\1'undef',g" \
178 -e "s,\(getprotobynumber_r=\)'define',\1'undef',g" \
179 -e "s,\(getgrent_r=\)'define',\1'undef',g" \
180 -e "s,\(i_fcntl=\)'undef',\1'define',g" \
181 -e "s,\(h_fcntl=\)'false',\1'true',g" \
182 -e "s,-fstack-protector,-fno-stack-protector,g" \
183 -e "s,-lnsl,,g" \
184 config.sh-${TARGET_ARCH}-${TARGET_OS}
185 fi
186
187 ${@bb.utils.contains('DISTRO_FEATURES', 'largefile', '', 'do_nolargefile', d)}
188
189 # Update some paths in the configuration
190 sed -i -e 's,@ARCH@-thread-multi,,g' \
191 -e 's,@ARCH@,${TARGET_ARCH}-${TARGET_OS},g' \
192 -e 's,@STAGINGDIR@,${STAGING_DIR_HOST},g' \
193 -e "s,@INCLUDEDIR@,${STAGING_INCDIR},g" \
194 -e "s,@LIBDIR@,${libdir},g" \
195 -e "s,@BASELIBDIR@,${base_libdir},g" \
196 -e "s,@EXECPREFIX@,${exec_prefix},g" \
197 -e 's,@USRBIN@,${bindir},g' \
198 config.sh-${TARGET_ARCH}-${TARGET_OS}
199
200 case "${TARGET_ARCH}" in
201 x86_64 | powerpc | s390)
202 sed -i -e "s,\(need_va_copy=\)'undef',\1'define',g" \
203 config.sh-${TARGET_ARCH}-${TARGET_OS}
204 ;;
205 arm)
206 sed -i -e "s,\(d_u32align=\)'undef',\1'define',g" \
207 config.sh-${TARGET_ARCH}-${TARGET_OS}
208 ;;
209 esac
210 # These are strewn all over the source tree
211 for foo in `grep -I --exclude="*.patch" --exclude="*.diff" --exclude="*.pod" --exclude="README*" -m1 "/usr/include/.*\.h" ${S}/* -r -l` ${S}/utils/h2xs.PL ; do
212 echo Fixing: $foo
213 sed -e 's|\([ "^'\''I]\+\)/usr/include/|\1${STAGING_INCDIR}/|g' -i $foo
214 done
215
216 rm -f config
217 echo "ARCH = ${TARGET_ARCH}" > config
218 echo "OS = ${TARGET_OS}" >> config
219}
220
221do_compile() {
222 # Fix to avoid recursive substitution of path
223 sed -i -e 's|(@libpath, ".*"|(@libpath, "${STAGING_LIBDIR}"|g' cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm
224
225 cd Cross
226 oe_runmake perl LD="${CCLD}"
227}
228
229do_install() {
230 #export hostperl="${STAGING_BINDIR_NATIVE}/perl-native/perl${PV}"
231 oe_runmake install DESTDIR=${D}
232 # Add perl pointing at current version
233 ln -sf perl${PV} ${D}${bindir}/perl
234
235 ln -sf perl ${D}/${libdir}/perl5
236
237 # Remove unwanted file and empty directories
238 rm -f ${D}/${libdir}/perl/${PV}/.packlist
239 rmdir ${D}/${libdir}/perl/site_perl/${PV}
240 rmdir ${D}/${libdir}/perl/site_perl
241
242 # Fix up shared library
243 mv ${D}/${libdir}/perl/${PV}/CORE/libperl.so ${D}/${libdir}/libperl.so.${PV}
244 ln -sf libperl.so.${PV} ${D}/${libdir}/libperl.so.5
245 ln -sf ../../../libperl.so.${PV} ${D}/${libdir}/perl/${PV}/CORE/libperl.so
246
247 # target config, used by cpan.bbclass to extract version information
248 install config.sh ${D}${libdir}/perl
249
250 ln -s Config_heavy.pl ${D}${libdir}/perl/${PV}/Config_heavy-target.pl
251}
252
253do_install_append_class-nativesdk () {
254 create_wrapper ${D}${bindir}/perl \
255 PERL5LIB='$PERL5LIB:$OECORE_NATIVE_SYSROOT/${libdir_nativesdk}/perl/site_perl/${PV}:$OECORE_NATIVE_SYSROOT/${libdir_nativesdk}/perl/vendor_perl/${PV}:$OECORE_NATIVE_SYSROOT/${libdir_nativesdk}/perl/${PV}'
256}
257
258PACKAGE_PREPROCESS_FUNCS += "perl_package_preprocess"
259
260perl_package_preprocess () {
261 # Fix up installed configuration
262 sed -i -e "s,${D},,g" \
263 -e "s,--sysroot=${STAGING_DIR_HOST},,g" \
264 -e "s,-isystem${STAGING_INCDIR} ,,g" \
265 -e "s,${STAGING_LIBDIR},${libdir},g" \
266 -e "s,${STAGING_BINDIR},${bindir},g" \
267 -e "s,${STAGING_INCDIR},${includedir},g" \
268 -e "s,${STAGING_BINDIR_NATIVE}/perl-native/,${bindir}/,g" \
269 -e "s,${STAGING_BINDIR_NATIVE}/,,g" \
270 -e "s,${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX},${bindir},g" \
271 ${PKGD}${bindir}/h2xs \
272 ${PKGD}${bindir}/h2ph \
273 ${PKGD}${bindir}/pod2man \
274 ${PKGD}${bindir}/pod2text \
275 ${PKGD}${bindir}/pod2usage \
276 ${PKGD}${bindir}/podchecker \
277 ${PKGD}${bindir}/podselect \
278 ${PKGD}${libdir}/perl/${PV}/CORE/config.h \
279 ${PKGD}${libdir}/perl/${PV}/CORE/perl.h \
280 ${PKGD}${libdir}/perl/${PV}/CORE/pp.h \
281 ${PKGD}${libdir}/perl/${PV}/Config.pm \
282 ${PKGD}${libdir}/perl/${PV}/Config.pod \
283 ${PKGD}${libdir}/perl/${PV}/Config_heavy.pl \
284 ${PKGD}${libdir}/perl/${PV}/ExtUtils/Liblist/Kid.pm \
285 ${PKGD}${libdir}/perl/${PV}/FileCache.pm \
286 ${PKGD}${libdir}/perl/${PV}/pod/*.pod \
287 ${PKGD}${libdir}/perl/config.sh
288}
289
290PACKAGES = "perl-dbg perl perl-misc perl-dev perl-pod perl-doc perl-lib \
291 perl-module-cpan perl-module-cpanplus perl-module-unicore"
292FILES_${PN} = "${bindir}/perl ${bindir}/perl${PV} \
293 ${libdir}/perl/${PV}/Config.pm \
294 ${libdir}/perl/${PV}/strict.pm \
295 ${libdir}/perl/${PV}/warnings.pm \
296 ${libdir}/perl/${PV}/warnings \
297 ${libdir}/perl/${PV}/vars.pm \
298 "
299FILES_${PN}_append_class-nativesdk = " ${bindir}/perl.real"
300RPROVIDES_${PN} += "perl-module-strict perl-module-vars perl-module-config perl-module-warnings \
301 perl-module-warnings-register"
302FILES_${PN}-dev = "${libdir}/perl/${PV}/CORE"
303FILES_${PN}-lib = "${libdir}/libperl.so* \
304 ${libdir}/perl5 \
305 ${libdir}/perl/config.sh \
306 ${libdir}/perl/${PV}/Config_heavy.pl \
307 ${libdir}/perl/${PV}/Config_heavy-target.pl"
308FILES_${PN}-pod = "${libdir}/perl/${PV}/pod \
309 ${libdir}/perl/${PV}/*.pod \
310 ${libdir}/perl/${PV}/*/*.pod \
311 ${libdir}/perl/${PV}/*/*/*.pod "
312FILES_perl-misc = "${bindir}/*"
313FILES_${PN}-doc = "${libdir}/perl/${PV}/*/*.txt \
314 ${libdir}/perl/${PV}/*/*/*.txt \
315 ${libdir}/perl/${PV}/auto/XS/Typemap \
316 ${libdir}/perl/${PV}/B/assemble \
317 ${libdir}/perl/${PV}/B/cc_harness \
318 ${libdir}/perl/${PV}/B/disassemble \
319 ${libdir}/perl/${PV}/B/makeliblinks \
320 ${libdir}/perl/${PV}/CGI/eg \
321 ${libdir}/perl/${PV}/CPAN/PAUSE2003.pub \
322 ${libdir}/perl/${PV}/CPAN/SIGNATURE \
323 ${libdir}/perl/${PV}/CPANPLUS/Shell/Default/Plugins/HOWTO.pod \
324 ${libdir}/perl/${PV}/Encode/encode.h \
325 ${libdir}/perl/${PV}/ExtUtils/MANIFEST.SKIP \
326 ${libdir}/perl/${PV}/ExtUtils/NOTES \
327 ${libdir}/perl/${PV}/ExtUtils/PATCHING \
328 ${libdir}/perl/${PV}/ExtUtils/typemap \
329 ${libdir}/perl/${PV}/ExtUtils/xsubpp \
330 ${libdir}/perl/${PV}/ExtUtils/Changes_EU-Install \
331 ${libdir}/perl/${PV}/Net/*.eg \
332 ${libdir}/perl/${PV}/unicore/mktables \
333 ${libdir}/perl/${PV}/unicore/mktables.lst \
334 ${libdir}/perl/${PV}/unicore/version "
335
336FILES_perl-module-cpan += "${libdir}/perl/${PV}/CPAN \
337 ${libdir}/perl/${PV}/CPAN.pm"
338FILES_perl-module-cpanplus += "${libdir}/perl/${PV}/CPANPLUS \
339 ${libdir}/perl/${PV}/CPANPLUS.pm"
340FILES_perl-module-unicore += "${libdir}/perl/${PV}/unicore"
341
342# Create a perl-modules package recommending all the other perl
343# packages (actually the non modules packages and not created too)
344ALLOW_EMPTY_perl-modules = "1"
345PACKAGES_append = " perl-modules "
346
347PACKAGESPLITFUNCS_prepend = "split_perl_packages "
348
349python split_perl_packages () {
350 libdir = d.expand('${libdir}/perl/${PV}')
351 do_split_packages(d, libdir, 'auto/([^.]*)/[^/]*\.(so|ld|ix|al)', 'perl-module-%s', 'perl module %s', recursive=True, match_path=True, prepend=False)
352 do_split_packages(d, libdir, 'Module/([^\/]*)\.pm', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
353 do_split_packages(d, libdir, 'Module/([^\/]*)/.*', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
354 do_split_packages(d, libdir, '(^(?!(CPAN\/|CPANPLUS\/|Module\/|unicore\/|auto\/)[^\/]).*)\.(pm|pl|e2x)', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
355
356 # perl-modules should recommend every perl module, and only the
357 # modules. Don't attempt to use the result of do_split_packages() as some
358 # modules are manually split (eg. perl-module-unicore).
359 packages = filter(lambda p: 'perl-module-' in p, d.getVar('PACKAGES', True).split())
360 d.setVar(d.expand("RRECOMMENDS_${PN}-modules"), ' '.join(packages))
361}
362
363PACKAGES_DYNAMIC += "^perl-module-.*"
364PACKAGES_DYNAMIC_class-nativesdk += "^nativesdk-perl-module-.*"
365
366RPROVIDES_perl-lib = "perl-lib"
367
368require perl-rdepends_${PV}.inc
369require perl-ptest.inc
370
371SSTATE_SCAN_FILES += "*.pm *.pod *.h *.pl *.sh"
372
373BBCLASSEXTEND = "nativesdk"