Bug#808826: libkavorka-perl: FTBFS: Can't locate object method "_set_declared_name" via package "Kavorka::Sub::Fun"

Niko Tyni ntyni at debian.org
Wed Dec 23 21:08:50 UTC 2015


retitle 808826 libparse-keyword-perl: breaks Moo::Role on Perl 5.22?
reassign 808826 libparse-keyword-perl 0.08-2
affects 808826 libmoops-perl libkavorka-perl
thanks

On Wed, Dec 23, 2015 at 08:03:33PM +0200, Niko Tyni wrote:
> On Wed, Dec 23, 2015 at 04:05:27PM +0200, Niko Tyni wrote:
> > Package: libkavorka-perl
> > Version: 0.036-1
> > Severity: serious
> > Forwarded: https://rt.cpan.org/Ticket/Display.html?id=109841
> > 
> > This package fails to build on current sid.
> 
> >   Can't locate object method "_set_declared_name" via package "Kavorka::Sub::Fun" at /<<PKGBUILDDIR>>/blib/lib/Kavorka/Sub.pm line 182.
> >   t/02named-functions.t .......... 
> >   Dubious, test returned 255 (wstat 65280, 0xff00)
> 
> It's indeed a regression caused by the perl 5.20 -> 5.22 upgrade.
> Not sure why our rebuilds didn't catch it.

Evidence seems to be pointing at Parse::Keyword. This script:

  #!/usr/bin/perl -w
  use strict;
  
  package M;
  use Moo::Role;
  has myattr => (is => 'rwp');
  1;
  
  package main;
  use Parse::Keyword {};
  
  my $m = bless {}, 'M';
  $m->_set_myattr("foo");
  
  print $m->myattr, "\n";
  1;

outputs "foo" on 5.20 as expected, but dies on 5.22 with

  Can't locate object method "_set_myattr" via package "M" at m.pl line 13.

Removing the "use Parse::Keyword {};" line makes it go away.

The only two reverse dependencies (both build and runtime) of libparse-keyword-perl,
libkavorka-perl and libmoops-perl, both currently fail to build from source with
similar messages.

I'm therefore tentatively reassigning this to libparse-keyword-perl,
although it would be nice to distill this further down to something that
takes Moo::Role out of the equation.

I note that Parse::Keyword is officially not recommended for use, so
it might not be worth it blocking the Perl 5.22 transition for this.
Quoting:

DESCRIPTION
   DO NOT USE!
       This module has fundamental errors in the way it handles closures,
       which are not fixable. Runtime keywords will never be able to work
       properly with the current design of this module. There are certain
       cases where this module is still safe to use (keywords that only
       have effect at compile time, or keywords that never call any of
       the "parse_*" functions), but that is limiting enough to make
       this module mostly worthless, and I likely won't be continuing
       to maintain it. Be warned!

-- 
Niko Tyni   ntyni at debian.org



More information about the pkg-perl-maintainers mailing list