On Mon, Nov 25, 2002 at 10:56:07PM -0600, Craig A. Berry wrote:
> >Unless I hear protests otherwise, I'm going to copy them into
> >ExtUtils::MM_VMS and deprecate the versions in File::Spec::VMS.  I don't
> >think they're used outside of MakeMaker, I'm currently scanning CPAN to
> >check.
> 
> My memory, not necessarily complete or correct, is that nearly all of
> what is now File::Spec -- not just fixpath() and eliminate_macros()
> -- used to be part of MakeMaker.

Yep.

> As various bits of MM got broken
> off and put into File::Spec, fixpath() and eliminate_macros() moved
> with them because there were so many references to things like
> $self->fixpath() and the object inheritance got too complicated if
> you had MM invoking File::Spec invoking MM.

At this point, outside of eliminate_macros() and fixpath() themselves,
catfile() and catdir() are the only places using them.  So we may be able to
seperate them.


> What would be ideal is if the methods in File::Spec would only invoke
> these MM-only methods if they had been called from MM.

That's easy, stick:

   return $path unless $self->isa('ExtUtils::MakeMaker');

in fixpath() and eliminate_macros().  Though that's < ideal.

What would be ideal is if we could have MM override catdir() and catfile()
and perform the fixpath/eliminate_macro mumbo jumbo on the input/output of
File::Spec's methods rather than doing it inside File::Spec.

Lemme make sure I understand why fixpath() and eliminate_macros() are
necessary.  eliminate_macros() takes something like this:

            $self->{PREFIX} = '[this.that]';
            $self->{FOO}    = '[foo.bar]';

            print $self->eliminate_macros('$(PREFIX)$(FOO)');

and makes it come out like '/this/that/foo/bar'?  This is necessary because
a lot of the work normally done by shell commands from the Makefile on Unix
(and thus macros are expanded) is done inside MM_VMS?

And fixpath()... I don't really get how fixpath() is different from
eliminate_macros().


> If this hasn't completely confused you, you
> are probably uniquely qualified to fix this mess ;-).

This is nothing.  You should look at the MakeMaker linker code. *shudder*


-- 

Michael G. Schwern   <[EMAIL PROTECTED]>    http://www.pobox.com/~schwern/
Perl Quality Assurance      <[EMAIL PROTECTED]>         Kwalitee Is Job One
Shrtr is btr.
        -- Abhijit Menon-Sen in <[EMAIL PROTECTED]>

Reply via email to