Johan Vromans wrote:
Is there somewhere a good document that describes why we have
Module::Install and Module::Build alongsize ExtUtils::MakeMaker, and
which one to choose?
Apart from things liker 'newer', 'better' and 'faster', the only
difference I see is that M::B does not require external tools (like
'make') and therefore is usable on systems that do not have a
compile/make suite.
From ExtUtils::MakeMaker::FAQ
http://search.cpan.org/perldoc/ExtUtils::MakeMaker::FAQ
----------------------
What is Module::Build and how does it relate to MakeMaker?
Module::Build is a project by Ken Williams to supplant MakeMaker. Its
primary advantages are:
* pure perl. no make, no shell commands
* easier to customize
* cleaner internals
* less cruft
Module::Build is the official heir apparent to MakeMaker and we encourage
people to work on M::B rather than spending time adding features to MakeMaker.
----------------------
Module::Build's primary advantages to the author are that it does not require
an external utility, it is *much* easier to extend, it has more features and
will continue to add them.
Module::Build's primary advantages to the user are that it doesn't require
make and authors won't be tempted to write their own likely unportable
make/shell code.
I cannot emphasize the ease of extension enough compared to MakeMaker.
Consider the simple request of wanting to add a step to the build process.
It's almost impossible to get right with MakeMaker, you need to override the
right (undocumented) method which generates the right (undocumented) target
and do a s/// on the make text to put in your new target. Then you output
make code to generate your new target... maybe it's portable, but it probably
isn't.
With Module::Build you just override the appropriate ACTION method.
sub ACTION_code {
my $self = shift;
...do your new thing...
$self->SUPER::ACTION_code(@_);
}
You may also be interested in looking at "MakeMaker is DOOMED!" in which I
show that MakeMaker is nearly impossible to both maintain and improve, thus we
need to move away from it.
http://schwern.org/~schwern/talks/MakeMaker_Is_DOOMED/slides/slide001.html
That is why I would not recommend Module::Install. Its new interface sits on
top of MakeMaker and thus contains all its underlying flaws. Worse, it is a
customization of MakeMaker. There is no safe way to customize MakeMaker.
Module::Install will eventually fail.
Because Module::Install ships copies of itself in each distribution this will
cause a widespread CPAN cascade failure. Individual users will not be able to
fix this by just upgrading their installed copy of Module::Install. Each
author has to rebuild and release their distribution to fix it. This will
take months.
--
101. I am not allowed to mount a bayonet on a crew-served weapon.
-- The 213 Things Skippy Is No Longer Allowed To Do In The U.S. Army
http://skippyslist.com/list/