···11+From: =?UTF-8?q?Christian=20K=C3=B6gler?= <ck3d@gmx.de>
22+Date: Mon, 10 Apr 2023 22:12:24 +0200
33+Subject: [PATCH] miniperl compatible modules
44+55+CPAN::Meta
66+ExtUtils::MakeMaker
77+JSON::PP
88+Data::Dumper
99+1010+Updated for perl v5.38.0 by stig@stig.io
1111+1212+---
1313+1414+diff --git a/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm b/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm
1515+index b0e83b0d2d..dab4907704 100644
1616+--- a/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm
1717++++ b/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm
1818+@@ -86,21 +86,7 @@ sub new {
1919+ # from version::vpp
2020+ sub _find_magic_vstring {
2121+ my $value = shift;
2222+- my $tvalue = '';
2323+- require B;
2424+- my $sv = B::svref_2object(\$value);
2525+- my $magic = ref($sv) eq 'B::PVMG' ? $sv->MAGIC : undef;
2626+- while ( $magic ) {
2727+- if ( $magic->TYPE eq 'V' ) {
2828+- $tvalue = $magic->PTR;
2929+- $tvalue =~ s/^v?(.+)$/v$1/;
3030+- last;
3131+- }
3232+- else {
3333+- $magic = $magic->MOREMAGIC;
3434+- }
3535+- }
3636+- return $tvalue;
3737++ return version::->parse($value)->stringify;
3838+ }
3939+4040+ # safe if given an unblessed reference
4141+diff --git a/cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm b/cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm
4242+index 746abd63bc..c55d7cd2d0 100644
4343+--- a/cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm
4444++++ b/cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm
4545+@@ -1,6 +1,7 @@
4646+ use 5.008001; # sane UTF-8 support
4747+ use strict;
4848+ use warnings;
4949++no warnings 'experimental::builtin';
5050+ package CPAN::Meta::YAML; # git description: v1.68-2-gcc5324e
5151+ # XXX-INGY is 5.8.1 too old/broken for utf8?
5252+ # XXX-XDG Lancaster consensus was that it was sufficient until
5353+@@ -650,27 +651,29 @@ sub _dump_string {
5454+ join '', map { "$_\n" } @lines;
5555+ }
5656+5757+-sub _has_internal_string_value {
5858++# taken from cpan/JSON-PP/lib/JSON/PP.pm
5959++sub _looks_like_number {
6060+ my $value = shift;
6161+- my $b_obj = B::svref_2object(\$value); # for round trip problem
6262+- return $b_obj->FLAGS & B::SVf_POK();
6363++ no warnings 'numeric';
6464++ # if the utf8 flag is on, it almost certainly started as a string
6565++ return if utf8::is_utf8($value);
6666++ # detect numbers
6767++ # string & "" -> ""
6868++ # number & "" -> 0 (with warning)
6969++ # nan and inf can detect as numbers, so check with * 0
7070++ return unless length((my $dummy = "") & $value);
7171++ return unless 0 + $value eq $value;
7272++ return 1 if $value * 0 == 0;
7373++ return -1; # inf/nan
7474+ }
7575+7676+ sub _dump_scalar {
7777+ my $string = $_[1];
7878+ my $is_key = $_[2];
7979+- # Check this before checking length or it winds up looking like a string!
8080+- my $has_string_flag = _has_internal_string_value($string);
8181+ return '~' unless defined $string;
8282+ return "''" unless length $string;
8383+- if (Scalar::Util::looks_like_number($string)) {
8484+- # keys and values that have been used as strings get quoted
8585+- if ( $is_key || $has_string_flag ) {
8686+- return qq['$string'];
8787+- }
8888+- else {
8989+- return $string;
9090+- }
9191++ if (_looks_like_number($string)) {
9292++ return qq['$string'];
9393+ }
9494+ if ( $string =~ /[\x00-\x09\x0b-\x0d\x0e-\x1f\x7f-\x9f\'\n]/ ) {
9595+ $string =~ s/\\/\\\\/g;
9696+@@ -800,9 +803,6 @@ sub errstr {
9797+ # Helper functions. Possibly not needed.
9898+9999+100100+-# Use to detect nv or iv
101101+-use B;
102102+-
103103+ # XXX-INGY Is flock CPAN::Meta::YAML's responsibility?
104104+ # Some platforms can't flock :-(
105105+ # XXX-XDG I think it is. When reading and writing files, we ought
106106+@@ -822,35 +822,8 @@ sub _can_flock {
107107+ }
108108+ }
109109+110110+-
111111+-# XXX-INGY Is this core in 5.8.1? Can we remove this?
112112+-# XXX-XDG Scalar::Util 1.18 didn't land until 5.8.8, so we need this
113113+-#####################################################################
114114+-# Use Scalar::Util if possible, otherwise emulate it
115115+-
116116+-use Scalar::Util ();
117117+ BEGIN {
118118+- local $@;
119119+- if ( eval { Scalar::Util->VERSION(1.18); } ) {
120120+- *refaddr = *Scalar::Util::refaddr;
121121+- }
122122+- else {
123123+- eval <<'END_PERL';
124124+-# Scalar::Util failed to load or too old
125125+-sub refaddr {
126126+- my $pkg = ref($_[0]) or return undef;
127127+- if ( !! UNIVERSAL::can($_[0], 'can') ) {
128128+- bless $_[0], 'Scalar::Util::Fake';
129129+- } else {
130130+- $pkg = undef;
131131+- }
132132+- "$_[0]" =~ /0x(\w+)/;
133133+- my $i = do { no warnings 'portable'; hex $1 };
134134+- bless $_[0], $pkg if defined $pkg;
135135+- $i;
136136+-}
137137+-END_PERL
138138+- }
139139++ *refaddr = *builtin::refaddr;
140140+ }
141141+142142+ delete $CPAN::Meta::YAML::{refaddr};
143143+diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm b/cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm
144144+index 3604eae402..991f69d275 100644
145145+--- a/cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm
146146++++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm
147147+@@ -1,12 +1,13 @@
148148+ use strict;
149149+ use warnings;
150150++no warnings 'experimental::builtin';
151151+152152+ package CPAN::Meta::Merge;
153153+154154+ our $VERSION = '2.150010';
155155+156156+ use Carp qw/croak/;
157157+-use Scalar::Util qw/blessed/;
158158++use builtin qw/blessed/;
159159+ use CPAN::Meta::Converter 2.141170;
160160+161161+ sub _is_identical {
162162+diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm b/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm
163163+index d4e93fd8a5..809da68d02 100644
164164+--- a/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm
165165++++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm
166166+@@ -1,6 +1,7 @@
167167+ use 5.006;
168168+ use strict;
169169+ use warnings;
170170++no warnings 'experimental::builtin';
171171+ package CPAN::Meta::Prereqs;
172172+173173+ our $VERSION = '2.150010';
174174+@@ -14,7 +15,6 @@ our $VERSION = '2.150010';
175175+ #pod =cut
176176+177177+ use Carp qw(confess);
178178+-use Scalar::Util qw(blessed);
179179+ use CPAN::Meta::Requirements 2.121;
180180+181181+ #pod =method new
182182+@@ -168,7 +168,12 @@ sub types_in {
183183+ sub with_merged_prereqs {
184184+ my ($self, $other) = @_;
185185+186186+- my @other = blessed($other) ? $other : @$other;
187187++ eval 'require Scalar::Util';
188188++ my @other = unless($@){
189189++ Scalar::Util::blessed($other) ? $other : @$other;
190190++ }else{
191191++ builtin::blessed($other) ? $other : @$other;
192192++ }
193193+194194+ my @prereq_objs = ($self, @other);
195195+196196+diff --git a/cpan/JSON-PP/lib/JSON/PP.pm b/cpan/JSON-PP/lib/JSON/PP.pm
197197+index fc8fcbc8f0..cda7b90c65 100644
198198+--- a/cpan/JSON-PP/lib/JSON/PP.pm
199199++++ b/cpan/JSON-PP/lib/JSON/PP.pm
200200+@@ -4,6 +4,7 @@ package JSON::PP;
201201+202202+ use 5.008;
203203+ use strict;
204204++no warnings 'experimental::builtin';
205205+206206+ use Exporter ();
207207+ BEGIN { our @ISA = ('Exporter') }
208208+diff --git a/dist/Data-Dumper/Dumper.pm b/dist/Data-Dumper/Dumper.pm
209209+index bb6d3caedb..0c2fde4743 100644
210210+--- a/dist/Data-Dumper/Dumper.pm
211211++++ b/dist/Data-Dumper/Dumper.pm
212212+@@ -11,6 +11,7 @@ package Data::Dumper;
213213+214214+ use strict;
215215+ use warnings;
216216++no warnings 'experimental::builtin';
217217+218218+ #$| = 1;
219219+220220+@@ -125,8 +126,7 @@ sub new {
221221+ # Packed numeric addresses take less memory. Plus pack is faster than sprintf
222222+223223+ sub format_refaddr {
224224+- require Scalar::Util;
225225+- pack "J", Scalar::Util::refaddr(shift);
226226++ pack "J", builtin::refaddr(shift);
227227+ };
228228+229229+ #
230230+@@ -282,9 +282,8 @@ sub _dump {
231231+ warn "WARNING(Freezer method call failed): $@" if $@;
232232+ }
233233+234234+- require Scalar::Util;
235235+- my $realpack = Scalar::Util::blessed($val);
236236+- my $realtype = $realpack ? Scalar::Util::reftype($val) : ref $val;
237237++ my $realpack = builtin::blessed($val);
238238++ my $realtype = $realpack ? builtin::reftype($val) : ref $val;
239239+ $id = format_refaddr($val);
240240+241241+ # Note: By this point $name is always defined and of non-zero length.
242242+@@ -576,7 +575,7 @@ sub _dump {
243243+ # here generates a different result. So there are actually "three" different
244244+ # implementations of Data::Dumper (kind of sort of) but we only test two.
245245+ elsif (!defined &_vstring
246246+- and ref $ref eq 'VSTRING' || eval{Scalar::Util::isvstring($val)}) {
247247++ and ref $ref eq 'VSTRING') {
248248+ $out .= sprintf "v%vd", $val;
249249+ }
250250+ # \d here would treat "1\x{660}" as a safe decimal number
+1-1
pkgs/development/interpreters/perl/intepreter.nix
···72727373 ++ lib.optional stdenv.isSunOS ./ld-shared.patch
7474 ++ lib.optionals stdenv.isDarwin [ ./cpp-precomp.patch ./sw_vers.patch ]
7575- ++ lib.optional crossCompiling ./MakeMaker-cross.patch;
7575+ ++ lib.optional crossCompiling ./cross.patch;
76767777 # This is not done for native builds because pwd may need to come from
7878 # bootstrap tools when building bootstrap perl.