From 0b268fb4cae143b9d9d5048a6ad4a6235f10ceac Mon Sep 17 00:00:00 2001 From: "Flavio S. Glock" Date: Wed, 25 Mar 2026 14:00:19 +0100 Subject: [PATCH] Fix jcpan to install .pl files alongside .pm files Some modules like Image::ExifTool use .pl files that are loaded via 'require' at runtime (e.g., Writer.pl, WriteExif.pl). These files were not being installed because MakeMaker only scanned for .pm files. Changed the pattern from /\.pm$/ to /\.p[lm]$/ to include both .pm and .pl files when scanning the lib/ directory. Generated with [Devin](https://cli.devin.ai/docs) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- src/main/java/org/perlonjava/core/Configuration.java | 2 +- src/main/perl/lib/ExtUtils/MakeMaker.pm | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/perlonjava/core/Configuration.java b/src/main/java/org/perlonjava/core/Configuration.java index acbc7dcd4..b74d6474e 100644 --- a/src/main/java/org/perlonjava/core/Configuration.java +++ b/src/main/java/org/perlonjava/core/Configuration.java @@ -33,7 +33,7 @@ public final class Configuration { * Automatically populated by Gradle/Maven during build. * DO NOT EDIT MANUALLY - this value is replaced at build time. */ - public static final String gitCommitId = "ad0d59ddc"; + public static final String gitCommitId = "4e68ad0b2"; /** * Git commit date of the build (ISO format: YYYY-MM-DD). diff --git a/src/main/perl/lib/ExtUtils/MakeMaker.pm b/src/main/perl/lib/ExtUtils/MakeMaker.pm index 2142cca3b..67fd8aaf5 100644 --- a/src/main/perl/lib/ExtUtils/MakeMaker.pm +++ b/src/main/perl/lib/ExtUtils/MakeMaker.pm @@ -195,10 +195,12 @@ sub _install_pure_perl { } } else { # Default: scan lib/ directory + # Include both .pm and .pl files (some modules like Image::ExifTool + # use .pl files loaded via require) if (-d 'lib') { find({ wanted => sub { - return unless -f && /\.pm$/; + return unless -f && /\.p[lm]$/; my $src = $File::Find::name; (my $rel = $src) =~ s{^lib/}{}; $pm{$src} = File::Spec->catfile($INSTALL_BASE, $rel); @@ -211,7 +213,7 @@ sub _install_pure_perl { if (-d 'blib/lib') { find({ wanted => sub { - return unless -f && /\.pm$/; + return unless -f && /\.p[lm]$/; my $src = $File::Find::name; (my $rel = $src) =~ s{^blib/lib/}{}; $pm{$src} = File::Spec->catfile($INSTALL_BASE, $rel); @@ -222,7 +224,7 @@ sub _install_pure_perl { } if (!%pm) { - print "Warning: No .pm files found to install.\n"; + print "Warning: No .pm or .pl files found to install.\n"; print "Expected structure: lib/Your/Module.pm\n\n"; return PerlOnJava::MM::Installed->new($args); }