Dan Sugalski wrote:
> The following patch is needed to get 5.5.640 building on VMS. There are still
> a bunch of test failures, but this is better than nothing...
Hmm.. It looks like it was generated on VMS:
> --- vms/subconfigure.com;1 Thu Feb 3 14:50:38 2000
> +++ vms/subconfigure.com Thu Feb 3 14:50:38 2000
> @@ -63,6 +63,7 @@
> $ if "''myname'" .eqs. "" THEN myname = f$trnlnm("SYS$NODE")
> $!
> $! ##ADD NEW CONSTANTS HERE##
> +$ perl_d_nv_preserves_uv = "define"
> $ perl_d_fs_data_s = "undef"
Unfortunately it does not look like a recursive patch and the extra
space in front of the context lines (those with neither a leading '+' nor
a '-') seems to give GNU patch on OSF/1 indegestion (fixup enclosed).
I was able to build with:
$ cc/version nl:
DEC C V5.5-002 on OpenVMS Alpha V7.1
but `mms test` just comes to this spot and stays there:
[.io]iprefix............ok
[.io]nargv..............ok
[.io]open...............FAILED on test 53
[.io]openpid............FAILED on test 5
It does not appear to be using CPU according to `monitor process/topcpu`,
unfortunately I have to leave the office at this time and I'll have to
Ctl-Y it.
Here's the patch redone as a unified recursive diff:
diff -ru perl5.5.640.orig/configure.com perl5.5.640/configure.com
--- perl5.5.640.orig/configure.com Sun Jan 9 11:44:56 2000
+++ perl5.5.640/configure.com Thu Feb 3 17:53:03 2000
@@ -1876,11 +1876,13 @@
$ echo "It's time to specify which modules you want to build into
$ echo "perl. Most of these are standard and should be chosen, though
$ 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 "SDBM_File if you have the GDBM library built on your machine.
+$ echo "Whatever you do, make sure the re module is first or things will
+$ echo "break badly"
$ echo "
$ echo "Which modules do you want to build into perl?"
$! 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"
+$ dflt = "re Fcntl Errno File::Glob IO Opcode Devel::Peek Devel::DProf Data::Dumper
+attrs VMS::Stdio VMS::DCLsym B SDBM_File"
$ if Using_Dec_C.eqs."Yes"
$ THEN
$ dflt = dflt + " POSIX"
diff -ru perl5.5.640.orig/vms/descrip_mms.template perl5.5.640/vms/descrip_mms.template
--- perl5.5.640.orig/vms/descrip_mms.template Tue Feb 1 21:41:47 2000
+++ perl5.5.640/vms/descrip_mms.template Thu Feb 3 17:53:09 2000
@@ -230,7 +230,7 @@
# are built using these macros should depend on $(MINIPERL_EXE)
MINIPERL_EXE = Sys$Disk:[]miniperl$(E)
MINIPERL = MCR $(MINIPERL_EXE) "-I[.lib]"
-XSUBPP = $(MINIPERL) [.lib.extutils]xsubpp -noprototypes
+XSUBPP = $(MINIPERL) "-I[.ext.re]" [.lib.extutils]xsubpp -noprototypes
# Macro to invoke a preexisting copy of Perl. This is used to regenerate
# some header files when rebuilding Perl, but premade versions are provided
# in the distribution, so it's OK if this doesn't work; it's here to make
@@ -806,6 +806,7 @@
# install ought not need a source, but it doesn't work if one's not
# there. Go figure...
install : $(MINIPERL_EXE)
+ If F$TrnLnm("Sys") .nes. "" Then Deass SYS
$(MINIPERL) installperl
archify : all
diff -ru perl5.5.640.orig/vms/subconfigure.com perl5.5.640/vms/subconfigure.com
--- perl5.5.640.orig/vms/subconfigure.com Fri Jan 7 09:55:59 2000
+++ perl5.5.640/vms/subconfigure.com Thu Feb 3 17:52:55 2000
@@ -63,6 +63,7 @@
$ if "''myname'" .eqs. "" THEN myname = f$trnlnm("SYS$NODE")
$!
$! ##ADD NEW CONSTANTS HERE##
+$ perl_d_nv_preserves_uv = "define"
$ perl_d_fs_data_s = "undef"
$ perl_d_getmnt = "undef"
$ perl_d_sqrtl = "define"
@@ -488,10 +489,13 @@
$ perl_archname = "''perl_archname'-thread"
$ perl_d_old_pthread_create_joinable = "undef"
$ perl_old_pthread_create_joinable = " "
+$ perl_use5005threads = "define"
$ ELSE
$ perl_d_old_pthread_create_joinable = "undef"
$ perl_old_pthread_create_joinable = " "
+$ perl_use5005threads = "undef"
$ ENDIF
+$ perl_useithreads = "undef"
$ perl_osvers=f$edit(osvers, "TRIM")
$ if (perl_subversion + 0).eq.0
$ THEN
@@ -1588,6 +1592,144 @@
$ ENDIF
$ WRITE_RESULT "d_strtoull is ''perl_d_strtoull'"
$!
+$! Check for strtouq
+$!
+$ OS
+$ WS "#ifdef __DECC
+$ WS "#include <stdlib.h>
+$ WS "#endif
+$ WS "#include <string.h>
+$ WS "int main()
+$ WS "{"
+$ WS "unsigned __int64 result;
+$ WS "result = strtouq(""123123"", NULL, 10);
+$ WS "exit(0);
+$ WS "}"
+$ CS
+$ DEFINE SYS$ERROR _NLA0:
+$ DEFINE SYS$OUTPUT _NLA0:
+$ on error then continue
+$ on warning then continue
+$ 'Checkcc' temp.c
+$ savedstatus = $status
+$ teststatus = f$extract(9,1,savedstatus)
+$ if (teststatus.nes."1")
+$ THEN
+$ perl_d_strtouq="undef"
+$ DEASSIGN SYS$OUTPUT
+$ DEASSIGN SYS$ERROR
+$ ELSE
+$ If (Needs_Opt.eqs."Yes")
+$ THEN
+$ link temp.obj,temp.opt/opt
+$ else
+$ link temp.obj
+$ endif
+$ savedstatus = $status
+$ teststatus = f$extract(9,1,savedstatus)
+$ DEASSIGN SYS$OUTPUT
+$ DEASSIGN SYS$ERROR
+$ if (teststatus.nes."1")
+$ THEN
+$ perl_d_strtouq="undef"
+$ ELSE
+$ perl_d_strtouq="define"
+$ ENDIF
+$ ENDIF
+$ WRITE_RESULT "d_strtouq is ''perl_d_strtouq'"
+$!
+$! Check for strtoll
+$!
+$ OS
+$ WS "#ifdef __DECC
+$ WS "#include <stdlib.h>
+$ WS "#endif
+$ WS "#include <string.h>
+$ WS "int main()
+$ WS "{"
+$ WS "__int64 result;
+$ WS "result = strtoll(""123123"", NULL, 10);
+$ WS "exit(0);
+$ WS "}"
+$ CS
+$ DEFINE SYS$ERROR _NLA0:
+$ DEFINE SYS$OUTPUT _NLA0:
+$ on error then continue
+$ on warning then continue
+$ 'Checkcc' temp.c
+$ savedstatus = $status
+$ teststatus = f$extract(9,1,savedstatus)
+$ if (teststatus.nes."1")
+$ THEN
+$ perl_d_strtoll="undef"
+$ DEASSIGN SYS$OUTPUT
+$ DEASSIGN SYS$ERROR
+$ ELSE
+$ If (Needs_Opt.eqs."Yes")
+$ THEN
+$ link temp.obj,temp.opt/opt
+$ else
+$ link temp.obj
+$ endif
+$ savedstatus = $status
+$ teststatus = f$extract(9,1,savedstatus)
+$ DEASSIGN SYS$OUTPUT
+$ DEASSIGN SYS$ERROR
+$ if (teststatus.nes."1")
+$ THEN
+$ perl_d_strtoll="undef"
+$ ELSE
+$ perl_d_strtoll="define"
+$ ENDIF
+$ ENDIF
+$ WRITE_RESULT "d_strtoll is ''perl_d_strtoll'"
+$!
+$! Check for strtold
+$!
+$ OS
+$ WS "#ifdef __DECC
+$ WS "#include <stdlib.h>
+$ WS "#endif
+$ WS "#include <string.h>
+$ WS "int main()
+$ WS "{"
+$ WS "long double result;
+$ WS "result = strtold(""123123"", NULL, 10);
+$ WS "exit(0);
+$ WS "}"
+$ CS
+$ DEFINE SYS$ERROR _NLA0:
+$ DEFINE SYS$OUTPUT _NLA0:
+$ on error then continue
+$ on warning then continue
+$ 'Checkcc' temp.c
+$ savedstatus = $status
+$ teststatus = f$extract(9,1,savedstatus)
+$ if (teststatus.nes."1")
+$ THEN
+$ perl_d_strtold="undef"
+$ DEASSIGN SYS$OUTPUT
+$ DEASSIGN SYS$ERROR
+$ ELSE
+$ If (Needs_Opt.eqs."Yes")
+$ THEN
+$ link temp.obj,temp.opt/opt
+$ else
+$ link temp.obj
+$ endif
+$ savedstatus = $status
+$ teststatus = f$extract(9,1,savedstatus)
+$ DEASSIGN SYS$OUTPUT
+$ DEASSIGN SYS$ERROR
+$ if (teststatus.nes."1")
+$ THEN
+$ perl_d_strtold="undef"
+$ ELSE
+$ perl_d_strtold="define"
+$ ENDIF
+$ ENDIF
+$ WRITE_RESULT "d_strtold is ''perl_d_strtold'"
+$!
$! Check for atoll
$!
$ OS
@@ -2941,8 +3083,8 @@
$ perl_u16type="unsigned short"
$ perl_i32type="int"
$ perl_u32type="unsigned int"
-$ perl_i64type="long"
-$ perl_u64type="unsigned long"
+$ perl_i64type="long long"
+$ perl_u64type="unsigned long long"
$ perl_nvtype="double"
$!
$ GOTO beyond_type_size_check
@@ -3117,6 +3259,9 @@
$ WC ""
$ WC "CONFIGDOTSH=true"
$ WC "package='" + perl_package + "'"
+$ WC "d_nv_preserves_uv='" + perl_d_nv_preserves_uv + "'"
+$ WC "use5005threads='" + perl_use5005threads + "'"
+$ WC "useithreads='" + perl_useithreads + "'"
$ WC "CONFIG='" + perl_config + "'"
$ WC "cf_time='" + perl_cf_time + "'"
$ WC "cf_by='" + perl_cf_by+ "'"
@@ -3574,6 +3719,9 @@
$ WC "multiarch='" + perl_multiarch + "'"
$ WC "sched_yield='" + perl_sched_yield + "'"
$ WC "d_strtoull='" + perl_d_strtoull + "'"
+$ WC "d_strtouq='" + perl_d_strtouq + "'"
+$ WC "d_strtoll='" + perl_d_strtoll + "'"
+$ WC "d_strtold='" + perl_d_strtold + "'"
$ WC "usesocks='" + perl_usesocks + "'"
$ WC "d_vendorlib='" + perl_d_vendorlib + "'"
$ WC "vendorlibexp='" + perl_vendorlibexp + "'"
End of re-done Patch.
Peter Prymmer