tl;dr: 6.58 can completely break, please test 6.58_01 to ensure that I
didn't screw anything else up fixing it, I'll be shipping 6.59 at 1300
UTC if nobody reports any regressions from 6.58.

EUMM 6.58 currently runs into a nasty hitch on perl 5.8 - in order to
test if CPAN::Meta is available, it does:

  eval {
    $INC{"CPAN/Meta.pm"} or require CPAN::Meta;
    CPAN::Meta->VERSION(...);
  };

Unfortunately, the bundled version of CPAN::Meta does

  BEGIN { $VERSION = ... }
  <many use lines>

due to a (now changed) Dist::Zilla default.

This means that if CPAN::Meta fails to complete loading, $VERSION is still
set.

Since a second or subsequent 'require' on 5.8 does not throw an error, since
%INC is populated when a module die()s (although not if it returns false),
this can result in a false positive where EUMM believes CPAN::Meta is
installed.

The primary problem here is on 5.8.x perls where one of CPAN::Meta's
dependencies has been installed, but is of too old a version. What then
happens is that EUMM installs the newer version, but because EUMM uses
INSTALLDIRS 'perl', that newer version is shadowed by the copy installed
into site_perl and EUMM then becomes unable to successfuly complete a
'perl Makefile.PL' run - see CPAN RT #69465 and #69900 for examples of this.

As such, I've got David Golden to make a CPAN::Meta release that does not
set $VERSION in a BEGIN block, and updated ExtUtils::MakeMaker to bundle
(and require) that version, which eliminates this failure mode.

Yesterday I released 6.58_01 with these changes, and have asked the
affected people to test - I've had two out-of-band (i.e. off RT) acks that
this works, and produced one myself by setting up a CentOS VM on Linode for
testing.

I'm currently building Task::Kensho on that VM with PERL_AUTOINSTALL=--alldeps
set to get a reasonable set of coverage, and BinGOs and omf_ are running
their smokers with 6.58_01 as well.

Since this is currently a critical failure for users in the affected
category, if I don't get any reports indicating that 6.58_01 breaks things
that do currently work on 6.58, I intend to ship it as 6.59 at approximately
midday BST (i.e. 1300 Fri 05 Aug 2011 UTC).

If you're able to test 6.58_01 before then, please do so and report back
if you see any problems.

Note that I have intentionally made these changes as minimal from 6.58 as
possible, and am not currently eliciting feedback on the bundling process
or CPAN::Meta related code themselves - while this is arguably a useful
discussion to have, my priority right now is to have people once again
able to install ExtUtils::MakeMaker and be confident that their toolchain
will be intact afterwards. We can discuss repainting the bikeshed once it's
no longer on fire.

6.58_01 is currently available as

  MSTROUT/ExtUtils-MakeMaker-6.58_01.tar.gz

from all good cpan mirrors, and as a fallback from my website as

  http://www.trout.me.uk/perl/ExtUtils-MakeMaker-6.58_01.tar.gz

If you're interested in trying to reproduce the original problem, then

  cpan> install JPEACOCK/version-0.74.tar.gz
  cpan> install MSCHWERN/ExtUtils-MakeMaker-6.58.tar.gz

should do the trick.

-- 
Matt S Trout - Shadowcat Systems - Perl consulting with a commit bit and a clue

http://shadowcat.co.uk/blog/matt-s-trout/   http://twitter.com/shadowcat_mst/

Email me now on mst (at) shadowcat.co.uk and let's chat about how our Catalyst
commercial support, training and consultancy packages could help your team.

Reply via email to