develooper Front page | perl.perl5.porters | Postings from August 2017

[perl #131571] Bleadperl v5.27.0-138-g64278e8ca7 breaksSONGMU/L-0.01.tar.gz

Thread Previous
From:
James E Keenan via RT
Date:
August 1, 2017 22:24
Subject:
[perl #131571] Bleadperl v5.27.0-138-g64278e8ca7 breaksSONGMU/L-0.01.tar.gz
Message ID:
rt-4.0.24-29641-1501626255-1717.131571-15-0@perl.org
On Wed, 14 Jun 2017 20:15:10 GMT, jkeenan wrote:
> On Wed, 14 Jun 2017 04:40:46 GMT,
> andreas.koenig.7os6VVqR@franz.ak.mind.de wrote:
> > bisect
> > ------
> > commit 64278e8ca74bf6743c65ced4c5002cdb054b2357
> > Author: Abigail <abigail@abigail.be>
> > Date:   Tue Jun 6 23:16:30 2017 +0200
> >
> > Fatalize inheriting AUTOLOAD for non-methods.
> >
> > diagnostics
> > -----------
> > t/001_basic.t (Wstat: 256 Tests: 4 Failed: 1)
> >   Failed test:  4
> >   Non-zero exit status: 1
> >
> 
> For context, let's include one more line in the commit message for the
> breaking commit:
> 
> #####
> commit 64278e8ca74bf6743c65ced4c5002cdb054b2357
> Author:     Abigail <abigail@abigail.be>
> AuthorDate: Tue Jun 6 23:16:30 2017 +0200
> Commit:     Abigail <abigail@abigail.be>
> CommitDate: Tue Jun 6 23:17:22 2017 +0200
> 
> Fatalize inheriting AUTOLOAD for non-methods.
> 
> This was deprecated in 5.004.
> #####
> 
> So, this is something we're likely to see many times in this annual
> development cycle:  code that breaks because we're fatalizing a
> behavior we've tolerated for twenty years (+ 1 month).
> 
> Here's the output I get when I try to install L against blead using
> cpanm:
> 
> #####
> $ ~/testing/blead/bin/prove -I~/testing/blead/lib -vb t/001_basic.t
> t/001_basic.t ..
> ok 1
> ok 2
> ok 3
> not ok 4
> 
> #   Failed test at t/001_basic.t line 26.
> #                   'Use of inherited AUTOLOAD for non-method
> main::hoge() is no longer allowed at t/001_basic.t line 24.
> # '
> #     doesn't match '(?^:Undefined subroutine &main::hoge called)'
> 1..4
> # Looks like you failed 1 test of 4.
> #####
> 
> This module's documentation contains the note:
> 
> #####
> This modules is dangerous, then don't use this module in other perl
> modules, scripts or product code. This should be used only in one
> liner.
> #####
> 
> Duly forewarned, we look at the code in L.pm.  Here's the relevant
> part:
> 
> #####
> use Carp ();
> use Module::Load ();
> 
> {
>     package
>         UNIVERSAL;
> 
> our $AUTOLOAD;
> sub AUTOLOAD {
>     return if $AUTOLOAD =~ /::DESTROY$/;
>     if (my ($module, $method) = ($AUTOLOAD =~ /^(.*)::(.*?)$/)) {
>         if ($module eq 'main') {
>             Carp::croak(qq{Undefined subroutine &main::$method
> called});
>         }
> 
> Module::Load::load($module);
> 
> my $func = $module->can($method)
>     or Carp::croak qq{Can't locate object method "$method" via package
> "$module"};
> 
> $func->(@_);
> } else {
> die "WTF? $AUTOLOAD";
> }
> }
> }
> #####
> 
> Given that we want to fatalize previously deprecated behavior, I
> believe this is a case where blead correctly breaks CPAN.  I believe
> that a bug should be reported in L's bug tracker.
> 
> Agreed?
> 
> Thank you very much.

Slaven reported the problem in:
https://rt.cpan.org/Public/Bug/Display.html?id=122217

The author corrected the problem in:
https://github.com/Songmu/p5-L/issues/2

-- 
James E Keenan (jkeenan@cpan.org)

---
via perlbug:  queue: perl5 status: open
https://rt.perl.org/Ticket/Display.html?id=131571

Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About