The Bricolage folks found a small bug caused by subtle differences in
MakeMaker's old implementation of the File::Spec methods and the current
one. The big difference being that things like catdir() and catfile() used
to return canonical paths (ie. they ran the result through canonpath()).
File::Spec doesn't.
# This is MakeMaker before the change-over to File::Spec.
$ perl5.6.1 -wle 'use ExtUtils::MakeMaker; use ExtUtils::MM_Unix; print
ExtUtils::MM_Unix->catfile("./Foo/Bar.pm")'
Foo/Bar.pm
$ perl5.6.1 -wle 'use File::Spec; print File::Spec->catfile("./Foo/Bar.pm")'
../Foo/Bar.pm
Since the MakeMaker code assumes the canonicalization will happen this
causes subtle problems like man pages with the name .::Foo::Bar.3pm.
Rather than try and go through the code and find all the places where it's
assuming canonicalization will happen, I think I'll just put File::Spec
wrappers back into MakeMaker and change all the File::Spec->foo calls to
$self->foo. Seems like a step backwards after all the work we did to change
over to File::Spec, but oh well.
I believe only catfile() and catdir() are effected by this. Dunno if I
should only wrap those two methods or wrap the whole File::Spec interface or
inherit from File::Spec and then override the two methods? I don't like
the idea of adding to MM's already overgrown inheritence tree.
--
Michael G. Schwern <[EMAIL PROTECTED]> http://www.pobox.com/~schwern/
Perl Quality Assurance <[EMAIL PROTECTED]> Kwalitee Is Job One
If your module passes test
You're one of the very best
Don't fuck up the MANIFEST
Burma-Shave
- ignatz