On Thu, Jan 26, 2006 at 11:45:12AM -0600, Craig A. Berry wrote:
> At 1:46 AM -0800 1/26/06, Yitzchak Scott-Thoennes wrote:
> >Just a few comments to start with.  Have you had a chance to look
> >at any of this?
> 
> Started to debug it but haven't gotten very far.
> 
> > >
> > > $ perl harness [-.lib.Module.Build.t]*.t
> >> d0:[craig.perl.lib.module.build.t]basic...........ok 7/55
> >>                                                          Can't cd to 
> >> D0:[CRAIG.perl.t._tmp.Simple]: no such file or directory
> >
> >Is there something wrong with that path name?  The different case for
> >D0 and CRAIG?  The _ in _tmp?  Most of the tests use lib/DistGen.pm to
> >generate directories of test files and cd into them to run their
> >tests.  If that's not working, that's the first thing to try to fix.
> 
> The pathname is ok.  The test can't find it because it really doesn't
> exist because it got deleted by DistGen->clean(), which doesn't
> recognize it as one of the directories in its cache of directory
> names.  The basic issues revolve around VMS filespec idiosyncracies.
> For example, we'll have to call splitpath before splitdir if we want
> the device name to be separated from the first directory name:
> 
> $ perl -e "use File::Spec; print join('|', 
> File::Spec->splitdir('DEV:[foo.bar]'));"
> DEV:[foo|bar
> $ perl -e "use File::Spec; print join('|', 
> File::Spec->splitpath('DEV:[foo.bar]'));"
> DEV:|[foo.bar]|
> 
> 
> > > # Looks like you planned 55 tests but only ran 13.
> >> d0:[craig.perl.lib.module.build.t]basic...........dubious
> >>         Test returned status 44 (wstat 1024, 0x400)
> >>                 (VMS status is 44)
> >> DIED. FAILED tests 14-55
> >>         Failed 42/55 tests, 23.64% okay (less 1 skipped test: 12 okay, 
> >> 21.82%)
> >> d0:[craig.perl.lib.module.build.t]compat..........skipped
> >>         all skipped: Don't know how to invoke 'make'
> >
> >compat.t tests that the different flavors of compatibility
> >Makefile.PLs work with the "perl Makefile.PL; make" approach.
> >Does VMS have $Config{make} set to something suitable?  If so,
> >perhaps the find_in_path($Config{make}) check is making this
> >whole test skipped when it shouldn't be?
> 
> We've got it in %Config:
> 
> $ perl -"V:make"
> make='MMK';
> 
> I think the problem is likely in the find_in_path() call here:
> 
> if ( $Config{make} && find_in_path($Config{make}) ) {
>     plan tests => 30 + @makefile_types*$tests_per_type;
> } else {
>     plan skip_all => "Don't know how to invoke 'make'";
> }
> 
> On VMS, searching the path is the least common mechanism for locating
> the program that will execute a command.  I think instead of
> find_in_path() we'll have to abstract this into a make_is_installed()
> or something that can do different things when necessary.
> 
> > > Can't locate object method "eliminate_macros" via package "Module::Build" 
> > > at /D0/CRAIG/PERL/lib/Module/Build/Platform/VMS.pm line 85
> >
> >Hmm, looks like some code mistranslated from what makemaker did.
> >And it looks like there's some kind of incestuous relationship
> >between File::Spec and makemaker wrt eliminate_macros.  Yuck.
> 
> IIRC, MM has its own copy in order to run on older Perls that don't
> have it in File::Spec.  We either need to duplicate the incest in MB
> or figure out whether the minimum Perl version that has it in
> File::Spec is an acceptable prerequisite for the use of MB on VMS.

It looked to me to involve more than just the eliminate_macros
function itself; it looks as if it calls $self-> methods that
aren't actually in File::Spec, expecting to be working with a
MM subclass of File::Spec?  I didn't look at it all that long,
though.

Reply via email to