On Sat, Feb 5, 2011 at 9:43 PM, Michael G Schwern <schw...@pobox.com> wrote:
>> CPAN::Meta is an optional dependency, so tests that would need it just
>> skip if not available.
>
> The change log says this which needs to be discussed.
>
>    INCOMPATIBLE CHANGES
>    * META and MYMETA files will only be created if CPAN::Meta is
>      installed to ensure consistent and valid META file generation
>      [David Golden]
>
> Making it an optional dep on CPAN::Meta will silently make META files
> inconsistent on CPAN.  I don't have CPAN::Meta installed.  If I hadn't looked
> at the change log I likely wouldn't have noticed until somebody told me my
> releases were missing their META files.  One of the reasons the META file
> works so well is authors have to do nothing.

It could be a PREREQ_PM and still skip tests if not installed.  That
would solve the problem for all but the particular case of a
local::lib bootstrap of a modern EU::MM into a perl before 5.8.9.  And
that could be rectified by local::lib also bootstrapping CPAN::Meta
once EU::MM is installed.

> Here are the options I see.  First, make it use CPAN::Meta if available and if
> not fall back to a built in one.  MakeMaker already has a copy of YAML::Tiny
> in ExtUtils::MakeMaker::YAML.  The slightly inconsistent data is better than
> no data at all.

No.  I'm on a campaign to eradicate copies of YAML::Tiny in core and
have Jesse's support for that.  We now have CPAN::Meta::YAML and that
is the standard tool to be used by everything that needs it.

> Another option would be to put CPAN::Meta into inc.  Unfortunately, CPAN::Meta
> has dependencies.  Can they all be put into inc?  CPAN::Meta::Tiny?

Yes, everything can be put into inc.  The only tricky one is
version.pm and even that can have a pure-perl version put there.  I
haven't tested it that way, but I'm 95% sure it will work.  It bloats
EU::MM's dist a bit, but that's the price of backwards compatibilty.

-- David

Reply via email to