VMS update (from Peter Prymmer <pvhp@forte.com>)
Gurusamy Sarathy [Fri, 7 Jan 2000 17:58:45 +0000 (17:58 +0000)]
p4raw-id: //depot/perl@4767

README.vms
configure.com
vms/subconfigure.com

index 13a1f9b..d9ea97e 100644 (file)
@@ -6,7 +6,7 @@ Originally by Charles Bailey <bailey@newman.upenn.edu>
 
 The build and install procedures have changed significantly from the 5.004
 releases! Make sure you read the "Building Perl" and "Installing Perl"
-sections before you build or install.
+sections of this document before you build or install.
 
 Also note that, as of 5.005, an ANSI C compliant compiler is required to
 build Perl. Vax C is *not* ANSI compliant, as it died a natural death some
@@ -84,7 +84,7 @@ Building perl has two steps, configuration and compilation.
 
 To configure perl (a necessary first step), issue the command
 
-@CONFIGURE
+   @CONFIGURE
 
 from the top of an unpacked perl directory. You'll be asked a series of
 questions, and the answers to them (along with the capabilities of your C
@@ -96,7 +96,22 @@ you're using a version older than 5.2, check the Dec C Issues section.
 
 The configuration script will print out, at the very end, the MMS or MMK
 command you need to compile perl. Issue it (exactly as printed) to start
-the build.
+the build.  If you have any symbols or logical names in your environment
+that may interfere with the build or regression testing of perl then 
+configure.com will try to warn you about them.  If a logical name is causing
+you trouble but is in an LNM table that you do not have write access to
+then try defining your own to a harmless equivalence string in a table 
+such that it is resolved before the other (e.g. if TMP is defined in the
+SYSTEM table then try DEFINE TMP "NL:" or somesuch) otherwise simply deasign 
+the dangerous logical names.  The potentially troublesome logicals and
+symbols are:
+
+    TMP  "LOGICAL"
+    LIB  "LOGICAL"
+    T    "LOGICAL"
+    FOO  "LOGICAL"
+    EXT  "LOGICAL"
+    TEST "SYMBOL"
 
 Once you issue your MMS command, sit back and wait. Perl should build and
 link without a problem. If it doesn't, check the Gotchas to watch out for
@@ -105,7 +120,7 @@ Instructions are in the Mailing Lists section.
 
 As a handy shortcut, the command:
 
-@CONFIGURE "-des"
+    @CONFIGURE "-des"
 
 (note the quotation marks and case) will choose reasonable defaults. (It 
 takes Dec C over Gnu C, Dec C sockets over SOCKETSHR sockets, and either 
@@ -245,18 +260,18 @@ into DCLTABLES, replace it with just perl.
 Execute the following command file to define PERL as a DCL command.
 You'll need CMKRNL priv to install the new dcltables.exe.
 
-$ create perl.cld
-!
-! modify to reflect location of your perl.exe
-!
-define verb perl
-  image perl_root:[000000]perl.exe
-  cliflags (foreign)
-$!
-$ set command perl /table=sys$common:[syslib]dcltables.exe -
- /output=sys$common:[syslib]dcltables.exe
-$ install replace sys$common:[syslib]dcltables.exe
-$ exit
+    $ create perl.cld
+    !
+    ! modify to reflect location of your perl.exe
+    !
+    define verb perl
+      image perl_root:[000000]perl.exe
+      cliflags (foreign)
+    $!
+    $ set command perl /table=sys$common:[syslib]dcltables.exe -
+     /output=sys$common:[syslib]dcltables.exe
+    $ install replace sys$common:[syslib]dcltables.exe
+    $ exit
 
 * Changing compile-time things
 
@@ -410,7 +425,7 @@ missed someone.  That said, special thanks are due to the following:
      for the getredirection() code
   Rich Salz <rsalz@bbn.com>
      for readdir() and related routines
-  Peter Prymmer <pvhp@forte.com> or <pvhp@lns62.lns.cornell.edu>
+  Peter Prymmer <pvhp@forte.com> 
      for extensive testing, as well as development work on
      configuration and documentation for VMS Perl,
   Dan Sugalski <dan@sidhe.org>
index cbc3bb7..87c1b81 100644 (file)
@@ -14,7 +14,7 @@ $! $ @Configure "-des"
 $!
 $! That's it. If you get into a bind trying to build perl on VMS then 
 $! definitely read through the README.VMS file.
-$! Beyond that send email to VMSPerl@cor.newman.upenn.edu 
+$! Beyond that send email to vmsperl@perl.org
 $!
 $! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 $!
@@ -24,8 +24,8 @@ $! Thank you!!!!
 $!
 $! Adapted and converted from Larry Wall & Andy Dougherty's
 $! "Configure generated by metaconfig 3.0 PL60." by Peter Prymmer
-$! (a Bourne sh[ell] script for configuring the installation of perl on VMS)
-$! in the perl5.002|3 epoch (spring/summer 1996)
+$! (a Bourne sh[ell] script for configuring the installation of perl 
+$! on non-VMS systems) in the perl5.002|3 epoch (spring/summer 1996)
 $! with much valuable help from Charles Bailey & 
 $! the whole VMSPerl crew.
 $! Extended and messed about with by Dan Sugalski
@@ -41,7 +41,7 @@ $ ans = ""
 $ macros = ""
 $ use_vmsdebug_perl = "N"
 $ use_debugging_perl = "Y"
-$ use_64bit = "N"
+$ use_64bit = "n"
 $ C_Compiler_Replace = "CC="
 $ Thread_Live_Dangerously = "MT="
 $ use_two_pot_malloc = "N"
@@ -481,6 +481,19 @@ $       IF (((f$length(file_2_find)+1) .eq. f$length(basename)) .and. -
 $       file_2_find = dirname + basename
 $!
 $       found = F$SEARCH(file_2_find)
+$       IF (found .EQS. "" .AND. dots .GT. 2)
+$       THEN
+$! 17-DEC-1999 Improved to turn "[.foo.bar]baz.c_buz" into
+$! "[.foo.bar]baz_c.buz" to cover unzipped archives and put
+$! "[.foo.bar]baz.c_buz,baz_c.buz" into missing list if neither is found.
+$         basename[f$locate(".",basename),1] := _
+$         dot_ele = F$ELEMENT(dots - 1,"_",basename)
+$         basename = -
+            f$extract(0,f$length(basename)-(f$length(dot_ele)+1),basename) -
+              + "." + dot_ele
+$         found = F$SEARCH(dirname + basename)
+$         file_2_find = file_2_find + "," + basename
+$       ENDIF
 $       IF (found .EQS. "")
 $       THEN
 $         WRITE MISSING file_2_find
@@ -702,7 +715,7 @@ $   TYPE SYS$INPUT:
 %Config-E-VMS, ERROR:
 
            Err, you do not appear to be running VMS!
- This package is intended to Configure the building of Perl for VMS.
+ This procedure is intended to Configure the building of Perl for VMS.
 
 $   READ SYS$COMMAND/PROMPT="Continue anyway? [n] " ans
 $   IF ans
@@ -826,7 +839,7 @@ $!
 $TZSet:
 $ echo ""
 $ echo "Please tell me in hh:mm form what time offset from GMT/UTC in England"
-$ echo "you are. As an example Eastern (US) Standard Time is -5:00 offset, but"
+$ echo "you are.  As an example Eastern (US) Standard Time is -5:00 offset, but"
 $ echo "Eastern Daylight Time (summer) is -4:00 offset."
 $ dflt = "0:00"
 $ rp = "Enter the Time Zone offset: [''dflt'] "
@@ -870,8 +883,10 @@ $!
 $ IF (F$GETSYI("HW_MODEL") .LT. 1024)
 $ THEN 
 $   archname = "VMS_VAX"
+$   otherarch = "an Alpha"
 $ ELSE
 $   archname = "VMS_AXP"
+$   otherarch = "a VAX"
 $ ENDIF
 $ rp = "What is your architecture name? [''archname'] "
 $ GOSUB myread
@@ -883,24 +898,22 @@ $   THEN
 $     echo4 "I'll go with ''archname' anyway..."
 $   ENDIF
 $ ENDIF
-$ IF (archname.EQS."VMS_AXP")
+$ dflt = "n"
+$ rp = "Will you be sharing your PERL_ROOT with ''otherarch'? [''dflt'] "
+$ GOSUB myread
+$ if ans.NES.""
 $ THEN
-$   dflt = "n"
-$   rp = "Are you sharing your PERL_ROOT with a VAX? [''dflt'] "
-$   GOSUB myread
-$   if ans.NES.""
-$   THEN
-$     ans = F$EDIT(ans,"COLLAPSE, UPCASE")
-$   ENDIF
-$   IF (ans.NES."Y")
+$   ans = F$EXTRACT(0,1,F$EDIT(ans,"COLLAPSE, UPCASE"))
+$ ENDIF
+$ IF (ans.NES."Y")
+$ THEN
+$   sharedperl = "N"
+$ ELSE
+$   sharedperl = "Y"
+$   IF (archname.EQS."VMS_AXP")
 $   THEN
-$     sharedperl = "N"
-$   ELSE
-$     sharedperl = "Y"
 $     macros = macros + """AXE=1"","
 $   ENDIF
-$ ELSE
-$   sharedperl = "N"
 $ ENDIF
 $!
 $!: is AFS running?                       !sfn
@@ -1597,7 +1610,7 @@ no easy means to double check it. The default value provided below
 is most probably close to the reality but may not be valid from outside
 your organization...
 $ ENDIF
-$ dflt = "''cf_by@''myhostname'"+"''mydomain'"
+$ dflt = "''cf_by'@''myhostname'"+"''mydomain'"
 $ rp = "What is your e-mail address? [''dflt'] "
 $ GOSUB myread
 $ IF ans .nes. ""
@@ -1685,16 +1698,16 @@ $ endif
 $!
 $!
 $! Ask if they want to build with VMS_DEBUG perl
+$ echo ""
 $ echo "Perl can be built to run under the VMS debugger."
 $ echo "You should only select this option if you are debugging"
 $ echo "perl itself.  This can be a useful feature if you are "
 $ echo "embedding perl in a program."
-$ echo ""
-$ dflt = "N"
+$ dflt = "n"
 $ rp = "Build a VMS-DEBUG version of Perl? [''dflt'] "
 $ GOSUB myread
-$   if ans.eqs."" then ans = dflt
-$ if (f$extract(0, 1, "''ans'").eqs."Y").or.(f$extract(0, 1, "''ans'").eqs."y")
+$ IF ans.eqs."" then ans = dflt
+$ IF F$EXTRACT(0, 1, F$EDIT(ans,"COLLAPSE,UPCASE")) .eqs. "Y"
 $ THEN
 $   use_vmsdebug_perl = "Y"
 $   macros = macros + """__DEBUG__=1"","
@@ -1703,18 +1716,18 @@ $   use_vmsdebug_perl = "N"
 $ ENDIF
 $!
 $! Ask if they want to build with MULTIPLICITY
+$ echo ""
 $ echo "The perl interpreter engine can be built in a way that makes it
-$ echo "possible for a program that embeds perl into it (and yep, you can
+$ echo "possible for a program that embeds perl into it (and yes, you can
 $ echo "do that--it's pretty keen) to have multiple perl interpreters active
 $ echo "at once. There is some performance overhead, however, so you
 $ echo "probably don't want to choose this unless you're going to be doing
 $ echo "funky perl embedding."
-$ echo ""
 $ dflt = "n"
 $ rp = "Build with MULTIPLICITY? [''dflt'] "
 $ GOSUB myread
-$   if ans.eqs."" then ans = dflt
-$ if (f$extract(0, 1, "''ans'").eqs."Y").or.(f$extract(0, 1, "''ans'").eqs."y")
+$ if ans.eqs."" then ans = dflt
+$ IF F$EXTRACT(0, 1, F$EDIT(ans,"COLLAPSE,UPCASE")) .eqs. "Y"
 $ THEN
 $   use_multiplicity="Y"
 $ ELSE
@@ -1724,16 +1737,16 @@ $!
 $! Ask if they want to build with 64-bit support
 $ if (Archname.eqs."VMS_AXP").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1")
 $ THEN
+$   echo ""
 $   echo "This version of perl has experimental support for building with
 $   echo "64 bit integers and 128 bit floating point variables. This gives
 $   echo "a much larger range for perl's mathematical operations. (Note that
 $   echo "does *not* enable 64-bit fileops at the moment, as Dec C doesn't
 $   echo "do that yet)"
-$   echo ""
 $   dflt = use_64bit
 $   rp = "Build with 64 bits? [''dflt'] "
 $   GOSUB myread
-$     if ans.eqs."" then ans = dflt
+$   if ans.eqs."" then ans = dflt
 $   if (f$extract(0, 1, "''ans'").eqs."Y").or.(f$extract(0, 1, "''ans'").eqs."y")
 $   THEN
 $     use_64bit="Y"
@@ -1745,10 +1758,10 @@ $!
 $! Ask about threads, if appropriate
 $ if (Using_Dec_C.eqs."Yes")
 $ THEN
+$   echo ""
 $   echo "This version of Perl can be built with threads. While really nifty,
 $   echo "they are a beta feature, and there is a speed penalty for perl
 $   echo "programs if you build with threads *even if you don't use them*
-$   echo ""
 $   dflt = "n"
 $   rp = "Build with threads? [''dflt'] "
 $   GOSUB myread
@@ -1768,7 +1781,6 @@ $       echo "all the threads in a program, even on a single-processor
 $       echo "machine. Unfortunately this feature isn't safe on an
 $       echo "unpatched 7.1 system. (Several OS patches were required when
 $       echo "this procedure was written)
-$       echo ""
 $       dflt = "n"
 $       rp = "Enable multiple kernel threads and upcalls? [''dflt'] "
 $       gosub myread
@@ -1796,7 +1808,6 @@ $ echo "This restriction does not apply to the %ENV hash or to implicit"
 $ echo "logical name translation during parsing of file specifications;"
 $ echo "these always use the normal sequence of access modes for logical"
 $ echo "name translation."
-$ echo ""
 $ dflt = "n"
 $ rp = "Use secure logical name translation? [''dflt'] "
 $ GOSUB myread
@@ -1812,12 +1823,11 @@ $ echo "default file types, however, you can configure Perl to try default"
 $ echo "file types of nothing, .pl, and .com, in that order (e.g. typing"
 $ echo """$ perl foo"" would cause Perl to look for foo., then foo.pl, and"
 $ echo "finally foo.com)."
-$ echo ""
 $ dflt = "n"
 $ rp = "Always use default file types? [''dflt'] "
 $ GOSUB myread
 $ if ans.eqs."" then ans="''dflt'"
-$ d_alwdeftype = f$extract(0, 1, f$edit(ans,"TRIM,COMPRESS,UPCASE"))
+$ d_alwdeftype = f$extract(0, 1, f$edit(ans,"COLLAPSE,UPCASE"))
 $!
 $! Ask if they want to use perl's memory allocator
 $ echo ""
@@ -1825,12 +1835,11 @@ $ echo "Perl has a built-in memory allocator that's tuned for perl's
 $ echo "normal memory usage. It's oftentimes better than the standard
 $ echo "system memory allocator. It also has the advantage of providing
 $ echo "memory allocation statistics, if you choose to enable them.
-$ echo ""
 $ dflt = "n"
 $ rp = "Build with perl's memory allocator? [''dflt'] "
 $ GOSUB myread
 $ if ans.eqs."" then ans="''dflt'"
-$ mymalloc = f$extract(0, 1, f$edit(ans,"TRIM,COMPRESS,UPCASE"))
+$ mymalloc = f$extract(0, 1, f$edit(ans,"COLLAPSE,UPCASE"))
 $ if mymalloc.eqs."Y"
 $ THEN
 $   if use_debugging_perl.eqs."Y"
@@ -1839,12 +1848,11 @@ $     echo ""
 $     echo "Perl can keep statistics on memory usage if you choose to use
 $     echo "them. This is useful for debugging, but does have some
 $     echo "performance overhead.
-$     echo ""
 $     dflt = "n"
 $     rp = "Do you want the debugging memory allocator? [''dflt'] "
 $     gosub myread
 $     if ans.eqs."" then ans="''dflt'"
-$     use_debugmalloc = f$extract(0, 1, f$edit(ans, "TRIM,COMPRESS,UPCASE"))
+$     use_debugmalloc = f$extract(0, 1, f$edit(ans, "COLLAPSE,UPCASE"))
 $   ENDIF
 $   ! Check which memory allocator we want
 $   echo ""
@@ -1855,7 +1863,6 @@ $   echo "larger allocations), and PACK_MALLOC (which is optimized to save
 $   echo "memory for smaller allocations). They're all good, but if your
 $   echo "usage tends towards larger chunks use TWO_POT, otherwise use
 $   echo "PACK_MALLOC."
-$   echo ""
 $   dflt = "DEFAULT"
 $   rp = "Memory allocator (DEFAULT, TWO_POT, PACK_MALLOC) [''dflt'] "
 $   GOSUB myread
@@ -1872,8 +1879,8 @@ $ echo "you might, for example, want to build GDBM_File instead of
 $ echo "SDBM_File if you have the GDBM library built on your machine
 $ echo "
 $ echo "Which modules do you want to build into perl?"
-$! dflt = "Fcntl Errno IO Opcode Byteloader Devel::Peek Devel::DProf Data::Dumper attrs re VMS::Stdio VMS::DCLsym B SDBM_File"
-$ dflt = "Fcntl Errno IO Opcode Devel::Peek Devel::DProf Data::Dumper attrs re VMS::Stdio VMS::DCLsym B SDBM_File"
+$! dflt = "Fcntl Errno File::Glob IO Opcode Byteloader Devel::Peek Devel::DProf Data::Dumper attrs re VMS::Stdio VMS::DCLsym B SDBM_File"
+$ dflt = "Fcntl Errno File::Glob IO Opcode Devel::Peek Devel::DProf Data::Dumper attrs re VMS::Stdio VMS::DCLsym B SDBM_File"
 $ if Using_Dec_C.eqs."Yes"
 $ THEN
 $   dflt = dflt + " POSIX"
@@ -2028,10 +2035,17 @@ $ SET DEFAULT [-.vms]
 $ @subconfigure
 $ SET DEFAULT 'dflt
 $!
-$!  Warn of dangerous logical names
+$!  Warn of dangerous symbols or logical names
 $!
-$Bad_logical: SUBROUTINE
-$   IF f$trnlnm(p1) .nes. ""
+$Bad_environment: SUBROUTINE
+$   Bad_env = ""
+$   IF p2 .eqs. "SYMBOL"
+$   THEN
+$     IF f$type('p1) .nes. "" THEN  Bad_env := SYMBOL
+$   ELSE
+$     IF f$trnlnm(p1) .nes. "" THEN Bad_env := LOGICAL
+$   ENDIF
+$   IF Bad_env .eqs. "SYMBOL" .or. Bad_env .eqs. "LOGICAL"
 $   THEN
 $     IF f$search("config.msg") .nes. ""
 $     THEN
@@ -2039,19 +2053,38 @@ $       OPEN/APPEND CONFIG config.msg
 $     ELSE
 $       OPEN/WRITE CONFIG config.msg
 $     ENDIF
-$     WRITE CONFIG "Logical name ''p1' found in environment as " + f$trnlnm(p1)
-$     WRITE CONFIG " deassign before building ''package'"
+$     IF Bad_env .eqs. "SYMBOL"
+$     THEN
+$       WRITE CONFIG ""
+$       WRITE CONFIG "Symbol name ''p1' found in environment as " + &p1
+$       WRITE CONFIG " delete before building ''package' via:"
+$       WRITE CONFIG "     $ DELETE/SYMBOL/GLOBAL ''p1'"
+$       IF f$locate("""",&p1) .ge. f$length(&p1)
+$       THEN
+$       WRITE CONFIG " after building, testing, and installing ''package'
+$       WRITE CONFIG " restore the symbol with:"
+$       WRITE CONFIG "     $ ''p1' == """ + &p1 + """"
+$       ENDIF
+$     ENDIF
+$     IF Bad_env .eqs. "LOGICAL"
+$     THEN
+$       WRITE CONFIG ""
+$       WRITE CONFIG "Logical name ''p1' found in environment as " + f$trnlnm(p1)
+$       WRITE CONFIG " deassign before building ''package'"
+$     ENDIF
 $     CLOSE CONFIG
+$     Bad_env = ""
 $   ENDIF
 $ EXIT
-$ ENDSUBROUTINE ! Bad_logical
+$ ENDSUBROUTINE ! Bad_environment
 $ echo ""
-$ echo4 "%Config-I-VMS, Checking for dangerous pre extant logical names."
-$ CALL Bad_logical "TMP"
-$ CALL Bad_logical "LIB"
-$ CALL Bad_logical "T"
-$ CALL Bad_logical "FOO"
-$ CALL Bad_logical "EXT"
+$ echo4 "%Config-I-VMS, Checking for dangerous pre extant global symbols and logical names."
+$ CALL Bad_environment "TMP"
+$ CALL Bad_environment "LIB"
+$ CALL Bad_environment "T"
+$ CALL Bad_environment "FOO"
+$ CALL Bad_environment "EXT"
+$ CALL Bad_environment "TEST" "SYMBOL"
 $ IF f$search("config.msg") .eqs. "" THEN echo "OK."
 $!
 $! %Config-I-VMS, write perl_setup.com here
index 93473dc..1e0d003 100644 (file)
@@ -191,7 +191,7 @@ $ perl_d_mknod="undef"
 $ perl_d_union_semun="undef"
 $ perl_d_semctl_semun="undef"
 $ perl_d_semctl_semid_ds="undef"
-$ IF (sharedperl.EQS."Y")
+$ IF (sharedperl.EQS."Y" .AND. F$GETSYI("HW_MODEL").GE.1024)
 $ THEN
 $ perl_obj_ext=".abj"
 $ perl_so="axe"
@@ -3727,6 +3727,7 @@ $    WRITE CONFIG "#define USE_LONG_LONG"
 $    WRITE CONFIG "#define USE_LONG_DOUBLE"
 $ ENDIF
 $ WRITE CONFIG "#define HAS_ENVGETENV"
+$ WRITE CONFIG "#define PERL_EXTERNAL_GLOB"
 $ CLOSE CONFIG
 $!
 $! Now build the normal config.h
@@ -3793,7 +3794,7 @@ $ echo "Extracting Build_Ext.Com"
 $ Create Sys$Disk:[-]Build_Ext.Com
 $ Deck/Dollar="$EndOfTpl$"
 $!++ Build_Ext.Com
-$!   NOTE: This files is extracted as part of the VMS configuration process.
+$!   NOTE: This file is extracted as part of the VMS configuration process.
 $!   Any changes made to it directly will be lost.  If you need to make any
 $!   changes, please edit the template in [.vms]SubConfigure.Com instead.
 $    def = F$Environment("Default")