Andreas J. Koenig wrote:
> Hi John,
>
> last November we had a painful thread about the fact that
> Module::Build is completely unavailable for older bleadperls:
>
> http://www.nntp.perl.org/group/perl.module.build/2006/11/msg443.html
>
> I've since been hit more than once by this serious drawback. People
> ask me to do some binary searches for module X and whenever X uses
> Module::Build and the area of failure is before patch 25000 or so (do
> not know the exact number) I usually have to give up because MB cannot
> work with perl's version.pm and cannot use its own version.pm for the
> reasons you explained in the cited thread.
>
> I could imagine a perl-only version of version.pm would be able to
> resolve this given that I could enforce it to run on these bleadperls.
> Is this something you could imagine doing? What's the scope that would
> need to be dealt with? Any other ideas how this could be fixed or
> worked around?
MB recommends version 0.661 and does not require it. The problem is it
doesn't check for broken versions. Module::Build::Version has a _verify()
routine to check for valid version objects. It also has code to check if
version.pm loaded successfully and if not to fall back to a stub.
eval "use version $VERSION";
if ($@) { # can't locate version files, use our own
Maybe the solution is as simple as:
eval "use version $VERSION";
if ( $@ or !_verify( version->new($Some_Version) ) ) {
where $Some_Version is whatever version number version.pm is choking on. Then
it can spot that bad version of version and just not use it.
Also, what's _verify() doing sniffing around in the guts of version.pm objects
anyway?
sub _verify {
my ($self) = @_;
if ( ref($self)
&& eval { exists $self->{version} }
&& ref($self->{version}) eq 'ARRAY'
) {
return 1;
}
else {
return 0;
}
}
That seems wrong and will break in the future. If you want to verify you have
a working object, try out its functionality. Don't poke inside.
While I'm looking at it, META.yml recommends version 0.661 but it would seem
that Module::Build::Version won't accept anything less than 0.7203.
use vars qw($VERSION);
$VERSION = 0.7203;
eval "use version $VERSION";
if ($@) { # can't locate version files, use our own
I'd guess the recommended version has to be bumped up?