Wed Jul 29 08:44:36 2015: Request 106144 was acted upon.
Transaction: Ticket created by SLAFFAN
       Queue: Module-ScanDeps
     Subject: [Patch] Preload dependencies for File::BOM
   Broken in: (no value)
    Severity: (no value)
       Owner: Nobody
  Requestors: slaf...@cpan.org
      Status: new
 Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=106144 >


Dependency scanning when File::BOM is used in a via construct misses several 
dependencies, resulting in errors when calling PAR packed executables.  This 
particularly applies to CJK locales.

The attached patch adds a preload section to include them.  It could perhaps 
also load Encode::HanExtra and Encode::JIS2K, but I have not done so in this 
version.


The patch was tested using the code below.  The file open is needed to trigger 
the loading of the extra modules under "pp -x".

A more general solution might be to scan for "open .+?'<:via(\w+)'" constructs.

Regards,
Shawn.


use File::BOM;
open my $fh, '<:via(File::BOM)', $0  #  just read ourselves
  or die "Cannot open own code via File::BOM\n";
$fh->close;


Index: lib/Module/ScanDeps.pm
===================================================================
--- lib/Module/ScanDeps.pm	(revision 1595)
+++ lib/Module/ScanDeps.pm	(working copy)
@@ -331,6 +331,16 @@
         grep /\bMM_/, _glob_in_inc('ExtUtils', 1);
     },
     'File/Basename.pm' => [qw( re.pm )],
+    'File/BOM.pm'      => [
+        qw (
+            Encode/Unicode.pm
+            PerlIO/via.pm
+            Encode/CN.pm
+            Encode/JP.pm
+            Encode/KR.pm
+            Encode/TW.pm
+        )  #  load extra Encode pages just in case - should probably also do the extended ones
+    ],
     'File/HomeDir.pm' => 'sub',
     'File/Spec.pm'     => sub {
         require File::Spec;

Reply via email to