On Mon, 13 Aug 2001, Craig A. Berry wrote:
> At 5:34 PM -0700 8/13/01, Peter Prymmer wrote:
> > * A better check of the ACPTYPE of the DEFAULT file system
> > instead of checking OS version and architecture. Since it is
> > rare to deploy recent OSes on SYSTEM DISKS that are not ODS-2
>
> I'm pretty sure ODS-5 is not supported for system disks, even on VMS 7.3.
The docs support that supposition.
> >this
> > check is more correct than the previous one. The previous one
> > also ignore the fact that /STRUCTURE=5 is optional on AXP VMS V7.2++
> > and is not required.
>
> I believe there is extended directory depth support on ODS-2 volumes
> on OpenVMS Alpha 7.2 and later (in addition, of course, to ODS-5
> volumes). On VAX, old limits still apply regardless of OS version.
> In other words, deeper directory support, unless I'm hallucinating,
> became available on Alpha independently of other ODS-5 enhancements,
> but best to check the docs.
D'Oh - I had forgotten about the independence of deep directories
and ODS-5 structures (we even rely on it now). The doc at:
http://www.openvms.compaq.com:8000/73final/6536/6536PRO.HTML
leads me to believe that checking OS VERSION and HW_MODEL is in fact
adequate and sufficient.
In a re-patch included below I've nevertheless added a redundant test of
ACPTYPE so as to avoid doing a depth check on an ODS-5 volume, perhaps
primarily to remind me. I've also taken the liberty to subtract
"Sys/Syslog" from config.sh:$extensions since we already subtract
GDBM_File and if you currently try to run a C<use Sys/Syslog;> statement
you see this:
$ perl "-MSys::Syslog" -e "print ""Hello world"";"
Your vendor has not defined GDBM_File macro LOG_DEBUG, used at -e line 0
Compilation failed in require.
BEGIN failed--compilation aborted.
%SYSTEM-F-ABORT, abort
> > * PERL_SETUP.COM will be written out with a new foreign symbol for
> > @-executing perlivp.com.
> > * A start on instructions about running h2ph in README.vms. Do note
> > that this is only a start and I would appreciate hearing some war
> > stories about what people have done to get *.ph files on VMS.
>
> I've never tried it. You are most likely aware of the fact that when
> installing the C compiler you get the option of extracting a
> reference version of the .h files to
> SYS$COMMON:[DECC$LIB.REFERENCE...]. Can those be used to create the
> .ph files?
It is optional to extract the headers, at least for DEC C 6.0 and Compaq C
6.2 and 6.4. Some admins do not do it. Some admins upgrade a C compiler
and do not do it thereby leaving older loose header files lying about in
SYS$COMMON:[DECC$LIB.REFERENCE...]. I wanted the README.vms to remind
folks to ensure that the loose files are in sync with the *.TLBs. h2ph
can grok loose files, but not TLB libraries. I've also included a brief
mention of GNU_CC:[000000...] headers, unfortnately I do not have a
working GCC installation here to provide a more explicit path.
> >and so forth. Would anyone object to this going into the next dev
> >snapshot? Thanks for your comments.
>
> Perhaps check the directory depth stuff first, though Jarkko is not
> threatening to release momentarily so there's time to fix it later if
> IIRC about 7.2 Alpha vs. ODS-5.
Thanks for the comments. See the enclosed, which I'll send along within a
day or so.
diff -ru perl_11626_orig/README.vms perl_11626/README.vms
--- perl_11626_orig/README.vms Mon Aug 13 17:09:06 2001
+++ perl_11626/README.vms Tue Aug 14 11:54:13 2001
@@ -196,6 +196,17 @@
@ Configure "-d" "-Dprefix=dka100:[utils.perl5.]"
+Note that the default location would be where where you unpacked the
+source with a "ROOT." appended. For example if you unpacked the perl
+source into:
+
+ DKA200:[PERL-5_10_2...]
+
+Then the PERL_SETUP.COM that gets written out by Configure.com will
+try to DEFINE your installation PERL_ROOT to be:
+
+ DKA200:[PERL-5_10_2ROOT.]
+
More help with configure.com is available from:
@ Configure "-h"
@@ -451,6 +462,20 @@
While there is code in perl to remove privileges as it runs you are advised
to NOT INSTALL PERL.EXE with PRIVs!
+=head2 Running h2ph to create perl header files (optional) on VMS
+
+If using DEC C or Compaq C ensure that you have extracted loose versions
+of your compiler's header or *.H files. Be sure to check the contents of:
+
+ SYS$LIBRARY:DECC$RTLDEF.TLB
+ SYS$LIBRARY:SYS$LIB_C.TLB
+ SYS$LIBRARY:SYS$STARLET_C.TLB
+
+etcetera.
+
+If using GNU cc then also check your GNU_CC:[000000...] tree for the locations
+of the GNU cc headers.
+
=head1 Reporting Bugs
If you come across what you think might be a bug in Perl, please report
@@ -467,8 +492,9 @@
The next big gotcha is directory depth. Perl can create directories four,
five, or even six levels deep during the build, so you don't have to be
-too deep to start to hit the RMS 8 level limit (for versions of VMS prior
-to V7.2 and even with V7.2 on the VAX). It is best to do
+too deep to start to hit the RMS 8 level limit (for ODS 2 volumes which were
+common on versions of VMS prior to V7.2 and even with V7.2 on the VAX).
+It is best to do:
DEFINE/TRANS=(CONC,TERM) PERLSRC "disk:[dir.dir.dir.perldir.]"
SET DEFAULT PERLSRC:[000000]
diff -ru perl_11626_orig/configure.com perl_11626/configure.com
--- perl_11626_orig/configure.com Mon Aug 13 17:08:53 2001
+++ perl_11626/configure.com Tue Aug 14 11:46:01 2001
@@ -427,11 +427,15 @@
$ GOTO Beyond_manifest
$ ENDIF
$ ELSE
-$! MANIFEST. has been found and we have set def'ed there -
-$! time to bail out before it's too late.
-$ tmp = f$extract(1,3,f$edit(f$getsyi("VERSION"),"TRIM,COLLAPSE"))
-$ IF (tmp .GES. "7.2") .AND. (F$GETSYI("HW_MODEL") .GE. 1024) THEN GOTO
Beyond_depth_check
-$ IF (F$ELEMENT(max_allowed_dir_depth,".",F$ENVIRONMENT("Default")).nes.".")
+$! MANIFEST. has been found and we have set def'ed there.
+$! Time to bail out before it's too late, i.e. too deep.
+$! Depth check is unnecessary on Alpha VMS V7.2++ (even for ODS-2).
+$ tmp = f$extract(1,3,f$edit(f$getsyi("VERSION"),"TRIM,COLLAPSE"))
+$ IF (tmp .GES. "7.2") .AND. (F$GETSYI("HW_MODEL") .GE. 1024) THEN GOTO
+Beyond_depth_check
+$! Depth check also unnecessary on ODS 5 (or later) file systems.
+$ tmp = F$INTEGER(F$GETDVI(F$ENVIRONMENT("DEFAULT"),"ACPTYPE") - "F11V")
+$ IF (tmp .GE. 5) THEN GOTO Beyond_depth_check
+$ IF (F$ELEMENT(max_allowed_dir_depth,".",F$ENVIRONMENT("DEFAULT")).nes.".")
$ THEN
$ TYPE SYS$INPUT:
$ DECK
@@ -1130,7 +1134,8 @@
$ prefix = F$ENVIRONMENT("DEFAULT") - ".UU]" + "]"
$ prefix = F$PARSE(prefix,,,,"NO_CONCEAL") - "][" - ".;"
$ prefixbase = prefix - "]"
-$ prefix = prefixbase + ".]"
+$! Add ROOT to make install PERL_ROOT differ from build directory.
+$ prefix = prefixbase + "ROOT.]"
$ ENDIF
$ src = prefix
$!: determine root of directory hierarchy where package will be installed.
@@ -1160,6 +1165,22 @@
$! Check here for writability of requested PERL_ROOT if it is not the default (cwd).
$! -> recommend letting PERL_ROOT be PERL_SRC if requested PERL_ROOT is not writable.
$!
+$ IF .NOT. F$GETDVI(perl_root,"MNT")
+$ THEN
+$ tmp = F$PARSE(perl_root,,,"DEVICE",)
+$ echo4 "''tmp' is not mounted."
+$ ELSE
+$ tmp = perl_root - ".]" + "]"
+$ dflt = F$PARSE(tmp,,,,)
+$ IF dflt .eqs. ""
+$ THEN
+$ echo4 "''tmp' does not yet exist."
+$! create/directory 'tmp'
+$ ELSE
+$ echo4 "''tmp' already exists."
+$ ENDIF
+$ ENDIF
+$!
$ vms_skip_install = "true"
$ dflt = "y"
$! echo ""
@@ -2481,6 +2502,7 @@
$ dflt = dflt - "IPC/SysV" ! needs to be ported
$ dflt = dflt - "NDBM_File" ! needs porting/special library
$ dflt = dflt - "ODBM_File" ! needs porting/special library
+$ dflt = dflt - "Sys/Syslog" ! needs porting/special library "GDBM_File
+macro LOG_DEBUG"
$ IF .NOT. Has_socketshr .AND. .NOT. Has_Dec_C_Sockets
$ THEN
$ dflt = dflt - "Socket" ! optional on VMS
@@ -6042,7 +6064,7 @@
$ WRITE CONFIG "$! define SYS$TIMEZONE_DIFFERENTIAL ''tzd'"
$ ENDIF
$ WRITE CONFIG "$!"
-$ WRITE CONFIG "$! Symbols for commonly used scripts:"
+$ WRITE CONFIG "$! Symbols for commonly used programs:"
$ WRITE CONFIG "$!"
$ IF (perl_symbol)
$ THEN
@@ -6060,6 +6082,7 @@
$ WRITE CONFIG "$ h2ph == ""'"+"'Perl' ''vms_prefix':[utils]h2ph.com"""
$ WRITE CONFIG "$ h2xs == ""'"+"'Perl' ''vms_prefix':[utils]h2xs.com"""
$ WRITE CONFIG "$!perlcc == ""'"+"'Perl' ''vms_prefix':[utils]perlcc.com"""
+$ WRITE CONFIG "$ perlivp == ""'"+"'Perl' ''vms_prefix':[utils]perlivp.com"""
$ WRITE CONFIG "$ splain == ""'"+"'Perl' ''vms_prefix':[utils]splain.com"""
$ ELSE
$ WRITE CONFIG "$ Perldoc == ""Perl ''vms_prefix':[lib.pod]Perldoc.com -t"""
@@ -6076,6 +6099,7 @@
$ WRITE CONFIG "$ h2ph == ""Perl ''vms_prefix':[utils]h2ph.com"""
$ WRITE CONFIG "$ h2xs == ""Perl ''vms_prefix':[utils]h2xs.com"""
$ WRITE CONFIG "$!perlcc == ""Perl ''vms_prefix':[utils]perlcc.com"""
+$ WRITE CONFIG "$ perlivp == ""Perl ''vms_prefix':[utils]perlivp.com"""
$ WRITE CONFIG "$ splain == ""Perl ''vms_prefix':[utils]splain.com"""
$ ENDIF
$ CLOSE CONFIG
End of Patch.