From daa9a624dcc4e97fc8be58313dfe84eae6e5aa599ac0de91a55ced8689db7cdd Mon Sep 17 00:00:00 2001 From: Dirk Stoecker Date: Tue, 8 Aug 2023 15:28:15 +0000 Subject: [PATCH] Accepting request 1102950 from home:dimstar:Factory - Add 0001-Adjust-require-exception-to-perl-5.37.8-wording.patch: Fix build using Perl 5.38. OBS-URL: https://build.opensuse.org/request/show/1102950 OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-Module-Reader?expand=0&rev=10 --- ...ire-exception-to-perl-5.37.8-wording.patch | 90 +++++++++++++++++++ cpanspec.yml | 3 +- perl-Module-Reader.changes | 6 ++ perl-Module-Reader.spec | 10 ++- 4 files changed, 104 insertions(+), 5 deletions(-) create mode 100644 0001-Adjust-require-exception-to-perl-5.37.8-wording.patch diff --git a/0001-Adjust-require-exception-to-perl-5.37.8-wording.patch b/0001-Adjust-require-exception-to-perl-5.37.8-wording.patch new file mode 100644 index 0000000..703b733 --- /dev/null +++ b/0001-Adjust-require-exception-to-perl-5.37.8-wording.patch @@ -0,0 +1,90 @@ +From 4a20f97741b04d609ab4265fc8c6c1bdfc620daa Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Fri, 4 Aug 2023 16:58:23 +0200 +Subject: [PATCH] Adjust require exception to perl 5.37.8 wording +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +With perl 5.38.0 t/memmory test fails on Regexp objects: + + not ok 9 - regex fails the same as require + # Failed test 'regex fails the same as require' + # at t/memory.t line 99. + # got: 'Can't locate object method "INC" via package "Regexp"' + # expected: 'Can't locate object method "INC", nor "INCDIR" nor string overload via package "Regexp" in object hook in @INC' + not ok 10 - class without INC fails the same as require + # Failed test 'class without INC fails the same as require' + # at t/memory.t line 99. + # got: 'Can't locate object method "INC" via package "NonHook"' + # expected: 'Can't locate object method "INC", nor "INCDIR" nor string overload via package "NonHook" in object hook in @INC' + +This is probably caused by this perl commit which also changed the exception +text: + + commit 0d370d41c6e8fe1e36eb93a5561e6716ee3a7e3e + Author: Yves Orton + Date: Sun Dec 18 18:48:51 2022 +0100 + + pp_ctl.c - Check if refs have overloads in @INC + + If an object in @INC doesnt have a hook method, and it isnt a CODE ref + then check if it has string overloading, if it does not then die with a + helpful message, otherwise call the overload + + This uses the nice new amagic_find() function. + +This patch adjustes Module::Reader::_open_ref() to emit a similar +exception text. Though it does implement the missing features like +handling INCDIR method or string overloading. + +With the new perl it's impossible to get the same exception text in +a different way than by calling "require" function. Therefore +in the long term, I recommend stop insisting on error-to-error parity +and relaxing the tests instead. + +CPAN RT#148979 + +Signed-off-by: Petr Písař +--- + lib/Module/Reader.pm | 24 +++++++++++++++++++++--- + 1 file changed, 21 insertions(+), 3 deletions(-) + +diff --git a/lib/Module/Reader.pm b/lib/Module/Reader.pm +index cbab239..976d4ad 100644 +--- a/lib/Module/Reader.pm ++++ b/lib/Module/Reader.pm +@@ -218,9 +218,27 @@ sub _open_ref { + main; + no strict 'refs'; + no warnings 'uninitialized'; +- @cb = defined Scalar::Util::blessed $inc ? $inc->INC($file) +- : ref $inc eq 'ARRAY' ? $inc->[0]->($inc, $file) +- : $inc->($inc, $file); ++ if (defined(Scalar::Util::blessed $inc)) { ++ if ($^V < v5.37.8) { ++ @cb = $inc->INC($file); ++ } else { ++ if ($inc->can('INC')) { ++ @cb = $inc->INC($file); ++ } ++ # TODO: Handle INCDIR method ++ # TODO: Handle string overloading ++ else { ++ die "Can't locate object method \"INC\", nor" . ++ " \"INCDIR\" nor string overload via" . ++ " package \"" . ref($inc) . "\" in object hook" . ++ " in \@INC"; ++ } ++ } ++ } elsif (ref $inc eq 'ARRAY') { ++ @cb = $inc->[0]->($inc, $file); ++ } else { ++ @cb = $inc->($inc, $file); ++ } + } + + return +-- +2.41.0 + diff --git a/cpanspec.yml b/cpanspec.yml index 76ad4a4..8189fae 100644 --- a/cpanspec.yml +++ b/cpanspec.yml @@ -7,7 +7,8 @@ #sources: # - source1 # - source2 -#patches: +patches: + 0001-Adjust-require-exception-to-perl-5.37.8-wording.patch: -p1 # foo.patch: -p1 # bar.patch: #preamble: |- diff --git a/perl-Module-Reader.changes b/perl-Module-Reader.changes index 2307f90..402b11d 100644 --- a/perl-Module-Reader.changes +++ b/perl-Module-Reader.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Aug 8 15:07:21 UTC 2023 - Dominique Leuenberger + +- Add 0001-Adjust-require-exception-to-perl-5.37.8-wording.patch: + Fix build using Perl 5.38. + ------------------------------------------------------------------- Thu Jun 22 05:53:38 UTC 2017 - coolo@suse.com diff --git a/perl-Module-Reader.spec b/perl-Module-Reader.spec index 5473a17..9c2962d 100644 --- a/perl-Module-Reader.spec +++ b/perl-Module-Reader.spec @@ -1,7 +1,7 @@ # # spec file for package perl-Module-Reader # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -21,11 +21,12 @@ Version: 0.003003 Release: 0 %define cpan_name Module-Reader Summary: Find and read perl modules like perl does -License: Artistic-1.0 or GPL-1.0+ +License: Artistic-1.0 OR GPL-1.0-or-later Group: Development/Libraries/Perl -Url: http://search.cpan.org/dist/Module-Reader/ +URL: http://search.cpan.org/dist/Module-Reader/ Source0: https://cpan.metacpan.org/authors/id/H/HA/HAARG/%{cpan_name}-%{version}.tar.gz Source1: cpanspec.yml +Patch0: 0001-Adjust-require-exception-to-perl-5.37.8-wording.patch BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: perl @@ -42,6 +43,7 @@ and _do|perlfunc/do_. %prep %setup -q -n %{cpan_name}-%{version} +%patch0 -p1 %build %{__perl} Makefile.PL INSTALLDIRS=vendor