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

Reply via email to