From 6695ab25abdeff97a843df44c3dcd0b58b8f172b Mon Sep 17 00:00:00 2001 From: Packit Date: Sep 16 2020 11:08:57 +0000 Subject: perl-CPAN-Meta-2.150010 base --- diff --git a/CONTRIBUTING.mkdn b/CONTRIBUTING.mkdn new file mode 100644 index 0000000..761c9db --- /dev/null +++ b/CONTRIBUTING.mkdn @@ -0,0 +1,87 @@ +## HOW TO CONTRIBUTE + +Thank you for considering contributing to this distribution. This file +contains instructions that will help you work with the source code. + +The distribution is managed with Dist::Zilla. This means than many of the +usual files you might expect are not in the repository, but are generated at +release time, as is much of the documentation. Some generated files are +kept in the repository as a convenience (e.g. Makefile.PL or cpanfile). + +Generally, **you do not need Dist::Zilla to contribute patches**. You do need +Dist::Zilla to create a tarball. See below for guidance. + +### Getting dependencies + +If you have App::cpanminus 1.6 or later installed, you can use `cpanm` to +satisfy dependencies like this: + + $ cpanm --installdeps . + +Otherwise, look for either a `Makefile.PL` or `cpanfile` file for +a list of dependencies to satisfy. + +### Running tests + +You can run tests directly using the `prove` tool: + + $ prove -l + $ prove -lv t/some_test_file.t + +For most of my distributions, `prove` is entirely sufficient for you to test any +patches you have. I use `prove` for 99% of my testing during development. + +### Code style and tidying + +Please try to match any existing coding style. If there is a `.perltidyrc` +file, please install Perl::Tidy and use perltidy before submitting patches. + +If there is a `tidyall.ini` file, you can also install Code::TidyAll and run +`tidyall` on a file or `tidyall -a` to tidy all files. + +### Patching documentation + +Much of the documentation Pod is generated at release time. Some is +generated boilerplate; other documentation is built from pseudo-POD +directives in the source like C<=method> or C<=func>. + +If you would like to submit a documentation edit, please limit yourself to +the documentation you see. + +If you see typos or documentation issues in the generated docs, please +email or open a bug ticket instead of patching. + +### Installing and using Dist::Zilla + +Dist::Zilla is a very powerful authoring tool, optimized for maintaining a +large number of distributions with a high degree of automation, but it has a +large dependency chain, a bit of a learning curve and requires a number of +author-specific plugins. + +To install it from CPAN, I recommend one of the following approaches for +the quickest installation: + + # using CPAN.pm, but bypassing non-functional pod tests + $ cpan TAP::Harness::Restricted + $ PERL_MM_USE_DEFAULT=1 HARNESS_CLASS=TAP::Harness::Restricted cpan Dist::Zilla + + # using cpanm, bypassing *all* tests + $ cpanm -n Dist::Zilla + +In either case, it's probably going to take about 10 minutes. Go for a walk, +go get a cup of your favorite beverage, take a bathroom break, or whatever. +When you get back, Dist::Zilla should be ready for you. + +Then you need to install any plugins specific to this distribution: + + $ cpan `dzil authordeps` + $ dzil authordeps | cpanm + +Once installed, here are some dzil commands you might try: + + $ dzil build + $ dzil test + $ dzil xtest + +You can learn more about Dist::Zilla at http://dzil.org/ + diff --git a/Changes b/Changes new file mode 100644 index 0000000..9672515 --- /dev/null +++ b/Changes @@ -0,0 +1,621 @@ +Revision history for CPAN-Meta + +2.150010 2016-08-18 12:10:08-04:00 America/New_York + + [FIXED] + + - the YAML and JSON backend variables are ignored when building/testing the + perl core itself, where non-core backends are not yet installed. + + [CHANGED] + + - Added "use warnings" to Parse::CPAN::Meta + +2.150009 2016-07-02 21:07:49-04:00 America/New_York (TRIAL RELEASE) + + [FIXED] + + - Fixed used of Encode in Parse::CPAN::Meta::load_json_string + (Cherry picked from Parse::CPAN::Meta 1.4422) + +2.150008 2016-06-28 17:01:03-04:00 America/New_York (TRIAL RELEASE) + + [ADDED] + + - Merged Parse::CPAN::Meta 1.4420 into this distribution + +2.150007 2016-06-28 03:48:16-04:00 America/New_York (TRIAL RELEASE) + + [FIXED] + + - The cloning routine would raise an error on expected types when it + previously would stringify. The old behavior is restored. + +2.150006 2016-06-23 20:05:46-04:00 America/New_York (TRIAL RELEASE) + + [FIXED] + + - CPAN::Meta::Prereqs now fully accepts phases and types starting with 'x_'. + New 'phases' and 'types_in' interfaces have been added. + + - No longer relies on JSON backend for data structure cloning. This is + much faster than using JSON::PP. + + [TESTS] + + - The 'extra_mappings' feature for meta merging is now tested and + documented. + + - During tests, delete new environment variables added by + Parse::CPAN::Meta 1.4418 + + [SPEC] + + - Clarifies acceptable values for booleans + + - Cleaned up text and links of historical specs. + +2.150005 2015-06-09 19:08:44-06:00 America/Denver + + [TESTING] + + - Changed some test data from UTF-8 to ASCII + +2.150004 2015-05-19 11:25:53-04:00 America/New_York (TRIAL RELEASE) + + [DOCUMENTED] + + - Noted explicitly that historical META spec files are licensed under + the same terms as Perl + + [TESTING] + + - Added test for 'x_deprecated' field in "provides" + + [META] + + - declared extra developer prereq + +2.150003 2015-04-21 19:41:15-04:00 America/New_York (TRIAL RELEASE) + + [CHANGED] + + - Serialized CPAN::Meta objects now include a x_serialization_backend + entry + +2.150002 2015-04-19 01:00:10+02:00 Europe/Berlin (TRIAL RELEASE) + + [CHANGED] + + - Metadata merging now does deep hash merging as long as keys + don't conflict + +2.150001 2015-03-09 14:41:39-04:00 America/New_York + + [DOCUMENTED] + + - Include allowed values for license field in 1.x historic licenses rather + than linking to Module::Build + + - Documented when fragment merging became available + +2.143240 2014-11-20 10:26:30-05:00 America/New_York + + [FIXED] + + - Give correct path in nested merges such as resources + + - Removed strings test that should have been removed when + CPAN::Meta::Requirements was removed to a separate dist + +2.142690 2014-09-26 11:06:34-04:00 America/New_York + + [FIXED] + + - Fixed use of incorrect method in CPAN::Meta::Merge implementation + + [DOCUMENTED] + + - Clarified that no_index is a list of exclusions, and that indexers + should generally exclude 'inc', 'xt' and 't' as well. + - CPAN::Meta::History::Meta_1_0 through 1_4 are added as a permanent + record of 1.x versions of the metaspec + +2.142060 2014-07-25 13:30:06-04:00 America/New_York + + [ADDED] + + - CPAN::Meta::Merge is a new class for merging two possibly overlapping + instances of metadata. It will accept both CPAN::Meta objects and + (possibly incomplete) hashrefs of metadata. + +2.141520 2014-05-31 23:41:13-04:00 America/New_York + + [DOCUMENTED] + + - Clarified use of 'file' for the 'provides' field in the Spec + +2.141170 2014-04-27 13:03:37-04:00 America/New_York + + [ADDED] + + - Added ability for CPAN::Meta::Converter to convert metadata fragments + (incomplete portions of a metadata structure) + + [CHANGED] + + - Optimized internal use of JSON for datastructure cloning + + [FIXED] + + - Removed dependency on List::Util 1.33 + + [DOCUMENTED] + + - Clarified language around 'dynamic_config' in the Spec + +2.140640 2014-03-05 09:07:05-05:00 America/New_York + + [FIXED] + + - A change to the default meta-spec URL in 2.140630 from search.cpan.org + to metacpan.org broke Module::Build and ExtUtils::MakeMaker. This + reverts that change. Also added the missing change note to the prior + version. + +2.140630 2014-03-04 15:23:40-05:00 America/New_York + + [CHANGED] + + - Default meta-spec URL points to metacpan.org instead of search.cpan.org + + [ADDED] + + - Added a 'load_string' method that guesses whether the string + is YAML or JSON + +2.133380 2013-12-03 23:01:07 America/New_York + + [FIXED] + + - Improved bad version handling during META conversion + + - When downgrading multiple licenses to version 1.x META formats, if all + the licenses are open source, the downgraded license will be + "open_source", not "unknown" + +2.132830 2013-10-10 16:04:30 America/New_York + + [ADDED] + + - CPAN::Meta::Prereqs now has a 'merged_requirements' method for + combining requirements across multiple phases and types + + [FIXED] + + - Invalid 'meta-spec' is no longer a fatal error: instead, it will + usually be treated as spec version "1.0" (prior to formalization of the + meta-spec field). Conversion has some heuristics for guessing a + version depending on other fields if 'meta-spec' is missing or invalid. + +2.132661 2013-09-23 13:27:46 America/New_York + + [FIXED] + + - updated Makefile.PL logic to support PERL_NO_HIGHLANDER + + [PREREQS] + + - Dropped ExtUtils::MakeMaker configure_requires dependency + to 6.17 + +2.132660 2013-09-23 06:04:04 America/New_York + + [FIXED] + + - Installation on Perls < 5.12 will uninstall older versions installed + due to being bundled with ExtUtils::MakeMaker + +2.132620 2013-09-19 11:18:33 America/New_York + + [CHANGED] + + - META validation used to allow a scalar value when a list (i.e. array + reference) was required for a field. This has been tightened and + validation will now fail if a scalar value is given. Conversion will + continue to turn scalars into an array reference as it previously did. + +2.132510 2013-09-08 10:17:29 America/New_York + + [FIXED] + + - Fixed incorrectly encoded META.yml + +2.132140 2013-08-02 11:54:17 America/New_York + + [DOCUMENTATION] + + - Fixed some typos in CPAN::Meta::Spec + + [OTHER] + + - migrated repository to Perl-Toolchain-Gang organization on Github and + updated metadata accordingly + +2.131560 2013-06-05 15:26:36 America/New_York + + [DOCUMENTATION] + + - Replaced CPAN::Meta SYNOPSIS with code that actually works + +2.131490 2013-05-29 14:15:16 America/New_York + + [BUGFIX] + + - Downconversion of custom resources was not dropping the leading "x_". + Now "x_MailingList" will downconvert correctly to "MailingList". + + [SPEC] + + - Per the Lancaster Consensus, the 'file' subkey of a package listed in + 'provides' must refer to an actual file in the distribution, either the + .pm file that provides the package or another file (*.PL) that + generates it + +2.130880 2013-03-29 09:51:00 America/New_York + + [BUGFIX] + + - Fix provides 'version' bug introduced in the 2.130870 fix + +2.130870 2013-03-28 11:08:50 America/New_York + + [BUGFIX] + + - Don't add 'version' to 'provides' during conversion if one didn't + exist in the original [Reported by Miyagawa; fixed by David Golden] + +2.120921 2012-04-01 15:20:24 Europe/Paris + + [REMOVED] + + - CPAN::Meta::Requirements has been split out into its own distribution + so it can be used by CPAN.pm without requiring all of CPAN::Meta + +2.120920 2012-04-01 11:30:43 Europe/Paris + + [ADDED] + + - CPAN::Meta::Requirements now has a 'requirements_for_module' method + to retrieve a version requirements string for a specific module + [Leon Timmermans] + + [OTHER] + + - Parse::CPAN::Meta prerequisite bumped to 1.4403 + - JSON::PP prerequisites bumped to 2.27200 + - CPAN::Meta::YAML prerequisite bumped to 0.008 + +2.120900 2012-03-30 13:15:15 Europe/Paris + + [BUGFIX] + + - CPAN::Meta::Requirements now treats undef requirements given to + from_string_hash() as '0' and warns about it; add_string_requirements() + dies if it does not get a requirements string to parse + +2.120630 2012-03-03 14:48:35 EST5EDT + + [BUGFIX] + + - CPAN::Meta::Requirements now ensures that dotted-decimal versions are + represented in normalized form when stringified. This fixes a + regression in META conversion in 2.120620. + [Reported by Kent Fredric; fixed by David Golden] + +2.120620 2012-03-02 12:28:59 EST5EDT + + [ADDED] + + - CPAN::Meta::Requirements::add_string_requirements allows building + a requirements specification piecemeal [Cory G. Watson] + + [BUGFIX] + + - Version range handling fixed [rt.cpan.org #75424] + + - CPAN::Meta::Converter handles bad version strings more gracefully, + truncating alphanumerics and otherwise falling back to "0". This + is likely better than dropping a prerequisite or dying. + [rt.cpan.org #75427] + +2.120530 2012-02-22 16:15:31 EST5EDT + + [OTHER] + + - Dialed back perl prereq to 5.006 + +2.120351 2012-02-03 23:01:45 America/New_York + + [OTHER] + + - Fixed CPAN packaging errors + +2.120350 2012-02-03 22:46:59 America/New_York + + [BUGFIX] + + - Work around a memory leak bug involving version objects + in boolean context. + +2.113640 2011-12-30 15:19:46 America/New_York + + [OTHER] + + - Version::Requirements has now been merged as CPAN::Meta::Requirements, + rendering Version::Requirements itself redundant + +2.112621 2011-09-19 12:15:16 America/New_York + + [BUGFIX] + + - Spell BACKEND environment variables correctly this time + [noticed by Stevan Little] + +2.112620 2011-09-18 20:56:06 America/New_York + + [BUGFIX] + + - Protect tests against PERL_(YAML|JSON)_BACKEND settings that could + cause tests to fail. (RT #69979) + +2.112600 2011-09-17 12:21:09 America/New_York + + [DOCUMENTATION] + + - Fixed spelling error in CPAN::Meta::Spec (RT #71036) [Gregor Hermann] + +2.112580 2011-09-15 10:53:59 America/New_York + + [BUGFIX] + + - Use UTF-8 mode for internal structure cloning to avoid bugs + in Perl <= 5.8.6 (RT #70936) [Dagfinn Ilmari Mannsåker] + +2.112150 2011-08-02 22:25:41 America/New_York + + [BUGFIX] + + - Stringify any objects encountered during conversion. (RT #67295) + + - Fixed some broken URLs in documentation and for LGPL in legacy + conversion (RT #68738) + + - Fixed invalid private Pod in CPAN::Meta::Validator (RT #65925) + + [SPEC] + + - Clarified that file paths in the 'provides' section must be in + Unix-style (i.e. forward slashes) (RT #69045) + + - Replaced examples using Module::Build::ModuleInfo with Module::Metadata + (RT #66135) + +2.110930 2011-04-02 23:31:24 America/New_York + + [BUGFIX] + + - Fixed a bug in the 'as_string' method that checked the module version + instead of the meta-spec version when conversion was requested + (RT #67188) + +2.110910 2011-04-01 08:55:30 America/New_York + + [ENHANCEMENTS] + + - The 1.x spec "gpl" and "lgpl" and "mozilla" license values now up-convert + to "open_source" because they indicate too non-specific a license. + +2.110580 2011-02-27 07:58:06 EST5EDT + + [OTHER] + + - Add explicit dependencies on JSON::PP and CPAN::Meta::YAML instead + of relying on Parse::CPAN::Meta to provide them (as some CPAN Testers + have had P::C::M installed without them somehow) + + - Removed dependency on Storable as it was not a core module + until Perl 5.8 + +2.110550 2011-02-24 07:17:57 EST5EDT + + [OTHER] + + - Added required field 'release_status' to the synopsis of + CPAN::Meta::Spec (RT#66118) [Oliver Mengué] + +2.110540 2011-02-23 15:21:16 EST5EDT + + [BUGFIX] + + - Had two different Parse::CPAN::Meta requirements, one in 'requires' and + the other in 'build_requires'. This confused some installers, so we + only inlude the 'requires' now. + +2.110440 2011-02-12 22:55:28 EST5EDT + + [BUGFIX] + + - Bump Parse::CPAN::Meta prereq to 1.44, as 1.43 was never released + +2.110420 2011-02-11 15:40:36 EST5EDT + + [BUG FIXES] + + - The as_string() method now always returns a character string; + previously, JSON strings were UTF-8 encoded. + + - The save() method now always saves with UTF-8 encoding for + Perl 5.8.1 or greater; previously, YAML was not encoded + +2.110390 2011-02-07 21:00:47 EST5EDT + + [BUG FIXES] + + - Release 2.110360 had a regression where the save() method would no + longer return true on success. That has been fixed. + +2.110360 2011-02-04 19:46:21 America/New_York + + [OTHER] + + - Remove autodie dependency so CPAN::Meta can be used on older Perls + + - Remove unused Data::Dumper dependency + +2.110350 2011-02-03 19:57:32 America/New_York + + [ENHANCEMENTS] + + - Added "as_string" method similar to "as_struct" + + [OTHER] + + - Bumped Parse::CPAN::Meta prereq to 1.43 and uses that to + determine proper YAML/JSON backends + + - Removed unused prereqs + +2.110330 2011-02-02 09:42:57 EST5EDT + + [ENHANCEMENTS] + + - Saved META.json files are now sorted by key + + - as_struct() method takes an optional "version" argument to return + a down-converted metadata hashref + +2.110320 2011-01-31 23:14:30 EST5EDT + + [ENHANCEMENTS] + + - The 'save' method now allows an optional hashref argument, which can be + used to set the desired meta spec version. Metadata is automatically + converted to the specified output. + +2.110240 2011-01-24 16:28:25 EST5EDT + + - Reading JSON/YAML is delegated entirely to Parse::CPAN::Meta (1.4200) + + - JSON.pm is dropped as a prerequisite and JSON::PP is added to prepare + for CPAN::Meta to be added to the Perl core + + - JSON writing uses the same JSON backend selection as Parse::CPAN::Meta + to allow "upgrading" to a non-core JSON backend module if desired + +2.102400 2010-08-28 14:06:34 America/New_York + + - 'as_struct' method now returns unblessed data (reported by Chris Prather) + +2.102160 2010-08-04 12:27:10 EST5EDT + + - Fix bugtracker conversion bug (RT#60017) + +2.101670 2010-06-15 21:02:42 EST5EDT + + - converting 1.x 'repository' field now puts converted url into the + 'url' sub-field of 'repository' instead of the 'web' sub-field + +2.101610 2010-06-10 18:51:30 EST5EDT + + - fixed converter bug that output 'artistic2' instead of 'artistic_2' + for license in 1.X specs + + - 'artistic2' is now converted to 'artistic_2' if it occurs + + - corrected validation for 'artistic_2' and disallowed 'artistic-2.0' + +2.101600 2010-06-09 10:07:31 EST5EDT + + - improve conversion of restricted/restrictive license keys between + spec versions 1.4 and 2 [reported by Alexander Hartmaier] + +2.101591 2010-06-08 09:56:17 EST5EDT + + - added 'as_struct' method to CPAN::Meta to get a deep copy of + the metadata hash_ref + + - won't add an optional_features 'description' field if missing + + - improved documentation of CPAN::Meta::Converter and how it deals + with bad/missing data + +2.101590 2010-06-07 21:49:36 EST5EDT + + - won't automatically add 'unknown' as repository type when converting; + instead, will only add a repository type if a repository 'url' is + present and it is of the 'svn:' or 'git:' scheme. + + - squelched some uninitialized value warnings [Graham Barr] + +2.101580 2010-06-07 16:44:13 EST5EDT + + - add "lazy_validation" option to constructors + + - add ability to "convert" to same version and clean-up any fixable + errors + + - fix validation bugs (adhere closer to the spec) + + - improve lots of heuristics during conversion + +2.101461 2010-05-26 16:57:02 America/New_York + + - accessors deep clone list and map keys before returning them + + - add custom_keys() and custom() methods + +2.101460 2010-05-25 23:12:27 America/New_York + + - loosen URL validation -- only a scheme and authority are required + without restrictions on either + +2.101450 2010-05-25 17:59:32 America/New_York + + - when downconverting from 2, leave custom keys unchanged + (except in resources, where x_ is changed to X_) + + - when converting to 2, don't prepend x_ to custom keys that already + matched qr{\Ax_}i + +2.101410 2010-05-21 10:39:18 EST5EDT + + - when downconverting from 2, merge test requirements into build requirements + +2.101390 2010-05-19 10:49:50 EST5EDT + + - do not clobber generated_by when converting + +2.101380 2010-05-17 23:39:23 EST5EDT + + - added support for down-converting to older versions of the spec + + - improved test coverage for conversion and validation + +2.101110 2010-04-21 11:06:52 EST5EDT + + - clarified that .XXXXXX versions of the CPAN-Meta distribution will not + change the meaning of the CPAN::Meta::Spec, but may fix typos or + clarify prose + + - fixed a typo regarding dotted-integer versions: keeping components + in the range 0-999 was corrected to a "should" instead of a "must" + + - fixed validation bugs for certain types of nested data structures + (based on a patch provided by Barbie) + +2.101091 2010-04-19 06:32:13 EST5EDT + + - keep the old specs from getting indexed so as not to confuse people + +# vim: ts=2 sts=2 sw=2 et: diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2e17c27 --- /dev/null +++ b/LICENSE @@ -0,0 +1,379 @@ +This software is copyright (c) 2010 by David Golden, Ricardo Signes, Adam Kennedy and Contributors. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +Terms of the Perl programming language system itself + +a) the GNU General Public License as published by the Free + Software Foundation; either version 1, or (at your option) any + later version, or +b) the "Artistic License" + +--- The GNU General Public License, Version 1, February 1989 --- + +This software is Copyright (c) 2010 by David Golden, Ricardo Signes, Adam Kennedy and Contributors. + +This is free software, licensed under: + + The GNU General Public License, Version 1, February 1989 + + GNU GENERAL PUBLIC LICENSE + Version 1, February 1989 + + Copyright (C) 1989 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The license agreements of most software companies try to keep users +at the mercy of those companies. By contrast, our General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. The +General Public License applies to the Free Software Foundation's +software and to any other program whose authors commit to using it. +You can use it for your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Specifically, the General Public License is designed to make +sure that you have the freedom to give away or sell copies of free +software, that you receive source code or can get it if you want it, +that you can change the software or use pieces of it in new free +programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of a such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must tell them their rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any program or other work which +contains a notice placed by the copyright holder saying it may be +distributed under the terms of this General Public License. The +"Program", below, refers to any such program or work, and a "work based +on the Program" means either the Program or any work containing the +Program or a portion of it, either verbatim or with modifications. Each +licensee is addressed as "you". + + 1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this +General Public License and to the absence of any warranty; and give any +other recipients of the Program a copy of this General Public License +along with the Program. You may charge a fee for the physical act of +transferring a copy. + + 2. You may modify your copy or copies of the Program or any portion of +it, and copy and distribute such modifications under the terms of Paragraph +1 above, provided that you also do the following: + + a) cause the modified files to carry prominent notices stating that + you changed the files and the date of any change; and + + b) cause the whole of any work that you distribute or publish, that + in whole or in part contains the Program or any part thereof, either + with or without modifications, to be licensed at no charge to all + third parties under the terms of this General Public License (except + that you may choose to grant warranty protection to some or all + third parties, at your option). + + c) If the modified program normally reads commands interactively when + run, you must cause it, when started running for such interactive use + in the simplest and most usual way, to print or display an + announcement including an appropriate copyright notice and a notice + that there is no warranty (or else, saying that you provide a + warranty) and that users may redistribute the program under these + conditions, and telling the user how to view a copy of this General + Public License. + + d) You may charge a fee for the physical act of transferring a + copy, and you may at your option offer warranty protection in + exchange for a fee. + +Mere aggregation of another independent work with the Program (or its +derivative) on a volume of a storage or distribution medium does not bring +the other work under the scope of these terms. + + 3. You may copy and distribute the Program (or a portion or derivative of +it, under Paragraph 2) in object code or executable form under the terms of +Paragraphs 1 and 2 above provided that you also do one of the following: + + a) accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of + Paragraphs 1 and 2 above; or, + + b) accompany it with a written offer, valid for at least three + years, to give any third party free (except for a nominal charge + for the cost of distribution) a complete machine-readable copy of the + corresponding source code, to be distributed under the terms of + Paragraphs 1 and 2 above; or, + + c) accompany it with the information you received as to where the + corresponding source code may be obtained. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form alone.) + +Source code for a work means the preferred form of the work for making +modifications to it. For an executable file, complete source code means +all the source code for all modules it contains; but, as a special +exception, it need not include source code for modules which are standard +libraries that accompany the operating system on which the executable +file runs, or for standard header files or definitions files that +accompany that operating system. + + 4. You may not copy, modify, sublicense, distribute or transfer the +Program except as expressly provided under this General Public License. +Any attempt otherwise to copy, modify, sublicense, distribute or transfer +the Program is void, and will automatically terminate your rights to use +the Program under this License. However, parties who have received +copies, or rights to use copies, from you under this General Public +License will not have their licenses terminated so long as such parties +remain in full compliance. + + 5. By copying, distributing or modifying the Program (or any work based +on the Program) you indicate your acceptance of this license to do so, +and all its terms and conditions. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these +terms and conditions. You may not impose any further restrictions on the +recipients' exercise of the rights granted herein. + + 7. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of the license which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +the license, you may choose any version ever published by the Free Software +Foundation. + + 8. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to humanity, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + + To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively convey +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19xx name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and `show +c'; they could even be mouse-clicks or menu items--whatever suits your +program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program `Gnomovision' (a program to direct compilers to make passes + at assemblers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +That's all there is to it! + + +--- The Artistic License 1.0 --- + +This software is Copyright (c) 2010 by David Golden, Ricardo Signes, Adam Kennedy and Contributors. + +This is free software, licensed under: + + The Artistic License 1.0 + +The Artistic License + +Preamble + +The intent of this document is to state the conditions under which a Package +may be copied, such that the Copyright Holder maintains some semblance of +artistic control over the development of the package, while giving the users of +the package the right to use and distribute the Package in a more-or-less +customary fashion, plus the right to make reasonable modifications. + +Definitions: + + - "Package" refers to the collection of files distributed by the Copyright + Holder, and derivatives of that collection of files created through + textual modification. + - "Standard Version" refers to such a Package if it has not been modified, + or has been modified in accordance with the wishes of the Copyright + Holder. + - "Copyright Holder" is whoever is named in the copyright or copyrights for + the package. + - "You" is you, if you're thinking about copying or distributing this Package. + - "Reasonable copying fee" is whatever you can justify on the basis of media + cost, duplication charges, time of people involved, and so on. (You will + not be required to justify it to the Copyright Holder, but only to the + computing community at large as a market that must bear the fee.) + - "Freely Available" means that no fee is charged for the item itself, though + there may be fees involved in handling the item. It also means that + recipients of the item may redistribute it under the same conditions they + received it. + +1. You may make and give away verbatim copies of the source form of the +Standard Version of this Package without restriction, provided that you +duplicate all of the original copyright notices and associated disclaimers. + +2. You may apply bug fixes, portability fixes and other modifications derived +from the Public Domain or from the Copyright Holder. A Package modified in such +a way shall still be considered the Standard Version. + +3. You may otherwise modify your copy of this Package in any way, provided that +you insert a prominent notice in each changed file stating how and when you +changed that file, and provided that you do at least ONE of the following: + + a) place your modifications in the Public Domain or otherwise make them + Freely Available, such as by posting said modifications to Usenet or an + equivalent medium, or placing the modifications on a major archive site + such as ftp.uu.net, or by allowing the Copyright Holder to include your + modifications in the Standard Version of the Package. + + b) use the modified Package only within your corporation or organization. + + c) rename any non-standard executables so the names do not conflict with + standard executables, which must also be provided, and provide a separate + manual page for each non-standard executable that clearly documents how it + differs from the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + +4. You may distribute the programs of this Package in object code or executable +form, provided that you do at least ONE of the following: + + a) distribute a Standard Version of the executables and library files, + together with instructions (in the manual page or equivalent) on where to + get the Standard Version. + + b) accompany the distribution with the machine-readable source of the Package + with your modifications. + + c) accompany any non-standard executables with their corresponding Standard + Version executables, giving the non-standard executables non-standard + names, and clearly documenting the differences in manual pages (or + equivalent), together with instructions on where to get the Standard + Version. + + d) make other distribution arrangements with the Copyright Holder. + +5. You may charge a reasonable copying fee for any distribution of this +Package. You may charge any fee you choose for support of this Package. You +may not charge a fee for this Package itself. However, you may distribute this +Package in aggregate with other (possibly commercial) programs as part of a +larger (possibly commercial) software distribution provided that you do not +advertise this Package as a product of your own. + +6. The scripts and library files supplied as input to or produced as output +from the programs of this Package do not automatically fall under the copyright +of this Package, but belong to whomever generated them, and may be sold +commercially, and may be aggregated with this Package. + +7. C or perl subroutines supplied by you and linked into this Package shall not +be considered part of this Package. + +8. The name of the Copyright Holder may not be used to endorse or promote +products derived from this software without specific prior written permission. + +9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +The End + diff --git a/MANIFEST b/MANIFEST new file mode 100644 index 0000000..599a045 --- /dev/null +++ b/MANIFEST @@ -0,0 +1,123 @@ +# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.007. +CONTRIBUTING.mkdn +Changes +LICENSE +MANIFEST +META.json +META.yml +Makefile.PL +README +Todo +corpus/BadMETA.yml +corpus/CL018_yaml.meta +corpus/META-VR.json +corpus/META-VR.yml +corpus/bareyaml.meta +corpus/json.meta +corpus/yaml.meta +cpanfile +dist.ini +history/META-spec-1_0.html +history/META-spec-1_1.html +history/META-spec-1_2.pod +history/META-spec-1_3.pod +history/META-spec-1_4.pod +lib/CPAN/Meta.pm +lib/CPAN/Meta/Converter.pm +lib/CPAN/Meta/Feature.pm +lib/CPAN/Meta/History.pm +lib/CPAN/Meta/History/Meta_1_0.pod +lib/CPAN/Meta/History/Meta_1_1.pod +lib/CPAN/Meta/History/Meta_1_2.pod +lib/CPAN/Meta/History/Meta_1_3.pod +lib/CPAN/Meta/History/Meta_1_4.pod +lib/CPAN/Meta/Merge.pm +lib/CPAN/Meta/Prereqs.pm +lib/CPAN/Meta/Spec.pm +lib/CPAN/Meta/Validator.pm +lib/Parse/CPAN/Meta.pm +perlcritic.rc +t/00-report-prereqs.dd +t/00-report-prereqs.t +t/README-data.txt +t/converter-bad.t +t/converter-fail.t +t/converter-fragments.t +t/converter.t +t/data-fail/META-1_0.yml +t/data-fail/META-1_1.yml +t/data-fail/META-1_2.yml +t/data-fail/META-1_3.yml +t/data-fail/META-1_4.yml +t/data-fail/META-2.json +t/data-fixable/107650337-META.yml +t/data-fixable/1598804075-META.yml +t/data-fixable/1927486199-META.yml +t/data-fixable/1985980974-META.yml +t/data-fixable/2031017050-META.yml +t/data-fixable/284247103-META.yml +t/data-fixable/344981821-META.yml +t/data-fixable/35478989-META.yml +t/data-fixable/98042513-META.yml +t/data-fixable/META-1_2.yml +t/data-fixable/META-1_3.yml +t/data-fixable/META-1_4.yml +t/data-fixable/META-2.json +t/data-fixable/invalid-meta-spec-version.json +t/data-fixable/invalid-meta-spec-version.yml +t/data-fixable/meta-spec-version-trailing-zeros.json +t/data-fixable/meta-spec-version-trailing-zeros.yml +t/data-fixable/restrictive-2.json +t/data-fixable/version-ranges-2.json +t/data-test/META-1_0.yml +t/data-test/META-1_1.yml +t/data-test/META-1_2.yml +t/data-test/META-1_3.yml +t/data-test/META-1_4.yml +t/data-test/META-2.json +t/data-test/META-2.meta +t/data-test/gpl-1_4.yml +t/data-test/preserve-release-status.yml +t/data-test/provides-version-missing.json +t/data-test/resources.yml +t/data-test/restricted-2.json +t/data-test/restrictive-1_4.yml +t/data-test/unicode.yml +t/data-test/version-not-normal.json +t/data-test/version-ranges-1_4.yml +t/data-test/version-ranges-2.json +t/data-test/x_deprecated-META.json +t/data-valid/1122575719-META.yml +t/data-valid/1206545041-META.yml +t/data-valid/1985684504-META.yml +t/data-valid/476602558-META.yml +t/data-valid/META-1_0.yml +t/data-valid/META-1_1.yml +t/data-valid/META-1_4.yml +t/data-valid/META-2.json +t/data-valid/scalar-meta-spec.yml +t/data-valid/x_deprecated-META.yml +t/lib/Parse/CPAN/Meta/Test.pm +t/load-bad.t +t/merge.t +t/meta-obj.t +t/no-index.t +t/optional_feature-merge.t +t/parse-cpan-meta/02_api.t +t/parse-cpan-meta/03_functions.t +t/parse-cpan-meta/04_export.t +t/parse-cpan-meta/05_errors.t +t/prereqs-finalize.t +t/prereqs-merge.t +t/prereqs.t +t/repository.t +t/save-load.t +t/validator.t +xt/author/00-compile.t +xt/author/critic.t +xt/author/pod-coverage.t +xt/author/pod-spell.t +xt/author/pod-syntax.t +xt/author/portability.t +xt/author/test-version.t +xt/release/distmeta.t diff --git a/META.json b/META.json new file mode 100644 index 0000000..b8449f8 --- /dev/null +++ b/META.json @@ -0,0 +1,241 @@ +{ + "abstract" : "the distribution metadata for a CPAN dist", + "author" : [ + "David Golden ", + "Ricardo Signes ", + "Adam Kennedy " + ], + "dynamic_config" : 0, + "generated_by" : "Dist::Zilla version 6.007, CPAN::Meta::Converter version 2.150009", + "license" : [ + "perl_5" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : 2 + }, + "name" : "CPAN-Meta", + "no_index" : { + "directory" : [ + "corpus", + "examples", + "history", + "t", + "xt" + ], + "package" : [ + "DB" + ] + }, + "prereqs" : { + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "6.17", + "perl" : "5.008001" + }, + "suggests" : { + "JSON::PP" : "2.27300" + } + }, + "develop" : { + "recommends" : { + "Perl::Critic::Policy::Lax::ProhibitStringyEval::ExceptForRequire" : "0" + }, + "requires" : { + "Dist::Zilla" : "5", + "Dist::Zilla::Plugin::Authority" : "0", + "Dist::Zilla::Plugin::AutoPrereqs" : "0", + "Dist::Zilla::Plugin::BumpVersionAfterRelease" : "0", + "Dist::Zilla::Plugin::CPANFile" : "0", + "Dist::Zilla::Plugin::CheckChangesHasContent" : "0", + "Dist::Zilla::Plugin::CheckMetaResources" : "0", + "Dist::Zilla::Plugin::CheckPrereqsIndexed" : "0", + "Dist::Zilla::Plugin::ConfirmRelease" : "0", + "Dist::Zilla::Plugin::CopyFilesFromBuild::Filtered" : "0", + "Dist::Zilla::Plugin::DualLife" : "0", + "Dist::Zilla::Plugin::Encoding" : "0", + "Dist::Zilla::Plugin::Git::Check" : "0", + "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch" : "0", + "Dist::Zilla::Plugin::Git::Commit" : "0", + "Dist::Zilla::Plugin::Git::Contributors" : "0", + "Dist::Zilla::Plugin::Git::GatherDir" : "0", + "Dist::Zilla::Plugin::Git::Push" : "0", + "Dist::Zilla::Plugin::Git::Remote::Check" : "0", + "Dist::Zilla::Plugin::Git::Tag" : "0", + "Dist::Zilla::Plugin::GithubMeta" : "0", + "Dist::Zilla::Plugin::InsertCopyright" : "0", + "Dist::Zilla::Plugin::License" : "0", + "Dist::Zilla::Plugin::MakeMaker" : "0", + "Dist::Zilla::Plugin::MakeMaker::Highlander" : "0.003", + "Dist::Zilla::Plugin::Manifest" : "0", + "Dist::Zilla::Plugin::ManifestSkip" : "0", + "Dist::Zilla::Plugin::MetaJSON" : "0", + "Dist::Zilla::Plugin::MetaNoIndex" : "0", + "Dist::Zilla::Plugin::MetaProvides::Package" : "0", + "Dist::Zilla::Plugin::MetaTests" : "0", + "Dist::Zilla::Plugin::MetaYAML" : "0", + "Dist::Zilla::Plugin::MinimumPerl" : "0", + "Dist::Zilla::Plugin::NextRelease" : "0", + "Dist::Zilla::Plugin::OnlyCorePrereqs" : "0.014", + "Dist::Zilla::Plugin::Pod2Readme" : "0", + "Dist::Zilla::Plugin::PodCoverageTests" : "0", + "Dist::Zilla::Plugin::PodSyntaxTests" : "0", + "Dist::Zilla::Plugin::Prereqs" : "0", + "Dist::Zilla::Plugin::Prereqs::AuthorDeps" : "0", + "Dist::Zilla::Plugin::PromptIfStale" : "0", + "Dist::Zilla::Plugin::PruneCruft" : "0", + "Dist::Zilla::Plugin::RewriteVersion" : "0", + "Dist::Zilla::Plugin::RunExtraTests" : "0", + "Dist::Zilla::Plugin::SurgicalPodWeaver" : "0.0021", + "Dist::Zilla::Plugin::Test::Compile" : "0", + "Dist::Zilla::Plugin::Test::Perl::Critic" : "0", + "Dist::Zilla::Plugin::Test::PodSpelling" : "0", + "Dist::Zilla::Plugin::Test::Portability" : "0", + "Dist::Zilla::Plugin::Test::ReportPrereqs" : "0", + "Dist::Zilla::Plugin::Test::Version" : "0", + "Dist::Zilla::Plugin::TestRelease" : "0", + "Dist::Zilla::Plugin::UploadToCPAN" : "0", + "English" : "0", + "File::Spec" : "0", + "File::Temp" : "0", + "IO::Handle" : "0", + "IPC::Open3" : "0", + "Pod::Coverage::TrustPod" : "0", + "Pod::Weaver::PluginBundle::DAGOLDEN" : "0", + "Pod::Wordlist" : "0", + "Software::License::Perl_5" : "0", + "Test::CPAN::Meta" : "0", + "Test::More" : "0", + "Test::Pod" : "1.41", + "Test::Pod::Coverage" : "1.08", + "Test::Portability::Files" : "0", + "Test::Spelling" : "0.12", + "Test::Version" : "1", + "blib" : "1.01" + } + }, + "runtime" : { + "requires" : { + "CPAN::Meta::Requirements" : "2.121", + "CPAN::Meta::YAML" : "0.011", + "Carp" : "0", + "Encode" : "0", + "Exporter" : "0", + "File::Spec" : "0.80", + "JSON::PP" : "2.27300", + "Scalar::Util" : "0", + "perl" : "5.008001", + "strict" : "0", + "version" : "0.88", + "warnings" : "0" + } + }, + "test" : { + "recommends" : { + "CPAN::Meta" : "2.120900" + }, + "requires" : { + "Data::Dumper" : "0", + "ExtUtils::MakeMaker" : "0", + "File::Basename" : "0", + "File::Spec" : "0.80", + "File::Spec::Functions" : "0", + "File::Temp" : "0.20", + "IO::Dir" : "0", + "JSON::PP" : "2.27300", + "Storable" : "0", + "Test::More" : "0.88", + "lib" : "0", + "overload" : "0", + "perl" : "5.008001", + "utf8" : "0", + "vars" : "0" + } + } + }, + "provides" : { + "CPAN::Meta" : { + "file" : "lib/CPAN/Meta.pm", + "version" : "2.150010" + }, + "CPAN::Meta::Converter" : { + "file" : "lib/CPAN/Meta/Converter.pm", + "version" : "2.150010" + }, + "CPAN::Meta::Feature" : { + "file" : "lib/CPAN/Meta/Feature.pm", + "version" : "2.150010" + }, + "CPAN::Meta::History" : { + "file" : "lib/CPAN/Meta/History.pm", + "version" : "2.150010" + }, + "CPAN::Meta::Merge" : { + "file" : "lib/CPAN/Meta/Merge.pm", + "version" : "2.150010" + }, + "CPAN::Meta::Prereqs" : { + "file" : "lib/CPAN/Meta/Prereqs.pm", + "version" : "2.150010" + }, + "CPAN::Meta::Spec" : { + "file" : "lib/CPAN/Meta/Spec.pm", + "version" : "2.150010" + }, + "CPAN::Meta::Validator" : { + "file" : "lib/CPAN/Meta/Validator.pm", + "version" : "2.150010" + }, + "Parse::CPAN::Meta" : { + "file" : "lib/Parse/CPAN/Meta.pm", + "version" : "2.150010" + } + }, + "release_status" : "stable", + "resources" : { + "bugtracker" : { + "web" : "https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues" + }, + "homepage" : "https://github.com/Perl-Toolchain-Gang/CPAN-Meta", + "repository" : { + "type" : "git", + "url" : "https://github.com/Perl-Toolchain-Gang/CPAN-Meta.git", + "web" : "https://github.com/Perl-Toolchain-Gang/CPAN-Meta" + } + }, + "version" : "2.150010", + "x_authority" : "cpan:DAGOLDEN", + "x_contributors" : [ + "Ansgar Burchardt ", + "Avar Arnfjord Bjarmason ", + "Benjamin Noggle ", + "Christopher J. Madsen ", + "Chuck Adams ", + "Cory G Watson ", + "Damyan Ivanov ", + "David Golden ", + "Eric Wilhelm ", + "Graham Knop ", + "Gregor Hermann ", + "Karen Etheridge ", + "Kenichi Ishigaki ", + "Kent Fredric ", + "Ken Williams ", + "Lars Dieckow ", + "Leon Timmermans ", + "majensen ", + "Mark Fowler ", + "Matt S Trout ", + "Michael G. Schwern ", + "Mohammad S Anwar ", + "mohawk2 ", + "moznion ", + "Niko Tyni ", + "Olaf Alders ", + "Olivier Mengu\u00e9 ", + "Randy Sims ", + "Tomohiro Hosaka " + ], + "x_serialization_backend" : "Cpanel::JSON::XS version 3.0213" +} + diff --git a/META.yml b/META.yml new file mode 100644 index 0000000..8071422 --- /dev/null +++ b/META.yml @@ -0,0 +1,119 @@ +--- +abstract: 'the distribution metadata for a CPAN dist' +author: + - 'David Golden ' + - 'Ricardo Signes ' + - 'Adam Kennedy ' +build_requires: + Data::Dumper: '0' + ExtUtils::MakeMaker: '0' + File::Basename: '0' + File::Spec: '0.80' + File::Spec::Functions: '0' + File::Temp: '0.20' + IO::Dir: '0' + JSON::PP: '2.27300' + Storable: '0' + Test::More: '0.88' + lib: '0' + overload: '0' + perl: '5.008001' + utf8: '0' + vars: '0' +configure_requires: + ExtUtils::MakeMaker: '6.17' + perl: '5.008001' +dynamic_config: 0 +generated_by: 'Dist::Zilla version 6.007, CPAN::Meta::Converter version 2.150009' +license: perl +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: '1.4' +name: CPAN-Meta +no_index: + directory: + - corpus + - examples + - history + - t + - xt + package: + - DB +provides: + CPAN::Meta: + file: lib/CPAN/Meta.pm + version: '2.150010' + CPAN::Meta::Converter: + file: lib/CPAN/Meta/Converter.pm + version: '2.150010' + CPAN::Meta::Feature: + file: lib/CPAN/Meta/Feature.pm + version: '2.150010' + CPAN::Meta::History: + file: lib/CPAN/Meta/History.pm + version: '2.150010' + CPAN::Meta::Merge: + file: lib/CPAN/Meta/Merge.pm + version: '2.150010' + CPAN::Meta::Prereqs: + file: lib/CPAN/Meta/Prereqs.pm + version: '2.150010' + CPAN::Meta::Spec: + file: lib/CPAN/Meta/Spec.pm + version: '2.150010' + CPAN::Meta::Validator: + file: lib/CPAN/Meta/Validator.pm + version: '2.150010' + Parse::CPAN::Meta: + file: lib/Parse/CPAN/Meta.pm + version: '2.150010' +requires: + CPAN::Meta::Requirements: '2.121' + CPAN::Meta::YAML: '0.011' + Carp: '0' + Encode: '0' + Exporter: '0' + File::Spec: '0.80' + JSON::PP: '2.27300' + Scalar::Util: '0' + perl: '5.008001' + strict: '0' + version: '0.88' + warnings: '0' +resources: + bugtracker: https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues + homepage: https://github.com/Perl-Toolchain-Gang/CPAN-Meta + repository: https://github.com/Perl-Toolchain-Gang/CPAN-Meta.git +version: '2.150010' +x_authority: cpan:DAGOLDEN +x_contributors: + - 'Ansgar Burchardt ' + - 'Avar Arnfjord Bjarmason ' + - 'Benjamin Noggle ' + - 'Christopher J. Madsen ' + - 'Chuck Adams ' + - 'Cory G Watson ' + - 'Damyan Ivanov ' + - 'David Golden ' + - 'Eric Wilhelm ' + - 'Graham Knop ' + - 'Gregor Hermann ' + - 'Karen Etheridge ' + - 'Kenichi Ishigaki ' + - 'Kent Fredric ' + - 'Ken Williams ' + - 'Lars Dieckow ' + - 'Leon Timmermans ' + - 'majensen ' + - 'Mark Fowler ' + - 'Matt S Trout ' + - 'Michael G. Schwern ' + - 'Mohammad S Anwar ' + - 'mohawk2 ' + - 'moznion ' + - 'Niko Tyni ' + - 'Olaf Alders ' + - 'Olivier Mengué ' + - 'Randy Sims ' + - 'Tomohiro Hosaka ' +x_serialization_backend: 'YAML::Tiny version 1.69' diff --git a/Makefile.PL b/Makefile.PL new file mode 100644 index 0000000..156351b --- /dev/null +++ b/Makefile.PL @@ -0,0 +1,103 @@ +# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.007. +use strict; +use warnings; + +use 5.008001; + +use ExtUtils::MakeMaker 6.17; + +my %WriteMakefileArgs = ( + "ABSTRACT" => "the distribution metadata for a CPAN dist", + "AUTHOR" => "David Golden , Ricardo Signes , Adam Kennedy ", + "CONFIGURE_REQUIRES" => { + "ExtUtils::MakeMaker" => "6.17" + }, + "DISTNAME" => "CPAN-Meta", + "LICENSE" => "perl", + "MIN_PERL_VERSION" => "5.008001", + "NAME" => "CPAN::Meta", + "PREREQ_PM" => { + "CPAN::Meta::Requirements" => "2.121", + "CPAN::Meta::YAML" => "0.011", + "Carp" => 0, + "Encode" => 0, + "Exporter" => 0, + "File::Spec" => "0.80", + "JSON::PP" => "2.27300", + "Scalar::Util" => 0, + "strict" => 0, + "version" => "0.88", + "warnings" => 0 + }, + "TEST_REQUIRES" => { + "Data::Dumper" => 0, + "ExtUtils::MakeMaker" => 0, + "File::Basename" => 0, + "File::Spec" => "0.80", + "File::Spec::Functions" => 0, + "File::Temp" => "0.20", + "IO::Dir" => 0, + "JSON::PP" => "2.27300", + "Storable" => 0, + "Test::More" => "0.88", + "lib" => 0, + "overload" => 0, + "utf8" => 0, + "vars" => 0 + }, + "VERSION" => "2.150010", + "test" => { + "TESTS" => "t/*.t t/parse-cpan-meta/*.t" + } +); + + +my %FallbackPrereqs = ( + "CPAN::Meta::Requirements" => "2.121", + "CPAN::Meta::YAML" => "0.011", + "Carp" => 0, + "Data::Dumper" => 0, + "Encode" => 0, + "Exporter" => 0, + "ExtUtils::MakeMaker" => 0, + "File::Basename" => 0, + "File::Spec" => "0.80", + "File::Spec::Functions" => 0, + "File::Temp" => "0.20", + "IO::Dir" => 0, + "JSON::PP" => "2.27300", + "Scalar::Util" => 0, + "Storable" => 0, + "Test::More" => "0.88", + "lib" => 0, + "overload" => 0, + "strict" => 0, + "utf8" => 0, + "vars" => 0, + "version" => "0.88", + "warnings" => 0 +); + + +unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) { + delete $WriteMakefileArgs{TEST_REQUIRES}; + delete $WriteMakefileArgs{BUILD_REQUIRES}; + $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs; +} + +delete $WriteMakefileArgs{CONFIGURE_REQUIRES} + unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; + +$WriteMakefileArgs{INSTALLDIRS} = 'perl' + if "$]" >= 5.010001 && "$]" <= 5.011000; + +# Added by Dist::Zilla::Plugin::MakeMaker::Highlander +if ( $] < 5.012 + && ! $ENV{PERL_NO_HIGHLANDER} + && ! ( $ENV{PERL_MM_OPT} && $ENV{PERL_MM_OPT} =~ /(?:INSTALL_BASE|PREFIX)/ ) + && ! grep { /INSTALL_BASE/ || /PREFIX/ } @ARGV +) { + $WriteMakefileArgs{UNINST} = 1; +} + +WriteMakefile(%WriteMakefileArgs); diff --git a/README b/README new file mode 100644 index 0000000..4f35ec0 --- /dev/null +++ b/README @@ -0,0 +1,361 @@ +NAME + CPAN::Meta - the distribution metadata for a CPAN dist + +VERSION + version 2.150010 + +SYNOPSIS + use v5.10; + use strict; + use warnings; + use CPAN::Meta; + use Module::Load; + + my $meta = CPAN::Meta->load_file('META.json'); + + printf "testing requirements for %s version %s\n", + $meta->name, + $meta->version; + + my $prereqs = $meta->effective_prereqs; + + for my $phase ( qw/configure runtime build test/ ) { + say "Requirements for $phase:"; + my $reqs = $prereqs->requirements_for($phase, "requires"); + for my $module ( sort $reqs->required_modules ) { + my $status; + if ( eval { load $module unless $module eq 'perl'; 1 } ) { + my $version = $module eq 'perl' ? $] : $module->VERSION; + $status = $reqs->accepts_module($module, $version) + ? "$version ok" : "$version not ok"; + } else { + $status = "missing" + }; + say " $module ($status)"; + } + } + +DESCRIPTION + Software distributions released to the CPAN include a META.json or, for + older distributions, META.yml, which describes the distribution, its + contents, and the requirements for building and installing the + distribution. The data structure stored in the META.json file is + described in CPAN::Meta::Spec. + + CPAN::Meta provides a simple class to represent this distribution + metadata (or *distmeta*), along with some helpful methods for + interrogating that data. + + The documentation below is only for the methods of the CPAN::Meta + object. For information on the meaning of individual fields, consult the + spec. + +METHODS + new + my $meta = CPAN::Meta->new($distmeta_struct, \%options); + + Returns a valid CPAN::Meta object or dies if the supplied metadata hash + reference fails to validate. Older-format metadata will be up-converted + to version 2 if they validate against the original stated specification. + + It takes an optional hashref of options. Valid options include: + + * lazy_validation -- if true, new will attempt to convert the given + metadata to version 2 before attempting to validate it. This means + than any fixable errors will be handled by CPAN::Meta::Converter + before validation. (Note that this might result in invalid optional + data being silently dropped.) The default is false. + + create + my $meta = CPAN::Meta->create($distmeta_struct, \%options); + + This is same as "new()", except that "generated_by" and "meta-spec" + fields will be generated if not provided. This means the metadata + structure is assumed to otherwise follow the latest CPAN::Meta::Spec. + + load_file + my $meta = CPAN::Meta->load_file($distmeta_file, \%options); + + Given a pathname to a file containing metadata, this deserializes the + file according to its file suffix and constructs a new "CPAN::Meta" + object, just like "new()". It will die if the deserialized version fails + to validate against its stated specification version. + + It takes the same options as "new()" but "lazy_validation" defaults to + true. + + load_yaml_string + my $meta = CPAN::Meta->load_yaml_string($yaml, \%options); + + This method returns a new CPAN::Meta object using the first document in + the given YAML string. In other respects it is identical to + "load_file()". + + load_json_string + my $meta = CPAN::Meta->load_json_string($json, \%options); + + This method returns a new CPAN::Meta object using the structure + represented by the given JSON string. In other respects it is identical + to "load_file()". + + load_string + my $meta = CPAN::Meta->load_string($string, \%options); + + If you don't know if a string contains YAML or JSON, this method will + use Parse::CPAN::Meta to guess. In other respects it is identical to + "load_file()". + + save + $meta->save($distmeta_file, \%options); + + Serializes the object as JSON and writes it to the given file. The only + valid option is "version", which defaults to '2'. On Perl 5.8.1 or + later, the file is saved with UTF-8 encoding. + + For "version" 2 (or higher), the filename should end in '.json'. + JSON::PP is the default JSON backend. Using another JSON backend + requires JSON 2.5 or later and you must set the $ENV{PERL_JSON_BACKEND} + to a supported alternate backend like JSON::XS. + + For "version" less than 2, the filename should end in '.yml'. + CPAN::Meta::Converter is used to generate an older metadata structure, + which is serialized to YAML. CPAN::Meta::YAML is the default YAML + backend. You may set the $ENV{PERL_YAML_BACKEND} to a supported + alternative backend, though this is not recommended due to subtle + incompatibilities between YAML parsers on CPAN. + + meta_spec_version + This method returns the version part of the "meta_spec" entry in the + distmeta structure. It is equivalent to: + + $meta->meta_spec->{version}; + + effective_prereqs + my $prereqs = $meta->effective_prereqs; + + my $prereqs = $meta->effective_prereqs( \@feature_identifiers ); + + This method returns a CPAN::Meta::Prereqs object describing all the + prereqs for the distribution. If an arrayref of feature identifiers is + given, the prereqs for the identified features are merged together with + the distribution's core prereqs before the CPAN::Meta::Prereqs object is + returned. + + should_index_file + ... if $meta->should_index_file( $filename ); + + This method returns true if the given file should be indexed. It decides + this by checking the "file" and "directory" keys in the "no_index" + property of the distmeta structure. Note that neither the version format + nor "release_status" are considered. + + $filename should be given in unix format. + + should_index_package + ... if $meta->should_index_package( $package ); + + This method returns true if the given package should be indexed. It + decides this by checking the "package" and "namespace" keys in the + "no_index" property of the distmeta structure. Note that neither the + version format nor "release_status" are considered. + + features + my @feature_objects = $meta->features; + + This method returns a list of CPAN::Meta::Feature objects, one for each + optional feature described by the distribution's metadata. + + feature + my $feature_object = $meta->feature( $identifier ); + + This method returns a CPAN::Meta::Feature object for the optional + feature with the given identifier. If no feature with that identifier + exists, an exception will be raised. + + as_struct + my $copy = $meta->as_struct( \%options ); + + This method returns a deep copy of the object's metadata as an unblessed + hash reference. It takes an optional hashref of options. If the hashref + contains a "version" argument, the copied metadata will be converted to + the version of the specification and returned. For example: + + my $old_spec = $meta->as_struct( {version => "1.4"} ); + + as_string + my $string = $meta->as_string( \%options ); + + This method returns a serialized copy of the object's metadata as a + character string. (The strings are not UTF-8 encoded.) It takes an + optional hashref of options. If the hashref contains a "version" + argument, the copied metadata will be converted to the version of the + specification and returned. For example: + + my $string = $meta->as_string( {version => "1.4"} ); + + For "version" greater than or equal to 2, the string will be serialized + as JSON. For "version" less than 2, the string will be serialized as + YAML. In both cases, the same rules are followed as in the "save()" + method for choosing a serialization backend. + + The serialized structure will include a "x_serialization_backend" entry + giving the package and version used to serialize. Any existing key in + the given $meta object will be clobbered. + +STRING DATA + The following methods return a single value, which is the value for the + corresponding entry in the distmeta structure. Values should be either + undef or strings. + + * abstract + + * description + + * dynamic_config + + * generated_by + + * name + + * release_status + + * version + +LIST DATA + These methods return lists of string values, which might be represented + in the distmeta structure as arrayrefs or scalars: + + * authors + + * keywords + + * licenses + + The "authors" and "licenses" methods may also be called as "author" and + "license", respectively, to match the field name in the distmeta + structure. + +MAP DATA + These readers return hashrefs of arbitrary unblessed data structures, + each described more fully in the specification: + + * meta_spec + + * resources + + * provides + + * no_index + + * prereqs + + * optional_features + +CUSTOM DATA + A list of custom keys are available from the "custom_keys" method and + particular keys may be retrieved with the "custom" method. + + say $meta->custom($_) for $meta->custom_keys; + + If a custom key refers to a data structure, a deep clone is returned. + +BUGS + Please report any bugs or feature using the CPAN Request Tracker. Bugs + can be submitted through the web interface at + + + When submitting a bug or request, please include a test-file or a patch + to an existing test-file that illustrates the bug or desired feature. + +SEE ALSO + * CPAN::Meta::Converter + + * CPAN::Meta::Validator + +SUPPORT + Bugs / Feature Requests + Please report any bugs or feature requests through the issue tracker at + . You will be + notified automatically of any progress on your issue. + + Source Code + This is open source software. The code repository is available for + public review and contribution under the terms of the license. + + + + git clone https://github.com/Perl-Toolchain-Gang/CPAN-Meta.git + +AUTHORS + * David Golden + + * Ricardo Signes + + * Adam Kennedy + +CONTRIBUTORS + * Ansgar Burchardt + + * Avar Arnfjord Bjarmason + + * Benjamin Noggle + + * Christopher J. Madsen + + * Chuck Adams + + * Cory G Watson + + * Damyan Ivanov + + * David Golden + + * Eric Wilhelm + + * Graham Knop + + * Gregor Hermann + + * Karen Etheridge + + * Kenichi Ishigaki + + * Kent Fredric + + * Ken Williams + + * Lars Dieckow + + * Leon Timmermans + + * majensen + + * Mark Fowler + + * Matt S Trout + + * Michael G. Schwern + + * Mohammad S Anwar + + * mohawk2 + + * moznion + + * Niko Tyni + + * Olaf Alders + + * Olivier Mengué + + * Randy Sims + + * Tomohiro Hosaka + +COPYRIGHT AND LICENSE + This software is copyright (c) 2010 by David Golden, Ricardo Signes, + Adam Kennedy and Contributors. + + This is free software; you can redistribute it and/or modify it under + the same terms as the Perl 5 programming language system itself. + diff --git a/Todo b/Todo new file mode 100644 index 0000000..234f6d3 --- /dev/null +++ b/Todo @@ -0,0 +1,8 @@ +improve validation/conversion testing of valid/invalid specs + +move the distmeta struct to $self->{distmeta} or something rather than having +it be the entire gits of the CPAN::Meta + +validate version numbers with version::is_lax + +use dclone more in converting structures diff --git a/corpus/BadMETA.yml b/corpus/BadMETA.yml new file mode 100644 index 0000000..79fece3 --- /dev/null +++ b/corpus/BadMETA.yml @@ -0,0 +1,24 @@ +--- +abstract: ~ +author: + - 'Olivier Mengu�' +build_requires: + ExtUtils::MakeMaker: 6.36 +configure_requires: + ExtUtils::MakeMaker: 6.36 +distribution_type: module +dynamic_config: 1 +generated_by: 'Module::Install version 1.06' +license: perl +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: 1.4 +name: Foo +no_index: + directory: + - inc +requires: + perl: 5.005 +resources: + license: http://dev.perl.org/licenses/ +version: 0.01 diff --git a/corpus/CL018_yaml.meta b/corpus/CL018_yaml.meta new file mode 100644 index 0000000..4bbac95 --- /dev/null +++ b/corpus/CL018_yaml.meta @@ -0,0 +1,75 @@ +{ + "abstract" : "Lexical Analyzer for Perl5", + "author" : [ + "Masaaki Goshima (goccy) " + ], + "dynamic_config" : 0, + "generated_by" : "Module::Build version 0.4205", + "license" : [ + "perl_5" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "Compiler-Lexer", + "no_index" : { + "directory" : [ + "t", + "examples", + "builder" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "ExtUtils::CBuilder" : "0" + } + }, + "configure" : { + "requires" : { + "Module::Build" : "0.38", + "Module::Build::XSUtil" : "0.06" + } + } + }, + "provides" : { + "Compiler::Lexer" : { + "file" : "lib/Compiler/Lexer.pm", + "version" : "0.18" + }, + "Compiler::Lexer::Kind" : { + "file" : "lib/Compiler/Lexer/Constants.pm" + }, + "Compiler::Lexer::SyntaxType" : { + "file" : "lib/Compiler/Lexer/Constants.pm" + }, + "Compiler::Lexer::Token" : { + "file" : "lib/Compiler/Lexer/Token.pm" + }, + "Compiler::Lexer::TokenType" : { + "file" : "lib/Compiler/Lexer/Constants.pm" + } + }, + "release_status" : "stable", + "resources" : { + "bugtracker" : { + "web" : "https://github.com/goccy/p5-Compiler-Lexer/issues" + }, + "homepage" : "https://github.com/goccy/p5-Compiler-Lexer", + "repository" : { + "type" : "git", + "url" : "git://github.com/goccy/p5-Compiler-Lexer.git" + } + }, + "version" : "0.18", + "x_contributors" : [ + "tokuhirom ", + "Reini Urban ", + "Fumihiro Itoh ", + "Masaaki Goshima ", + "moznion ", + "Olivier Mengué ", + "Masaaki Goshima " + ] +} diff --git a/corpus/META-VR.json b/corpus/META-VR.json new file mode 100644 index 0000000..71bb249 --- /dev/null +++ b/corpus/META-VR.json @@ -0,0 +1,33 @@ +{ + "abstract" : "a set of version requirements for a CPAN dist", + "author" : [ + "Ricardo Signes " + ], + "build_requires" : { + "Test::More" : "0.88" + }, + "configure_requires" : { + "ExtUtils::MakeMaker" : "6.31" + }, + "generated_by" : "Dist::Zilla version 2.100991", + "license" : "perl", + "meta-spec" : { + "url" : "http://module-build.sourceforge.net/META-spec-v1.4.html", + "version" : 1.4 + }, + "name" : "Version-Requirements", + "recommends" : {}, + "requires" : { + "Carp" : "0", + "Scalar::Util" : "0", + "version" : "0.77" + }, + "resources" : { + "repository" : "git://git.codesimply.com/Version-Requirements.git" + }, + "version" : "0.101010", + "x_contributors" : [ + "Dagfinn Ilmari Mannsåker " + ] +} + diff --git a/corpus/META-VR.yml b/corpus/META-VR.yml new file mode 100644 index 0000000..18b2350 --- /dev/null +++ b/corpus/META-VR.yml @@ -0,0 +1,24 @@ +--- +abstract: 'a set of version requirements for a CPAN dist' +author: + - 'Ricardo Signes ' +build_requires: + Test::More: 0.88 +configure_requires: + ExtUtils::MakeMaker: 6.31 +generated_by: 'Dist::Zilla version 2.100991' +license: perl +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: 1.4 +name: Version-Requirements +recommends: {} +requires: + Carp: 0 + Scalar::Util: 0 + version: 0.77 +resources: + repository: git://git.codesimply.com/Version-Requirements.git +version: 0.101010 +x_contributors: + - 'Dagfinn Ilmari Mannsåker ' diff --git a/corpus/bareyaml.meta b/corpus/bareyaml.meta new file mode 100644 index 0000000..85c4f1d --- /dev/null +++ b/corpus/bareyaml.meta @@ -0,0 +1,23 @@ +abstract: 'a set of version requirements for a CPAN dist' +author: + - 'Ricardo Signes ' +build_requires: + Test::More: 0.88 +configure_requires: + ExtUtils::MakeMaker: 6.31 +generated_by: 'Dist::Zilla version 2.100991' +license: perl +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: 1.4 +name: Version-Requirements +recommends: {} +requires: + Carp: 0 + Scalar::Util: 0 + version: 0.77 +resources: + repository: git://git.codesimply.com/Version-Requirements.git +version: 0.101010 +x_contributors: + - 'Dagfinn Ilmari Mannsåker ' diff --git a/corpus/json.meta b/corpus/json.meta new file mode 100644 index 0000000..71bb249 --- /dev/null +++ b/corpus/json.meta @@ -0,0 +1,33 @@ +{ + "abstract" : "a set of version requirements for a CPAN dist", + "author" : [ + "Ricardo Signes " + ], + "build_requires" : { + "Test::More" : "0.88" + }, + "configure_requires" : { + "ExtUtils::MakeMaker" : "6.31" + }, + "generated_by" : "Dist::Zilla version 2.100991", + "license" : "perl", + "meta-spec" : { + "url" : "http://module-build.sourceforge.net/META-spec-v1.4.html", + "version" : 1.4 + }, + "name" : "Version-Requirements", + "recommends" : {}, + "requires" : { + "Carp" : "0", + "Scalar::Util" : "0", + "version" : "0.77" + }, + "resources" : { + "repository" : "git://git.codesimply.com/Version-Requirements.git" + }, + "version" : "0.101010", + "x_contributors" : [ + "Dagfinn Ilmari Mannsåker " + ] +} + diff --git a/corpus/yaml.meta b/corpus/yaml.meta new file mode 100644 index 0000000..18b2350 --- /dev/null +++ b/corpus/yaml.meta @@ -0,0 +1,24 @@ +--- +abstract: 'a set of version requirements for a CPAN dist' +author: + - 'Ricardo Signes ' +build_requires: + Test::More: 0.88 +configure_requires: + ExtUtils::MakeMaker: 6.31 +generated_by: 'Dist::Zilla version 2.100991' +license: perl +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: 1.4 +name: Version-Requirements +recommends: {} +requires: + Carp: 0 + Scalar::Util: 0 + version: 0.77 +resources: + repository: git://git.codesimply.com/Version-Requirements.git +version: 0.101010 +x_contributors: + - 'Dagfinn Ilmari Mannsåker ' diff --git a/cpanfile b/cpanfile new file mode 100644 index 0000000..f61edc6 --- /dev/null +++ b/cpanfile @@ -0,0 +1,120 @@ +requires "CPAN::Meta::Requirements" => "2.121"; +requires "CPAN::Meta::YAML" => "0.011"; +requires "Carp" => "0"; +requires "Encode" => "0"; +requires "Exporter" => "0"; +requires "File::Spec" => "0.80"; +requires "JSON::PP" => "2.27300"; +requires "Scalar::Util" => "0"; +requires "perl" => "5.008001"; +requires "strict" => "0"; +requires "version" => "0.88"; +requires "warnings" => "0"; + +on 'test' => sub { + requires "Data::Dumper" => "0"; + requires "ExtUtils::MakeMaker" => "0"; + requires "File::Basename" => "0"; + requires "File::Spec" => "0.80"; + requires "File::Spec::Functions" => "0"; + requires "File::Temp" => "0.20"; + requires "IO::Dir" => "0"; + requires "JSON::PP" => "2.27300"; + requires "Storable" => "0"; + requires "Test::More" => "0.88"; + requires "lib" => "0"; + requires "overload" => "0"; + requires "perl" => "5.008001"; + requires "utf8" => "0"; + requires "vars" => "0"; +}; + +on 'test' => sub { + recommends "CPAN::Meta" => "2.120900"; +}; + +on 'configure' => sub { + requires "ExtUtils::MakeMaker" => "6.17"; + requires "perl" => "5.008001"; +}; + +on 'configure' => sub { + suggests "JSON::PP" => "2.27300"; +}; + +on 'develop' => sub { + requires "Dist::Zilla" => "5"; + requires "Dist::Zilla::Plugin::Authority" => "0"; + requires "Dist::Zilla::Plugin::AutoPrereqs" => "0"; + requires "Dist::Zilla::Plugin::BumpVersionAfterRelease" => "0"; + requires "Dist::Zilla::Plugin::CPANFile" => "0"; + requires "Dist::Zilla::Plugin::CheckChangesHasContent" => "0"; + requires "Dist::Zilla::Plugin::CheckMetaResources" => "0"; + requires "Dist::Zilla::Plugin::CheckPrereqsIndexed" => "0"; + requires "Dist::Zilla::Plugin::ConfirmRelease" => "0"; + requires "Dist::Zilla::Plugin::CopyFilesFromBuild::Filtered" => "0"; + requires "Dist::Zilla::Plugin::DualLife" => "0"; + requires "Dist::Zilla::Plugin::Encoding" => "0"; + requires "Dist::Zilla::Plugin::Git::Check" => "0"; + requires "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch" => "0"; + requires "Dist::Zilla::Plugin::Git::Commit" => "0"; + requires "Dist::Zilla::Plugin::Git::Contributors" => "0"; + requires "Dist::Zilla::Plugin::Git::GatherDir" => "0"; + requires "Dist::Zilla::Plugin::Git::Push" => "0"; + requires "Dist::Zilla::Plugin::Git::Remote::Check" => "0"; + requires "Dist::Zilla::Plugin::Git::Tag" => "0"; + requires "Dist::Zilla::Plugin::GithubMeta" => "0"; + requires "Dist::Zilla::Plugin::InsertCopyright" => "0"; + requires "Dist::Zilla::Plugin::License" => "0"; + requires "Dist::Zilla::Plugin::MakeMaker" => "0"; + requires "Dist::Zilla::Plugin::MakeMaker::Highlander" => "0.003"; + requires "Dist::Zilla::Plugin::Manifest" => "0"; + requires "Dist::Zilla::Plugin::ManifestSkip" => "0"; + requires "Dist::Zilla::Plugin::MetaJSON" => "0"; + requires "Dist::Zilla::Plugin::MetaNoIndex" => "0"; + requires "Dist::Zilla::Plugin::MetaProvides::Package" => "0"; + requires "Dist::Zilla::Plugin::MetaTests" => "0"; + requires "Dist::Zilla::Plugin::MetaYAML" => "0"; + requires "Dist::Zilla::Plugin::MinimumPerl" => "0"; + requires "Dist::Zilla::Plugin::NextRelease" => "0"; + requires "Dist::Zilla::Plugin::OnlyCorePrereqs" => "0.014"; + requires "Dist::Zilla::Plugin::Pod2Readme" => "0"; + requires "Dist::Zilla::Plugin::PodCoverageTests" => "0"; + requires "Dist::Zilla::Plugin::PodSyntaxTests" => "0"; + requires "Dist::Zilla::Plugin::Prereqs" => "0"; + requires "Dist::Zilla::Plugin::Prereqs::AuthorDeps" => "0"; + requires "Dist::Zilla::Plugin::PromptIfStale" => "0"; + requires "Dist::Zilla::Plugin::PruneCruft" => "0"; + requires "Dist::Zilla::Plugin::RewriteVersion" => "0"; + requires "Dist::Zilla::Plugin::RunExtraTests" => "0"; + requires "Dist::Zilla::Plugin::SurgicalPodWeaver" => "0.0021"; + requires "Dist::Zilla::Plugin::Test::Compile" => "0"; + requires "Dist::Zilla::Plugin::Test::Perl::Critic" => "0"; + requires "Dist::Zilla::Plugin::Test::PodSpelling" => "0"; + requires "Dist::Zilla::Plugin::Test::Portability" => "0"; + requires "Dist::Zilla::Plugin::Test::ReportPrereqs" => "0"; + requires "Dist::Zilla::Plugin::Test::Version" => "0"; + requires "Dist::Zilla::Plugin::TestRelease" => "0"; + requires "Dist::Zilla::Plugin::UploadToCPAN" => "0"; + requires "English" => "0"; + requires "File::Spec" => "0"; + requires "File::Temp" => "0"; + requires "IO::Handle" => "0"; + requires "IPC::Open3" => "0"; + requires "Pod::Coverage::TrustPod" => "0"; + requires "Pod::Weaver::PluginBundle::DAGOLDEN" => "0"; + requires "Pod::Wordlist" => "0"; + requires "Software::License::Perl_5" => "0"; + requires "Test::CPAN::Meta" => "0"; + requires "Test::More" => "0"; + requires "Test::Pod" => "1.41"; + requires "Test::Pod::Coverage" => "1.08"; + requires "Test::Portability::Files" => "0"; + requires "Test::Spelling" => "0.12"; + requires "Test::Version" => "1"; + requires "blib" => "1.01"; +}; + +on 'develop' => sub { + recommends "Perl::Critic::Policy::Lax::ProhibitStringyEval::ExceptForRequire" => "0"; +}; diff --git a/dist.ini b/dist.ini new file mode 100644 index 0000000..44aec4e --- /dev/null +++ b/dist.ini @@ -0,0 +1,197 @@ +name = CPAN-Meta +author = David Golden +author = Ricardo Signes +author = Adam Kennedy +license = Perl_5 +copyright_holder = David Golden, Ricardo Signes, Adam Kennedy and Contributors +copyright_year = 2010 + +[Encoding] +encoding = bytes +match = ^t/data- + +[Encoding / Corpus] +encoding = Latin-1 +filename = corpus/BadMETA.yml + +[RewriteVersion] + +[Git::Contributors] + +[Git::GatherDir] +exclude_filename = README.mkdn +exclude_filename = cpanfile +exclude_filename = Makefile.PL + +[PruneCruft] + +[ManifestSkip] + +[InsertCopyright] + +; authordep Pod::Weaver::PluginBundle::DAGOLDEN +[SurgicalPodWeaver] +:version = 0.0021 +config_plugin = @DAGOLDEN +post_code_replacer = replace_with_nothing +replacer = replace_with_comment + +[Pod2Readme] + +[License] + +[Test::Compile] +fake_home = 1 +xt_mode = 1 + +[Test::ReportPrereqs] + +[Test::PodSpelling] +stopwords = LoadFile +stopwords = apache +stopwords = bsd +stopwords = deserialization +stopwords = deserialize +stopwords = deserializes +stopwords = deserializing +stopwords = die'ing +stopwords = dir +stopwords = distmeta +stopwords = dists +stopwords = gpl +stopwords = json +stopwords = lgpl +stopwords = mailto +stopwords = metacpan +stopwords = metafiles +stopwords = mit +stopwords = mozilla +stopwords = releaser +stopwords = serializer +stopwords = subkey +stopwords = subkeys + +[Test::Perl::Critic] + +[MetaTests] + +[PodSyntaxTests] + +[PodCoverageTests] + +[Test::Portability] +options = test_one_dot = 0 + +[Test::Version] + +[Authority] +authority = cpan:DAGOLDEN +do_munging = 0 + +[MinimumPerl] + +[AutoPrereqs] +skip = ^t::lib + +[MetaNoIndex] +directory = t +directory = xt +directory = examples +directory = corpus +directory = history +package = DB + +[MetaProvides::Package] +meta_noindex = 1 + +[GithubMeta] +issues = 1 +remote = origin +remote = github +user = Perl-Toolchain-Gang + +[Prereqs::AuthorDeps] + +[MetaYAML] + +[MetaJSON] + +[CPANFile] + +[MakeMaker] +default_jobs = 9 +eumm_version = 6.17 + +[PromptIfStale] +check_all_plugins = 1 +modules = Dist::Zilla +modules = Dist::Zilla::PluginBundle::DAGOLDEN + +[CopyFilesFromBuild::Filtered] +copy = Makefile.PL + +[Manifest] + +[Git::CheckFor::CorrectBranch] + +[Git::Check] +allow_dirty = Makefile.PL + +[CheckMetaResources] + +[Git::Remote::Check] +branch = master +remote_branch = master + +[CheckPrereqsIndexed] + +[CheckChangesHasContent] + +[RunExtraTests] +default_jobs = 9 + +[TestRelease] + +[ConfirmRelease] + +[UploadToCPAN] + +[Git::Commit / Commit_Dirty_Files] +allow_dirty = Makefile.PL +commit_msg = Update Makefile.PL + +[Git::Tag] +tag_format = %v + +[NextRelease] + +[BumpVersionAfterRelease] + +[Git::Commit / Commit_Changes] +allow_dirty = Changes +allow_dirty = Makefile.PL +allow_dirty_match = ^lib +commit_msg = After release: bump $VERSION and timestamp Changes + +[Git::Push] +push_to = origin + +[Prereqs] +CPAN::Meta::YAML = 0.011 +File::Spec = 0.80 +JSON::PP = 2.27300 +version = 0.88 + +[Prereqs / DevelopRecommends] +Perl::Critic::Policy::Lax::ProhibitStringyEval::ExceptForRequire = 0 + +[OnlyCorePrereqs] +; EU::MM bundled prereqs need this +:version = 0.014 +check_dual_life_versions = 0 + +[MakeMaker::Highlander] +:version = 0.003 + +[DualLife] +entered_core=5.010001 diff --git a/history/META-spec-1_0.html b/history/META-spec-1_0.html new file mode 100644 index 0000000..5ac3e86 --- /dev/null +++ b/history/META-spec-1_0.html @@ -0,0 +1,197 @@ + + + Specification for META.yml + + + +

