[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]
[PATCH 5.005_63]build procedure updates for VMS
Enclosed please find a patch to _63 to re-enable building on VMS.
While there is further work to do on the regression test suites for VMS
this patch is being submitted in the hope that it will make it into _64
before the deadline. I am fairly sure that the necessary regression
test modifications will be independent of these changes.
While I've included some documentation tweaks I have nonetheless
deferred the podification of README.vms (yet again - sigh).
With:
DEC C V5.5-002 on OpenVMS Alpha V7.1
I obtained a decent build but failed these tests:
[.io]open...............FAILED on test 51
[.io]openpid............FAILED on test 0
<snip>
[.lib]anydbm............FAILED on test 0
<snip>
[.lib]cgi-html..........FAILED on test 9
<snip>
[.lib]dprof.............FAILED on test 1
[.lib]dumper-ovl........FAILED on test 0
[.lib]dumper............FAILED on test 0
<snip>
[.lib]filecopy..........FAILED on test 6
[.lib]filefind..........FAILED on test 16
<snip>
[.lib]filehand..........FAILED on test 0
<snip>
[.lib]glob-basic........FAILED on test 1
[.lib]glob-case.........FAILED on test 1
[.lib]glob-global.......FAILED on test 1
[.lib]glob-taint........FAILED on test 1
<snip>
[.lib]io_const..........FAILED on test 0
[.lib]io_dir............FAILED on test 0
[.lib]io_linenum........FAILED on test 0
<snip>
[.lib]io_taint..........FAILED on test 0
[.lib]io_tell...........FAILED on test 0
[.lib]io_udp............FAILED on test 0
[.lib]io_xs.............FAILED on test 0
<snip>
[.lib]opcode............FAILED on test 0
[.lib]ops...............FAILED on test 1
<snip>
[.lib]safe1.............FAILED on test 0
[.lib]safe2.............FAILED on test 0
[.lib]sdbm..............FAILED on test 0
<snip>
[.lib]socket............FAILED on test 0
<snip>
[.pod]emptycmd..........FAILED on test 0
[.pod]for...............FAILED on test 0
[.pod]headings..........FAILED on test 0
[.pod]include...........FAILED on test 0
[.pod]included..........FAILED on test 0
[.pod]lref..............FAILED on test 0
[.pod]multiline_items...FAILED on test 0
[.pod]nested_items......FAILED on test 0
[.pod]nested_seqs.......FAILED on test 0
[.pod]oneline_cmds......FAILED on test 0
[.pod]pod2usage.........FAILED on test 0
[.pod]poderrs...........FAILED on test 0
[.pod]podselect.........FAILED on test 0
[.pod]special_seqs......FAILED on test 0
<snip>
[.pragma]warnings.......FAILED on test 117
Failed 42/218 tests, 75.69% okay.
Which may look like a large number of failures, but that is only
because it is :-)
Peter Prymmer
diff -ru perl5.005_63.orig/README.vms perl5.005_63/README.vms
--- perl5.005_63.orig/README.vms Tue Nov 30 21:23:22 1999
+++ perl5.005_63/README.vms Thu Jan 6 14:28:58 2000
@@ -6,7 +6,7 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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>
diff -ru perl5.005_63.orig/configure.com perl5.005_63/configure.com
--- perl5.005_63.orig/configure.com Sat Nov 13 11:02:06 1999
+++ perl5.005_63/configure.com Thu Jan 6 14:58:33 2000
@@ -14,7 +14,7 @@
$!
$! 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 @@
$!
$! 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 @@
$ 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 @@
$ 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 @@
%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 ppocedure 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 @@
$ 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 @@
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 @@
$!
$!
$! 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 @@
$ 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 "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 "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 "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 "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 "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 "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 "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 @@
$ @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 @@
$ 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
diff -ru perl5.005_63.orig/vms/subconfigure.com perl5.005_63/vms/subconfigure.com
--- perl5.005_63.orig/vms/subconfigure.com Tue Nov 30 21:23:35 1999
+++ perl5.005_63/vms/subconfigure.com Thu Jan 6 14:50:32 2000
@@ -191,7 +191,7 @@
$ 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_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 @@
$ 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")
End of Patch.
[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]