On 2011.2.6 11:52 PM, David Golden wrote:
>> 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 risks a circular dependency loop which I don't trust CPAN installers,
particularly older ones, to gracefully get themselves out of.


> 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.

META generation has to continue to work, and I agree it would be best to have
everything normalize on one thing.

I went through the process of bundling up all CPAN::Meta's deps into inc.
It's not hard, it's this through the whole tree:

export MAKEMAKER_SRC=/path/to/makemaker/src
export PERL5LIB=$MAKEMAKER_SRC/lib:$MAKEMAKER_SRC/inc/:$MAKEMAKER_SRC/t/lib
perl5.6 Makefile.PL LIB=$MAKEMAKER_SRC/inc/
make test
make install

I've pushed my work so far into a cpan_meta branch.
https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/commits/cpan_meta

I hit a snag on Storable.  That isn't core until 5.8 and there's no pure Perl
alternative.  Something will have to be done about that.  Thoughts?


-- 
Stabbing you in the face for your own good.

Reply via email to