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