NAME Module::Build - Perl extension for blah blah blah SYNOPSIS perl Build.PL ./Build # this script created by 'perl Build.PL' ./Build test ./Build install Other actions: ./Build clean ./Build realclean DESCRIPTION This is a very alpha version of a new module set I've been working on, `Module::Build'. It is meant to be a replacement for `ExtUtils::MakeMaker'. To install `Module::Build', and any other module that uses `Module::Build' for its installation process, do the following: perl Build.PL ./Build ./Build test ./Build install Other actions so far are: ./Build clean ./Build realclean ./Build fakeinstall ./Build dist It's very much like the `MakeMaker' metaphor, except that `Build' is a Perl script, not a Makefile. State is stored in a directory called `_build/'. Any customization can be done simply by subclassing `Module::Build' and adding a method called (for example) `ACTION_test', overriding the default action. You could also add a method called `ACTION_whatever', and then you could perform the action `./Build whatever'. More actions will certainly be added to the core - it should be easy to do everything that the MakeMaker process can do. It's going to take some time, though. In the meantime, I may implement some pass-through functionality so that unknown actions are passed to MakeMaker. MOTIVATIONS There are several reasons I wanted to start over, and not just fix what I didn't like about MakeMaker: * I don't like the core idea of MakeMaker, namely that `make' should be involved in the build process, for these reasons: + When a person is installing a Perl module, what can you assume about their environment? Can you assume they have `make'? No, but you can assume they have some version of Perl. + When a person is writing a Perl module for intended distribution, can you assume that they know how to build a Makefile, so they can customize their build process? No, but you can assume they know Perl, and could customize that way. For years, these things have been a barrier to people getting the build/install process to do what they want. * There are several architectural decisions in MakeMaker that make it very difficult to customize its behavior. For instance, when using MakeMaker you do `use MakeMaker', but the object created in `WriteMakefile()' is actually blessed into a package name that's created on the fly, so you can't simply subclass `ExtUtils::MakeMaker'. There is a workaround `MY' package that lets you override certain MakeMaker methods, but only certain explicitly predefined (by MakeMaker) methods can be overridden. Also, the method of customization is very crude: you have to modify a string containing the Makefile text for the particular target. * It is risky to make major changes to MakeMaker, since it does so many things, is so important, and generally works. `Module::Build' is an entirely seperate package so that I can work on it all I want, without worrying about backward compatibility. * Finally, Perl is said to be a language for system administration. Could it really be the case that Perl isn't up to the task of building and installing software? Absolutely not - see the `Cons' package for one example, at the section on "/www.dsmit.com/cons/" in the http: manpage . Please contact me if you have any questions or ideas. AUTHOR Ken Williams, ken@forum.swarthmore.edu SEE ALSO perl(1), ExtUtils::MakeMaker(3) http://www.dsmit.com/cons/