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.