Eric Wilhelm wrote:
# from Sébastien Aperghis-Tramoni
# on Tuesday 17 April 2007 05:12 pm:

If you really want Module::Build to be installed, why not simply create a traditional Makefile.PL and add Module::Build as a prerequisite? That way your module can be installed with ExtUtils::MakeMaker yet Module::Build also gets installed for the next time.

That assumes the module *can* be built/installed with EU::MM (without extra shenanigans.) If you have a custom build class, this is often not the case.

I've been saying this for a long long time, and I really do hate to beat a dead horse, but I'm not sure I've explained the problem here before, so I'll say it just the once and never mention it again.

I'm afraid as far as the use of Module::Build goes, and in particular the more advanced features, it's a case of making your bed and lying in it.

Module::Build's main attitude has always been to make things easier for authors at the expense of users, in part by implementing things that the rest of the tool-chain simply doesn't support.

In particular, since dependency resolution is necessarily a "turing-complete" process, anything configure-time circular dependencies means that those modules can't be made backwards compatible to default installations of old (or even the current 5.8.8) Perl.

Module::Build simply doesn't bootstrap. It's as simple as that.

All the makefile conversion, and wrappers, and pass-throughs, are all kludges that only work in the set of cases where you keep your use of features simple and straight forward.

Unfortunately, now that more than 10% of CPAN (possibly closer to 15-20% these days) is using Module::Builder, we have no choice but to try and alter the REST of the toolchain to try and compensate for the problem.

Now, it turns out that the configure_requires META.yml addition that resolves this problem for Module::Build ALSO resolves a number of other problems that have plagued the toolchain for years, so to some extent Module::Build has provoked us into fixing some things that were a problem anyway, but that we had either avoided or weren't hurting enough.

This fixes the Module::Build case for new installations, and anyone that upgrades their CPAN client.

This STILL doesn't fix the problem with current or old default Perl installations without upgraded CPAN clients, but then you REALLY can't fix a circular dependency that only occurs due to events that occured in the past.

So Module::Build is going to continue to be plagued by these problems, but at least now you can tell people "You should update CPAN first" and there's a quick and easy solution.

I understand that you've already moved over to the other list, so consider this more a historical note for people on this list, rather than a beef at you personally.

Adam K

Reply via email to