Subject: | doesn't seem to deal with objects in @INC |
Environment:
Module::Install 0.64
perl 5.8.8
linux
Symptoms:
$ perl Makefile.PL
include /user/e/erskinet/src/MyLibrary/inc/Module/Install.pm
Operation "eq": no method found,
left argument in overloaded package MSDW::Version::Handler::Readdir,
right argument has no overloaded magic at
//ms/dist/perl5/PROJ/Module-Install/0.64/lib/perl5/Module/Install/Admin.pm
line 121.
BEGIN failed--compilation aborted at Makefile.PL line 7.
The problem appears to be caused by our local installation using objects
in @INC (which is documented, in case you've not encountered it before).
I hacked a local copy of the init method to change:
unshift @INC, $self->{prefix}
unless grep { $_ eq $self->{prefix} } @INC;
to
unshift @INC, $self->{prefix};
which helped. Now I get:
$ perl Makefile.PL
include /user/e/erskinet/src/MyLibrary/inc/Module/Install.pm
Operation "eq": no method found,
left argument in overloaded package MSDW::Version::Handler::Readdir,
right argument has no overloaded magic at
//ms/dist/perl5/PROJ/Module-Install/0.64/lib/perl5/Module/Install/Admin.pm
line 170.
BEGIN failed--compilation aborted at Makefile.PL line 13.
This problem occurs in load_all_extensions. I changed:
next if $inc eq $self->{prefix} or ref($inc);
to look like:
next if ref($inc) or $inc eq $self->{prefix};
and got by that.
However, now I've got to deal with the problem that Module::Install has
copied unpatched versions of these into my application.
I won't say that it's unimportant, but it's not likely to bother many
people.