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

Changes for version 0.18_03

  • Added support for the 'install_path' parameter, which allows custom specification of where things should be installed. This is a major improvement to Module::Build's functionality.
  • Command-line arguments may now either be specified using the syntax '--foo foovalue' as well as the traditional syntax 'foo=foovalue'. The former is often more convenient for shell tab-completion when the value is a filename (as in 'Build test --test_files t/basic.t').
  • Command-line arguments may now include non-named parameters, which make some actions more natural. For instance, the 'diff' action may now be invoked as 'Build diff -u' rather than as 'Build diff flags=-u'.
  • Pass-through Makefile.PLs now convert unknown Makefile.PL parameters to lower-case and hand them to Build.PL, rather than ignoring them. This means we only have to account for the differences in the interface, not the entire interface, in translating parameters.
  • We now issue a warning & don't proceed if asked to make a distdir and there's no MANIFEST or it's empty.
  • We now install scripts by default to $Config{installsitebin} instead of $Config{installscript}. Neither is a great choice, but the former is likely to be [analogous to] /usr/local/bin, and the latter is likely to be [something like] /usr/bin . If/when there's a $Config{installsitescript}, we'll start using that automatically.
  • Moved INSTALL to INSTALL.txt to increase compatibility with various odd versions of 'make' during 'make install' on case-insensitive filesystems (like nmake on Win32, often). Only affects the Makefile compatibility layer. [reported by Andrew Savage]
  • Module::Build->known_actions() now works as a class method.
  • We now use the correct perl interpreter (via Module::Build->find_perl_interpreter) in pass-through makefiles.
  • Pass-through makefiles now list each action individually rather than using a ".DEFAULT" catch-all. This improves compatibility with 'nmake' on Win32, and probably some other less common 'make' dialects. [Andrew Savage]
  • We're now more aggressive about testing the pass-through makefiles, e.g. making sure they can run 'all' and 'test' targets, and making sure the Makefile itself actually exists.

Changes for version 0.18_02 - 2003-06-01

  • Fixed a problem with check_installed_status() when installed version contains non-numeric characters like underscores.
  • Fixed a problem with a bareword 'File::Spec' in one of the test scripts that caused it not to compile under 5.8.0 (but is fine under 5.6).
  • Fixed a problem with the 'destdir' installation parameter on platforms that have volume identifiers in path names (like "C:" on Win32). The identifier is now stripped from installation directories before prepending the destdir path. The destdir path may still have a volume identifier on it.
  • The t/compat.t test now uses $Config{make} instead of just 'make' to test makefile compatibility. This fixes some failures on Win32. We also skip this test entirely if no make utility is available.

Changes for version 0.18_01 - 2003-05-22

  • Alternative distribution layouts are now supported via the 'pm_files', 'pod_files', 'xs_files', 'PL_files', and 'script_files' parameters to new(). This should help people transition from MakeMaker, and might even help us write an automatic transition tool.
  • Added tests to t/runthrough.t that check to see installation is happening correctly.
  • Added an 'add_to_cleanup' parameter to new() that calls add_to_cleanup() immediately for the given files.
  • Added experimental code to build a .ppd file, in support of ActiveState's "Perl Package Manager". [original patch by Dave Rolsky]
  • For authors who use Module::Signature to sign their distributions, we now create the SIGNATURE file right in the distribution directory, rather than creating it in the top-level directory and copying it into place. This solves problems related to having files get out of date with respect to their signatures.
  • The distribution directory (e.g. Sample-Module-0.13/ ) will now be deleted during the 'clean' or 'realclean' actions.
  • During testing of modules, blib/lib and blib/arch are now added as absolute paths, not relative. This helps tests that load the modules at runtime and may change the current working directory (like Module::Build itself does during testing).
  • The $Config{cc} entry on some people's systems is something like 'ccache gcc', so we now split that string using split_like_shell().
    • Richard Clamp
  • Added documentation for 'extra_linker_flags' parameter, and added a corresponding 'extra_compiler_flags' parameter. [original patch by Richard Clamp]
  • The pass-through Makefile created by Module::Build::Compat now supports MakeMaker options like POLLUTE=1 and INC. We also just warn & skip when we see any unknown MM parameters, rather than dying. [Dave Rolsky]
  • Fixed an error about how @INC and $ENV{PERL5LIB} interact during the testing of M::B itself. [jk <billy2000@fastmail.fm>]
  • The pass-through Makefile doesn't include 'recommended' M::B dependencies in the Makefile anymore, since they're not strictly necessary. In particular, this makes installing M::B itself easier.
  • A new 'create_makefile_pl' parameter lets you use Module::Build::Compat during the 'distdir' (or 'dist') action to automatically create a Makefile.PL for compatibility with ExtUtils::MakeMaker. The parameter's value should be one of the styles named in the Module::Build::Compat documentation.
  • When compiling C code, we now respect 'pollute' and 'inc' parameters. (XXX - needs docs) [Dave Rolsky]
  • Made the creation of the "install map" more generic. (XXX - needs documentation)
  • Fixed a problem in which add_to_cleanup() didn't note cleanup files unless create_build_script() had been called already. [Dave Rolsky]
  • During 'Build dist', we no longer have to load each .pm file (via Module::Info) to determine the $VERSION numbers inside. Instead, we call our internal version_from_file() method, which is the same thing MakeMaker and PAUSE and search.cpan.org do. Also fixes a failure when Module::Info is installed in a nonstandard directory.
    • reported by Teun Burgers
  • Fixed some failing test code on Windows - open files can't be deleted. [Andrew Savage]
  • The Cygwin platform is now treated as a flavor of Unix rather than a flavor of Windows. [chocolateboy]
  • We're now more aggressive about adding temporary C compilation files (*.c, *.bs) to the cleanup list. [Dave Rolsky]
  • When constructing the list in META.yml of packages provided by this distribution, we now use the same rules as the PAUSE scanner does when a single .pm file contains multiple VERSIONs. [Andreas Koenig]
  • check_installed_status() now works as both a class method and an object method (and is documented so). [Spotted by Dave Rolsky]

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 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