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

Reply via email to