Subject: | GnuPG-Interface 0.50 fails to parse |
Date: | Thu, 21 Aug 2014 15:21:45 +0200 (CEST) |
To: | bug-GnuPG-Interface [...] rt.cpan.org |
From: | Clemens Lang <cal [...] macports.org> |
Hi,
I'm the MacPorts maintainer for caff, a tool from Debian's signing-party package
that uses GnuPG::Interface. Recently, your package was updated in MacPorts to the
current 0.50, but this breaks caff:
$ caff
GnuPG::Options is not a known type constraint at /opt/local/lib/perl5/vendor_perl/5.16.3/Type/Parser.pm line 139.
Compilation failed in require at /opt/local/bin/caff line 385.
BEGIN failed--compilation aborted at /opt/local/bin/caff line 385.
I think this is because of a mistake in GnuPG/Interface.pm in line 39, where you
apparently use a Moo type constraint that looks like this:
has options => (
isa => 'GnuPG::Options',
is => 'rw',
lazy_build => 1
);
However, if I understand Moo's documentation[1] correctly, unlike as in Moose[2],
you can not use the 'isa' key in this way with Moo. After reading [3] in Moo's
docs, I patched the code by replacing 'GnuPG::Options' with 'Any', which worked,
but is certainly not the correct solution to the problem.
My apologies if my analysis is incorrect, I'm not much of a Perl programmer.
[1] http://search.cpan.org/~haarg/Moo-1.006000/lib/Moo.pm#has
[2] http://search.cpan.org/~ether/Moose-2.1211/lib/Moose.pm#EXPORTED_FUNCTIONS
[3] Since Moo does not run the isa check before coerce if a coercion subroutine
has been supplied, isa checks are not structural to your code and can, if
desired, be omitted on non-debug builds (although if this results in an uncaught
bug causing your program to break, the Moo authors guarantee nothing except that
you get to keep both halves).
--
Clemens Lang