Subject: | Incompatibility with ExtUtils::Manifest versions 1.54 to 1.57 |
When used in conjunction with ExtUtils::Manifest < 1.58,
Module::Signature calls the supposedly private subroutine
ExtUtils::Manifest::_maniskip. However, in ExtUtils::Manifest 1.54 this
subroutine was made public and its name changed to
ExtUtils::Manifest::maniskip, resulting in the t/0-signature.t test failing:
$ make test TEST_SIGNATURE=1
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e"
"test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t
WARNING: This key is not certified with a trusted signature!
Primary key fingerprint: E8DC 91A1 B7BE E5AB C172 47EE 742F 2A42 8E63 5A5E
Undefined subroutine &ExtUtils::Manifest::_maniskip called at
/builddir/build/BUILD/Module-Signature/Module-Signature-0.65/blib/lib/Module/Signature.pm
line 147.
# Looks like your test exited with 255 before it could output anything.
t/0-signature.t ..
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 1/1 subtests
Attached patch resolves the problem for me.
Subject: | Module-Signature-0.65-maniskip.patch |
--- Module-Signature/Module-Signature-0.65/lib/Module/Signature.pm.orig 2010-09-03 20:36:17.000000000 +0100
+++ Module-Signature/Module-Signature-0.65/lib/Module/Signature.pm 2010-09-06 16:19:15.668285295 +0100
@@ -144,7 +144,12 @@
my($mani, $file);
if( _legacy_extutils() ) {
- my $_maniskip = &ExtUtils::Manifest::_maniskip;
+ my $_maniskip;
+ if ( _public_maniskip() ) {
+ $_maniskip = &ExtUtils::Manifest::maniskip;
+ } else {
+ $_maniskip = &ExtUtils::Manifest::_maniskip;
+ }
local *ExtUtils::Manifest::_maniskip = sub { sub {
return unless $skip;
@@ -181,6 +186,11 @@
return (ExtUtils::Manifest->VERSION < 1.58);
}
+sub _public_maniskip {
+ # ExtUtils::Manifest 1.54 onwards have public maniskip
+ return (ExtUtils::Manifest->VERSION > 1.53);
+}
+
sub _default_skip {
local $_ = shift;
return 1 if /\bRCS\b/ or /\bCVS\b/ or /\B\.svn\b/ or /,v$/