I think I'm coming into this discussion late. =( What do you mean by "doesn't bootstrap"? M::B does indeed use itself to install itself, so you must have something else in mind. Could you elaborate briefly to bring me up to date on this discussion?

Sure thing.

Module::Build is not (yet) a core module.

Thus, any CPAN distribution (other than MB itself with your extra magic of course) that has ONLY got a Build.PL has an undeclared non-core dependency, which will cause Build.PL to crash with an error.

CPAN.pm in particular, the CPAN client we ship in the core, does not install Module::Build either, even when upgraded to the current version.

So as a result, any MB-using dist cannot be installed on any current production Perl. Installation requires an undocumented (to the installer) undeclared non-core module MB to be hand-installed because any of these dists will work.

This is what I mean by bootstrapping.

The reason this is so bad is because of the most common failure modules.

This is typically someone installing something like RT, which recurses downwards two or three times, hits the MB error 500 lines into the output, continues to install whatever else it can find recursing upwards, until it gets to the end.

The error message "failed to load Module::Build" from which the user is supposed to realise they need to manually install Module::Build (or install directly via CPAN.pm) is buried somewhere 500 lines into a 1000 line long output.

This is effectively impenetrable to anyone that isn't an author (and doesn't have this problem anyway).

This is the problem that I'd like to see fixed.

And while I'm trying very hard (I hope mostly successfully) to not say anything about MB's other properties (good or bad) other than this installation problem, let me add that just because some authors might like some feature of MB it doesn't mitigate the problem of (anything using) it not bootstrapping properly.

Adam K



At the very least the Makefile.pl could create a tiny makefile that
then runs Build.pl and Build as needed. If someone can explain why
this is impossible, then id like to hear it.

We already do that, using the 'passthrough' or 'small' options for auto-creating a Makefile.PL. See the docs for Module::Build::Compat.

Module::Build itself also ships with such a Makefile.PL so that automated tools like CPAN(PLUS) can install it.

 -Ken

Reply via email to