Change 30162 by [EMAIL PROTECTED] on 2007/02/07 18:45:59
Integrate:
[ 27371]
Subject: [PATCH] include configure.com in Porting/checkcfgvar.pl
From: Abe Timmerman <[EMAIL PROTECTED]>
Date: Fri, 3 Mar 2006 18:43:24 +0100
Message-Id: <[EMAIL PROTECTED]>
[ 27374]
Subject: Re: [PATCH] include configure.com in Porting/checkcfgvar.pl
From: Abe Timmerman <[EMAIL PROTECTED]>
Date: Fri, 3 Mar 2006 22:56:47 +0100
Message-Id: <[EMAIL PROTECTED]>
[ 27386]
Subject: PATCH: 2 vms specific build files in perl @ 27383
From: Peter Prymmer <[EMAIL PROTECTED]>
Date: Sun, 05 Mar 2006 20:30:09 -0500
Message-id: <[EMAIL PROTECTED]>
[ 27563]
Subject: [EMAIL PROTECTED] thread.h - VMS needs more stack
From: "John E. Malmberg" <[EMAIL PROTECTED]>
Date: Fri, 17 Mar 2006 11:05:33 -0500
Message-id: <[EMAIL PROTECTED]>
[ 27593]
improve thread linking options on VMS
Affected files ...
... //depot/maint-5.8/perl/Porting/checkcfgvar.pl#2 integrate
... //depot/maint-5.8/perl/configure.com#49 integrate
... //depot/maint-5.8/perl/thread.h#20 integrate
... //depot/maint-5.8/perl/vms/descrip_mms.template#44 integrate
... //depot/maint-5.8/perl/vms/gen_shrfls.pl#4 integrate
Differences ...
==== //depot/maint-5.8/perl/Porting/checkcfgvar.pl#2 (text) ====
Index: perl/Porting/checkcfgvar.pl
--- perl/Porting/checkcfgvar.pl#1~26106~ 2005-11-12 14:48:11.000000000
-0800
+++ perl/Porting/checkcfgvar.pl 2007-02-07 10:45:59.000000000 -0800
@@ -6,7 +6,8 @@
# needed symbols are not lagging after how Configure thinks the world
# is laid out.
#
-# VMS is not handled here, due to their own rather elaborate DCL scripting.
+# VMS is probably not handled properly here, due to their own
+# rather elaborate DCL scripting.
#
use strict;
@@ -30,6 +31,7 @@
"win32/config.vc",
"win32/config.vc64",
"wince/config.ce",
+ "configure.com",
);
sub read_file {
@@ -84,6 +86,8 @@
read_file($cfg,
sub {
return if /^\#/ || /^\s*$/;
+ return if $cfg eq 'configure.com' &&
+ ! /^\$\s+WC "(\w+)='(.*)'"$/;
# foo='bar'
# foo=bar
# $foo='bar' # VOS 5.8.x specialty
@@ -93,6 +97,9 @@
}
elsif (/^\$?(\w+)=(.*)$/) {
$cfg{$1}++;
+ }
+ elsif (/^\$\s+WC "(\w+)='(.*)'"$/) {
+ $cfg{$1}++;
} else {
warn "$cfg:$.:$_";
}
==== //depot/maint-5.8/perl/configure.com#49 (text) ====
Index: perl/configure.com
--- perl/configure.com#48~30161~ 2007-02-07 09:31:52.000000000 -0800
+++ perl/configure.com 2007-02-07 10:45:59.000000000 -0800
@@ -52,7 +52,8 @@
$ uselargefiles = "n"
$ usesitecustomize = "n"
$ C_Compiler_Replace = "CC="
-$ Thread_Live_Dangerously = "MT="
+$ thread_upcalls = "MTU="
+$ thread_kernel = "MTK="
$ use_two_pot_malloc = "N"
$ use_pack_malloc = "N"
$ use_debugmalloc = "N"
@@ -903,7 +904,7 @@
$ config_symbols2
="|prefix|privlib|privlibexp|scriptdir|sitearch|sitearchexp|sitebin|sitelib|sitelib_stem|sitelibexp|try_cxx|use64bitall|use64bitint|"
$ config_symbols3
="|usecasesensitive|usedefaulttypes|usedevel|useieee|useithreads|usemultiplicity|usemymalloc|usedebugging_perl|useperlio|usesecurelog|"
$ config_symbols4
="|usethreads|usevmsdebug|usefaststdio|usemallocwrap|unlink_all_versions|uselargefiles|usesitecustomize|"
-$ config_symbols5 ="|buildmake|builder|"
+$ config_symbols5 ="|buildmake|builder|usethreadupcalls|usekernelthreads"
$!
$ open/read CONFIG 'config_sh'
$ rd_conf_loop:
@@ -1194,6 +1195,9 @@
$! Add _ROOT to make install PERL_ROOT differ from build directory.
$ prefix = prefixbase + "_ROOT.]"
$ ENDIF
+$ ! more redundant scrubbing of values
+$ prefix = prefix - "000000."
+$ IF F$LOCATE(".]",prefix) .EQ. F$LENGTH(prefix) THEN prefix = prefix - "]" +
".]"
$ src = prefix
$!: determine root of directory hierarchy where package will be installed.
$ dflt = prefix
@@ -2430,28 +2434,50 @@
$ ELSE
$ use_5005_threads="Y"
$ ENDIF
-$ ! Are they on VMS 7.1 on an alpha or itanium?
-$ if (archname.nes."VMS_VAX").and.("''f$extract(1,3,
f$getsyi(""version""))'".ges."7.1")
+$ ! Are they on VMS 7.1 or greater?
+$ IF "''f$extract(1,3, f$getsyi(""version""))'" .GES. "7.1"
$ THEN
$ echo ""
-$ echo "Threaded perl can be linked to use multiple kernel threads"
-$ echo "and system upcalls on VMS 7.1+ on Alpha systems. This feature"
-$ echo "allows multiple threads to execute simultaneously on an SMP"
-$ echo "system as well as preventing a single thread from blocking"
-$ 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)."
-$ bool_dflt = "n"
-$ rp = "Enable multiple kernel threads and upcalls? [''bool_dflt'] "
+$ echo "Threaded Perl can be linked to use system upcalls on your system.
This feature"
+$ echo "allows the thread scheduler to be made aware of system events
(such as I/O)"
+$ echo "so as to prevent a single thread from blocking all the threads in
a program,"
+$ echo "even on a single-processor machine."
+$ bool_dflt = "y"
+$ IF f$type(usethreadupcalls) .NES. ""
+$ THEN
+$ if .not. usethreadupcalls .or. usethreadupcalls .eqs. "undef"
then bool_dflt="n"
+$ ENDIF
+$ rp = "Enable thread upcalls? [''bool_dflt'] "
$ gosub myread
-$ if ans
+$ IF ans
$ THEN
-$ Thread_Live_Dangerously = "MT=MT=1"
+$ thread_upcalls = "MTU=MTU=1"
+$ usethreadupcalls = "define"
+$ ! Are they on alpha or itanium?
+$ IF (archname .NES. "VMS_VAX") .AND. ("''f$extract(1,3,
f$getsyi(""version""))'" .GES. "7.2")
+$ THEN
+$ echo ""
+$ echo "Threaded Perl can be linked to use multiple kernel
threads on your system."
+$ echo "This feature allows multiple user threads to make use of
multiple CPUs on
+$ echo "a multi-processor machine."
+$ bool_dflt = "n"
+$ IF f$type(usekernelthreads) .nes. ""
+$ THEN
+$ if usekernelthreads .or. usekernelthreads .eqs.
"define" then bool_dflt="y"
+$ ENDIF
+$ rp = "Enable multiple kernel threads? [''bool_dflt'] "
+$ gosub myread
+$ IF ans
+$ THEN
+$ thread_kernel = "MTK=MTK=1"
+$ usekernelthreads = "define"
+$ ENDIF
$ ENDIF
$ ENDIF
$ ENDIF
$ ENDIF
+$ IF F$TYPE(usethreadupcalls) .EQS. "" THEN usethreadupcalls = "undef"
+$ IF F$TYPE(usekernelthreads) .EQS. "" THEN usekernelthreads = "undef"
$ IF archname .NES. "VMS_VAX"
$ THEN
$! Case sensitive?
@@ -5652,8 +5678,8 @@
$! WC "d_bsdpgrp='undef'"
$ WC "d_bsdgetpgrp='undef'"
$ WC "d_bsdsetpgrp='undef'"
-$ WC "d_builtin_choose_expr='undef'"
-$ WC "d_builtin_expect='undef'"
+$ WC "d_builtin_choose_expr='undef'" ! GCC only
+$ WC "d_builtin_expect='undef'" ! GCC only
$ WC "d_bzero='" + d_bzero + "'"
$ WC "d_casti32='define'"
$ WC "d_castneg='define'"
@@ -6256,9 +6282,14 @@
$ WC "shortsize='" + shortsize + "'"
$ WC "shrplib='define'"
$ WC "sig_name='" + sig_name + "'"
-$ tmp = "sig_name_init='" + sig_name_init + "'"
-$ WC/symbol tmp
-$ DELETE/SYMBOL tmp
+$ IF (f$length(sig_name_init) .GE. 1024)
+$ THEN
+$ tmp = "sig_name_init='" + sig_name_init + "'"
+$ WC/symbol tmp
+$ DELETE/SYMBOL tmp
+$ ELSE
+$ WC "sig_name_init='" + sig_name_init + "'"
+$ ENDIF
$ WC "sig_num='" + sig_num + "'"
$ WC "sig_num_init='" + sig_num_init + "'"
$ WC "sig_count='" + sig_count + "'"
@@ -6314,6 +6345,7 @@
$ WC "usefaststdio='" + usefaststdio + "'"
$ WC "useieee='" + useieee + "'" ! VMS-specific
$ WC "useithreads='" + useithreads + "'"
+$ WC "usekernelthreads='" + usekernelthreads + "'" ! VMS-specific
$ WC "uselargefiles='" + uselargefiles + "'"
$ WC "uselongdouble='" + uselongdouble + "'"
$ WC "usemorebits='" + usemorebits + "'"
@@ -6327,6 +6359,7 @@
$ WC "usesitecustomize='" + usesitecustomize + "'"
$ WC "usesocks='undef'"
$ WC "usethreads='" + usethreads + "'"
+$ WC "usethreadupcalls='" + usethreadupcalls + "'" ! VMS-specific
$ WC "usevendorprefix='" + "'" ! try to say no, though we'll be ignored as of
MM 5.90_01
$ WC "usevfork='true'"
$ WC "usevmsdebug='" + usevmsdebug + "'" ! VMS-specific
@@ -6645,7 +6678,7 @@
$ DEFINE/USER_MODE sys$output 'UUmakefile'
$ mcr []munchconfig 'config_sh' 'Makefile_SH' "''DECC_REPLACE'"
"''DECCXX_REPLACE'" "''ARCH_TYPE'" "''GNUC_REPLACE'" -
"''SOCKET_REPLACE'" "''THREAD_REPLACE'" "''C_Compiler_Replace'"
"''MALLOC_REPLACE'" -
-"''Thread_Live_Dangerously'" "PV=''version'" "FLAGS=FLAGS=''extra_flags'"
"''LARGEFILE_REPLACE'"
+"''THREAD_UPCALLS'" "''THREAD_KERNEL'" "PV=''version'"
"FLAGS=FLAGS=''extra_flags'" "''LARGEFILE_REPLACE'"
$! Clean up after ourselves
$ DELETE/NOLOG/NOCONFIRM []munchconfig.exe;
$!
@@ -6886,8 +6919,6 @@
$ pcsi_producer = f$trnlnm("PCSI_PRODUCER")
$ if pcsi_producer .eqs. ""
$ then
-$ prefix = prefix - "000000."
-$ IF F$LOCATE(".]",prefix) .EQ. F$LENGTH(prefix) THEN prefix = prefix - "]"
+ ".]"
$ WRITE CONFIG "$ define/translation=concealed ''vms_prefix' ''prefix'"
$ else
$ WRITE CONFIG "$ myproc = f$environment(""PROCEDURE"")"
@@ -6902,12 +6933,6 @@
$ WRITE CONFIG "$ define/translation=concealed ''vms_prefix'
'myroot_dev'['myroot_dir'.]"
$ WRITE CONFIG "$ endif"
$ endif
-$
-$ prefix = prefix - "000000."
-$ IF F$LOCATE(".]",prefix) .EQ. F$LENGTH(prefix) THEN prefix = prefix - "]" +
".]"
-$ WRITE CONFIG "$ define/translation=concealed ''vms_prefix' ''prefix'"
-
-
$ WRITE CONFIG "$ ext = "".exe"""
$ IF sharedperl
$ THEN
@@ -6939,9 +6964,6 @@
$ WRITE CONFIG "$ set command ''vms_prefix':[000000]''packageup'.CLD"
$ ENDIF
$ ENDIF ! perl_symbol
-$ WRITE CONFIG "$ define/nolog pod2text ''vms_prefix':[lib.pod]pod2text.com"
-$ WRITE CONFIG "$ define/nolog pod2html ''vms_prefix':[lib.pod]pod2html.com"
-$ WRITE CONFIG "$ define/nolog pod2man ''vms_prefix':[lib.pod]pod2man.com"
$!
$ IF (tzneedset)
$ THEN
@@ -6964,16 +6986,16 @@
$ WRITE CONFIG "$ h2xs == """ + perl_setup_perl + "
''vms_prefix':[utils]h2xs.com"""
$ WRITE CONFIG "$ instmodsh == """ + perl_setup_perl + "
''vms_prefix':[utils]instmodsh.com"""
$ WRITE CONFIG "$ libnetcfg == """ + perl_setup_perl + "
''vms_prefix':[utils]libnetcfg.com"""
-$ WRITE CONFIG "$ perlbug == """ + perl_setup_perl + "
''vms_prefix':[lib]perlbug.com"""
+$ WRITE CONFIG "$ perlbug == """ + perl_setup_perl + "
''vms_prefix':[utils]perlbug.com"""
$ WRITE CONFIG "$!perlcc == """ + perl_setup_perl + "
''vms_prefix':[utils]perlcc.com"""
-$ WRITE CONFIG "$ perldoc == """ + perl_setup_perl + "
''vms_prefix':[lib.pods]perldoc.com """"-t"""""""
+$ WRITE CONFIG "$ perldoc == """ + perl_setup_perl + "
''vms_prefix':[utils]perldoc.com """"-t"""""""
$ WRITE CONFIG "$ perlivp == """ + perl_setup_perl + "
''vms_prefix':[utils]perlivp.com"""
$ WRITE CONFIG "$ piconv == """ + perl_setup_perl + "
''vms_prefix':[utils]piconv.com"""
$ WRITE CONFIG "$ pl2pm == """ + perl_setup_perl + "
''vms_prefix':[utils]pl2pm.com"""
-$ WRITE CONFIG "$ pod2html == """ + perl_setup_perl + "
''vms_prefix':[utils]pod2html"""
-$ WRITE CONFIG "$ pod2latex == """ + perl_setup_perl + "
''vms_prefix':[lib.pod]pod2latex.com"""
-$ WRITE CONFIG "$ pod2text == """ + perl_setup_perl + "
''vms_prefix':[utils]pod2text"""
-$ WRITE CONFIG "$!pod2man == """ + perl_setup_perl + "
''vms_prefix':[utils]pod2man"""
+$ WRITE CONFIG "$ pod2html == """ + perl_setup_perl + "
''vms_prefix':[utils]pod2html.com"""
+$ WRITE CONFIG "$ pod2latex == """ + perl_setup_perl + "
''vms_prefix':[utils]pod2latex.com"""
+$ WRITE CONFIG "$ pod2text == """ + perl_setup_perl + "
''vms_prefix':[utils]pod2text.com"""
+$ WRITE CONFIG "$!pod2man == """ + perl_setup_perl + "
''vms_prefix':[utils]pod2man.com"""
$ WRITE CONFIG "$ pod2usage == """ + perl_setup_perl + "
''vms_prefix':[utils]pod2usage.com"""
$ WRITE CONFIG "$ podchecker == """ + perl_setup_perl + "
''vms_prefix':[utils]podchecker.com"""
$ WRITE CONFIG "$ podselect == """ + perl_setup_perl + "
''vms_prefix':[utils]podselect.com"""
==== //depot/maint-5.8/perl/thread.h#20 (text) ====
Index: perl/thread.h
--- perl/thread.h#19~29947~ 2007-01-24 05:54:09.000000000 -0800
+++ perl/thread.h 2007-02-07 10:45:59.000000000 -0800
@@ -98,6 +98,11 @@
# define THREAD_CREATE_NEEDS_STACK (32*1024)
#endif
+#ifdef __VMS
+ /* Default is 1024 on VAX, 8192 otherwise */
+# define THREAD_CREATE_NEEDS_STACK (32*1024)
+#endif
+
#ifdef I_MACH_CTHREADS
/* cthreads interface */
==== //depot/maint-5.8/perl/vms/descrip_mms.template#44 (text) ====
Index: perl/vms/descrip_mms.template
--- perl/vms/descrip_mms.template#43~28109~ 2006-05-05 10:26:10.000000000
-0700
+++ perl/vms/descrip_mms.template 2007-02-07 10:45:59.000000000 -0800
@@ -29,7 +29,8 @@
~SOCKET~
~MALLOC~
~CC~
-~MT~
+~MTK~
+~MTU~
~FLAGS~
~LARGEFILE~
@@ -210,6 +211,16 @@
THREADH =
.endif
+.ifdef MTU
+.ifdef MTK
+MTHREADLINKFLAGS = /THREADS=(MULTIPLE_KERNEL,UPCALLS)
+.else
+MTHREADLINKFLAGS = /THREADS=UPCALLS
+.endif
+.else
+MTHREADLINKFLAGS =
+.endif
+
# C preprocessor manifest "DEBUGGING" ==> perl -D, not the VMS debugger
.IFDEF LARGEFILE
CFLAGS = $(XTRACCFLAGS)$(DBGCCFLAGS)$(FLAGS)/Define=$(LARGEFILE)
@@ -432,7 +443,7 @@
.ifdef __DEBUG__
# Link an extra perl that doesn't invoke the debugger
perl : $(DBG)perl$(E)
- Link
$(LINKFLAGS)/NoDebug/Trace/NoMap/NoCross/NoFull/Exe=N$(DBG)perl$(E)
perlmain$(O), perlshr.opt/Option, perlshr_attr.opt/Option $(CRTLOPTS)
+ Link
$(LINKFLAGS)$(MTHREADLINKFLAGS)/NoDebug/Trace/NoMap/NoCross/NoFull/Exe=N$(DBG)perl$(E)
perlmain$(O), perlshr.opt/Option, perlshr_attr.opt/Option $(CRTLOPTS)
.else
perl : $(DBG)perl$(E)
@ Continue
@@ -440,11 +451,7 @@
$(DBG)perl$(E) : perlmain$(O), $(DBG)perlshr$(E), $(MINIPERL_EXE)
@ @[.vms]genopt "PerlShr.Opt/Write" "|"
"''F$Environment("Default")'$(DBG)PerlShr$(E)/Share"
-.ifdef MT
- Link $(LINKFLAGS)/Exe=$(MMS$TARGET) perlmain$(O), perlshr.opt/Option,
perlshr_attr.opt/Option $(CRTLOPTS)/THREAD=(MULTI,UPCALL)
-.else
- Link $(LINKFLAGS)/Exe=$(MMS$TARGET) perlmain$(O), perlshr.opt/Option,
perlshr_attr.opt/Option $(CRTLOPTS)
-.endif
+ Link $(LINKFLAGS)$(MTHREADLINKFLAGS)/Exe=$(MMS$TARGET) perlmain$(O),
perlshr.opt/Option, perlshr_attr.opt/Option $(CRTLOPTS)
$(DBG)perlshr$(E) : $(DBG)libperl$(OLB) $(extobj) $(DBG)perlshr_xtras.ts
Link $(LINKFLAGS)/Share=$(MMS$TARGET) $(extobj)
[]$(DBG)perlshr_bld.opt/Option, perlshr_attr.opt/Option
==== //depot/maint-5.8/perl/vms/gen_shrfls.pl#4 (text) ====
Index: perl/vms/gen_shrfls.pl
--- perl/vms/gen_shrfls.pl#3~25806~ 2005-10-19 06:29:02.000000000 -0700
+++ perl/vms/gen_shrfls.pl 2007-02-07 10:45:59.000000000 -0800
@@ -60,6 +60,10 @@
chomp $isvax;
print "\$isvax: \\$isvax\\\n" if $debug;
+$isi64 = `\$ Write Sys\$Output \(F\$GetSyI(\"HW_MODEL\") .GE. 4096`;
+chomp $isi64;
+print "\$isi64: \\$isi64\\\n" if $debug;
+
print "Input \$cc_cmd: \\$cc_cmd\\\n" if $debug;
$docc = ($cc_cmd !~ /^~~/);
print "\$docc = $docc\n" if $debug;
@@ -258,8 +262,14 @@
}
unless ($isgcc) {
- print OPTBLD "PSECT_ATTR=\$GLOBAL_RO_VARS,PIC,NOEXE,RD,NOWRT,SHR\n";
- print OPTBLD "PSECT_ATTR=\$GLOBAL_RW_VARS,PIC,NOEXE,RD,WRT,NOSHR\n";
+ if ($isi64) {
+ print OPTBLD "PSECT_ATTR=\$GLOBAL_RO_VARS,NOEXE,RD,NOWRT,SHR\n";
+ print OPTBLD "PSECT_ATTR=\$GLOBAL_RW_VARS,NOEXE,RD,WRT,NOSHR\n";
+ }
+ else {
+ print OPTBLD "PSECT_ATTR=\$GLOBAL_RO_VARS,PIC,NOEXE,RD,NOWRT,SHR\n";
+ print OPTBLD "PSECT_ATTR=\$GLOBAL_RW_VARS,PIC,NOEXE,RD,WRT,NOSHR\n";
+ }
}
print OPTBLD "case_sensitive=yes\n" if $care_about_case;
foreach $var (sort (keys %vars,keys %cvars)) {
End of Patch.