https://github.com/arsv/perl-cross/pull/164 From b47ef629459076a5ccb3d0caf83ccfbb8ba0571b Mon Sep 17 00:00:00 2001 From: Marcus Ramberg Date: Wed, 3 Sep 2025 10:35:58 +0200 Subject: [PATCH] patches for perl-5.42.0 --- cnf/diffs/perl5-5.42.0/constant.patch | 1 + cnf/diffs/perl5-5.42.0/dynaloader.patch | 1 + cnf/diffs/perl5-5.42.0/findext.patch | 1 + cnf/diffs/perl5-5.42.0/installscripts.patch | 1 + cnf/diffs/perl5-5.42.0/liblist.patch | 80 +++++++++++++++++++++ cnf/diffs/perl5-5.42.0/makemaker.patch | 1 + cnf/diffs/perl5-5.42.0/posix-makefile.patch | 1 + cnf/diffs/perl5-5.42.0/test-checkcase.patch | 1 + cnf/diffs/perl5-5.42.0/test-makemaker.patch | 1 + cnf/diffs/perl5-5.42.0/xconfig.patch | 1 + 10 files changed, 89 insertions(+) create mode 120000 cnf/diffs/perl5-5.42.0/constant.patch create mode 120000 cnf/diffs/perl5-5.42.0/dynaloader.patch create mode 120000 cnf/diffs/perl5-5.42.0/findext.patch create mode 120000 cnf/diffs/perl5-5.42.0/installscripts.patch create mode 100644 cnf/diffs/perl5-5.42.0/liblist.patch create mode 120000 cnf/diffs/perl5-5.42.0/makemaker.patch create mode 120000 cnf/diffs/perl5-5.42.0/posix-makefile.patch create mode 120000 cnf/diffs/perl5-5.42.0/test-checkcase.patch create mode 120000 cnf/diffs/perl5-5.42.0/test-makemaker.patch create mode 120000 cnf/diffs/perl5-5.42.0/xconfig.patch diff --git a/cnf/diffs/perl5-5.42.0/constant.patch b/cnf/diffs/perl5-5.42.0/constant.patch new file mode 120000 index 0000000..065e198 --- /dev/null +++ b/cnf/diffs/perl5-5.42.0/constant.patch @@ -0,0 +1 @@ +../perl5-5.22.3/constant.patch \ No newline at end of file diff --git a/cnf/diffs/perl5-5.42.0/dynaloader.patch b/cnf/diffs/perl5-5.42.0/dynaloader.patch new file mode 120000 index 0000000..ffb73eb --- /dev/null +++ b/cnf/diffs/perl5-5.42.0/dynaloader.patch @@ -0,0 +1 @@ +../perl5-5.22.3/dynaloader.patch \ No newline at end of file diff --git a/cnf/diffs/perl5-5.42.0/findext.patch b/cnf/diffs/perl5-5.42.0/findext.patch new file mode 120000 index 0000000..9efbe5b --- /dev/null +++ b/cnf/diffs/perl5-5.42.0/findext.patch @@ -0,0 +1 @@ +../perl5-5.22.3/findext.patch \ No newline at end of file diff --git a/cnf/diffs/perl5-5.42.0/installscripts.patch b/cnf/diffs/perl5-5.42.0/installscripts.patch new file mode 120000 index 0000000..1c05e0f --- /dev/null +++ b/cnf/diffs/perl5-5.42.0/installscripts.patch @@ -0,0 +1 @@ +../perl5-5.36.0/installscripts.patch \ No newline at end of file diff --git a/cnf/diffs/perl5-5.42.0/liblist.patch b/cnf/diffs/perl5-5.42.0/liblist.patch new file mode 100644 index 0000000..5e6331f --- /dev/null +++ b/cnf/diffs/perl5-5.42.0/liblist.patch @@ -0,0 +1,80 @@ +When deciding which libraries are available, the original Configure uses +shaky heuristics to physically locate library files. +This is a very very bad thing to do, *especially* when cross-compiling, +as said heiristics are likely to locate the host libraries, not the target ones. + +The only real need for this test is to make sure it's safe to pass -llibrary +to the compiler. So that's exactly what perl-cross does, pass -llibrary +and see if it breaks things. + +Note this is a part of MakeMaker, and only applies to module Makefiles. + + +--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm ++++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm +@@ -20,9 +20,10 @@ + use File::Spec; + + sub ext { +- if ( $^O eq 'VMS' ) { goto &_vms_ext; } +- elsif ( $^O eq 'MSWin32' ) { goto &_win32_ext; } +- else { goto &_unix_os2_ext; } ++ if ($Config{usemmldlt}){ goto &_ld_ext; } ++ elsif($^O eq 'VMS') { goto &_vms_ext; } ++ elsif($^O eq 'MSWin32') { goto &_win32_ext; } ++ else { goto &_unix_os2_ext; } + } + + sub _unix_os2_ext { +@@ -661,4 +662,51 @@ + wantarray ? ( $lib, '', $ldlib, '', ( $give_libs ? \@flibs : () ) ) : $lib; + } + ++# A direct test for -l validity. ++# Because guessing real file names for -llib options when dealing ++# with a cross compiler is generally a BAD IDEA^tm. ++sub _ld_ext { ++ my($self,$potential_libs, $verbose, $give_libs) = @_; ++ $verbose ||= 0; ++ ++ if ($^O =~ 'os2' and $Config{perllibs}) { ++ # Dynamic libraries are not transitive, so we may need including ++ # the libraries linked against perl.dll again. ++ ++ $potential_libs .= " " if $potential_libs; ++ $potential_libs .= $Config{perllibs}; ++ } ++ return ("", "", "", "", ($give_libs ? [] : ())) unless $potential_libs; ++ warn "Potential libraries are '$potential_libs':\n" if $verbose; ++ ++ my($ld) = $Config{ld}; ++ my($ldflags) = $Config{ldflags}; ++ my($libs) = defined $Config{perllibs} ? $Config{perllibs} : $Config{libs}; ++ ++ my $try = 'try_mm.c'; ++ my $tryx = 'try_mm.x'; ++ open(TRY, '>', $try) || die "Can't create MakeMaker test file $try: $!\n"; ++ print TRY "int main(void) { return 0; }\n"; ++ close(TRY); ++ ++ my $testlibs = ''; ++ my @testlibs = (); ++ foreach my $thislib (split ' ', $potential_libs) { ++ $testlibs = join(' ', @testlibs); ++ if($thislib =~ /^-L/) { ++ push(@testlibs, $thislib); ++ next ++ }; ++ my $cmd = "$ld $ldflags -o $tryx $try $testlibs $thislib >/dev/null 2>&1"; ++ my $ret = system($cmd); ++ warn "Warning (mostly harmless): " . "No library found for $thislib\n" if $ret; ++ next if $ret; ++ push @testlibs, $thislib; ++ } ++ unlink($try); ++ unlink($tryx); ++ ++ return (join(' ', @testlibs), '', join(' ', @testlibs), ''); ++} ++ + 1; diff --git a/cnf/diffs/perl5-5.42.0/makemaker.patch b/cnf/diffs/perl5-5.42.0/makemaker.patch new file mode 120000 index 0000000..d7bd609 --- /dev/null +++ b/cnf/diffs/perl5-5.42.0/makemaker.patch @@ -0,0 +1 @@ +../perl5-5.38.0/makemaker.patch \ No newline at end of file diff --git a/cnf/diffs/perl5-5.42.0/posix-makefile.patch b/cnf/diffs/perl5-5.42.0/posix-makefile.patch new file mode 120000 index 0000000..29463b7 --- /dev/null +++ b/cnf/diffs/perl5-5.42.0/posix-makefile.patch @@ -0,0 +1 @@ +../perl5-5.22.3/posix-makefile.patch \ No newline at end of file diff --git a/cnf/diffs/perl5-5.42.0/test-checkcase.patch b/cnf/diffs/perl5-5.42.0/test-checkcase.patch new file mode 120000 index 0000000..36c5186 --- /dev/null +++ b/cnf/diffs/perl5-5.42.0/test-checkcase.patch @@ -0,0 +1 @@ +../perl5-5.22.3/test-checkcase.patch \ No newline at end of file diff --git a/cnf/diffs/perl5-5.42.0/test-makemaker.patch b/cnf/diffs/perl5-5.42.0/test-makemaker.patch new file mode 120000 index 0000000..4e970ff --- /dev/null +++ b/cnf/diffs/perl5-5.42.0/test-makemaker.patch @@ -0,0 +1 @@ +../perl5-5.34.0/test-makemaker.patch \ No newline at end of file diff --git a/cnf/diffs/perl5-5.42.0/xconfig.patch b/cnf/diffs/perl5-5.42.0/xconfig.patch new file mode 120000 index 0000000..1c22c96 --- /dev/null +++ b/cnf/diffs/perl5-5.42.0/xconfig.patch @@ -0,0 +1 @@ +../perl5-5.41.3/xconfig.patch \ No newline at end of file