cpan Module-Build 0.27_01

latest releases: 2.232012, 0.1.11, 0.5...
pre-release19 years ago

Backward-incompatible (but better) changes:

  • When using the 'install_base' option to choose a directory for
    installing everything, perl modules now go into lib/perl5/ instead
    of just lib/. It seems this is more consistent with people's
    expectations, and the way I had it before was a bit peculiar to the
    way I like things in my own home directory. [Michael Schwern]

  • When the user is using the 'install_base' option, scripts will now
    be installed by default in $install_base/bin/ rather than
    $install_base/script/ . [Jan Hudec and Michael Schwern]

Major changes:

  • The auto_features mechanism will now re-evaluate dependencies every
    time feature() is called for an auto-feature, rather than freezing
    the success/failure value during 'perl Build.PL' and using that
    value for all eternity (or module update, whichever comes first).
    This applies to both $build->feature() and
    FooModule::ConfigData->feature() calls. [Requested by many]

  • Added the meta_add and meta_merge mechanisms, which let the module
    author add/merge arbitrary entries into the META.yml file.

  • Now reads per-action default options from '$ENV{HOME}/.modulebuildrc'
    if it exists. Command line options override anything set in the rc file.

  • We now use ExtUtils::CBuilder to do all compiling of C code (for
    example, when compiling XS modules).

  • The creation of Unix man pages is no longer a strict necessity - it
    has now been turned into an 'auto-feature' contingent on the
    presence of Pod::Man and a location specified for man pages to go.

  • A user-specified 'install_path' setting will now take precedence
    over an 'install_base' setting. This allows the user to use
    'install_base' to set the base for all elements in one go, and then
    use 'install_path' to override specific paths or add paths for
    additional kinds of targets.

  • Split the main documentation from 'Module/Build.pm' into two
    sections. The user level documentation and overview remains in
    'Module/Build.pm', while a new document,
    'Module/Build/Authoring.pod', has been created for module authors.

Minor changes:

  • new_from_context() was losing its arguments in some cases (and not
    because of inadequate training in forensic debate) - we now pass its
    arguments directly to the Build.PL script rather than merging them
    in afterwards.

  • Let resume() return an object blessed into the appropriate class
    if the user has provided a subclass, as specified by the
    'build_class' property. This allows current() and new_from_context()
    to behave more like factory methods returning objects of the correct
    class based on context. [Ray Zimmerman]

  • Refactored methods relating to parsing perl module files for
    package, version, and pod data into a new class:
    Module::Build::ModuleInfo. It should not be considered part of
    Module::Build's API, because we may split it out entirely as a
    separate CPAN module that we depend on.

  • Added new method Module::Build::prepare_metadata() for authors to
    override in order to add custom fields to META.yml.

  • We now use Test::More for our regression tests. If the user
    doesn't have it installed, we include a copy in t/lib/ that we can
    use during testing.

  • When copying files in the 'distdir' action, set permissions to match
    the original files. [Julian Mehnle]

  • When adding files like META.yml to the MANIFEST, we now tell the
    user we're doing so by printing one of the "Added to MANIFEST: ..."
    lines. [Ron Savage]

  • Added a runtime_params() method, which lets a module author see
    which parameters were overridden by the user on the command line
    (or in whatever paradigm the user originally invoked Module::Build
    from). [David Wheeler]

  • Added the current_action() method, which, surprisingly, returns the
    name of the currently running action. [David Wheeler]

  • Added docs for run_perl_script().

  • Added some stuff to the docs about why PREFIX is unsupported, and
    what to use instead. [Steve Purkis]

  • The simple get/set accessor methods for all the 'parameters' like
    verbose(), license(), etc. now have auto-generated documentation in
    Module/Build.pm.

  • Created a Cookbook entry for 'Adding new elements to the install
    process'

  • We now add META.yml to the MANIFEST when META.yml is created, not
    when MANIFEST is created. [Spotted by Ron Savage]

  • Added some additional patterns to the suggested MANIFEST.SKIP
    contents, and changed the docs so that we encourage the user to use
    the MANIFEST.SKIP. [Ron Savage]

  • Eliminated a redundant recipe from the Cookbook, now that there are
    some more extensive recipes on how to add stuff to the
    build/install sequences.

  • Eliminated an undefined-variable warning when testing under perl 5.005

  • When building HTML documentation, 'html_backlink' and 'html_css'
    properties are now first-class properties, so they can be set from
    the command line. [Suggested by Sagar R. Shah]

  • Have script_files default to everything in bin. I believe this is
    the least surprising behavior. [Suggested by Michael Schwern]

  • If script_files is given a directory, consider each file in that
    directory tree as a script to be installed. This avoids having to
    remember to add to the script_files list every time you add a
    program. [Suggested by Michael Schwern]

  • We now only load Pod::Man when we actually need to build man pages.

  • We now make Test::Harness use our carefully-selected path to a perl
    executable regardless of Test::Harness's version. Previously we
    let it figure stuff out for itself if it was a reasonably modern
    version, but it's safer to make sure we're using the same perl
    everywhere.

Don't miss a new Module-Build release

NewReleases is sending notifications on new releases.