X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlmodstyle.pod;h=a5e332e533b101e017795a8497264a2c57141bd9;hb=a5365663f59d38ce50a53f9b46b25daa36d5ab17;hp=558edcf26ab3c4318e597006b1fff60cb5013cb0;hpb=4398853c9960f1d741fa0caa3468657b500c36b0;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlmodstyle.pod b/pod/perlmodstyle.pod index 558edcf..a5e332e 100644 --- a/pod/perlmodstyle.pod +++ b/pod/perlmodstyle.pod @@ -137,7 +137,7 @@ Provide links to further information (URL, email) =item * -Specify pre-requisites in Makefile.PL +Specify pre-requisites in Makefile.PL or Build.PL =item * @@ -177,6 +177,9 @@ You may not even need to write the module. Check whether it's already been done in Perl, and avoid re-inventing the wheel unless you have a good reason. +Good places to look for pre-existing modules include +http://search.cpan.org/ and asking on modules@perl.org + If an existing module B does what you want, consider writing a patch, writing a subclass, or otherwise extending the existing module rather than rewriting it. @@ -560,7 +563,33 @@ Your module should also include a README file describing the module and giving pointers to further information (website, author email). An INSTALL file should be included, and should contain simple installation -instructions (usually "perl Makefile.PL; make; make install"). +instructions. When using ExtUtils::MakeMaker this will usually be: + +=over 4 + +=item perl Makefile.PL + +=item make + +=item make test + +=item make install + +=back + +When using Module::Build, this will usually be: + +=over 4 + +=item perl Build.PL + +=item perl Build + +=item perl Build test + +=item perl Build install + +=back Release notes or changelogs should be produced for each release of your software describing user-visible changes to your module, in terms @@ -636,16 +665,18 @@ Modules not available from CPAN =back Specify version requirements for other Perl modules in the -pre-requisites in your Makefile.PL. +pre-requisites in your Makefile.PL or Build.PL. -Be sure to specify Perl version requirements both in Makefile.PL and -with C or similar. +Be sure to specify Perl version requirements both in Makefile.PL or +Build.PL and with C or similar. See the section on +C of L for details. =head2 Testing -All modules should be tested before distribution (using "make disttest", +All modules should be tested before distribution (using "make disttest"), and the tests should also be available to people installing the modules (using "make test"). +For Module::Build you would use the C equivalent C. The importance of these tests is proportional to the alleged stability of a module -- a module which purports to be stable or which hopes to achieve wide @@ -654,15 +685,17 @@ use should adhere to as strict a testing regime as possible. Useful modules to help you write tests (with minimum impact on your development process or your time) include Test::Simple, Carp::Assert and Test::Inline. +For more sophisticated test suites there are Test::More and Test::MockObject. =head2 Packaging -Modules should be packaged using the standard MakeMaker tools, allowing -them to be installed in a consistent manner. Use "make dist" to create -your package. - -Tools exist to help you build your module in a MakeMaker-friendly style. -These include ExtUtils::ModuleMaker and h2xs. See also L. +Modules should be packaged using one of the standard packaging tools. +Currently you have the choice between ExtUtils::MakeMaker and the +more platform independent Module::Build, allowing modules to be installed in a +consistent manner. +When using ExtUtils::MakeMaker, you can use "make dist" to create your +package. Tools exist to help you to build your module in a MakeMaker-friendly +style. These include ExtUtils::ModuleMaker and h2xs. See also L. =head2 Licensing @@ -672,6 +705,7 @@ of the license don't require you to include it). If you don't know what license to use, dual licensing under the GPL and Artistic licenses (the same as Perl itself) is a good idea. +See L and L. =head1 COMMON PITFALLS @@ -723,9 +757,13 @@ POD documentation Verifies your POD's correctness +=item Packaging Tools + +L, L + =item Testing tools -L, L, L +L, L, L, L, L =item http://pause.perl.org/