Hi all,
I've just uploaded Module::Build 0.26 to CPAN and Sourceforge. This is a major new release, coming three betas and half a year after 0.25.
file: $CPAN/authors/id/K/KW/KWILLIAMS/Module-Build-0.26.tar.gz size: 122353 bytes md5: bba1994a3db2a53401d45cf69c25347a
Now that 0.26 is out the door, development for the next release will focus on the following (as well as miscellaneous smaller features and fixes):
* META.yml specification updates, perhaps including a new META.rdf vocabulary
* Integrate the souped-up module-dependency spec & parser that Randy Sims
has been working on
(http://article.gmane.org/gmane.comp.lang.perl.qotw.quiz-of-the-week/ 118)
* Recursive builds (this may lack a champion at the moment)
* Get rid of all the C-compiling/linking code in M::B and rely
on ExtUtils::ParseXS
The changes since 0.25 are as follows.
- Removed some language from the Module::Build::Compat documentation that encouraged people to include a Build.PL without a Makefile.PL. Also changed "a replacement for MakeMaker" to "an alternative to MakeMaker" in the main documentation, which is basically what I meant all along (i.e. a replacement for MakeMaker in your particular build process - MakeMaker is never going to be fully replaced in the perl world at large, of course), but some people got the impression I was a little more truculent toward MakeMaker than I really am.
- Added the formal concepts of "features" and "config data" for distributions. This allows the module author to define a certain set of features that the user can switch on and off (usually according to whether they have the proper prerequisites for them), and to save build-time configuration information in a standardized format. See the main documentation of Module::Build for more details. (Note that the name of this system was called "BuildConfig" for a while in beta, but now it's called "ConfigData".)
- Added an 'auto_features' capability, which simplifies the process of defining features that depend on a set of prerequisites.
- Added the 'get_options' parameter, which lets module authors declare certain command-line arguments their Build.PL can accept [David Wheeler]
- Changed the split_like_shell() method to use the shellwords() function from Text::ParseWords (a core module since 5.0), which does a much better job than the split() we were using.
- Added a 'testpod' action, which checks the syntactic validity of all POD files in the distribution using Test::Pod. This eliminates the need for doing so in a regression test. [Initial patch by Mark Stosberg]
- Added a process_files_by_extension() method, which generalizes the kind of processing (essentially just copying) that happens for .pm and .pod files, and makes it available to other user-defined types of files. See the new cookbook entry.
- Improved compatibility with version.pm when authors are using version objects as their $VERSION variables. Now version_from_file() can deal with these objects. Currently we stringify them right away, but perhaps in the future we will preserve them as objects for a while.
- During 'distdir' and 'distmeta' actions, die a bit more gracefully if there's no MANIFEST (i.e. explicitly say that a MANIFEST is required). [Spotted by Adrian Howard]
- Eliminated a recursive dependency between creating the MANIFEST file and creating the META.yml file. [Spotted by Dave Rolsky]
- On Win32, where a single directory might be known variously as "Module-Build-0.25_03" or "MODULE~1.25_", we now use Win32::GetShortPathName($cwd) to verify that the 'Build' script is being run from the correct directory, rather than just a string comparison.
- The add_to_cleanup() method will now accept glob()-style patterns in addition to explicit filenames. Also documented the fact that they can be specified in either Unix-style or native-style notation.
- Passing a PREFIX value to a pass-through Makefile 'make install' now has the same effect as passing it to 'perl Makefile.PL' (it dies with a helpful message).
- Added the 'testcover' action, which runs a test suite using Devel::Cover. [Dave Rolsky]
- Added the 'lib' and 'arch' installation directories to the search path for the 'diff' action, since they won't necessarily (though they usually will) be in @INC at installation time. [Suggested by Kevin Baker]
- The "=head3" POD directive isn't supported in older podlators (particularly Pod::Man), so we don't use it anymore.
- Fixed a typo & improved the docs in the SUBCLASSING section. [Ron Savage]
- Added the '.tmp' suffix to the default MANIFEST.SKIP file, which should avoid adding things like pod2htmi.tmp to the MANIFEST [Ron Savage]
- Backup files from Emacs, containing the string '.#' in their names, should no longer find their way into the blib/ directory (and from there into installation directories).
- Worked around an unpleasant interaction between version.pm and the version-checking code that makes sure Module::Build's version hasn't changed during the lifetime of the 'Build' script. [Reported by Trevor Schellhorn]
- Fixed a problem in htmlify_pods() that would produce test failures on Cygwin (and probably elsewhere). [Yitzchak Scott-Thoennes]
- Fixed a test failure on Cygwin (and probably elsewhere) in t/compat.t, resulting from empty environment variables being set to the empty string (as opposed to simply being unset) by their mere presence in the "EXPORT:" list.
- Fixed a fatal error that occurred when the author specified 'dist_author' manually in their Build.PL script. [Spotted by Ron Savage]
- The 'provides' section of the META.yml file wasn't being built properly on Win32, because of a mismatch between URL-format and native-format pathnames. Fixed. [Reported by Robert Rothenberg]
- The progress message "lib/Foo.xs -> lib/Foo.c" was previously being output even when the Foo.c file wasn't being rebuilt. It's now fixed.
- Fixed a couple of places in Compat.pm where it could have forgotten which perl interpreter it had been run with ($^X isn't very trustworthy).
- On some systems, the way we updated the timestamp on the "lib/Foo.bs" file (one of the output files for XS-based modules) was failing. It's been replaced by a simple call to utime().
- Fixed a problem in t/compat.t that prevented it from being run individually using 'make test TEST_FILES=t/compat.t'. The problem was that a couple environment variables (TEST_FILES, MAKEFLAGS) were being passed through to subprocesses, and confused them.
- Fixed an important typo in the documentation for the 'install_base'
parameter ('libdoc' and 'bindoc' were switched). [Ray Zimmerman]- The pass-through Makefiles (type 'small' or 'passthrough') now support the TEST_FILES parameter to 'make test'.
- Fixed a fatal error that would occur on perl 5.005 when building HTML documentation, because its version of Pod::Html was old and didn't like some of the parameters we fed it. [Spotted by Blair Zajac]
- The final line of the generated pass-through Makefile was missing its trailing newline, which is now fixed. [Chip Salzenberg]
- We now depend on YAML version at least 0.35 and at most version 0.49, so that we don't pick up a new (and backward-incompatible) beta version from CPAN.
- Squashed a warning in t/basic.t about '"Foo::Module::VERSION" used only once', and one in PPMMaker about $^V being undefined. [Blair Zajac]
- Added a couple temporary output files from HTML documentation generation to the cleanup list. [Toby Ovod-Everett]
- The PodParser module will now only extract paragraphs in the 'AUTHOR' section of the pod if they contain an '@' character. This tends to do a better job, heuristically speaking, of returning relevant stuff.
- Added regression tests and a helper method ( add_build_elements() ) for adding new elements to the build process. Also some documentation.
- Wrote a recipe in the Cookbook for adding new elements to the build process, and a recipe for changing the order in which the steps in the build process will occur.
-Ken