Specification for the META.yml file

+ +

This document describes version 1.0 of the META.yml specification.

+ +

+The META.yml file describes important properties of contributed Perl +distributions such as the ones found on CPAN. It is typically created by tools +like Module::Build +and ExtUtils::MakeMaker. +

+ +

+The fields in the META.yml file are meant to be helpful to people +maintaining module collections (like CPAN), for people writing +installation tools (like CPAN.pm or CPANPLUS), or +just people who want to know some stuff about a distribution before +downloading it and starting to install it. +

+ +

Format

+ +

+META.yml files are written in the YAML format. The reasons we chose +YAML instead of, say, XML or Data::Dumper are discussed in this +thread on the MakeMaker mailing list. +

+ +

+The first line of a META.yml file should be a valid YAML document header +like "--- #YAML:1.0". +

+ +

Fields

+ +

+The rest of the META.yml file is one big YAML mapping, +whose keys are described here. +

+ +
    + +
  • name
    +Example: Module-Build +

    +The name of the distribution. Often created by taking the "main +module" in the distribution and changing "::" to "-". Sometimes it's +completely different, however, as in the case of the libwww-perl +distribution. +

    + +
  • version
    +Example: 0.16 +

    +The version of the distribution to which the META.yml file refers. +

    + +
  • license
    +Example: perl +

    +The license under which this distribution may be used and +redistributed. See Module::Build +for the list of valid options. +

    + +
  • distribution_type
    +Example: module +

    +What kind of stuff is contained in this distribution. Most things on +CPAN are modules (which can also mean a collection of +modules), but some things are scripts. +

    + +
  • requires
    +Example:
    + +  Data::Dumper: 0
    +  File::Find: 1.03
    +
    +

    +A YAML mapping +indicating the Perl modules this distribution requires for proper +operation. The keys are the module names, and the values are version +specifications as described in the +documentation for Module::Build's "requires" parameter. +

    + +

    Note: the exact nature of the fancy specifications like +">= 1.2, != 1.5, < 2.0" is subject to +change. Advance notice will be given here. The simple specifications +like "1.2" will not change in format. +

    + +
  • recommends
    +Example:
    + +  Data::Dumper: 0
    +  File::Find: 1.03
    +
    +

    +A YAML mapping +indicating the Perl modules this distribution recommends for enhanced +operation. +

    + +
  • build_requires
    +Example:
    + +  Data::Dumper: 0
    +  File::Find: 1.03
    +
    +

    +A YAML mapping +indicating the Perl modules required for building and/or testing of +this distribution. These dependencies are not required after the +module is installed. +

    + +
  • conflicts
    +Example:
    + +  Data::Dumper: 0
    +  File::Find: 1.03
    +
    +

    +A YAML mapping +indicating the Perl modules that cannot be installed while this +distribution is installed. This is a pretty uncommon situation. +

    + +
  • dynamic_config
    +Example: 0 +

    +A boolean flag indicating whether a Build.PL or +Makefile.PL (or similar) must be executed, or whether this +module can be built, tested and installed solely from consulting its +metadata file. The main reason to set this to a true value if that +your module performs some dynamic configuration (asking questions, +sensing the environment, etc.) as part of its build/install process. +

    + +

    +Currently Module::Build doesn't actually do anything with +this flag - it's probably going to be up to higher-level tools like +CPAN.pm to do something useful with it. It can potentially +bring lots of security, packaging, and convenience improvements. +

    + +
  • generated_by
    +Example: Module::Build version 0.16 +

    +Indicates the tool that was used to create this META.yml file. It's +good form to include both the name of the tool and its version, but +this field is essentially opaque, at least for the moment. +

    + +
