commit:     e416f4710d6467c5e289a16a05e2751c34385b21
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Oct  3 20:41:27 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Oct  3 20:41:27 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e416f471

dev-lang/perl: apply upstream PR for perl-cross vs 5.42.0

Closes: https://bugs.gentoo.org/959686
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-lang/perl/files/perl-5.42.0-cross-rebase.patch | 189 +++++++++++++++++++++
 dev-lang/perl/perl-5.42.0.ebuild                   |   2 +
 2 files changed, 191 insertions(+)

diff --git a/dev-lang/perl/files/perl-5.42.0-cross-rebase.patch 
b/dev-lang/perl/files/perl-5.42.0-cross-rebase.patch
new file mode 100644
index 000000000000..f03d49818b84
--- /dev/null
+++ b/dev-lang/perl/files/perl-5.42.0-cross-rebase.patch
@@ -0,0 +1,189 @@
+https://github.com/arsv/perl-cross/pull/164
+
+From b47ef629459076a5ccb3d0caf83ccfbb8ba0571b Mon Sep 17 00:00:00 2001
+From: Marcus Ramberg <[email protected]>
+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
+

diff --git a/dev-lang/perl/perl-5.42.0.ebuild b/dev-lang/perl/perl-5.42.0.ebuild
index 10f0171d4e73..e927faba926f 100644
--- a/dev-lang/perl/perl-5.42.0.ebuild
+++ b/dev-lang/perl/perl-5.42.0.ebuild
@@ -276,6 +276,8 @@ src_prepare_perlcross() {
 
        # bug 794463, needs further analysis what is exactly wrong here
        eapply "${FILESDIR}/perl-5.34.0-crossfit.patch"
+       # bug 959686, rebase via upstream PR (no 5.42.0 release)
+       eapply "${FILESDIR}/perl-5.42.0-cross-rebase.patch"
 
        # bug 604072
        MAKEOPTS+=" -j1"

Reply via email to