summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/perl
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/perl')
-rw-r--r--meta/recipes-devtools/perl/files/0001-CheckLib.pm-do-not-attempt-to-run-a-cross-executable.patch24
-rw-r--r--meta/recipes-devtools/perl/files/0001-Fix-build-with-gcc-12.patch143
-rw-r--r--meta/recipes-devtools/perl/files/0001-Fix-intermittent-failure-of-test-t-op-sigsystem.t.patch77
-rw-r--r--meta/recipes-devtools/perl/files/perl-configpm-switch.patch66
-rw-r--r--meta/recipes-devtools/perl/files/run-ptest2
-rw-r--r--meta/recipes-devtools/perl/liberror-perl_0.17029.bb51
-rw-r--r--meta/recipes-devtools/perl/libmodule-build-perl_0.4234.bb (renamed from meta/recipes-devtools/perl/libmodule-build-perl_0.4231.bb)20
-rw-r--r--meta/recipes-devtools/perl/libtest-fatal-perl_0.017.bb36
-rw-r--r--meta/recipes-devtools/perl/libtest-needs-perl_0.002010.bb (renamed from meta/recipes-devtools/perl/libtest-needs-perl_0.002009.bb)3
-rw-r--r--meta/recipes-devtools/perl/libtest-warnings-perl_0.033.bb36
-rw-r--r--meta/recipes-devtools/perl/libtry-tiny-perl_0.31.bb36
-rw-r--r--meta/recipes-devtools/perl/liburi-perl/0001-Skip-TODO-test-cases-that-fail.patch110
-rw-r--r--meta/recipes-devtools/perl/liburi-perl_5.28.bb (renamed from meta/recipes-devtools/perl/liburi-perl_5.08.bb)34
-rw-r--r--meta/recipes-devtools/perl/libxml-parser-perl/0001-Makefile.PL-make-check_lib-cross-friendly.patch28
-rw-r--r--meta/recipes-devtools/perl/libxml-parser-perl_2.46.bb59
-rw-r--r--meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb42
-rw-r--r--meta/recipes-devtools/perl/libxml-perl_0.08.bb3
-rw-r--r--meta/recipes-devtools/perl/perl-ptest.inc2
-rw-r--r--meta/recipes-devtools/perl/perl_5.38.2.bb (renamed from meta/recipes-devtools/perl/perl_5.36.0.bb)42
19 files changed, 466 insertions, 348 deletions
diff --git a/meta/recipes-devtools/perl/files/0001-CheckLib.pm-do-not-attempt-to-run-a-cross-executable.patch b/meta/recipes-devtools/perl/files/0001-CheckLib.pm-do-not-attempt-to-run-a-cross-executable.patch
deleted file mode 100644
index c5bbe7888e..0000000000
--- a/meta/recipes-devtools/perl/files/0001-CheckLib.pm-do-not-attempt-to-run-a-cross-executable.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From a033c9ece12b6eead48eed63f106ccdec6159b0c Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 20 Dec 2019 16:26:55 +0100
-Subject: [PATCH] CheckLib.pm: do not attempt to run a cross executable
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- inc/Devel/CheckLib.pm | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/inc/Devel/CheckLib.pm b/inc/Devel/CheckLib.pm
-index 36a451a..b04acc1 100644
---- a/inc/Devel/CheckLib.pm
-+++ b/inc/Devel/CheckLib.pm
-@@ -330,7 +330,7 @@ sub assert_lib {
- push @missing, $lib if $rv != 0 || !-x $exefile;
- my $absexefile = File::Spec->rel2abs($exefile);
- $absexefile = '"' . $absexefile . '"' if $absexefile =~ m/\s/;
-- push @wrongresult, $lib if $rv == 0 && -x $exefile && system($absexefile) != 0;
-+ push @wrongresult, $lib if $rv == 0 && -x $exefile && 0 != 0;
- unlink $ofile if -e $ofile;
- _cleanup_exe($exefile);
- }
diff --git a/meta/recipes-devtools/perl/files/0001-Fix-build-with-gcc-12.patch b/meta/recipes-devtools/perl/files/0001-Fix-build-with-gcc-12.patch
deleted file mode 100644
index 1d98e1389b..0000000000
--- a/meta/recipes-devtools/perl/files/0001-Fix-build-with-gcc-12.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From ee957eb9e4ec29a462cdbb2f3bbe29d4270534ef Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Thu, 2 Jun 2022 13:01:37 +0800
-Subject: [PATCH] proto.h: Fix build with gcc-12
-
-Fixes:
- In function 'dynprep',
- inlined from 'S_sortsv_flags_impl' at pp_sort.c:358:20,
- inlined from 'sortsv_amagic_i_ncmp' at pp_sort.c:572:5:
- pp_sort.c:1232:1: error: inlining failed in call to 'always_inline' 'S_amagic_i_ncmp': function not considered for inlining
- 1232 | S_amagic_i_ncmp(pTHX_ SV *const a, SV *const b)
-
-Upstream-Status: Submitted [https://github.com/Perl/perl5/pull/19808]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- proto.h | 42 ++++++++++++++----------------------------
- 1 file changed, 14 insertions(+), 28 deletions(-)
-
-diff --git a/proto.h b/proto.h
-index faca6d1..3a76c04 100644
---- a/proto.h
-+++ b/proto.h
-@@ -5606,50 +5606,43 @@ STATIC SSize_t S_unpack_rec(pTHX_ struct tempsym* symptr, const char *s, const c
- #endif
- #if defined(PERL_IN_PP_SORT_C)
- #ifndef PERL_NO_INLINE_FUNCTIONS
--PERL_STATIC_FORCE_INLINE I32 S_amagic_cmp(pTHX_ SV *const str1, SV *const str2)
-- __attribute__always_inline__;
-+PERL_STATIC_FORCE_INLINE I32 S_amagic_cmp(pTHX_ SV *const str1, SV *const str2);
- #define PERL_ARGS_ASSERT_AMAGIC_CMP \
- assert(str1); assert(str2)
- #endif
-
- #ifndef PERL_NO_INLINE_FUNCTIONS
--PERL_STATIC_FORCE_INLINE I32 S_amagic_cmp_desc(pTHX_ SV *const str1, SV *const str2)
-- __attribute__always_inline__;
-+PERL_STATIC_FORCE_INLINE I32 S_amagic_cmp_desc(pTHX_ SV *const str1, SV *const str2);
- #define PERL_ARGS_ASSERT_AMAGIC_CMP_DESC \
- assert(str1); assert(str2)
- #endif
-
- #ifndef PERL_NO_INLINE_FUNCTIONS
--PERL_STATIC_FORCE_INLINE I32 S_amagic_i_ncmp(pTHX_ SV *const a, SV *const b)
-- __attribute__always_inline__;
-+PERL_STATIC_FORCE_INLINE I32 S_amagic_i_ncmp(pTHX_ SV *const a, SV *const b);
- #define PERL_ARGS_ASSERT_AMAGIC_I_NCMP \
- assert(a); assert(b)
- #endif
-
- #ifndef PERL_NO_INLINE_FUNCTIONS
--PERL_STATIC_FORCE_INLINE I32 S_amagic_i_ncmp_desc(pTHX_ SV *const a, SV *const b)
-- __attribute__always_inline__;
-+PERL_STATIC_FORCE_INLINE I32 S_amagic_i_ncmp_desc(pTHX_ SV *const a, SV *const b);
- #define PERL_ARGS_ASSERT_AMAGIC_I_NCMP_DESC \
- assert(a); assert(b)
- #endif
-
- #ifndef PERL_NO_INLINE_FUNCTIONS
--PERL_STATIC_FORCE_INLINE I32 S_amagic_ncmp(pTHX_ SV *const a, SV *const b)
-- __attribute__always_inline__;
-+PERL_STATIC_FORCE_INLINE I32 S_amagic_ncmp(pTHX_ SV *const a, SV *const b);
- #define PERL_ARGS_ASSERT_AMAGIC_NCMP \
- assert(a); assert(b)
- #endif
-
- #ifndef PERL_NO_INLINE_FUNCTIONS
--PERL_STATIC_FORCE_INLINE I32 S_amagic_ncmp_desc(pTHX_ SV *const a, SV *const b)
-- __attribute__always_inline__;
-+PERL_STATIC_FORCE_INLINE I32 S_amagic_ncmp_desc(pTHX_ SV *const a, SV *const b);
- #define PERL_ARGS_ASSERT_AMAGIC_NCMP_DESC \
- assert(a); assert(b)
- #endif
-
- #ifndef PERL_NO_INLINE_FUNCTIONS
--PERL_STATIC_FORCE_INLINE I32 S_cmp_desc(pTHX_ SV *const str1, SV *const str2)
-- __attribute__always_inline__;
-+PERL_STATIC_FORCE_INLINE I32 S_cmp_desc(pTHX_ SV *const str1, SV *const str2);
- #define PERL_ARGS_ASSERT_CMP_DESC \
- assert(str1); assert(str2)
- #endif
-@@ -5671,51 +5664,44 @@ PERL_STATIC_FORCE_INLINE void S_sortsv_flags_impl(pTHX_ SV** array, size_t num_e
- #endif
-
- #ifndef PERL_NO_INLINE_FUNCTIONS
--PERL_STATIC_FORCE_INLINE I32 S_sv_i_ncmp(pTHX_ SV *const a, SV *const b)
-- __attribute__always_inline__;
-+PERL_STATIC_FORCE_INLINE I32 S_sv_i_ncmp(pTHX_ SV *const a, SV *const b);
- #define PERL_ARGS_ASSERT_SV_I_NCMP \
- assert(a); assert(b)
- #endif
-
- #ifndef PERL_NO_INLINE_FUNCTIONS
--PERL_STATIC_FORCE_INLINE I32 S_sv_i_ncmp_desc(pTHX_ SV *const a, SV *const b)
-- __attribute__always_inline__;
-+PERL_STATIC_FORCE_INLINE I32 S_sv_i_ncmp_desc(pTHX_ SV *const a, SV *const b);
- #define PERL_ARGS_ASSERT_SV_I_NCMP_DESC \
- assert(a); assert(b)
- #endif
-
- #ifndef PERL_NO_INLINE_FUNCTIONS
--PERL_STATIC_FORCE_INLINE I32 S_sv_ncmp(pTHX_ SV *const a, SV *const b)
-- __attribute__always_inline__;
-+PERL_STATIC_FORCE_INLINE I32 S_sv_ncmp(pTHX_ SV *const a, SV *const b);
- #define PERL_ARGS_ASSERT_SV_NCMP \
- assert(a); assert(b)
- #endif
-
- #ifndef PERL_NO_INLINE_FUNCTIONS
--PERL_STATIC_FORCE_INLINE I32 S_sv_ncmp_desc(pTHX_ SV *const a, SV *const b)
-- __attribute__always_inline__;
-+PERL_STATIC_FORCE_INLINE I32 S_sv_ncmp_desc(pTHX_ SV *const a, SV *const b);
- #define PERL_ARGS_ASSERT_SV_NCMP_DESC \
- assert(a); assert(b)
- #endif
-
- # if defined(USE_LOCALE_COLLATE)
- #ifndef PERL_NO_INLINE_FUNCTIONS
--PERL_STATIC_FORCE_INLINE I32 S_amagic_cmp_locale(pTHX_ SV *const str1, SV *const str2)
-- __attribute__always_inline__;
-+PERL_STATIC_FORCE_INLINE I32 S_amagic_cmp_locale(pTHX_ SV *const str1, SV *const str2);
- #define PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE \
- assert(str1); assert(str2)
- #endif
-
- #ifndef PERL_NO_INLINE_FUNCTIONS
--PERL_STATIC_FORCE_INLINE I32 S_amagic_cmp_locale_desc(pTHX_ SV *const str1, SV *const str2)
-- __attribute__always_inline__;
-+PERL_STATIC_FORCE_INLINE I32 S_amagic_cmp_locale_desc(pTHX_ SV *const str1, SV *const str2);
- #define PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE_DESC \
- assert(str1); assert(str2)
- #endif
-
- #ifndef PERL_NO_INLINE_FUNCTIONS
--PERL_STATIC_FORCE_INLINE I32 S_cmp_locale_desc(pTHX_ SV *const str1, SV *const str2)
-- __attribute__always_inline__;
-+PERL_STATIC_FORCE_INLINE I32 S_cmp_locale_desc(pTHX_ SV *const str1, SV *const str2);
- #define PERL_ARGS_ASSERT_CMP_LOCALE_DESC \
- assert(str1); assert(str2)
- #endif
---
-2.25.1
-
diff --git a/meta/recipes-devtools/perl/files/0001-Fix-intermittent-failure-of-test-t-op-sigsystem.t.patch b/meta/recipes-devtools/perl/files/0001-Fix-intermittent-failure-of-test-t-op-sigsystem.t.patch
new file mode 100644
index 0000000000..86fd42cd3d
--- /dev/null
+++ b/meta/recipes-devtools/perl/files/0001-Fix-intermittent-failure-of-test-t-op-sigsystem.t.patch
@@ -0,0 +1,77 @@
+From 75d974a58c461b3b5d35280e497810e46abae4ca Mon Sep 17 00:00:00 2001
+From: William Lyu <William.Lyu@windriver.com>
+Date: Wed, 4 Oct 2023 08:58:41 -0400
+Subject: [PATCH] Fix intermittent failure of test t/op/sigsystem.t
+
+[Perl issue #21546] -- https://github.com/Perl/perl5/issues/21546
+
+This fix addresses the intermittent failure of the test
+t/op/sigsystem.t by improving its robustness. Before the fix, this
+test waits a hard-coded amount of time in the parent process for the
+child process to exit, and the child process may not be able to exit
+soon enough. With this fix, the parent process in this test polls for
+whether the SIGCHLD handler reaped the child process for at most 25
+seconds.
+
+Upstream-Status: Backport [commit ID: 75d974a]
+
+Signed-off-by: William Lyu <William.Lyu@windriver.com>
+Signed-off-by: Randy MacLeod <randy.macleod@windriver.com>
+Reported-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
+
+Committer: William Lyu is now a Perl author.
+---
+ AUTHORS | 1 +
+ t/op/sigsystem.t | 17 ++++++++++++++---
+ 2 files changed, 15 insertions(+), 3 deletions(-)
+
+diff --git a/AUTHORS b/AUTHORS
+index 21948bfdc7..527dd992fd 100644
+--- a/AUTHORS
++++ b/AUTHORS
+@@ -1443,6 +1443,7 @@ Wayne Scott <wscott@ichips.intel.com>
+ Wayne Thompson <Wayne.Thompson@Ebay.sun.com>
+ Wilfredo Sánchez <wsanchez@mit.edu>
+ William J. Middleton <William.Middleton@oslo.mobil.telenor.no>
++William Lyu <William.Lyu@windriver.com>
+ William Mann <wmann@avici.com>
+ William Middleton <wmiddlet@adobe.com>
+ William R Ward <hermit@BayView.COM>
+diff --git a/t/op/sigsystem.t b/t/op/sigsystem.t
+index 25da854902..831feefb0f 100644
+--- a/t/op/sigsystem.t
++++ b/t/op/sigsystem.t
+@@ -37,7 +37,15 @@ SKIP: {
+ test_system('with reaper');
+
+ note("Waiting briefly for SIGCHLD...");
+- Time::HiRes::sleep(0.500);
++
++ # Wait at most 50 * 0.500 = 25.0 seconds for the child process to be
++ # reaped. If the child process exits and gets reaped early, this polling
++ # loop will exit early.
++
++ for (1..50) {
++ last if @pids;
++ Time::HiRes::sleep(0.500);
++ }
+
+ ok(@pids == 1, 'Reaped only one process');
+ ok($pids[0] == $pid, "Reaped the right process.") or diag(Dumper(\@pids));
+@@ -50,8 +58,11 @@ sub test_system {
+ my $got_zeroes = 0;
+
+ # This test is looking for a race between system()'s waitpid() and a
+- # signal handler. Looping a few times increases the chances of
+- # catching the error.
++ # signal handler. The system() call is expected to not interfere with the
++ # SIGCHLD signal handler. In particular, the wait() called within system()
++ # is expected to reap the child process forked by system() before the
++ # SIGCHLD signal handler is called.
++ # Looping a few times increases the chances of catching the error.
+
+ for (1..$expected_zeroes) {
+ $got_zeroes++ unless system(TRUE);
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/perl/files/perl-configpm-switch.patch b/meta/recipes-devtools/perl/files/perl-configpm-switch.patch
index f80de88974..0be1d5a93c 100644
--- a/meta/recipes-devtools/perl/files/perl-configpm-switch.patch
+++ b/meta/recipes-devtools/perl/files/perl-configpm-switch.patch
@@ -1,4 +1,4 @@
-From 055d4c31f41611b7d7fb6b0e38b3818a053de38d Mon Sep 17 00:00:00 2001
+From c25d460a2f00e9af25087d40447fe1a81c89710c Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Sun, 27 May 2007 21:04:11 +0000
Subject: [PATCH] perl: 5.8.7 -> 5.8.8 (from OE)
@@ -20,38 +20,38 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/configpm b/configpm
-index 94a4778..99b20c9 100755
+index 07219d8..01a23fa 100755
--- a/configpm
+++ b/configpm
-@@ -687,7 +687,7 @@ sub FETCH {
- my($self, $key) = @_;
-
- # check for cached value (which may be undef so we use exists not defined)
-- return exists $self->{$key} ? $self->{$key} : $self->fetch_string($key);
-+ return $self->fetch_string($key);
- }
-
+@@ -718,7 +718,7 @@ $config_txt .= uncomment <<'ENDOFEND';
+ # my($self, $key) = @_;
+ #
+ # # check for cached value (which may be undef so we use exists not defined)
+-# return exists $self->{$key} ? $self->{$key} : $self->fetch_string($key);
++# return $self->fetch_string($key);
+ # }
+ #
ENDOFEND
-@@ -845,7 +845,21 @@ $config_txt .= sprintf <<'ENDOFTIE', $fast_config;
- sub DESTROY { }
-
- sub AUTOLOAD {
-- require 'Config_heavy.pl';
-+ my $cfgfile = 'Config_heavy.pl';
-+ if (defined $ENV{PERLCONFIGTARGET} and $ENV{PERLCONFIGTARGET} eq "yes")
-+ {
-+ $cfgfile = 'Config_heavy-target.pl';
-+ }
-+ if (defined $ENV{PERL_ARCHLIB})
-+ {
-+ push @INC, $ENV{PERL_ARCHLIB};
-+ require $cfgfile;
-+ pop @INC;
-+ }
-+ else
-+ {
-+ require $cfgfile;
-+ }
- goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/;
- die "&Config::AUTOLOAD failed on $Config::AUTOLOAD";
- }
+@@ -876,7 +876,21 @@ $config_txt .= sprintf uncomment <<'ENDOFTIE', $fast_config;
+ # sub DESTROY { }
+ #
+ # sub AUTOLOAD {
+-# require 'Config_heavy.pl';
++# my $cfgfile = 'Config_heavy.pl';
++# if (defined $ENV{PERLCONFIGTARGET} and $ENV{PERLCONFIGTARGET} eq "yes")
++# {
++# $cfgfile = 'Config_heavy-target.pl';
++# }
++# if (defined $ENV{PERL_ARCHLIB})
++# {
++# push @INC, $ENV{PERL_ARCHLIB};
++# require $cfgfile;
++# pop @INC;
++# }
++# else
++# {
++# require $cfgfile;
++# }
+ # goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/;
+ # die "&Config::AUTOLOAD failed on $Config::AUTOLOAD";
+ # }
diff --git a/meta/recipes-devtools/perl/files/run-ptest b/meta/recipes-devtools/perl/files/run-ptest
index dad4d42916..0547f818b2 100644
--- a/meta/recipes-devtools/perl/files/run-ptest
+++ b/meta/recipes-devtools/perl/files/run-ptest
@@ -1,2 +1,2 @@
#!/bin/sh
-cd t && PERL_BUILD_PACKAGING=1 ./TEST | sed -u -e 's|\(.*\) .* ok$|PASS: \1|' -e 's|\(.*\) .* skipped|SKIP: \1|' -e 's|\(.*\) \.\(.*\)|FAIL: \1|'
+{ cd t && PERL_BUILD_PACKAGING=1 ./TEST || echo "FAIL: perl" ; } | sed -u -e 's|\(.*\) .* ok$|PASS: \1|' -e 's|\(.*\) .* skipped|SKIP: \1|' -e 's|\(.*\) \.\(.*\)|FAIL: \1|'
diff --git a/meta/recipes-devtools/perl/liberror-perl_0.17029.bb b/meta/recipes-devtools/perl/liberror-perl_0.17029.bb
deleted file mode 100644
index 67e5811f3c..0000000000
--- a/meta/recipes-devtools/perl/liberror-perl_0.17029.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-SUMMARY = "Error - Error/exception handling in an OO-ish way"
-DESCRIPTION = "The Error package provides two interfaces. Firstly \
-Error provides a procedural interface to exception handling. \
-Secondly Error is a base class for errors/exceptions that can \
-either be thrown, for subsequent catch, or can simply be recorded."
-HOMEPAGE = "https://github.com/shlomif/perl-error.pm"
-SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8f3499d09ee74a050c0319391ff9d100"
-
-# remove at next version upgrade or when output changes
-PR = "r1"
-HASHEQUIV_HASH_VERSION .= ".1"
-
-DEPENDS += "perl"
-
-RDEPENDS:${PN} += " \
- perl-module-carp \
- perl-module-exporter \
- perl-module-scalar-util \
- perl-module-overload \
- perl-module-strict \
- perl-module-vars \
- perl-module-warnings \
-"
-
-RDEPENDS:${PN}-ptest += " \
- perl-module-base \
- perl-module-file-spec \
- perl-module-io-handle \
- perl-module-ipc-open3 \
- perl-module-lib \
- perl-module-test-more \
-"
-
-SRC_URI = "http://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Error-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "6732b1c6207e4a9a3e2987c88368039a"
-SRC_URI[sha256sum] = "1a23f7913032aed6d4b68321373a3899ca66590f4727391a091ec19c95bf7adc"
-
-S = "${WORKDIR}/Error-${PV}"
-
-inherit cpan ptest-perl
-
-do_install:prepend() {
- # test requires "-T" (taint) command line option
- rm -rf ${B}/t/pod-coverage.t
-}
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/perl/libmodule-build-perl_0.4231.bb b/meta/recipes-devtools/perl/libmodule-build-perl_0.4234.bb
index 881d5e672e..b57618724d 100644
--- a/meta/recipes-devtools/perl/libmodule-build-perl_0.4231.bb
+++ b/meta/recipes-devtools/perl/libmodule-build-perl_0.4234.bb
@@ -11,13 +11,12 @@ SECTION = "libs"
HOMEPAGE = "https://metacpan.org/release/Module-Build"
LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
-LIC_FILES_CHKSUM = "file://README;beginline=949;endline=954;md5=624c06db56a2af4d70cf9edc29fcae1b"
+LIC_FILES_CHKSUM = "file://README;beginline=881;endline=886;md5=3027f56c664545e54678c26b7f1ac19c"
SRC_URI = "${CPAN_MIRROR}/authors/id/L/LE/LEONT/Module-Build-${PV}.tar.gz \
file://run-ptest \
"
-SRC_URI[md5sum] = "066b193e461d7dfe1eca17a139353001"
-SRC_URI[sha256sum] = "7e0f4c692c1740c1ac84ea14d7ea3d8bc798b2fb26c09877229e04f430b2b717"
+SRC_URI[sha256sum] = "66aeac6127418be5e471ead3744648c766bd01482825c5b66652675f2bc86a8f"
S = "${WORKDIR}/Module-Build-${PV}"
@@ -35,6 +34,12 @@ do_patch[postfuncs] += "do_patch_module_build"
EXTRA_CPAN_BUILD_FLAGS = "--create_packlist=0"
+do_install:prepend () {
+ # We do not have a recipe for libpod-parser-perl which is for
+ # documentation (and is deprecated in favor of Pod::Simple)
+ rm -rf ${B}/t/pod_parser.t
+}
+
do_install:append () {
rm -rf ${D}${docdir}/perl/html
sed -i "s:^#!.*:#!/usr/bin/env perl:" ${D}${bindir}/config_data
@@ -92,12 +97,21 @@ RDEPENDS:${PN}-ptest += " \
packagegroup-core-buildessential \
perl-dev \
perl-module-blib \
+ perl-module-encode-encoding \
+ perl-module-extutils-cbuilder-base \
perl-module-extutils-command-mm \
+ perl-module-extutils-mm-unix \
perl-module-file-temp \
perl-module-lib \
+ perl-module-parse-cpan-meta \
perl-module-perlio \
perl-module-perlio-encoding \
+ perl-module-pod-simple-transcodesmart \
perl-module-pod-text \
+ perl-module-tap-base \
+ perl-module-tap-formatter-base \
+ perl-module-tap-formatter-file \
+ perl-module-tap-formatter-session \
perl-module-tap-harness-env \
perl-module-tap-parser \
perl-module-tap-parser-scheduler \
diff --git a/meta/recipes-devtools/perl/libtest-fatal-perl_0.017.bb b/meta/recipes-devtools/perl/libtest-fatal-perl_0.017.bb
new file mode 100644
index 0000000000..1c3a7e5136
--- /dev/null
+++ b/meta/recipes-devtools/perl/libtest-fatal-perl_0.017.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Incredibly simple helpers for testing code with exceptions"
+DESCRIPTION = "Test::Fatal is an alternative to the popular Test::Exception.\
+It does much less, but should allow greater flexibility in testing \
+exception-throwing code with about the same amount of typing."
+HOMEPAGE = "https://github.com/rjbs/Test-Fatal"
+BUGTRACKER = "https://github.com/rjbs/Test-Fatal/issues"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b5c851290cab1dda12fcfb0e9ec43639"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/R/RJ/RJBS/Test-Fatal-${PV}.tar.gz"
+
+SRC_URI[sha256sum] = "37dfffdafb84b762efe96b02fb2aa41f37026c73e6b83590db76229697f3c4a6"
+
+S = "${WORKDIR}/Test-Fatal-${PV}"
+
+inherit cpan ptest-perl
+
+RDEPENDS:${PN} += "\
+ libtry-tiny-perl \
+ perl-module-carp \
+ perl-module-exporter \
+ perl-module-test-builder \
+"
+
+RDEPENDS:${PN}-ptest += "\
+ perl-module-extutils-makemaker \
+ perl-module-extutils-mm-unix \
+ perl-module-file-spec \
+ perl-module-overload \
+ perl-module-test-builder-tester \
+ perl-module-test-more \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/perl/libtest-needs-perl_0.002009.bb b/meta/recipes-devtools/perl/libtest-needs-perl_0.002010.bb
index 43a9a6b7d3..79a06170e0 100644
--- a/meta/recipes-devtools/perl/libtest-needs-perl_0.002009.bb
+++ b/meta/recipes-devtools/perl/libtest-needs-perl_0.002010.bb
@@ -17,8 +17,7 @@ DEPENDS += "perl"
SRC_URI = "https://cpan.metacpan.org/authors/id/H/HA/${CPAN_AUTHOR}/${CPAN_NAME}-${PV}.tar.gz"
-SRC_URI[md5sum] = "5643cd323afb77d20363acbaf9b12bcc"
-SRC_URI[sha256sum] = "571c21193ad16195df58b06b268798796a391b398c443271721d2cc0fb7c4ac3"
+SRC_URI[sha256sum] = "923ffdc78fcba96609753e4bae26b0ba0186893de4a63cd5236e012c7c90e208"
S = "${WORKDIR}/${CPAN_NAME}-${PV}"
diff --git a/meta/recipes-devtools/perl/libtest-warnings-perl_0.033.bb b/meta/recipes-devtools/perl/libtest-warnings-perl_0.033.bb
new file mode 100644
index 0000000000..17b4cc3c9e
--- /dev/null
+++ b/meta/recipes-devtools/perl/libtest-warnings-perl_0.033.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Test::Warnings - Test for warnings and the lack of them"
+DESCRIPTION = "If you've ever tried to use Test::NoWarnings to confirm there are no \
+warnings generated by your tests, combined with the convenience of \
+\\"done_testing\\" to not have to declare a test count, you'll have discovered \
+that these two features do not play well together, as the test count will \
+be calculated *before* the warnings test is run, resulting in a TAP error. \
+(See "examples/test_nowarnings.pl" in this distribution for a \
+demonstration.)"
+HOMEPAGE = "https://github.com/karenetheridge/Test-Warnings"
+BUGTRACKER = "https://rt.cpan.org/Public/Dist/Display.html?Name=Test-Warnings"
+SECTION = "libs"
+LICENSE = "Artistic-1.0-Perl | GPL-1.0-or-later"
+
+LIC_FILES_CHKSUM = "file://LICENCE;md5=f98106ac3cc05d9cbebcdb8fbf7b7815"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/E/ET/ETHER/Test-Warnings-${PV}.tar.gz"
+
+SRC_URI[sha256sum] = "b9c375719f2c61c5f97aa5ee6cf4c901a972347c415969379b0b51f67c48bbcb"
+
+S = "${WORKDIR}/Test-Warnings-${PV}"
+
+inherit cpan ptest-perl
+
+RDEPENDS:${PN} += "\
+ perl-module-test-builder \
+"
+
+# Many hidden dependencies and mysterious failures occur without full perl-modules
+RDEPENDS:${PN}-ptest += "perl-modules"
+
+do_install_ptest_perl:append () {
+ cp -r ${B}/t/lib ${D}${PTEST_PATH}/t/
+ chown -R root:root ${D}${PTEST_PATH}/t/lib
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/perl/libtry-tiny-perl_0.31.bb b/meta/recipes-devtools/perl/libtry-tiny-perl_0.31.bb
new file mode 100644
index 0000000000..a3728d8435
--- /dev/null
+++ b/meta/recipes-devtools/perl/libtry-tiny-perl_0.31.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Try::Tiny - Minimal try/catch with proper preservation of $@"
+DESCRIPTION = "This module provides bare bones try/catch/finally statements \
+that are designed to minimize common mistakes with eval blocks, and NOTHING \
+else."
+HOMEPAGE = "https://github.com/p5sagit/Try-Tiny"
+BUGTRACKER = "https://rt.cpan.org/Public/Dist/Display.html?Name=Try-Tiny"
+SECTION = "libs"
+LICENSE = "MIT"
+
+LIC_FILES_CHKSUM = "file://LICENCE;md5=5dc332c2d4aade55f5db244681000091"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/E/ET/ETHER/Try-Tiny-${PV}.tar.gz"
+
+SRC_URI[sha256sum] = "3300d31d8a4075b26d8f46ce864a1d913e0e8467ceeba6655d5d2b2e206c11be"
+
+S = "${WORKDIR}/Try-Tiny-${PV}"
+
+inherit cpan ptest-perl
+
+RDEPENDS:${PN} += "\
+ perl-module-carp \
+ perl-module-constant \
+ perl-module-exporter \
+"
+RRECOMMENDS:${PN} += "\
+ perl-module-sub-util \
+"
+RDEPENDS:${PN}-ptest += "\
+ perl-module-extutils-makemaker \
+ perl-module-extutils-mm-unix \
+ perl-module-file-spec \
+ perl-module-if \
+ perl-module-test-more \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/perl/liburi-perl/0001-Skip-TODO-test-cases-that-fail.patch b/meta/recipes-devtools/perl/liburi-perl/0001-Skip-TODO-test-cases-that-fail.patch
new file mode 100644
index 0000000000..ed1f25125f
--- /dev/null
+++ b/meta/recipes-devtools/perl/liburi-perl/0001-Skip-TODO-test-cases-that-fail.patch
@@ -0,0 +1,110 @@
+From 5a4271456104bdf027644c81c3a208cde5cf522e Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Thu, 17 Nov 2022 16:33:20 -0800
+Subject: [PATCH] Skip TODO test cases that fail
+
+TODO cases report as "not ok" with ptest-runner
+
+Upstream-Status: Inappropriate [ptest-runner specific]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+
+---
+ t/escape-char.t | 20 ++++++++++----------
+ t/iri.t | 18 +++++++++---------
+ t/mailto.t | 12 ++++++------
+ 3 files changed, 25 insertions(+), 25 deletions(-)
+
+diff --git a/t/escape-char.t b/t/escape-char.t
+index c6ce79c..5e62ad5 100644
+--- a/t/escape-char.t
++++ b/t/escape-char.t
+@@ -6,16 +6,16 @@ use warnings;
+ use Test::More;
+ use URI ();
+
+-TODO: {
+- my $str = "http://foo/\xE9";
+- utf8::upgrade($str);
+- my $uri = URI->new($str);
+-
+- local $TODO = 'URI::Escape::escape_char misunderstands utf8';
+-
+- # http://foo/%C3%A9
+- is("$uri", 'http://foo/%E9', 'correctly created a URI from a utf8-upgraded string');
+-}
++#TODO: {
++# my $str = "http://foo/\xE9";
++# utf8::upgrade($str);
++# my $uri = URI->new($str);
++#
++# local $TODO = 'URI::Escape::escape_char misunderstands utf8';
++#
++# # http://foo/%C3%A9
++# is("$uri", 'http://foo/%E9', 'correctly created a URI from a utf8-upgraded string');
++#}
+
+ {
+ my $str = "http://foo/\xE9";
+diff --git a/t/iri.t b/t/iri.t
+index cf983d6..884b36e 100644
+--- a/t/iri.t
++++ b/t/iri.t
+@@ -6,7 +6,7 @@ use Test::More;
+ use Config qw( %Config );
+
+ if (defined $Config{useperlio}) {
+- plan tests=>30;
++ plan tests=>28;
+ } else {
+ plan skip_all=>"this perl doesn't support PerlIO layers";
+ }
+@@ -67,17 +67,17 @@ is $u->as_iri, "http://➡.ws/";
+ # draft-duerst-iri-bis.txt examples (section 3.7.1):
+ is(URI->new("http://www.example.org/D%C3%BCrst")->as_iri, "http://www.example.org/D\xFCrst");
+ is(URI->new("http://www.example.org/D%FCrst")->as_iri, "http://www.example.org/D%FCrst");
+-TODO: {
+- local $TODO = "some chars (like U+202E, RIGHT-TO-LEFT OVERRIDE) need to stay escaped";
+-is(URI->new("http://xn--99zt52a.example.org/%e2%80%ae")->as_iri, "http://\x{7D0D}\x{8C46}.example.org/%e2%80%ae");
+-}
++#TODO: {
++# local $TODO = "some chars (like U+202E, RIGHT-TO-LEFT OVERRIDE) need to stay escaped";
++#is(URI->new("http://xn--99zt52a.example.org/%e2%80%ae")->as_iri, "http://\x{7D0D}\x{8C46}.example.org/%e2%80%ae");
++#}
+
+ # try some URLs that can't be IDNA encoded (fallback to encoded UTF8 bytes)
+ $u = URI->new("http://" . ("ü" x 128));
+ is $u, "http://" . ("%C3%BC" x 128);
+ is $u->host, ("\xC3\xBC" x 128);
+-TODO: {
+- local $TODO = "should ihost decode UTF8 bytes?";
+- is $u->ihost, ("ü" x 128);
+-}
++#TODO: {
++# local $TODO = "should ihost decode UTF8 bytes?";
++# is $u->ihost, ("ü" x 128);
++#}
+ is $u->as_iri, "http://" . ("ü" x 128);
+diff --git a/t/mailto.t b/t/mailto.t
+index 79e9a13..c68cfb2 100644
+--- a/t/mailto.t
++++ b/t/mailto.t
+@@ -48,12 +48,12 @@ $u = URI->new('mailto:user+detail@example.com');
+ is $u->to, 'user+detail@example.com', 'subaddress with `+` parsed correctly';
+ is $u, 'mailto:user+detail@example.com', '... and stringification works';
+
+-TODO: {
+- local $TODO = "We can't handle quoted local parts without properly parsing the email addresses";
+- $u = URI->new('mailto:"foo bar+baz"@example.com');
+- is $u->to, '"foo bar+baz"@example.com', 'address with quoted local part containing spaces is parsed correctly';
+- is $u, 'mailto:%22foo%20bar+baz%22@example.com', '... and stringification works';
+-}
++#TODO: {
++# local $TODO = "We can't handle quoted local parts without properly parsing the email addresses";
++# $u = URI->new('mailto:"foo bar+baz"@example.com');
++# is $u->to, '"foo bar+baz"@example.com', 'address with quoted local part containing spaces is parsed correctly';
++# is $u, 'mailto:%22foo%20bar+baz%22@example.com', '... and stringification works';
++#}
+
+ # RFC 5321 (4.1.3) - Address Literals
+
diff --git a/meta/recipes-devtools/perl/liburi-perl_5.08.bb b/meta/recipes-devtools/perl/liburi-perl_5.28.bb
index 5428c9ddf9..1fc0efd3e5 100644
--- a/meta/recipes-devtools/perl/liburi-perl_5.08.bb
+++ b/meta/recipes-devtools/perl/liburi-perl_5.28.bb
@@ -2,19 +2,17 @@ SUMMARY = "Perl module to manipulate and access URI strings"
DESCRIPTION = "This package contains the URI.pm module with friends. \
The module implements the URI class. URI objects can be used to access \
and manipulate the various components that make up these strings."
-
-HOMEPAGE = "http://search.cpan.org/dist/URI/"
+HOMEPAGE = "https://metacpan.org/dist/URI"
SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c453e94fae672800f83bc1bd7a38b53f"
-
-DEPENDS += "perl"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9944b87af51186f848ae558344aded9f"
-SRC_URI = "http://www.cpan.org/authors/id/E/ET/ETHER/URI-${PV}.tar.gz"
+SRC_URI = "${CPAN_MIRROR}/authors/id/O/OA/OALDERS/URI-${PV}.tar.gz \
+ file://0001-Skip-TODO-test-cases-that-fail.patch \
+ "
-SRC_URI[md5sum] = "cdbbf8f8ccdec5c162c8505077a35c2c"
-SRC_URI[sha256sum] = "7e2c6fe3b1d5947da334fa558a96e748aaa619213b85bcdce5b5347d4d26c46e"
+SRC_URI[sha256sum] = "e7985da359b15efd00917fa720292b711c396f2f9f9a7349e4e7dec74aa79765"
S = "${WORKDIR}/URI-${PV}"
@@ -33,18 +31,26 @@ do_install:prepend() {
rm -rf ${B}/t/file.t
}
-RDEPENDS:${PN} += "perl-module-integer perl-module-mime-base64"
+RDEPENDS:${PN} += "\
+ perl-module-integer \
+ perl-module-mime-base64 \
+"
+
RDEPENDS:${PN}-ptest += " \
+ libtest-fatal-perl \
libtest-needs-perl \
- perl-module-test-more \
- perl-module-test \
- perl-module-utf8 \
- perl-module-extutils-makemaker \
- perl-module-net-domain \
+ libtest-warnings-perl \
perl-module-encode \
+ perl-module-encode-encoding \
+ perl-module-extutils-makemaker \
perl-module-extutils-mm-unix \
perl-module-file-spec-functions \
+ perl-module-net-domain \
perl-module-perlio \
+ perl-module-perlio-encoding \
+ perl-module-test \
+ perl-module-test-more \
+ perl-module-utf8 \
"
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/perl/libxml-parser-perl/0001-Makefile.PL-make-check_lib-cross-friendly.patch b/meta/recipes-devtools/perl/libxml-parser-perl/0001-Makefile.PL-make-check_lib-cross-friendly.patch
new file mode 100644
index 0000000000..457fb77384
--- /dev/null
+++ b/meta/recipes-devtools/perl/libxml-parser-perl/0001-Makefile.PL-make-check_lib-cross-friendly.patch
@@ -0,0 +1,28 @@
+From bd9b0e10843da72276982bd1394ade734fea0289 Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Fri, 2 Feb 2024 21:15:34 -0800
+Subject: [PATCH] Makefile.PL: make check_lib cross friendly
+
+lib => qw(expat) does not seem to respect EXPATLIBPATH and
+EXPATINCPATH when we are cross-compiling.
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ Makefile.PL | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.PL b/Makefile.PL
+index 505d1df..19f428b 100644
+--- a/Makefile.PL
++++ b/Makefile.PL
+@@ -30,7 +30,7 @@ foreach (@ARGV) {
+
+ unless (
+ check_lib( # fill in what you prompted the user for here
+- lib => [qw(expat)],
++ #lib => [qw(expat)],
+ header => ['expat.h'],
+ incpath => $expat_incpath,
+ ( $expat_libpath ? ( libpath => $expat_libpath ) : () ),
diff --git a/meta/recipes-devtools/perl/libxml-parser-perl_2.46.bb b/meta/recipes-devtools/perl/libxml-parser-perl_2.46.bb
deleted file mode 100644
index 6cd40bd292..0000000000
--- a/meta/recipes-devtools/perl/libxml-parser-perl_2.46.bb
+++ /dev/null
@@ -1,59 +0,0 @@
-SUMMARY = "XML::Parser - A perl module for parsing XML documents"
-HOMEPAGE = "https://libexpat.github.io/"
-SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
-LIC_FILES_CHKSUM = "file://Parser.pm;beginline=1;endline=7;md5=d12cc778c80fc4c518f0e5dee29fd5fb"
-
-DEPENDS += "expat"
-
-SRC_URI = "http://www.cpan.org/modules/by-module/XML/XML-Parser-${PV}.tar.gz \
- file://ptest-perl/run-ptest \
- file://0001-CheckLib.pm-do-not-attempt-to-run-a-cross-executable.patch \
- "
-SRC_URI[md5sum] = "80bb18a8e6240fcf7ec2f7b57601c170"
-SRC_URI[sha256sum] = "d331332491c51cccfb4cb94ffc44f9cd73378e618498d4a37df9e043661c515d"
-
-S = "${WORKDIR}/XML-Parser-${PV}"
-
-EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR} CC='${CC}' LD='${CCLD}' FULL_AR='${AR}'"
-
-inherit cpan ptest-perl
-
-# fix up sub MakeMaker project as arguments don't get propagated though
-# see https://rt.cpan.org/Public/Bug/Display.html?id=28632
-do_configure:append:class-target() {
- sed -E \
- -e 's:-L${STAGING_LIBDIR}::g' -e 's:-I${STAGING_INCDIR}::g' \
- -i Makefile Expat/Makefile
-}
-
-do_configure:append() {
- sed -e 's:--sysroot=.*\(\s\|$\):--sysroot=${STAGING_DIR_TARGET} :g' \
- -i Makefile Expat/Makefile
- sed 's:^FULL_AR = .*:FULL_AR = ${AR}:g' -i Expat/Makefile
- # make sure these two do not build in parallel
- sed 's!^$(INST_DYNAMIC):!$(INST_DYNAMIC): $(BOOTSTRAP)!' -i Expat/Makefile
-}
-
-do_compile() {
- export LIBC="$(find ${STAGING_DIR_TARGET}/${base_libdir}/ -name 'libc-*.so')"
- cpan_do_compile
-}
-
-do_compile:class-native() {
- cpan_do_compile
-}
-
-do_install_ptest() {
- sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlstats
- sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlfilter
- sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlcomments
- sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/canonical
- cp -r ${B}/samples ${D}${PTEST_PATH}
- chown -R root:root ${D}${PTEST_PATH}/samples
-}
-
-RDEPENDS:${PN} += "perl-module-carp perl-module-file-spec"
-RDEPENDS:${PN}-ptest += "perl-module-filehandle perl-module-if perl-module-test perl-module-test-more"
-
-BBCLASSEXTEND="native nativesdk"
diff --git a/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb b/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb
new file mode 100644
index 0000000000..cffc133a45
--- /dev/null
+++ b/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb
@@ -0,0 +1,42 @@
+SUMMARY = "XML::Parser - A perl module for parsing XML documents"
+HOMEPAGE = "https://libexpat.github.io/"
+SECTION = "libs"
+LICENSE = "Artistic-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4342f85bf14a1fdd6a751573f1e61c03"
+
+DEPENDS += "expat"
+
+SRC_URI = "${CPAN_MIRROR}/modules/by-module/XML/XML-Parser-${PV}.tar.gz \
+ file://0001-Makefile.PL-make-check_lib-cross-friendly.patch \
+ "
+
+SRC_URI[sha256sum] = "ad4aae643ec784f489b956abe952432871a622d4e2b5c619e8855accbfc4d1d8"
+
+S = "${WORKDIR}/XML-Parser-${PV}"
+
+EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR} CC='${CC}' LD='${CCLD}' FULL_AR='${AR}'"
+
+inherit cpan pkgconfig ptest-perl
+
+do_compile() {
+ export LIBC="$(find ${STAGING_DIR_TARGET}/${base_libdir}/ -name 'libc-*.so')"
+ cpan_do_compile
+}
+
+do_compile:class-native() {
+ cpan_do_compile
+}
+
+do_install_ptest() {
+ sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlstats
+ sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlfilter
+ sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlcomments
+ sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/canonical
+ cp -r ${B}/samples ${D}${PTEST_PATH}
+ chown -R root:root ${D}${PTEST_PATH}/samples
+}
+
+RDEPENDS:${PN} += "perl-module-carp perl-module-file-spec"
+RDEPENDS:${PN}-ptest += "perl-module-filehandle perl-module-if perl-module-test perl-module-test-more"
+
+BBCLASSEXTEND="native nativesdk"
diff --git a/meta/recipes-devtools/perl/libxml-perl_0.08.bb b/meta/recipes-devtools/perl/libxml-perl_0.08.bb
index 323853cc2f..89acb64ef5 100644
--- a/meta/recipes-devtools/perl/libxml-perl_0.08.bb
+++ b/meta/recipes-devtools/perl/libxml-perl_0.08.bb
@@ -6,7 +6,6 @@ HOMEPAGE = "http://search.cpan.org/dist/libxml-perl/"
SUMMARY = "Collection of Perl modules for working with XML"
SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
-PR = "r3"
LIC_FILES_CHKSUM = "file://README;beginline=33;endline=35;md5=1705549eef7577a3d6ba71123a1f0ce8"
@@ -27,4 +26,4 @@ do_compile() {
}
RDEPENDS:${PN} += "perl-module-carp perl-module-overload perl-module-universal perl-module-io-handle"
-RDEPENDS:${PN}-ptest += "libxml-parser-perl perl-module-file-glob"
+RDEPENDS:${PN}-ptest += "libxml-parser-perl perl-module-file-glob perl-module-cwd perl-module-constant"
diff --git a/meta/recipes-devtools/perl/perl-ptest.inc b/meta/recipes-devtools/perl/perl-ptest.inc
index c233fab545..e07355d3f5 100644
--- a/meta/recipes-devtools/perl/perl-ptest.inc
+++ b/meta/recipes-devtools/perl/perl-ptest.inc
@@ -56,7 +56,7 @@ python populate_packages:prepend() {
'${PN}-ptest%s', '%s', recursive=True, match_path=True)
}
-RDEPENDS:${PN}-ptest += "${PN}-modules ${PN}-doc sed"
+RDEPENDS:${PN}-ptest += "${PN}-modules ${PN}-doc sed procps-ps"
# The perl-ptest package contains Perl internal modules and generating file
# dependencies for it causes problems.
diff --git a/meta/recipes-devtools/perl/perl_5.36.0.bb b/meta/recipes-devtools/perl/perl_5.38.2.bb
index 2dc558aaa5..63909c242d 100644
--- a/meta/recipes-devtools/perl/perl_5.36.0.bb
+++ b/meta/recipes-devtools/perl/perl_5.38.2.bb
@@ -17,7 +17,7 @@ SRC_URI = "https://www.cpan.org/src/5.0/perl-${PV}.tar.gz;name=perl \
file://0002-Constant-Fix-up-shebang.patch \
file://determinism.patch \
file://0001-cpan-Sys-Syslog-Makefile.PL-Fix-_PATH_LOG-for-determ.patch \
- file://0001-Fix-build-with-gcc-12.patch \
+ file://0001-Fix-intermittent-failure-of-test-t-op-sigsystem.t.patch \
"
SRC_URI:append:class-native = " \
file://perl-configpm-switch.patch \
@@ -26,7 +26,7 @@ SRC_URI:append:class-target = " \
file://encodefix.patch \
"
-SRC_URI[perl.sha256sum] = "e26085af8ac396f62add8a533c3a0ea8c8497d836f0689347ac5abd7b7a4e00a"
+SRC_URI[perl.sha256sum] = "a0a31534451eb7b83c7d6594a497543a54d488bc90ca00f5e34762577f40655e"
B = "${WORKDIR}/perl-${PV}-build"
@@ -39,8 +39,10 @@ DEPENDS += "make-native"
PERL_LIB_VER = "${@'.'.join(d.getVar('PV').split('.')[0:2])}.0"
PACKAGECONFIG ??= "gdbm"
+PACKAGECONFIG:append:libc-musl = " anylocale"
PACKAGECONFIG[bdb] = ",-Ui_db,db"
PACKAGECONFIG[gdbm] = ",-Ui_gdbm,gdbm"
+PACKAGECONFIG[anylocale] = "-Dd_setlocale_accepts_any_locale_name=define,,"
# Don't generate comments in enc2xs output files. They are not reproducible
export ENC2XS_NO_COMMENTS = "1"
@@ -57,6 +59,7 @@ do_configure:prepend() {
do_configure:class-target() {
./configure --prefix=${prefix} --libdir=${libdir} \
--target=${TARGET_SYS} \
+ -Duse64bitint \
-Duseshrplib \
-Dusethreads \
-Dsoname=libperl.so.5 \
@@ -109,6 +112,10 @@ do_configure:class-native() {
-Ui_xlocale \
-Alddlflags=' ${LDFLAGS}' \
${PACKAGECONFIG_CONFARGS}
+
+ # This prevents leakage of build paths into perl-native binaries, which
+ # causes non-deterministic troubles when those paths no longer exist or aren't accessible.
+ sed -i -e "s,${STAGING_LIBDIR},/completelyboguspath,g" config.h
}
do_configure:append() {
@@ -152,9 +159,10 @@ do_install:append:class-target() {
# This is used to substitute target configuration when running native perl via perl-configpm-switch.patch
ln -s Config_heavy.pl ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config_heavy-target.pl
- # This contains host-specific information used for building miniperl (a helper executable built with host compiler)
- # and therefore isn't reproducible. I believe the file isn't actually needed on target.
- rm ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/xconfig.h
+ # xconfig.h contains references to build host architecture, and yet is included from various other places.
+ # To make it reproducible let's make it a copy of config.h patch that is specific to the target architecture.
+ # It is believed that the original header is the product of building miniperl (a helper executable built with host compiler).
+ cp ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/config.h ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/xconfig.h
}
do_install:append:class-nativesdk() {
@@ -199,6 +207,7 @@ perl_package_preprocess () {
${PKGD}${bindir}/pod2usage.perl \
${PKGD}${bindir}/podchecker.perl \
${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/config.h \
+ ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/xconfig.h \
${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/perl.h \
${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/pp.h \
${PKGD}${libdir}/perl5/${PV}/Config.pm \
@@ -264,7 +273,7 @@ FILES:${PN} = "${bindir}/perl ${bindir}/perl.real ${bindir}/perl${PV} ${libdir}/
${libdir}/perl5/${PV}/ExtUtils/typemap \
"
RPROVIDES:${PN} += "perl-module-strict perl-module-vars perl-module-config perl-module-warnings \
- perl-module-warnings-register"
+ perl-module-warnings-register perl-module-config-git"
FILES:${PN}-staticdev:append = " ${libdir}/perl5/${PV}/*/CORE/libperl.a"
@@ -297,12 +306,12 @@ ALTERNATIVE_PRIORITY = "40"
ALTERNATIVE:${PN}-doc = "Thread.3"
ALTERNATIVE_LINK_NAME[Thread.3] = "${mandir}/man3/Thread.3"
-# Create a perl-modules package recommending all the other perl
-# packages (actually the non modules packages and not created too)
+# Create a perl-modules package that represents the collection of all the
+# other perl packages (actually the non modules packages and not created too).
ALLOW_EMPTY:${PN}-modules = "1"
PACKAGES += "${PN}-modules "
-PACKAGESPLITFUNCS:prepend = "split_perl_packages "
+PACKAGESPLITFUNCS =+ "split_perl_packages"
python split_perl_packages () {
libdir = d.expand('${libdir}/perl5/${PV}')
@@ -313,14 +322,16 @@ python split_perl_packages () {
do_split_packages(d, libdir, r'.*linux/([^\/].*)\.(pm|pl|e2x)', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
do_split_packages(d, libdir, r'(^(?!(CPAN\/|CPANPLUS\/|Module\/|unicore\/|.*linux\/)[^\/]).*)\.(pm|pl|e2x)', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
- # perl-modules should recommend every perl module, and only the
+ # perl-modules should runtime-depend on every perl module, and only the
# modules. Don't attempt to use the result of do_split_packages() as some
- # modules are manually split (eg. perl-module-unicore).
- packages = filter(lambda p: 'perl-module-' in p, d.getVar('PACKAGES').split())
- d.setVar(d.expand("RRECOMMENDS:${PN}-modules"), ' '.join(packages))
+ # modules are manually split (eg. perl-module-unicore). Also, the split
+ # packages should not include packages defined in RPROVIDES:${PN}.
+ perl_sub_pkgs = d.getVar(d.expand("RPROVIDES:${PN}")).split()
+ packages = filter(lambda p: 'perl-module-' in p and p not in perl_sub_pkgs, d.getVar('PACKAGES').split())
+ d.setVar(d.expand("RDEPENDS:${PN}-modules"), ' '.join(packages))
# Read the pre-generated dependency file, and use it to set module dependecies
- for line in open(d.expand("${WORKDIR}") + '/perl-rdepends.txt').readlines():
+ for line in open(d.getVar("UNPACKDIR") + '/perl-rdepends.txt').readlines():
splitline = line.split()
# Filter empty lines and comments
if len(splitline) == 0 or splitline[0].startswith("#"):
@@ -343,7 +354,8 @@ python() {
d.setVar("PACKAGES_DYNAMIC", "^nativesdk-perl-module-.*")
}
-RDEPENDS:${PN}-misc += "perl perl-modules"
+RDEPENDS:${PN}-misc += "perl"
+RRECOMMENDS:${PN}-misc += "perl-modules"
RDEPENDS:${PN}-pod += "perl"
BBCLASSEXTEND = "native nativesdk"