+ +

Related Projects

+
+
DOAP
+ +
An RDF vocabulary to describe software projects. http://usefulinc.com/doap.
+
+ +

History

+ +
    +
  • March 14, 2003 (Pi day) - created version 1.0 of this document.
  • +
  • May 8, 2003 - added the "dynamic_config" field, which was + missing from the initial version.
  • +
+ + + diff --git a/history/META-spec-1_1.html b/history/META-spec-1_1.html new file mode 100644 index 0000000..28a5ad4 --- /dev/null +++ b/history/META-spec-1_1.html @@ -0,0 +1,254 @@ + + + Specification for META.yml + + + +

Specification for the META.yml file

+ +

This document describes version 1.0 of the META.yml specification.

+ +

+The META.yml file describes important properties of contributed Perl +distributions such as the ones found on CPAN. It is typically created by tools +like Module::Build +and ExtUtils::MakeMaker. +

+ +

+The fields in the META.yml file are meant to be helpful to people +maintaining module collections (like CPAN), for people writing +installation tools (like CPAN.pm or CPANPLUS), or +just people who want to know some stuff about a distribution before +downloading it and starting to install it. +

+ +

Format

+ +

+META.yml files are written in the YAML format. The reasons we chose +YAML instead of, say, XML or Data::Dumper are discussed in this +thread on the MakeMaker mailing list. +

