Re: [Module-build-general] MakeMaker Is DOOMED!
Status: Beta
Brought to you by:
kwilliams
|
From: Brian I. <in...@tt...> - 2003-02-17 19:41:39
|
On 17/02/03 12:08 -0600, Ken Williams wrote:
>
> On Sunday, February 16, 2003, at 01:35 PM, Brian Ingerson wrote:
> > I went to the talk. It got me to thinking about CPAN::MakeMaker and its
> > relationship to Module::Build.
> >
> > Given:
> >
> > The goal of CP::MM is to allow authors to write very simple/clean
> > Makefile.PLs that can potentially "turn on" very powerful features
> > like "bundling" with the flick of a switch.
> >
> > The Makefile.PL produces a Makefile.
> >
> > Then:
> >
> > There is no reason why CP::MM can't produce a Makefile that wraps
> > Module::Build!
>
> I'm not sure that's ideal, because it still requires 'make' to
> orchestrate at least some of the process.
Not necessarily. It can create both the Makefile and the Build script,
and then cue the user what to do, especially on non-unix systems.
> One of the hairiest parts of
> Module::Build is the tiny little pass-through Makefile in
> Module::Build::Compat, because it has to work in all kinds of different
> environments. I've just made a bunch of changes that let it work on
> Windows, but there are still a bunch of things missing, like
> translating MM command-line options to M::B options
>
>
> > If the author has a version of Module::Build on there system that
> > is sufficient to handle the options that the author has requested
> > of CPAN::MakeMaker, then CP::MM will (optionally??) bundle M::B
> > into the author's dist. After that nobody is the wiser. Everything
> > just works.
>
> I wouldn't want lots of installation tools bundled into all my
> distributions, though. I still think it's far better to have a
> powerful system for listing dependencies in as fine-grained and
> accessible a manner as is necessary, and let the user choose their
> favorite policies and tools for fulfilling those dependencies.
It's a good experiment actually. Module::Build and Test::More are two
excellent modules that I will probably not use because of the "prereq
syndrome". I won't add prerequisites to a module unless it is crucial to
that module's behaviour. And while useful, M::B and T::M are not
crucial.
On the other hand, if I can just create a Makefile.PL like this:
use CPAN::MakeMaker;
WriteMakefile;
and have it do all the right things with no added prereqs, well
fantastic. If it adds a few kilos to my tarball I certainly won't sweat
it.
M::B modules minus the Pod doc is 12kb as a tar.gz.
---
And I won't have to worry about what versions of T::M and M::B support
my module's needs because "Hey, it worked on my system, it almost
certainly will work everywhere else, because it's the exact same
version."
If a later version of M::B or T::M is incompatible or broken, it will
have absolutely no effect on that module I wrote 10 years ago before I
left the Perl community altogether to pursue a fulltime career in Pizza
Delivery Management.
Cheers, Brian
|