Yitzchak Scott-Thoennes wrote:
On Wed, Jan 26, 2005 at 02:00:57PM -0600, Ken Williams wrote:
On Jan 25, 2005, at 3:26 PM, John Peacock wrote:
Jos I. Boumans wrote:
I suppose if Module::Build::Base would say, at the top:
$VERSION = $Module::Build::VERSION
this would make EU::MM, M::IV, M::L::C and of course CPANPLUS::inc find a 'real' version declaration, rather than something evil that will blow away UNIVERSAL::VERSION.

Yes, that would be an appropriate fix to M::B::Base.

That won't work. All those tools evaluate the version line in isolation, not by loading the modules and checking the value of $VERSION. In other words, when Module::Build::Base's version is checked, Module::Build won't be loaded, so the version would be undef.

$VERSION = do { require Module::Build; $Module::Build::VERSION };
IIRC, I've read some bit of docs that says that PAUSE (or possibly search.cpan.org) not only runs only that line of code, but runs it inside a Safe compartment, and possibly uses some other tricks, the exact nature of which is undocumented. It won't neccessarly be allowed to require anything, and if it is, Module::Build might not actually be there. Of course, it might not be a problem if PAUSE doesn't correctly see the version of Module::Build::Base, but all in all, it's probably best that there just be an ordinary scalar assignment there. (Possibly put there by automated means.)

-=- James Mastros

Reply via email to