+ +

+The first line of a META.yml file should be a valid YAML document header +like "--- #YAML:1.0". +

+ +

Fields

+ +

+The rest of the META.yml file is one big YAML mapping, +whose keys are described here. +

+ +
    + +
  • name
    +Example: Module-Build +

    +The name of the distribution. Often created by taking the "main +module" in the distribution and changing "::" to "-". Sometimes it's +completely different, however, as in the case of the libwww-perl +distribution. +

    + +
  • version
    +Example: 0.16 +

    +The version of the distribution to which the META.yml file refers. +This is a mandatory field. +

    + +

    + The version is essentially an arbitrary string, but must be + only ASCII characters, and strongly should be of the format + integer-dot-digit-digit, i.e. 25.57, optionally followed by + underscore-digit-digit, i.e. 25.57_04. +

    + +

    + The standard tools that deal with module distribution (PAUSE, CPAN, + etc.) form an identifier for each distribution by joining the 'name' + and 'version' attributes with a dash (-) character. Tools + who are prepared to deal with distributions that have no version + numbers generally omit the dash as well. +

    + + +
  • license
    +Example: perl + +

    + a descriptive term for the licenses ... not authoritative, but must + be consistent with licensure statements in the READMEs, documentation, etc. +

    + +

    +The license under which this distribution may be used and +redistributed. See Module::Build +for the list of valid options. +

    + +
  • license_uri
    +

    + This should contain a URI where the exact terms of the license may be found. +

    + +(change "unrestricted" to "redistributable"?) + + +
  • distribution_type
    +Example: module +

    +What kind of stuff is contained in this distribution. Most things on +CPAN are modules (which can also mean a collection of +modules), but some things are scripts. +

    + +This field is basically meaningless, and tools (like Module::Build or +MakeMaker) will likely stop generating it in the future. + + +
  • private
    +WTF is going on here? + +index_ignore: any application that indexes the contents of +distributions (PAUSE, search.cpan.org) ought to ignore the items +(packages, files, directories, namespace hierarchies). + + +
  • requires
    +Example:
    + +  Data::Dumper: 0
    +  File::Find: 1.03
    +
    +

    +A YAML mapping +indicating the Perl modules this distribution requires for proper +operation. The keys are the module names, and the values are version +specifications as described in the +documentation for Module::Build's "requires" parameter. +

    + +

    Note: the exact nature of the fancy specifications like +">= 1.2, != 1.5, < 2.0" is subject to +change. Advance notice will be given here. The simple specifications +like "1.2" will not change in format. +

    + +
  • recommends
    +Example:
    + +  Data::Dumper: 0
    +  File::Find: 1.03
    +
    +

    +A YAML mapping +indicating the Perl modules this distribution recommends for enhanced +operation. +

    + +
  • build_requires
    +Example:
    + +  Data::Dumper: 0
    +  File::Find: 1.03
    +
    +

    +A YAML mapping +indicating the Perl modules required for building and/or testing of +this distribution. These dependencies are not required after the +module is installed. +

    + +
  • conflicts
    +Example:
    + +  Data::Dumper: 0
    +  File::Find: 1.03
    +
    +

    +A YAML mapping +indicating the Perl modules that cannot be installed while this +distribution is installed. This is a pretty uncommon situation. +

    + +- possibly separate out test-time prereqs, complications include: can +tests be meaningfully preserved for later running? are test-time +prereqs in addition to build-time, or exclusive? + +- make official location for installed *distributions*, which can +contain tests, etc. + + +
  • dynamic_config
    +Example: 0 +

    +A boolean flag indicating whether a Build.PL or +Makefile.PL (or similar) must be executed, or whether this +module can be built, tested and installed solely from consulting its +metadata file. The main reason to set this to a true value if that +your module performs some dynamic configuration (asking questions, +sensing the environment, etc.) as part of its build/install process. +

    + +

    +Currently Module::Build doesn't actually do anything with +this flag - it's probably going to be up to higher-level tools like +CPAN.pm to do something useful with it. It can potentially +bring lots of security, packaging, and convenience improvements. +

    + +
  • generated_by
    +Example: Module::Build version 0.16 +

    +Indicates the tool that was used to create this META.yml file. It's +good form to include both the name of the tool and its version, but +this field is essentially opaque, at least for the moment. +

    + +* Ingy's suggestions +short_description: (add as field, containing abstract, maximum 80 characters, suggested minimum 40 characters) +description: (long version of abstract, should add?) +maturity: alpha, beta, gamma, mature, stable +author_id, owner_id: +categorization, keyword, chapter_id: +URL for further information: (could default to search.cpan.org on PAUSE) + + +namespaces: can be specified for single elements by prepending +dotted-form, i.e. "com.example.my_application.my_property". Default +namespace for META.yml is probably "org.cpan.meta_author" or +something. Precedent for this is Apple's Carbon namespaces, I think. + +
