$ use_debugmalloc = "N"
$ ccflags = ""
$ static_ext = ""
+$ dynamic_ext = ""
$ nonxs_ext = ""
$ vms_default_directory_name = F$ENVIRONMENT("DEFAULT")
$ max_allowed_dir_depth = 3 ! e.g. [A.B.PERLxxx] not [A.B.C.PERLxxx]
$Shut_up:
$ IF F$Mode() .eqs. "BATCH"
$ THEN
-$ STDOUT = F$PARSE(F$GETQUI("DISPLAY_ENTRY", "JOB_NAME"), -
- F$GETQUI("DISPLAY_ENTRY", "LOG_SPECIFICATION"), ".LOG")
-$ WRITE SYS$OUTPUT "Warning: Executing in batch mode. To avoid file locking conflicts,"
-$ WRITE SYS$OUTPUT "output intended for SYS$OUTPUT will be sent to a new version"
+$ x = F$GETQUI("CANCEL_OPERATION") ! clear the deck
+$ x = "THIS_JOB"
+$ bproc_queue = f$getqui("DISPLAY_QUEUE","QUEUE_NAME","*",x)
+$ bproc_entry = f$getqui("DISPLAY_JOB","ENTRY_NUMBER",,x)
+$ bproc_name = f$getqui("DISPLAY_JOB","JOB_NAME",,x)
+$ bproc_log_spec = f$getqui("DISPLAY_JOB","LOG_SPECIFICATION",,x)
+$ STDOUT = F$PARSE(bproc_name, bproc_log_spec, ".LOG")
+$ WRITE SYS$OUTPUT "Writing output of entry ''bproc_entry' in queue ''bproc_queue' to a new version of: "
$ WRITE SYS$OUTPUT STDOUT
+$ DELETE_/SYMBOL x
+$ DELETE_/SYMBOL bproc_queue
+$ DELETE_/SYMBOL bproc_entry
+$ DELETE_/SYMBOL bproc_name
+$ DELETE_/SYMBOL bproc_log_spec
$ ELSE
$ STDOUT = F$TRNLNM("SYS$OUTPUT")
$ ENDIF
$ OPEN/READ CONFIG 'manifestfound'
$ext_loop:
$ READ/END_OF_FILE=end_ext/ERROR=end_ext CONFIG line
-$ IF F$EXTRACT(0,4,line) .NES. "ext/" .AND. -
- F$EXTRACT(0,8,line) .NES. "vms/ext/" THEN goto ext_loop
+$ IF F$EXTRACT(0,4,line) .NES. "ext/" THEN goto ext_loop
$ line = F$EDIT(line,"COMPRESS")
$ line = F$ELEMENT(0," ",line)
-$ line_len = F$LENGTH(line)
-$ IF F$EXTRACT(line_len - 12,12,line) .NES. "/Makefile.PL" THEN goto ext_loop
-$ IF F$EXTRACT(0,4,line) .EQS. "ext/" THEN -
- xxx = F$EXTRACT(4,line_len - 16,line)
+$ IF F$EXTRACT(0,4,line) .EQS. "ext/"
+$ THEN
+$ xxx = F$ELEMENT(1,"/",line)
+$ IF F$SEARCH("[-.ext]''xxx'.DIR;1") .EQS. "" THEN GOTO ext_loop
+$ ENDIF
$ IF xxx .EQS. "DynaLoader" THEN goto ext_loop ! omit
-$ IF xxx .EQS. "SDBM_File/sdbm" THEN goto ext_loop ! sub extension - omit
-$ IF xxx .EQS. "Devel/PPPort/harness" THEN goto ext_loop ! sub extension - omit
-$ IF F$EXTRACT(0,7,xxx) .EQS. "Encode/" THEN goto ext_loop ! sub extension - omit
-$ IF xxx .EQS. "B/C" THEN goto ext_loop ! sub extension - omit
-$ IF F$EXTRACT(0,8,line) .EQS. "vms/ext/" THEN -
- xxx = "VMS/" + F$EXTRACT(8,line_len - 20,line)
$!
$! (extspec = xxx) =~ tr!-!/!
$ extspec = ""
$ idx = 0
+$ extension_dir_name = xxx
$ replace_dash_with_slash:
$ before = F$ELEMENT(idx, "-", xxx)
$ IF before .EQS. "-" THEN goto end_replace_dash_with_slash
$
$ end_replace_dash_with_slash:
$
-$ known_extensions = known_extensions + " ''extspec'"
+$ xxx = known_extensions
+$ gosub may_already_have_extension
+$ IF $STATUS .EQ. 1
+$ THEN
+$ xxx = nonxs_ext
+$ gosub may_already_have_extension
+$ ENDIF
+$ IF $STATUS .NE. 1 THEN goto ext_loop
+$ goto found_new_extension
+$!
+$ may_already_have_extension:
+$ idx = F$LOCATE(extspec, xxx)
+$ extlen = F$LENGTH(xxx)
+$ IF idx .EQ. extlen THEN return 1
+$! But "Flirble" may just be part of "Acme-Flirble"
+$ IF idx .GT. 0 .AND. F$EXTRACT(idx - 1, 1, xxx) .NES. " "
+$ THEN
+$ xxx = F$EXTRACT(idx + F$LENGTH(extspec) + 1, extlen, xxx)
+$ GOTO may_already_have_extension
+$ ENDIF
+$! But "Foo" may just be part of "Foo-Bar" so check for equality.
+$ xxx = F$EXTRACT(idx, extlen - idx, xxx)
+$ IF F$ELEMENT(0, " ", xxx) .EQS. extspec
+$ THEN
+$ RETURN 3
+$ ELSE
+$ xxx = F$EXTRACT(F$LENGTH(extspec) + 1, extlen, xxx)
+ GOTO may_already_have_extension
+$ ENDIF
+$!
+$ found_new_extension:
+$ IF F$SEARCH("[-.ext.''extension_dir_name']*.xs") .NES. ""
+$ THEN
+$ known_extensions = known_extensions + " ''extspec'"
+$ ELSE
+$ nonxs_ext = nonxs_ext + " ''extspec'"
+$ ENDIF
$ goto ext_loop
$end_ext:
$ close CONFIG
$ DELETE/SYMBOL xxx
$ DELETE/SYMBOL idx
$ DELETE/SYMBOL extspec
+$ DELETE/SYMBOL extlen
+$ DELETE/SYMBOL extension_dir_name
$ known_extensions = F$EDIT(known_extensions,"TRIM,COMPRESS")
$ dflt = known_extensions
$ IF ccname .NES. "DEC" .AND. ccname .NES. "CXX"
$ THEN
$ dflt = dflt - "Socket" ! optional on VMS
$ ENDIF
-$ ! Build this one only for threads without ithreads
-$ IF F$TYPE(useithreads) .EQS. "" .OR. .NOT. use_threads
-$ THEN
-$ dflt = dflt - "Thread"
-$ ELSE
-$ IF useithreads .OR. useithreads .EQS. "define" THEN dflt = dflt - "Thread"
-$ ENDIF
-$ dflt = dflt - "Win32API/File" - "Win32CORE" - "Win32" ! need Dave Cutler's other project
+$ dflt = dflt - "Win32API/File" - "Win32" ! need Dave Cutler's other project
+$ nonxs_ext = nonxs_ext - "Win32CORE"
$ dflt = F$EDIT(dflt,"TRIM,COMPRESS")
+$ nonxs_ext = F$EDIT(nonxs_ext,"TRIM,COMPRESS")
$!
$! Ask for their default list of extensions to build
$ echo ""
$ echo "Which modules do you want to build into perl?"
$ rp = "[''dflt'] "
$ GOSUB myread
-$ extensions = F$EDIT(ans,"TRIM,COMPRESS")
+$ dynamic_ext = F$EDIT(ans,"TRIM,COMPRESS")
$!
$! %Config-I-VMS, determine build/make utility here (make gmake mmk mms)
$ echo ""
$ WC "d_futimes='undef'"
$ WC "d_gdbmndbm_h_uses_prototypes='undef'"
$ WC "d_gdbm_ndbm_h_uses_prototypes='undef'"
+$ WC "d_getaddrinfo='undef'"
$ WC "d_getcwd='define'"
$ WC "d_getespwnam='undef'"
$ WC "d_getfsstat='undef'"
$ WC "d_getlogin='define'"
$ WC "d_getmnt='undef'"
$ WC "d_getmntent='undef'"
+$ WC "d_getnameinfo='undef'"
$ WC "d_getnbyaddr='" + d_getnbyaddr + "'"
$ WC "d_getnbyname='" + d_getnbyname + "'"
$ WC "d_getnent='" + d_getnent + "'"
$ WC "d_inc_version_list='undef'"
$ WC "d_index='" + d_index + "'"
$ WC "d_inetaton='undef'"
+$ WC "d_inetntop='undef'"
+$ WC "d_inetpton='undef'"
$ WC "d_int64_t='" + d_int64_t + "'"
$ WC "d_isascii='define'"
$ WC "d_isfinite='undef'"
$ WC "drand01='" + drand01 + "'"
$ WC "dtrace='" + "'"
$!
-$! The extensions symbol may be quite long
+$! The dynamic_ext symbol may be quite long
$!
-$ tmp = "dynamic_ext='" + extensions + "'"
+$ tmp = "dynamic_ext='" + dynamic_ext + "'"
$ WC/symbol tmp
$ DELETE/SYMBOL tmp
$ WC "eagain=' '"
$ WC "eunicefix=':'"
$ WC "exe_ext='" + exe_ext + "'"
$!
-$! The extensions symbol may be quite long
+$! The extensions symbols may be quite long
$!
-$ tmp = "extensions='" + extensions + "'"
+$ tmp = "extensions='" + nonxs_ext + " " + dynamic_ext + "'"
$ WC/symbol tmp
$ DELETE/SYMBOL tmp
$ WC "fflushNULL='define'"
$ WC "netdb_host_type='" + netdb_host_type + "'"
$ WC "netdb_name_type='" + netdb_name_type + "'"
$ WC "netdb_net_type='" + netdb_net_type + "'"
-$ WC "nonxs_ext='" + nonxs_ext + "'"
+$ tmp = "nonxs_ext='" + nonxs_ext + "'"
+$ WC/symbol tmp
+$ DELETE/SYMBOL tmp
$ WC "nveformat='" + nveformat + "'"
$ WC "nvfformat='" + nvfformat + "'"
$ WC "nvgformat='" + nvgformat + "'"
$ WC "ranlib='" + "'"
$ WC "rd_nodata=' '"
$ WC "revision='" + revision + "'"
-$ WC "sGMTIME_max='2147483647'"
+$ WC "sGMTIME_max='4294967295'"
$ WC "sGMTIME_min='0'"
-$ WC "sLOCALTIME_max='2147483647'"
+$ WC "sLOCALTIME_max='4294967295'"
$ WC "sLOCALTIME_min='0'"
$ WC "sPRId64='" + sPRId64 + "'"
$ WC "sPRIEldbl='" + sPRIEUldbl + "'"
$! FIXME: "-" is an operator and illegal in a symbol name -- cpanp-run-perl can't work
$!$ WRITE CONFIG "$ cpanp-run-perl == """ + perl_setup_perl + " ''vms_prefix':[utils]cpanp-run-perl.com"""
$ WRITE CONFIG "$ cpanp == """ + perl_setup_perl + " ''vms_prefix':[utils]cpanp.com"""
-$ IF F$LOCATE("Devel::DProf",extensions) .LT. F$LENGTH(extensions)
+$ IF F$LOCATE("Devel::DProf",dynamic_ext) .LT. F$LENGTH(dynamic_ext)
$ THEN
$ WRITE CONFIG "$ dprofpp == """ + perl_setup_perl + " ''vms_prefix':[utils]dprofpp.com"""
$ ENDIF