Some answers:

[some text edited]

> So, general questions
> 
> 1: Is there any easy way to get an scp2 client for Unix, so that I can scp
>   to them? (And use editors remotely)

SCP clients definitely work to VMS systems as I use them extensively.  It has 
been awhile since I set up a TCPIP Services system (I use Multinet myself) but, 
if you have any error messages or log files, especially from the VMS side, I 
may be able to help.

> 2: Does rsync exist for VMS?
> 3: Does ccache exist for VMS?
> 4: What is the ls command, and how do I escape from it when I run it
>   accidentally?

LS is short for LSE, the language-sensitive editor on VMS.  Simply press ^Z if 
you get into accidentally to exit it.

> 5: What's the DCL equivalent of rm -rf? Is it really a Perl 1-liner with
>   File::Path::remove_tree()?

That depends on what version of VMS you are running.  If it V8.4 or later, $ 
DELETE/TREE [.DIRNAME…]*.*;*
If it is an earlier version (or also V8.4), $ DFU DELETE/DIR/TREE DIRNAME.DIR
If DFU is not installed on the system, you may need that perl one-liner.

Note that DELETE/TREE does not delete the top-level directory name but DFU does.

> 6: How do I deal with filenames with ^. (etc) in them from DCL? Without
>   resorting to bash? Is it really the only option to rename directory names
>   to remove the .s?

I don't follow this question.  For the first part:

Issue the command $ SET PROCESS/PARSE_STYLE=EXTENDED to be able to use 
filenames with ^ in them.  I recommend putting this command in your LOGIN.COM 
file (let me know if this needs further explaining).

If the filename in question is a directory reference you must type the filename 
as is, including the ^ characters, e.g. [.perl-5^.14^.2]
If the filename is a regular file, you can type it in with or without the ^ 
characters, e.g. file^.c.orig or file.c.orig.

I don't know what the .s refers to.  Can you provide an example?

> 
> This might need more knowledge of the machine than the above -v and -V
> reveal
> 
> 7: How do I actually use the libraries of that installed perl 5.8.6?

The directory tree where perl is installed will be pointed to by the logical 
name PERL_ROOT.  Try $ DIR PERL_ROOT:[LIB] as a starter.
The perl sharable image that one must link to will be pointed to by the logical 
name PERLSHR.  Simply use the name PERLSHR in any link procedure to link to 
that library.

These logical names may be redefined in your process to point to a completely 
different version of perl, if desired.

Example:

The following logical names are defined in the system-wide logical name table:
  "PERLSHR" = "PERL_ROOT:[000000]PERLSHR.EXE"
  "PERL_ROOT" = "$99$LDA9:[APERL-5_12_1.]"

The following logical name in my process logical name table
  "PERL_ROOT" = "$99$LDA9:[APERL-5_14_2.]"

This lets me work on getting all the extensions I use built for 5.14.2 while 
the rest of the system uses the existing 5.12.1.