+ +

History

+ +
    +
  • March 14, 2003 (Pi day) - created version 1.0 of this document.
  • +
  • May 8, 2003 - added the "dynamic_config" field, which was + missing from the initial version.
  • +
+ + + diff --git a/history/META-spec-1_2.pod b/history/META-spec-1_2.pod new file mode 100644 index 0000000..39ef9ca --- /dev/null +++ b/history/META-spec-1_2.pod @@ -0,0 +1,641 @@ +=head1 NAME + +META-spec - Specification for F documents + +=head1 SYNOPSIS + + --- #YAML:1.0 + name: Module-Build + abstract: Build and install Perl modules + version: 0.20 + author: + - Ken Williams + license: perl + distribution_type: module + requires: + Config: 0 + Cwd: 0 + Data::Dumper: 0 + ExtUtils::Install: 0 + File::Basename: 0 + File::Compare: 0 + File::Copy: 0 + File::Find: 0 + File::Path: 0 + File::Spec: 0 + IO::File: 0 + perl: 5.005_03 + recommends: + Archive::Tar: 1.00 + ExtUtils::Install: 0.3 + ExtUtils::ParseXS: 2.02 + Pod::Text: 0 + YAML: 0.35 + build_requires: + Test: 0 + urls: + license: http://dev.perl.org/licenses/ + meta-spec: + version: 1.2 + url: http://module-build.sourceforge.net/META-spec-v1.2.html + generated_by: Module::Build version 0.20 + +=head1 DESCRIPTION + +This document describes version 1.2 of the F specification. + +The F file describes important properties of contributed +Perl distributions such as the ones found on CPAN. It is typically +created by tools like Module::Build, Module::Install, and +ExtUtils::MakeMaker. + +The fields in the F file are meant to be helpful for people +maintaining module collections (like CPAN), for people writing +installation tools (like CPAN.pm or CPANPLUS), or just for people who +want to know some stuff about a distribution before downloading it and +starting to install it. + +I, +and the latest development version (which may include things that +won't make it into the stable version can always be found at +L.> + +=head1 FORMAT + +F files are written in the YAML format (see +L). + +See the following links to learn why we chose YAML instead of, say, +XML or Data::Dumper: + +=over 4 + +=item * + +Module::Build design plans + +L + +=item * + +Not keen on YAML + +L + +=item * + +META Concerns + +L + +=back + +=head1 TERMINOLOGY + +=over 4 + +=item distribution + +This is the primary object described by the F +specification. In the context of this document it usually refers to a +collection of modules, scripts, and/or documents that are distributed +for other developers to use. + +=item module + +This refers to a reusable library of code typically contained in a +single file. Currently, we primarily talk of perl modules, but this +specification should be open enough to apply to other languages as +well (ex. python, ruby). + +=back + +=head1 VERSION SPECIFICATIONS + +Some fields require a version specification (ex. L<"requires">, +L<"recommends">, L<"build_requires">, etc.). This section details the +version specications that are currently supported. + +If a single version is listed, then that version is considered to be +the minimum version supported. + +If 0 is given as the version number, then any version is supported. + +Additionally, for more complicated requirements, the specification +supports a list of versions, each of which may be optionally preceeded +by a relational operator. + +Supported operators include E (less than), E= (less than or +equal), E (greater than), E= (greater than or equal), == (equal), and != +(not equal). + +If a list is given then it is evaluated from left to right so that any +specifications in the list that conflict with a previous specification +are overriden by the later. + +Examples: + + >= 1.2, != 1.5, < 2.0 + +Any version from version 1.2 onward, except version 1.5, that also +preceeds version 2.0. + +=head1 HEADER + +The first line of a F file should be a valid YAML document +header like C<"--- #YAML:1.0">. + +=head1 FIELDS + +The rest of the F file is one big YAML mapping whose keys +are described here. + +=head2 meta-spec + +Example: + + meta-spec: + version: 1.2 + url: http://module-build.sourceforge.net/META-spec-v1.2.html + +(Spec 1.1) [required] {URL} This field indicates the location of the +version of the META.yml specification used. + +=head2 name + +Example: + + name: Module-Build + +(Spec 1.0) [required] {string} The name of the distribution which is often +created by taking the "main module" in the distribution and changing +"::" to "-". Sometimes it's completely different, however, as in the +case of the libww-perl distribution (see +L). + +=head2 version + +Example: + + version: 0.20 + +(Spec 1.0) [required] {version} The version of the distribution to which the +F file refers. + +=head2 abstract + +Example: + + abstract: Build and install Perl modules. + +(Spec 1.1) [required] {string} A short description of the purpose of the +distribution. + +=head2 author + +Example: + + author: + - Ken Williams + +(Spec 1.1) [required] {list of strings} A YAML sequence indicating the author(s) of the +distribution. The prefered form is author-name . + +=head2 license + +Example: + + license: perl + +(Spec 1.0) [required] {string} The license under which this distribution may be +used and redistributed. See L for the list of valid +options. + +=head2 distribution_type + +Example: + + distribution_type: module + +(Spec 1.0) [optional] {string} What kind of stuff is contained in this +distribution. Most things on CPAN are Cs (which can also mean +a collection of modules), but some things are C