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