> 
> Actual build problems:
> 
> 8: The Alpha machine fails the build because the target is converted to
>   uppercase. How come no-one else has this problem?
> 
> ptac$dka0:[nclark.a.perl5160-rc2]miniperl.exe;2 "-I../../lib" "Makefile.PL" 
> "INS
> T_LIB=[--.lib]" "INST_ARCHLIB=[--.lib]" "PERL_CORE=1"
> Writing Descrip.MMS for Pod::Simple
> 
> 
> %MMS-F-BADTARG, Specified target (CONFIG) does not exist in the description 
> file
> .
> %MMS-F-BADTARG, Specified target (CONFIG) does not exist in the description 
> file
> .
> 
> 
> MMS config /DESCRIPTION=descrip.mms /MACRO=("PERL_CORE=1") failed, continuing 
> a
> nyway...
> Making all in cpan/Pod-Simple
> MMS all /DESCRIPTION=descrip.mms /MACRO=("PERL_CORE=1")
> %MMS-F-BADTARG, Specified target (ALL) does not exist in the description file.
> %MMS-F-BADTARG, Specified target (ALL) does not exist in the description file.
> 
> 
> Unsuccessful make(cpan/Pod-Simple): code=1024 at make_ext.pl line 466.
> %MMS-F-NOMSG, Message number 00EE826C
> %MMS-F-ABORT, For target nonxsext, CLI returned abort status: %X00EE826C.
> -MMS-F-BADTARG, Specified target (!AS) does not exist in the description file.
> 
> 
> MMS says:
> 
> $ mms/ident
> %MMS-I-IDENT, MMS V3.8 © Copyright 2007 Hewlett-Packard Development Company, 
> L.P
> .
> 
> I think I can see how to fix it in make_ext.pl by using "" quotes, but what
> else will it break? And how come no-one else has this problem.
> 
> 
> 9: The IA64 machine *initially* fails like this:
> 
> MCR PTAC$DKA0:[NCLARK.I.perl5160-RC2]miniperl.exe "-I[--.lib]" "-I[--.lib]" 
> "-ME
> xtUtils::Command" -e "cp" "--" DYNALOADER.OPT 
> [--.LIB.AUTO.DYNALOADER]DYNALOADER
> .OPT
> %MMS-F-GWKNOACTS, Actions to update DL_VMS.C are unknown.
> %MMS-F-GWKNOACTS, Actions to update DL_VMS.C are unknown.
> 
> 
> I think I know why no-one else sees this - relates to Q10 as to why it's
> hidden.. The generated descrip.mms is wrong, and presumably has been for
> ages. DLSRC should be dl_vms.xs, not dl_vms.c. For example, on HP-UX:
> 
> $ grep DLSRC ext/DynaLoader/Makefile
> DLSRC = dl_hpux.xs
> DynaLoader.xs: $(DLSRC)
> 
> So, I think that that should change. If I work round it like this:
> 
> $ set default [.ext.DynaLoader]
> $ MMS all /MACRO=("DLSRC=dl_vms.xs")
> $ set default [--]
> 
> and restart the make, it then fails like this:
> 
> MCR PTAC$DKA0:[NCLARK.I.PERL5160-RC2]miniperl.exe "-I[--.lib]" "-I[--.lib]" 
> "-ME
> xtUtils::Command" -e "cp" "--" CWD.OPT [--.LIB.AUTO.CWD]CWD.OPT
> %MMS-F-GWKNOACTS, Actions to update CWD.C are unknown.
> %MMS-F-GWKNOACTS, Actions to update CWD.C are unknown.
> 
> 
> Unsuccessful make(dist/Cwd): code=1024 at make_ext.pl line 466.
> 
> Different mms:
> 
> $ mms/ident
> %MMS-I-IDENT, MMS V3.8-2 © Copyright 2007 Hewlett-Packard Development 
> Company, L
> .P.
> 
> 10: How come I'm seeing errors due to case sensitive treatment of .xs.c
>    suffix rules? How come no-one else hits this?
> 
> (I unpacked the tarball with vmstar. It has created mixed case names:
> 
> $ dir [.dist.cwd]
> 
> Directory PTAC$DKA0:[NCLARK.I.perl5160-RC2.dist.Cwd]
> 
> BLIB.DIR;1          CWD.OPT;1           Cwd.pm;1            Cwd.xs;1          
>  
> Descrip.MMS;1       lib.DIR;1           MAKEFILE.PL;1       PM_TO_BLIB.TS;1   
>  
> ppport.h;1          t.DIR;1             
> 
> Total of 10 files.
> 



Issue the command $ SHOW PROC/PARSE and make sure the parse style is set to 
extended.  If not, issue the SET PROCESS command shown above to set it to 
extended.

Both of these systems have older versions of MMS.  The current version is 3.9.  
MMS will NOT work if any part of the filename has a ^ in it.  This is because 
MMS still has a rule in it, that dates back to the VAX/VMS days, that a ^ in a 
source file means "consult VAX/CDD for this record".  This is not a real 
problem for filenames since the filename can be placed in the MMS file without 
any ^ characters in it but is a problem for directory names. Directory names 
must retain the ^ character ([.perl-5^.14^.2]README.vms = 
./perl-5.14.2/README.vms but [.perl-5.14.2]README.vms = 
./perl-5/14/2/README.vms) so if this appears anywhere in the MMS file, it will 
error out trying to invoke VAX/CDD.  This only place I have found this to be a 
problem is in the top-level directory name after unpacking perl. I usually do a 
$ RENAME PERL-5^.14^.2.DIR PERL-5_14_2 (or whatever version you are working 
with) to resolve this.

MMS has another problem as well if you make use of object libraries.  The C 
compiler creates a module ID name for each object file it produces that is the 
same name and case as the source file.  When this object file is inserted into 
the object library, it is inserted using this name.  Prior to the advent of 
extended filenames on VMS, this guaranteed that the module names within an 
object library were always uppercase.  However, if perl is unpacked onto an 
ODS-5 filesystem, the resulting filenames will be mixed case.  This means the 
object module names will be mixed case.  MMS has still not been updated to 
recognize anything but an all uppercase name in a library file.  This usually 
manifests itself as an "action did not update target" error from MMS.  The 
build will still complete correctly but MMS will keep performing these steps 
each time you invoke the build since it doesn't recognize that they have 
completed correctly.  I have work-arounds for this if they are needed.

Note that I avoid both of these problems by using MMK instead of MMS.

I bought my system directly from Compaq/HP, with licenses, so I have no problem 
doing any form of development.  If it will help, you are welcome to an account 
here.

Mark Berryman

Reply via email to