Re: Added META.json and MYMETA.json support to EU::MM

2011-02-26 Thread Michael G Schwern
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.


Re: Added META.json and MYMETA.json support to EU::MM

2011-02-05 Thread Michael G Schwern
On 2011.2.6 7:57 AM, David Golden wrote:
 I've pushed commits to the Perl Toolchain Gang repo on github that add
 support for creating META.json and MYMETA.json files.  In addition,
 all META file creation now goes through CPAN::Meta to ensure valid,
 standardized metafiles.

Thank you for doing that work!


 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.

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.

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?


 Michael -- I think it would be great if we could get a dev version
 released this week so we can see how it smokes and then merge it into
 blead if it looks decent.

Between work and Test::Builder2, I have no time for MakeMaker.  But you have
PAUSE co-maint now.


-- 
A: Yes.
 Q: Are you sure?
 A: Because it reverses the logical flow of conversation.
 Q: Why is top posting annoying in email?