Module::Build generates a metadata file, META.yaml, which contains some
basic information about the module that normally you'd have to grope around
inside the code to look for.  Name, version, dependencies, etc...  Sort of
like the description file in the rpm or dpkg formats.

It hit me while raking leaves today that it would be absolutely *trivial*
for MakeMaker to do the same.  All the meta-data already exists in the
MakeMaker object.  All that's needed to be done is spit out the file.

If the module author has the YAML module [1] installed, 'make distdir' (and
thus 'make dist') will, by default, spit out a META.yml file [2].  It will
warn if its not in the MANIFEST.  This way we can start perniciously filling
up CPAN with basic meta-data without authors having to think about it. [3]

We're following Module::Build's lead here and using its formats and
decisions as much as possible.  (Un|)fortuately, its all very flexible and
somewhat undocumented at the moment.  So we're going to be making things up
as we go along.

When trying to figure out fields for the META.yml file, a nice point of
reference to use is dpkg and the Debian Policy Manual
http://www.debian.org/doc/debian-policy/
They've solved a lot of the hard packaging problems.


[1] If anyone starts arguing about the format (YAML vs XML vs sanskrit vs
....) I will display your head on a pike on the road leading to MakeMaker.org
as a warning to others.

[2] I can't see a serious objection to it.  Of course, someone will object
anyway so if they don't want it they can pass in a "NO_META" argument to
WriteMakefile() or something.  They can also provide the patch to do so.

[3] Module::Build uses META.yaml.  We have to use .yml for 8.3 filesystems.
Ken, can Module::Build be changed to match?

-- 

Michael G. Schwern   <[EMAIL PROTECTED]>    http://www.pobox.com/~schwern/
Perl Quality Assurance      <[EMAIL PROTECTED]>         Kwalitee Is Job One
Home of da bomb

Reply via email to