The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 0.21

  • Added a have_c_compiler() method.
  • Added documentation for the requires(), recommends(), build_requires(), and conflicts() methods.
  • On Unix platforms, we now create the "Build" script with a #! line matching the perl interpreter that was used to invoke the Build.PL script, rather than whatever is in $Config{startperl}. This avoids a potential warning about the interpreters not matching. [Spotted by Ken Y. Clark]
  • The Unix version now uses the safer multi-argument form of system() when building distribution tarballs.
  • Added a regression test for the 'dist' action to the t/runthrough.t test.
  • Fixed a problem with File::Spec usage when creating the names of 'libdoc' manual pages - the code wasn't dealing with the volume or file portions correctly on certain platforms.
  • When creating the names of the 'libdoc' manual pages, we no longer assume that pods are under the hard-coded paths 'blib/lib' or 'blib/arch'.
  • Fixed a crashing bug that could sometimes occur when the distribution contained no 'lib' directory. [Chris Dolan]
  • Fixed a crashing bug that happened when the user had .PL files in the lib/ directory and didn't explicitly name them in a hash reference to the new() constructor. [Chris Reinhardt, bug #4036]
  • .PL files are now passed the names of their target file(s) on the command line when they run.
  • When YAML.pm wasn't installed, t/runthrough.t wasn't properly skipping some tests that required YAML. This is now fixed.
    • Stephen J. Smith
  • Added documentation for the dist_version() and dist_name() methods. [Spotted by Johan Vromans]
  • Existing values in $ENV{HARNESS_PERL_SWITCHES} are now respected and not squashed when we run the 'test' action. [Paul Johnson]
  • On cygwin, the separator string for manual page names has been set to '.'. Previously it was '::', inherited from Unix. [Yitzchak Scott-Thoennes]
  • Avoid a warning when Build.PL is run (i.e. when the new() method is called) and no MANIFEST file exists. [Michael Schwern and Kevin Ruscoe]
  • Added documentation for the 'code' and 'docs' actions. [Steve Purkis and Mark Stosberg]
  • The internal method compile_support_files() has been renamed to process_support_files() in order to make it consistent with other processing methods. Note that it was never documented using the old name. It's still not documented, actually. Maybe later.
  • Skip the 'write' pseudo-entry in the 'diff' action's installation map. [Chris Dolan]
  • Fixed a bug in which notes() set in the Build.PL before create_build_script() was called would get lost unless more notes() were also set afterwards. [Spotted by Dave Rolsky]
  • The process of building elements of the distribution is now driven by a list of build elements, paving the way for letting people add their own types of build elements in future versions of Module::Build (or in the current version with some difficulty).
  • Fixed some linking errors on Cygwin. [Randy Sims, Terrence Brannon]
  • Fixed a line-ending problem with detecting the dist_abstract properly on Cygwin. [Randy Sims]
  • Fixed a problem with signatures that occurred if 'distsign' was called before 'distdir' - the signature would be generated twice.
  • Added a 'create_readme' parameter to new(), which will use Pod::Text to generate a README from the main (dist_version_from) module file during the 'distdir' action.
  • We now refuse to run the 'Build' script if it was created using a different version of Module::Build. This has caused a couple of nasty bugs in the past, I don't want to know what it would cause in the future.
  • Documentation for do_system() has been added. [Dave Rolsky]
  • run_perl_script() is now available as a class method, though it will need to (re-)find the perl interpreter in this case.
  • Added a new_from_context() method that authors of automated tools like CPANPLUS and CPAN can use instead of running all tasks as sub-processes. We also use it in the regression tests for Module::Build itself. ** Note that this method is currently undocumented because its name may change in the future. **
  • When signing distributions with Module::Signature, we now automatically add the SIGNATURE file to the MANIFEST, avoiding an unpleasant chicken/egg problem for the module author.
    • unpleasantness spotted by sungo
  • In Module::Build::Compat, added support for the 'verbose' parameter to Makefile.PL [spotted by Soren Andersen, fixed by Michael Schwern]
  • The Module::Build distribution now has a cryptographic 'SIGNATURE' file created by Module::Signature.
  • Added proper documentation for the subclass() method. [spotted by Jonathan Steinert]
  • Worked around a Config.pm bug in Red Hat 9 which prevented man pages from being installed in the correct places. [spotted by Ville Skytta]
  • Fixed a Module::Build::Compat bug in which setting INSTALLDIRS caused a crash. [spotted by Ilya Martynov]

Modules

Build and install Perl modules
Default methods for Module::Build
Compatibility with ExtUtils::MakeMaker
Examples of Module::Build Usage
Perl Package Manager file creation
Builder class for Amiga platforms
Stub class for unknown platforms
Builder class for EBCDIC platforms
Builder class for MPEiX platforms
Builder class for MacOS platforms
Builder class for RiscOS platforms
Builder class for Unix platforms
Builder class for VMS platforms
Builder class for VOS platforms
Builder class for Windows platforms
Builder class for Cygwin platform
Builder class for Mac OS X platform

Provides

in lib/Module/Build/Platform/Windows.pm
in lib/Module/Build/Platform/Windows.pm
in lib/Module/Build/Platform/Windows.pm