David Golden wrote:
> * perl 5.8.9: Build.PL fails (needs version.pm 0.74 but have version 0)
> * perl 5.8.9 + version.pm: Build.PL fails (needs version.pm 0.74 but
> have version 0)
> * perl 5.10.0: Build.PL fails (needs version.pm 0.74 but have version 0)
> * perl 5.10.0 + version.pm: Build.PL fails (needs version.pm 0.74 but
> have version 0)
> 
> I hope that helps in diagnosing the problem.

Yeah, that was actually a red herring.  Here's the fix:

=== lib/Module/Build/Version.pm
==================================================================
--- lib/Module/Build/Version.pm (revision 2630)
+++ lib/Module/Build/Version.pm (local)
@@ -48,7 +48,7 @@

 use vars qw(@ISA $VERSION $CLASS *declare *qv);

-$VERSION = 0;
+$VERSION = 0.77;

 $CLASS = 'version';

@@ -122,6 +122,7 @@
 use locale;
 use vars qw ($VERSION @ISA @REGEXS);
 $VERSION = '0.77';
+$VERSION = eval $VERSION;

 push @REGEXS, qr/
        ^v?     # optional leading 'v'


And here's the explanation:

1) The first block alters the inline version.pm code to include the actual
$VERSION for version.pm, instead of the dummy 0 that was there before.  The
reason this is necessary is this:

> package Module::Build::Version;
> use strict;
> 
> use vars qw($VERSION);
> $VERSION = 0.77;
> 
> eval "use version $VERSION";

Module::Build always tries to load the version.pm that matches its internal
code, which in the case of all of your installs meant 0.76.  So it loads the
code from __DATA__, which has an explicit $VERSION = 0 line, which fails.  I
only tested DBIx::Tree::MaterializedPath, but the other two should be resolved
in the same fashion.

2) The second block is to fix this version.pm ticket:

        https://rt.cpan.org/Ticket/Display.html?id=41732

which I mistakenly left out (but spotted while looking at this).  It didn't show
up in test version.pm because 0.76_03 being an alpha release, I already had the
eval line...

John

Reply via email to