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

Reply via email to