[Module::Build] Re: Module::Build status on VMS
Status: Beta
Brought to you by:
kwilliams
|
From: Yitzchak Scott-T. <sth...@ef...> - 2006-01-26 19:06:57
|
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.
|