diff options
Diffstat (limited to 'meta/recipes-devtools/perl')
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" |