On Sat, Oct 02, 2010 at 04:01:15PM -0500, Craig A. Berry wrote: > > On Oct 1, 2010, at 10:37 AM, Nicholas Clark wrote: > > >I don't have access to a VMS system. > > > >I'd like to rearrange some of the build system for core perl, but I > >don't want > >to break VMS in the process. > > I'm guessing you want to take the pod2xxx.PL utility generators out of > pod/ and put them under cpan/ with the modules they belong to?
Yes. It will make 1: dual life module maintenance easier 2: the various top level makefiles simpler 3: allow an optimisation of XSLoader that would currently be rather tricky > >Would someone be able to test install 3 Pod related modules on VMS: > > None of them will even build on VMS, details below. In two cases they > seem unaware that the command-line utility being built will have > a .com extension, and in the other case (Pod::Parser) it knows it > wants podselect.com but doesn't know how to generate it. > > Pod::Parser seemed closest to workable so I fiddled with it a bit. I > got it to build by this tweak to Makefile.PL: > > $ gdiff -pu "Makefile.PL;-0" "Makefile.PL" > --- Makefile.PL;-0 2009-02-05 09:26:23 -0600 > +++ Makefile.PL 2010-10-02 15:31:32 -0500 > @@ -38,13 +38,8 @@ $DISTMOD = 'Pod::Parser'; ## The "tit > pod2usage > ); > sub script($) { File::Spec->catfile ('scripts', @_) } > -my @EXE_FILES = (); > -if ( $^O eq 'VMS' ) { > - @EXE_FILES = map { script "$_.com" } @SCRIPTS; > -} > -else { > - @EXE_FILES = map { script $_ } @SCRIPTS; > -} > +my $script_ext = $^O eq 'VMS' ? '.com' : ''; > +my @EXE_FILES = map { script "$_$script_ext" } @SCRIPTS; > > ## The test-script to execute regression tests (note that the > ## 'xtra' directory might not exist for some installations) > @@ -75,7 +70,7 @@ WriteMakefile( > DISTNAME => $DISTNAME, > VERSION => '1.38', > INSTALLDIRS => ($] >= 5.006 ? 'perl' : 'site'), > - PL_FILES => { map { (script("$_.PL") => script($_)) } > @SCRIPTS }, > + PL_FILES => { map { (script("$_.PL") => script("$_ > $script_ext")) } @SCRIPTS }, > EXE_FILES => [ @EXE_FILES ], > dist => { COMPRESS => 'gzip', SUFFIX => 'gz' }, > clean => { FILES => "@EXE_FILES" }, > [end] Thanks. That's useful to know. I think it might be simplest to teach make_ext.pl how to do the above. > but installing did not do anything with any of the generated .com > files. This could be MakeMaker's fault; I don't think I've ever built > a module that installed a standalone program outside the core, so that > capability may never have been tested (or may have gotten broken). > Aha. This isn't actually a problem, as core perl install is done by installperl, using utils.lst to find things. I believe that all I need to do is change the pathnames in there. > >Specifically, I believe that the perl core currently installs to the > >same > >location as the perl binary, 6 perl scripts suitably wrapped for > >VMS, as > > > > pod2latex.com > > pod2man.com > > pod2text.com > > pod2usage.com > > podchecker.com > > podselect.com > > The current core build installs them to perl_root:[utils] . Aha right. Thanks for digging into this, and supplying a corrected Makefile.PL I hope that this means that I can get something pretty much correct first time. Nicholas Clark