From 4b66dc28dcd5923fecbadefa83558f1d87d2a375 Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Thu, 18 Sep 2025 03:06:46 +1000 Subject: [PATCH] vfs update --- src/vfs/_config/punk_main.tcl | 82 +- src/vfs/_vfscommon.vfs/lib/app-punk/repl.tcl | 16 +- .../lib/app-punkshell/punkshell.tcl | 1 + .../_vfscommon.vfs/modules/punk/args-0.2.tm | 5 +- .../modules/punk/args/tclcore-0.1.0.tm | 2 +- .../modules/punk/console-0.1.1.tm | 666 +- .../modules/punk/libunknown-0.1.tm | 58 +- .../utility/scriptappwrappers/multishell.cmd | 43 +- .../_vfscommon.vfs/modules/punk/repl-0.1.2.tm | 64 +- .../modules/test/punk/args-0.1.5.tm | Bin 17085 -> 17085 bytes .../lib_tcl8/thread2.8.12/pkgIndex.tcl | 68 + .../lib_tcl8/thread2.8.12/thread2812.dll | Bin 0 -> 482199 bytes .../lib_tcl8/thread2.8.12/ttrace.tcl | 942 ++ .../lib_tcl8/tclparser1.9/pkgIndex.tcl | 2 + .../lib_tcl8/tclparser1.9/tclparser19.dll | Bin 0 -> 18944 bytes .../lib_tcl8/tdbc1.1.12/libtdbcstub1112.a | Bin 0 -> 1898 bytes .../lib_tcl8/tdbc1.1.12/pkgIndex.tcl | 26 + .../punk8win.vfs/lib_tcl8/tdbc1.1.12/tdbc.tcl | 922 ++ .../lib_tcl8/tdbc1.1.12/tdbc1112.dll | Bin 0 -> 97921 bytes .../lib_tcl8/tdbc1.1.12/tdbcConfig.sh | 81 + .../lib_tcl8/tdbcmysql1.1.12/pkgIndex.tcl | 14 + .../tdbcmysql.tcl | 30 +- .../tdbcmysql1.1.12/tdbcmysql1112.dll | Bin 0 -> 256257 bytes .../lib_tcl8/tdbcmysql1.1.5/pkgIndex.tcl | 14 - .../lib_tcl8/tdbcmysql1.1.5/tdbcmysql115.dll | Bin 44544 -> 0 bytes .../lib_tcl8/tdbcodbc1.1.12/pkgIndex.tcl | 14 + .../tdbcodbc.tcl | 2 +- .../lib_tcl8/tdbcodbc1.1.12/tdbcodbc1112.dll | Bin 0 -> 269028 bytes .../lib_tcl8/tdbcodbc1.1.5/pkgIndex.tcl | 14 - .../lib_tcl8/tdbcodbc1.1.5/tdbcodbc115.dll | Bin 55808 -> 0 bytes .../lib_tcl8/tdbcpostgres1.1.12/pkgIndex.tcl | 14 + .../tdbcpostgres.tcl | 0 .../tdbcpostgres1.1.12/tdbcpostgres1112.dll | Bin 0 -> 433586 bytes .../lib_tcl8/tdbcpostgres1.1.5/pkgIndex.tcl | 14 - .../tdbcpostgres1.1.5/tdbcpostgres115.dll | Bin 41472 -> 0 bytes .../lib_tcl8/tdom0.9.3/libtdomstub093.a | Bin 1566 -> 0 bytes .../lib_tcl8/tdom0.9.3/pkgIndex.tcl | 6 - .../lib_tcl8/tdom0.9.3/tdom093.dll | Bin 690688 -> 0 bytes .../lib_tcl8/tdom0.9.6/libtdomstub096.a | Bin 0 -> 1446 bytes .../lib_tcl8/tdom0.9.6/pkgIndex.tcl | 12 + .../{tdom0.9.3 => tdom0.9.6}/tdom.tcl | 127 +- .../lib_tcl8/tdom0.9.6/tdom096.dll | Bin 0 -> 894464 bytes .../lib_tcl8/thread2.8.12/pkgIndex.tcl | 68 + .../lib_tcl8/thread2.8.12/thread2812.dll | Bin 0 -> 482199 bytes .../lib_tcl8/thread2.8.12/ttrace.tcl | 942 ++ .../twapi-5.0b1/win32-ix86/tcl9twapi50b1.dll | Bin 530432 -> 0 bytes .../twapi-5.0b1/win32-ix86/twapi50b1t.dll | Bin 531456 -> 0 bytes .../win32-x86_64/tcl9twapi50b1.dll | Bin 658432 -> 0 bytes .../twapi-5.0b1/win32-x86_64/twapi50b1t.dll | Bin 652288 -> 0 bytes .../punk8win.vfs/lib_tcl8/twapi-5.0b1/wts.tcl | 64 - .../{twapi-5.0b1 => twapi5.1.1}/LICENSE | 58 +- .../{twapi-5.0b1 => twapi5.1.1}/README.md | 150 +- .../{twapi-5.0b1 => twapi5.1.1}/account.tcl | 2320 ++--- .../{twapi-5.0b1 => twapi5.1.1}/adsi.tcl | 54 +- .../{twapi-5.0b1 => twapi5.1.1}/apputil.tcl | 228 +- .../{twapi-5.0b1 => twapi5.1.1}/base.tcl | 3752 ++++---- .../{twapi-5.0b1 => twapi5.1.1}/clipboard.tcl | 568 +- .../{twapi-5.0b1 => twapi5.1.1}/com.tcl | 8476 ++++++++--------- .../{twapi-5.0b1 => twapi5.1.1}/console.tcl | 1472 +-- .../{twapi-5.0b1 => twapi5.1.1}/crypto.tcl | 6912 +++++++------- .../{twapi-5.0b1 => twapi5.1.1}/device.tcl | 1248 +-- .../{twapi-5.0b1 => twapi5.1.1}/etw.tcl | 2780 +++--- .../{twapi-5.0b1 => twapi5.1.1}/eventlog.tcl | 782 +- .../{twapi-5.0b1 => twapi5.1.1}/evt.tcl | 1436 +-- .../{twapi-5.0b1 => twapi5.1.1}/handle.tcl | 472 +- .../{twapi-5.0b1 => twapi5.1.1}/input.tcl | 1246 +-- .../{twapi-5.0b1 => twapi5.1.1}/msi.tcl | 864 +- .../{twapi-5.0b1 => twapi5.1.1}/mstask.tcl | 1490 +-- .../multimedia.tcl | 150 +- .../{twapi-5.0b1 => twapi5.1.1}/namedpipe.tcl | 206 +- .../{twapi-5.0b1 => twapi5.1.1}/network.tcl | 2248 ++--- .../{twapi-5.0b1 => twapi5.1.1}/nls.tcl | 934 +- .../{twapi-5.0b1 => twapi5.1.1}/os.tcl | 2426 ++--- .../{twapi-5.0b1 => twapi5.1.1}/pdh.tcl | 1968 ++-- .../{twapi-5.0b1 => twapi5.1.1}/pkgIndex.tcl | 200 +- .../{twapi-5.0b1 => twapi5.1.1}/power.tcl | 272 +- .../{twapi-5.0b1 => twapi5.1.1}/printer.tcl | 116 +- .../{twapi-5.0b1 => twapi5.1.1}/process.tcl | 4056 ++++---- .../{twapi-5.0b1 => twapi5.1.1}/rds.tcl | 382 +- .../{twapi-5.0b1 => twapi5.1.1}/registry.tcl | 980 +- .../{twapi-5.0b1 => twapi5.1.1}/resource.tcl | 916 +- .../{twapi-5.0b1 => twapi5.1.1}/security.tcl | 4784 +++++----- .../{twapi-5.0b1 => twapi5.1.1}/service.tcl | 2374 ++--- .../{twapi-5.0b1 => twapi5.1.1}/share.tcl | 1932 ++-- .../{twapi-5.0b1 => twapi5.1.1}/shell.tcl | 1254 +-- .../{twapi-5.0b1 => twapi5.1.1}/sspi.tcl | 1602 ++-- .../{twapi-5.0b1 => twapi5.1.1}/storage.tcl | 1232 +-- .../{twapi-5.0b1 => twapi5.1.1}/synch.tcl | 188 +- .../{twapi-5.0b1 => twapi5.1.1}/tls.tcl | 2626 ++--- .../{twapi-5.0b1 => twapi5.1.1}/twapi.tcl | 1710 ++-- .../{twapi-5.0b1 => twapi5.1.1}/ui.tcl | 2860 +++--- .../{twapi-5.0b1 => twapi5.1.1}/win.tcl | 262 +- .../twapi5.1.1/win32-x86_64/twapi511.dll | Bin 0 -> 643072 bytes .../{twapi-5.0b1 => twapi5.1.1}/winlog.tcl | 608 +- .../{twapi-5.0b1 => twapi5.1.1}/winsta.tcl | 226 +- .../{twapi-5.0b1 => twapi5.1.1}/wmi.tcl | 446 +- .../lib_tcl8/udp1.0.12/pkgIndex.tcl | 2 + .../lib_tcl8/udp1.0.12/udp1012.dll | Bin 0 -> 54784 bytes .../punk8win.vfs/modules_tcl8/Thread-2.8.9.tm | Bin 14253 -> 0 bytes .../platform/win32_x86_64_tcl8-2.8.9.tm | Bin 79939 -> 0 bytes 100 files changed, 39424 insertions(+), 36157 deletions(-) create mode 100644 src/vfs/punk8_statictwapi.vfs/lib_tcl8/thread2.8.12/pkgIndex.tcl create mode 100644 src/vfs/punk8_statictwapi.vfs/lib_tcl8/thread2.8.12/thread2812.dll create mode 100644 src/vfs/punk8_statictwapi.vfs/lib_tcl8/thread2.8.12/ttrace.tcl create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tclparser1.9/pkgIndex.tcl create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tclparser1.9/tclparser19.dll create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbc1.1.12/libtdbcstub1112.a create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbc1.1.12/pkgIndex.tcl create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbc1.1.12/tdbc.tcl create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbc1.1.12/tdbc1112.dll create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbc1.1.12/tdbcConfig.sh create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbcmysql1.1.12/pkgIndex.tcl rename src/vfs/punk8win.vfs/lib_tcl8/{tdbcmysql1.1.5 => tdbcmysql1.1.12}/tdbcmysql.tcl (87%) create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbcmysql1.1.12/tdbcmysql1112.dll delete mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbcmysql1.1.5/pkgIndex.tcl delete mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbcmysql1.1.5/tdbcmysql115.dll create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbcodbc1.1.12/pkgIndex.tcl rename src/vfs/punk8win.vfs/lib_tcl8/{tdbcodbc1.1.5 => tdbcodbc1.1.12}/tdbcodbc.tcl (99%) create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbcodbc1.1.12/tdbcodbc1112.dll delete mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbcodbc1.1.5/pkgIndex.tcl delete mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbcodbc1.1.5/tdbcodbc115.dll create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbcpostgres1.1.12/pkgIndex.tcl rename src/vfs/punk8win.vfs/lib_tcl8/{tdbcpostgres1.1.5 => tdbcpostgres1.1.12}/tdbcpostgres.tcl (100%) create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbcpostgres1.1.12/tdbcpostgres1112.dll delete mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbcpostgres1.1.5/pkgIndex.tcl delete mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdbcpostgres1.1.5/tdbcpostgres115.dll delete mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdom0.9.3/libtdomstub093.a delete mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdom0.9.3/pkgIndex.tcl delete mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdom0.9.3/tdom093.dll create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdom0.9.6/libtdomstub096.a create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdom0.9.6/pkgIndex.tcl rename src/vfs/punk8win.vfs/lib_tcl8/{tdom0.9.3 => tdom0.9.6}/tdom.tcl (88%) create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/tdom0.9.6/tdom096.dll create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/thread2.8.12/pkgIndex.tcl create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/thread2.8.12/thread2812.dll create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/thread2.8.12/ttrace.tcl delete mode 100644 src/vfs/punk8win.vfs/lib_tcl8/twapi-5.0b1/win32-ix86/tcl9twapi50b1.dll delete mode 100644 src/vfs/punk8win.vfs/lib_tcl8/twapi-5.0b1/win32-ix86/twapi50b1t.dll delete mode 100644 src/vfs/punk8win.vfs/lib_tcl8/twapi-5.0b1/win32-x86_64/tcl9twapi50b1.dll delete mode 100644 src/vfs/punk8win.vfs/lib_tcl8/twapi-5.0b1/win32-x86_64/twapi50b1t.dll delete mode 100644 src/vfs/punk8win.vfs/lib_tcl8/twapi-5.0b1/wts.tcl rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/LICENSE (98%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/README.md (75%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/account.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/adsi.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/apputil.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/base.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/clipboard.tcl (68%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/com.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/console.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/crypto.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/device.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/etw.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/eventlog.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/evt.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/handle.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/input.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/msi.tcl (98%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/mstask.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/multimedia.tcl (95%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/namedpipe.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/network.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/nls.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/os.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/pdh.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/pkgIndex.tcl (76%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/power.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/printer.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/process.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/rds.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/registry.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/resource.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/security.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/service.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/share.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/shell.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/sspi.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/storage.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/synch.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/tls.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/twapi.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/ui.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/win.tcl (96%) create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/twapi5.1.1/win32-x86_64/twapi511.dll rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/winlog.tcl (97%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/winsta.tcl (96%) rename src/vfs/punk8win.vfs/lib_tcl8/{twapi-5.0b1 => twapi5.1.1}/wmi.tcl (96%) create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/udp1.0.12/pkgIndex.tcl create mode 100644 src/vfs/punk8win.vfs/lib_tcl8/udp1.0.12/udp1012.dll delete mode 100644 src/vfs/punk8win.vfs/modules_tcl8/Thread-2.8.9.tm delete mode 100644 src/vfs/punk8win.vfs/modules_tcl8/Thread/platform/win32_x86_64_tcl8-2.8.9.tm diff --git a/src/vfs/_config/punk_main.tcl b/src/vfs/_config/punk_main.tcl index 504ac490..abb96e87 100644 --- a/src/vfs/_config/punk_main.tcl +++ b/src/vfs/_config/punk_main.tcl @@ -149,6 +149,11 @@ apply { args { set topdir [file dirname $normscript] set found_starkit_tcl 0 set possible_lib_vfs_folders [glob -nocomplain -dir [file join $topdir lib] -type d vfs*] + if {$has_zipfs_attached} { + if {[file exists [zipfs root]/app/tcl_library]} { + lappend possible_lib_vfs_folders {*}[glob -nocomplain -dir [zipfs root]/app/tcl_library -type d vfs*] + } + } foreach test_folder $possible_lib_vfs_folders { #e.g /lib/vfs1.4.1 #we don't expect multiple vfs* folders - but we will process any found and load the pkgIndex.tcl from these folders. @@ -178,6 +183,7 @@ apply { args { #puts stderr [join [package names] \n] set original_packages [package names] + #This is what we were trying to avoid - a package require causing a scan of ::auto_path and tcl::tm::list if {![catch {package require starkit}]} { #known side-effects of starkit::startup #sets the ::starkit::mode variable to the way in which it was launched. One of: {starpack starkit unwrapped tclhttpd plugin service sourced} @@ -185,9 +191,11 @@ apply { args { #if mode not starpack, then: # - adds $::starkit::topdir/lib to the auto_path if not already present # - #In this context (vfs attached to tcl kit executable - we expect the launch mode to be 'starkit' + #In the context of a metakit vfs attached to tcl kit executable - we expect the launch mode to be 'starkit' set starkit_startmode [starkit::startup] - puts stderr "STARKIT MODE: $starkit_startmode" + #However - we may also get here for a zipfs enabled tcl with a zifps vfs attached - but which has vlerq, starkit and vfs libraries available, + #in which case the mode seems to be reported as 'unwrapped' + #puts stderr "STARKIT MODE: $starkit_startmode" } #puts "main.tcl 2)--> package name count: [llength [package names]]" foreach pkg [package names] { @@ -801,53 +809,43 @@ apply { args { #puts stderr "main.tcl tcl::tm::list:[tcl::tm::list]" } - if {1 || $has_zipfs_attached} { - #load libunknown without triggering the existing package unknown - #maint: also in punk::repl package - #-------------------------------------------------------- - set libunks [list] - foreach tm_path [tcl::tm::list] { - set punkdir [file join $tm_path punk] - if {![file exists $punkdir]} {continue} - lappend libunks {*}[glob -nocomplain -dir $punkdir -type f libunknown-*.tm] - } - set libunknown "" - set libunknown_version_sofar "" - foreach lib $libunks { - #expecting to be of form libunknown-.tm - set vtail [lindex [split [file tail $lib] -] 1] - set thisver [file rootname $vtail] ;#file rootname x.y.z.tm - if {$libunknown_version_sofar eq ""} { + + #-------------------------------------------------------- + #load libunknown without triggering the existing package unknown + #maint: also in punk::repl package + #-------------------------------------------------------- + set libunks [list] + foreach tm_path [tcl::tm::list] { + set punkdir [file join $tm_path punk] + if {![file exists $punkdir]} {continue} + lappend libunks {*}[glob -nocomplain -dir $punkdir -type f libunknown-*.tm] + } + set libunknown "" + set libunknown_version_sofar "" + foreach lib $libunks { + #expecting to be of form libunknown-.tm + set vtail [lindex [split [file tail $lib] -] 1] + set thisver [file rootname $vtail] ;#file rootname x.y.z.tm + if {$libunknown_version_sofar eq ""} { + set libunknown_version_sofar $thisver + set libunknown $lib + } else { + if {[package vcompare $thisver $libunknown_version_sofar] == 1} { set libunknown_version_sofar $thisver set libunknown $lib - } else { - if {[package vcompare $thisver $libunknown_version_sofar] == 1} { - set libunknown_version_sofar $thisver - set libunknown $lib - } } } - if {$libunknown ne ""} { - source $libunknown - if {[catch {punk::libunknown::init -caller main.tcl} errM]} { - puts "error initialising punk::libunknown\n$errM" - } + } + if {$libunknown ne ""} { + source $libunknown + if {[catch {punk::libunknown::init -caller main.tcl} errM]} { + puts "error initialising punk::libunknown\n$errM" } - #-------------------------------------------------------- - - - #set zr [::tcl::zipfs::root] ;#always ends with / ? - REVIEW - #if {[file join $zr app modules] in [tcl::tm::list]} { - # #todo - better way to find latest version - without package require - # set lib [file join $zr app modules punk libunknown.tm] - # if {[file exists $lib]} { - # source $lib - # punk::libunknown::init - # #package unknown {punk::libunknown::zipfs_tm_UnknownHandler punk::libunknown::zipfs_tclPkgUnknown} - # } - #} } + #-------------------------------------------------------- + #Now that new 'package unknown' mechanism is in place - we can use package require + #assert arglist has had 'dev|os|os-dev etc' first arg removed if it was present. if {[llength $arglist] == 1 && [lindex $arglist 0] eq "tclsh"} { diff --git a/src/vfs/_vfscommon.vfs/lib/app-punk/repl.tcl b/src/vfs/_vfscommon.vfs/lib/app-punk/repl.tcl index 3474eff0..c9fb0ed5 100644 --- a/src/vfs/_vfscommon.vfs/lib/app-punk/repl.tcl +++ b/src/vfs/_vfscommon.vfs/lib/app-punk/repl.tcl @@ -49,16 +49,20 @@ repl::init -safe 0 #flush stderr set replresult [repl::start stdin -title app-punk] -catch { - puts "app-punk ifneeded: [package ifneeded app-punk 1.0]" -} +#catch { +# puts "app-punk ifneeded: [package ifneeded app-punk 1.0]" +#} + #review if {[string is integer -strict $replresult]} { - puts stdout "repl.tcl exiting with numeric code $replresult" + #puts stdout "repl.tcl exiting with numeric code $replresult" exit $replresult } else { - puts stdout "repl.tcl result $replresult" - flush stdout + if {$replresult ne ""} { + #puts stdout "repl.tcl result $replresult" + puts stdout $replresult + flush stdout + } exit 0 } #puts "- repl app done -" diff --git a/src/vfs/_vfscommon.vfs/lib/app-punkshell/punkshell.tcl b/src/vfs/_vfscommon.vfs/lib/app-punkshell/punkshell.tcl index 1559f0ec..828d6da8 100644 --- a/src/vfs/_vfscommon.vfs/lib/app-punkshell/punkshell.tcl +++ b/src/vfs/_vfscommon.vfs/lib/app-punkshell/punkshell.tcl @@ -1,6 +1,7 @@ package provide app-punkshell 1.0 package require Thread +package require punk::lib ;#required for compat - lpop for some early Tcl 8.6 versions package require punk::args package require shellfilter package require punk::ansi diff --git a/src/vfs/_vfscommon.vfs/modules/punk/args-0.2.tm b/src/vfs/_vfscommon.vfs/modules/punk/args-0.2.tm index a6224c0d..7b6ee228 100644 --- a/src/vfs/_vfscommon.vfs/modules/punk/args-0.2.tm +++ b/src/vfs/_vfscommon.vfs/modules/punk/args-0.2.tm @@ -3036,8 +3036,11 @@ tcl::namespace::eval punk::args { #This mechanism gets less-than-useful results for oo methods #e.g {$obj} proc Get_caller {} { + set depth [info level] + set maxd [expr {min($depth,4)}] + set call_level [expr {-1 * $maxd}] #set call_level -3 ;#for get_dict call - set call_level -4 + #set call_level -4 set cmdinfo [tcl::dict::get [tcl::info::frame $call_level] cmd] #puts "-->$cmdinfo" #puts "-->[tcl::info::frame -3]" diff --git a/src/vfs/_vfscommon.vfs/modules/punk/args/tclcore-0.1.0.tm b/src/vfs/_vfscommon.vfs/modules/punk/args/tclcore-0.1.0.tm index d016c70a..6a4cc626 100644 --- a/src/vfs/_vfscommon.vfs/modules/punk/args/tclcore-0.1.0.tm +++ b/src/vfs/_vfscommon.vfs/modules/punk/args/tclcore-0.1.0.tm @@ -3498,7 +3498,7 @@ tcl::namespace::eval punk::args::tclcore { example, in ${$B}-dictionary${$N} mode, bigBoy sorts between bigbang and bigboy, and x10y sorts between x9y and x11y. Overrides the ${$B}-nocase${$N} option." -integer -type none -help\ - "Convert list elements to integers and use integer comparsion." + "Convert list elements to integers and use integer comparison." -real -type none -help\ "Convert list elements to floating-point values and use floating comparison." -command -type string -help\ diff --git a/src/vfs/_vfscommon.vfs/modules/punk/console-0.1.1.tm b/src/vfs/_vfscommon.vfs/modules/punk/console-0.1.1.tm index ea8d3f77..8634b4ec 100644 --- a/src/vfs/_vfscommon.vfs/modules/punk/console-0.1.1.tm +++ b/src/vfs/_vfscommon.vfs/modules/punk/console-0.1.1.tm @@ -129,57 +129,362 @@ namespace eval punk::console { #e.g external utils system API's. namespace export * } - + if {"windows" eq $::tcl_platform(platform)} { #accept args for all dummy/load functions so we don't have to match/update argument signatures here + set has_twapi [expr {! [catch {package require twapi}]}] + + if {$has_twapi} { + #this is really enableAnsi *processing* + proc enableAnsi {} { + #output handle modes + #Enable virtual terminal processing (sometimes off in older windows terminals) + #ENABLE_PROCESSED_OUTPUT = 0x0001 + #ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002 + #ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004 + #DISABLE_NEWLINE_AUTO_RETURN = 0x0008 + if {[catch {twapi::get_console_handle stdout} h_out]} { + puts stderr "enableAnsi failed: twapi cannot get console handle for stdout" + return + } - proc enableAnsi {args} { - #loopavoidancetoken (don't remove) - internal::define_windows_procs - internal::abort_if_loop - tailcall enableAnsi {*}$args - } - #review what raw mode means with regard to a specific channel vs terminal as a whole - proc enableRaw {args} { - #loopavoidancetoken (don't remove) - internal::define_windows_procs - internal::abort_if_loop - tailcall enableRaw {*}$args - } - proc disableRaw {args} { - #loopavoidancetoken (don't remove) - internal::define_windows_procs - internal::abort_if_loop - tailcall disableRaw {*}$args - } - proc enableVirtualTerminal {args} { - #loopavoidancetoken (don't remove) - internal::define_windows_procs - internal::abort_if_loop - tailcall enableVirtualTerminal {*}$args - } - proc disableVirtualTerminal {args} { - #loopavoidancetoken (don't remove) - internal::define_windows_procs - internal::abort_if_loop - tailcall disableVirtualTerminal {*}$args - } - set funcs [list disableAnsi enableProcessedInput disableProcessedInput] - foreach f $funcs { - proc $f {args} [string map [list %f% $f] { - set mybody [info body %f%] - internal::define_windows_procs - set newbody [info body %f%] - if {$newbody ne $mybody} { - tailcall %f% {*}$args + set oldmode_out [twapi::GetConsoleMode $h_out] + set newmode_out [expr {$oldmode_out | 4}] ;#don't enable processed output too, even though it's required. keep symmetrical with disableAnsi? + + twapi::SetConsoleMode $h_out $newmode_out + + #what does window_input have to do with it?? + #input handle modes + #ENABLE_PROCESSED_INPUT 0x0001 ;#set to zero will allow ctrl-c to be reported as keyboard input rather than as a signal + #ENABLE_LINE_INPUT 0x0002 + #ENABLE_ECHO_INPUT 0x0004 + #ENABLE_WINDOW_INPUT 0x0008 (default off when a terminal created) + #ENABLE_MOUSE_INPUT 0x0010 + #ENABLE_INSERT_MODE 0X0020 + #ENABLE_QUICK_EDIT_MODE 0x0040 + #ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 (default off when a terminal created) (512) + set h_in [twapi::get_console_handle stdin] + set oldmode_in [twapi::GetConsoleMode $h_in] + set newmode_in [expr {$oldmode_in | 8}] + #set newmode_in [expr {$oldmode_in | 0x208}] + + twapi::SetConsoleMode $h_in $newmode_in + + return [list stdout [list from $oldmode_out to $newmode_out] stdin [list from $oldmode_in to $newmode_in]] + } + proc disableAnsi {} { + set h_out [twapi::get_console_handle stdout] + set oldmode_out [twapi::GetConsoleMode $h_out] + set newmode_out [expr {$oldmode_out & ~4}] + twapi::SetConsoleMode $h_out $newmode_out + + #??? review + set h_in [twapi::get_console_handle stdin] + set oldmode_in [twapi::GetConsoleMode $h_in] + set newmode_in [expr {$oldmode_in & ~8}] + twapi::SetConsoleMode $h_in $newmode_in + + + return [list stdout [list from $oldmode_out to $newmode_out] stdin [list from $oldmode_in to $newmode_in]] + } + proc enableVirtualTerminal {{channels {input output}}} { + set ins [list in input stdin] + set outs [list out output stdout stderr] + set known [concat $ins $outs both] + set directions [list] + foreach v $channels { + if {$v in $ins} { + lappend directions input + } elseif {$v in $outs} { + lappend directions output + } elseif {$v eq "both"} { + lappend directions input output + } + if {$v ni $known} { + error "enableVirtualTerminal expected channel values to be one of '$known'. (all values mapped to input and/or output)" + } + } + set channels $directions ;#don't worry about dups. + if {"both" in $channels} { + lappend channels input output + } + set result [dict create] + if {"output" in $channels} { + #note setting stdout makes stderr have the same settings - ie there is really only one output to configure + set h_out [twapi::get_console_handle stdout] + set oldmode [twapi::GetConsoleMode $h_out] + set newmode [expr {$oldmode | 4}] + twapi::SetConsoleMode $h_out $newmode + dict set result output [list from $oldmode to $newmode] + } + + if {"input" in $channels} { + set h_in [twapi::get_console_handle stdin] + set oldmode_in [twapi::GetConsoleMode $h_in] + set newmode_in [expr {$oldmode_in | 0x200}] + twapi::SetConsoleMode $h_in $newmode_in + dict set result input [list from $oldmode_in to $newmode_in] + } + + return $result + } + + proc disableVirtualTerminal {{channels {input output}}} { + set ins [list in input stdin] + set outs [list out output stdout stderr] + set known [concat $ins $outs both] + set directions [list] + foreach v $channels { + if {$v in $ins} { + lappend directions input + } elseif {$v in $outs} { + lappend directions output + } elseif {$v eq "both"} { + lappend directions input output + } + if {$v ni $known} { + error "disableVirtualTerminal expected channel values to be one of '$known'. (all values mapped to input and/or output)" + } + } + set channels $directions ;#don't worry about dups. + if {"both" in $channels} { + lappend channels input output + } + set result [dict create] + if {"output" in $channels} { + #as above - configuring stdout does stderr too + set h_out [twapi::get_console_handle stdout] + set oldmode [twapi::GetConsoleMode $h_out] + set newmode [expr {$oldmode & ~4}] + twapi::SetConsoleMode $h_out $newmode + dict set result output [list from $oldmode to $newmode] + } + if {"input" in $channels} { + set h_in [twapi::get_console_handle stdin] + set oldmode_in [twapi::GetConsoleMode $h_in] + set newmode_in [expr {$oldmode_in & ~0x200}] + twapi::SetConsoleMode $h_in $newmode_in + dict set result input [list from $oldmode_in to $newmode_in] + } + + #return [list stdout [list from $oldmode_out to $newmode_out] stdin [list from $oldmode_in to $newmode_in]] + return $result + } + proc enableProcessedInput {} { + set h_in [twapi::get_console_handle stdin] + set oldmode_in [twapi::GetConsoleMode $h_in] + set newmode_in [expr {$oldmode_in | 1}] + twapi::SetConsoleMode $h_in $newmode_in + return [list stdin [list from $oldmode_in to $newmode_in]] + } + proc disableProcessedInput {} { + set h_in [twapi::get_console_handle stdin] + set oldmode_in [twapi::GetConsoleMode $h_in] + set newmode_in [expr {$oldmode_in & ~1}] + twapi::SetConsoleMode $h_in $newmode_in + return [list stdin [list from $oldmode_in to $newmode_in]] + } + proc enableRaw {{channel stdin}} { + #variable is_raw + variable previous_stty_state_$channel + + if {[catch {twapi::get_console_handle stdin} console_handle]} { + puts stderr "enableRaw error: twapi cannot get console handle for stdin" + #review. If twapi couldn't get a console handle - no point trying other mechanisms(?) + return + } + #returns dictionary + #e.g -processedinput 1 -lineinput 1 -echoinput 1 -windowinput 0 -mouseinput 0 -insertmode 1 -quickeditmode 1 -extendedmode 1 -autoposition 0 + set oldmode [twapi::get_console_input_mode] + twapi::modify_console_input_mode $console_handle -lineinput 0 -echoinput 0 + # Turn off the echo and line-editing bits + #set newmode [dict merge $oldmode [dict create -lineinput 0 -echoinput 0]] + set newmode [twapi::get_console_input_mode] + + tsv::set console is_raw 1 + #don't disable handler - it will detect is_raw + ### twapi::set_console_control_handler {} + return [list stdin [list from $oldmode to $newmode]] + } + + #note: twapi GetStdHandle & GetConsoleMode & SetConsoleCombo unreliable - fails with invalid handle (somewhat intermittent.. after stdin reopened?) + #could be we were missing a step in reopening stdin and console configuration? + + proc disableRaw {{channel stdin}} { + #variable is_raw + variable previous_stty_state_$channel + set ch_state [chan conf $channel] + if {[dict exists $ch_state -inputmode]} { + chan conf $channel -inputmode normal + tsv::set console is_raw 0 + return [list $channel [list from [dict get $ch_state -inputmode] to normal]] } else { - #error vs noop? - puts stderr "Unable to set implementation for %f% - check twapi?" + if {[catch {twapi::get_console_handle stdin} console_handle]} { + #e.g tkcon/wish + puts stderr "disableRaw error: twapi cannot get console handle for stdin" + return ;# ??? + } + set oldmode [twapi::get_console_input_mode] + # Turn on the echo and line-editing bits + twapi::modify_console_input_mode $console_handle -lineinput 1 -echoinput 1 + set newmode [twapi::get_console_input_mode] + tsv::set console is_raw 0 + return [list stdin [list from $oldmode to $newmode]] } - }] + } + + } else { + + variable ps_consolemode_pid + variable ps_consolemode_contents + variable ps_pipename + if {![info exists ps_consolemode_contents]} { + #start persistent powershell consolemode_server.ps1 named pipe server + if {$::argv0 ne ""} { + set pstooldir [file dirname [file dirname [file normalize $::argv0]]]/scriptlib/utils/pwsh + } else { + set pstooldir [pwd] + } + #set ps_script $pstooldir/consolemode_server.ps1 + set ps_script $pstooldir/consolemode_server_async.ps1 + if {[file exists $ps_script]} { + set fd [open $ps_script r] + chan configure $fd -translation binary + set ps_consoleid [pid]-[expr {int(999 * rand())+1}] + set ps_consolemode_contents [string map [list "" $ps_consoleid] [read $fd]] + close $fd + #set ps_consolemode_pipe [twapi::namedpipe_client {//./pipe/punkshell_ps_consolemode} -access write] + #set ps_cmd [auto_execok pwsh.exe] + set ps_cmd [auto_execok pwsh.exe] + if {$ps_cmd eq ""} { + set ps_cmd [auto_execok powershell.exe] + } + if {$ps_cmd ne ""} { + set ps_consolemode_pid [exec {*}$ps_cmd -nop -nol -c $ps_consolemode_contents &] + set ps_pipename {\\.\pipe\punkshell_ps_consolemode_} + append ps_pipename $ps_consoleid + puts stderr "twapi not present, using persistent powershell process: pipename: $ps_pipename pid: $ps_consolemode_pid" + #todo - taskkill /F /PID $ps_consolemode_pid + #when? + #review + #if {[catch {puts "pidinfo: [::tcl::process::status $ps_consolemode_pid]"} errM]} { + # puts stderr "--- failed to get process status for $ps_consolemode_pid\n$errM" + #} + #set p [open {\\.\pipe\punkshell_ps_consolemode} w] + #chan conf $p -buffering none -blocking 1 + #puts $p "" + #close $p + } + } + + } + + + #enableRaw + proc enableRaw {{channel stdin}} { + #puts stderr "punk::console::enableRaw" + #variable is_raw + variable previous_stty_state_$channel + variable ps_consolemode_contents + variable ps_pipename + + + if {[info exists ps_consolemode_contents]} { + #ps_pipename e.g \\.\pipe\punkwinshell_ps_consolemode_12345-1223456 + + set trynum 0 + set wrote 0 + while {$trynum < 5} { + incr trynum + if {![catch { + set pipe [open $ps_pipename w] + } errMsg]} { + chan conf $pipe -buffering line + puts -nonewline $pipe "enableraw\r\n" + #flush $pipe + #after 10 + #close $pipe + set wrote 1 + break + } else { + after 100 + } + } + if {$wrote} { + tsv::set console is_raw 1 + #after 100 + close $pipe + } else { + puts stderr "write to $ps_pipename failed trynum: $trynum\n$errMsg" + } + } elseif {[set sttycmd [auto_execok stty]] ne ""} { + #todo - something else entirely + #this approach does not work on windows + #the msys/cygwin stty command is launched as a subprocess - can be used to retrieve info + # but seems to be useless as far as affecting the calling process/console + if {[set previous_stty_state_$channel] eq ""} { + set previous_stty_state_$channel [exec {*}$sttycmd -g <@$channel] + } + + exec {*}$sttycmd raw -echo <@$channel + tsv::set console is_raw 1 + #review - inconsistent return dict + return [dict create stdin [list from [set previous_stty_state_$channel] to "" note "fixme - to state not shown"]] + } else { + error "punk::console::enableRaw Unable to use twapi or stty to set raw mode - aborting" + } + } + + + proc disableRaw {{channel stdin}} { + variable previous_stty_state_$channel + set ch_state [chan conf $channel] + if {[dict exists $ch_state -inputmode]} { + chan conf $channel -inputmode normal + tsv::set console is_raw 0 + return [list $channel [list from [dict get $ch_state -inputmode] to normal]] + } else { + #tcl <= 8.6x doesn't support -inputmode + if {[set sttycmd [auto_execok stty]] ne ""} { + #this doesn't work on windows + #It may seem to - only because running *any* external utility can exit raw mode + set sttycmd [auto_execok stty] + if {[set previous_stty_state_$channel] ne ""} { + exec {*}$sttycmd [set previous_stty_state_$channel] + set previous_stty_state_$channel "" + return restored + } + exec {*}$sttycmd -raw echo <@$channel + tsv::set console is_raw 0 + #do we really want to exec stty yet again to show final 'to' state? + #probably not. We should work out how to read the stty result flags and set a result.. or just limit from,to to showing echo and lineedit states. + return [list stdin [list from "[set previous_stty_state_$channel]" to "" note "fixme - to state not shown"]] + } else { + error "punk::console::disableRaw Unable to use twapi or stty to unset raw mode - aborting" + } + } + } + + #enableAnsi + proc enableAnsi {} { + } + #disableAnsi + proc enableAnsi {} { + } + #enableVirtualTerminal + proc enableVirtualTerminal {{channels {input output}}} { + } + #disableVirtualTerminal + proc disableVirtualTerminal {{channels {input output}}} { + } + #enableProcessedInput + #disableProcessedInput + } } else { + #non-windows platforms + proc enableAnsi {} { #todo? } @@ -190,6 +495,13 @@ namespace eval punk::console { #todo - something better - the 'channel' concept may not really apply on unix, as raw mode is set for input and output modes currently - only valid to set on a readable channel? #on windows they can be set independently (but not with stty) - REVIEW + proc enableVirtualTerminal {{channels {input output}}} { + + } + proc disableVirtualTerminal {args} { + + } + #NOTE - the is_raw is only being set in current interp - but the channel is shared. #this is problematic with the repl thread being separate. - must be a tsv? REVIEW proc enableRaw {{channel stdin}} { @@ -221,12 +533,6 @@ namespace eval punk::console { tsv::set console is_raw 0 return done } - proc enableVirtualTerminal {{channels {input output}}} { - - } - proc disableVirtualTerminal {args} { - - } } #review - document and decide granularity required. should we enable/disable more than one at once? @@ -257,7 +563,6 @@ namespace eval punk::console { #puts -nonewline stdout \x1b\[?25l ;#hide cursor puts -nonewline stdout \x1b\[?1003h\n enable_bracketed_paste - } #todo stop_application_mode {} {} @@ -313,266 +618,10 @@ namespace eval punk::console { } } proc define_windows_procs {} { - package require zzzload - set loadstate [zzzload::pkg_require twapi] - - #loadstate could also be stuck on loading? - review - zzzload not very ripe - #Twapi can be relatively slow to load (on some systems) - can be 1s plus in some cases - and much longer if there are disk performance issues. - if {$loadstate ni [list failed]} { - #possibly still 'loading' - #review zzzload usage - #puts stdout "=========== console loading twapi =============" - set loadstate [zzzload::pkg_wait twapi] ;#can return 'failed' will return version if already loaded or loaded during wait - } - - if {$loadstate ni [list failed]} { - package require twapi ;#should be fast once twapi dll loaded in zzzload thread - set ::punk::console::has_twapi 1 - - #todo - move some of these to the punk::console::local sub-namespace - as they use APIs rather than in-band ANSI to do their work. - #enableAnsi seems like it should be directly under punk::console .. but then it seems inconsistent if other local console-mode setting functions aren't. - #Find a compromise to organise things somewhat sensibly.. - - #this is really enableAnsi *processing* - proc [namespace parent]::enableAnsi {} { - #output handle modes - #Enable virtual terminal processing (sometimes off in older windows terminals) - #ENABLE_PROCESSED_OUTPUT = 0x0001 - #ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002 - #ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004 - #DISABLE_NEWLINE_AUTO_RETURN = 0x0008 - set h_out [twapi::get_console_handle stdout] - set oldmode_out [twapi::GetConsoleMode $h_out] - set newmode_out [expr {$oldmode_out | 4}] ;#don't enable processed output too, even though it's required. keep symmetrical with disableAnsi? - - twapi::SetConsoleMode $h_out $newmode_out - - #what does window_input have to do with it?? - #input handle modes - #ENABLE_PROCESSED_INPUT 0x0001 ;#set to zero will allow ctrl-c to be reported as keyboard input rather than as a signal - #ENABLE_LINE_INPUT 0x0002 - #ENABLE_ECHO_INPUT 0x0004 - #ENABLE_WINDOW_INPUT 0x0008 (default off when a terminal created) - #ENABLE_MOUSE_INPUT 0x0010 - #ENABLE_INSERT_MODE 0X0020 - #ENABLE_QUICK_EDIT_MODE 0x0040 - #ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 (default off when a terminal created) (512) - set h_in [twapi::get_console_handle stdin] - set oldmode_in [twapi::GetConsoleMode $h_in] - set newmode_in [expr {$oldmode_in | 8}] - #set newmode_in [expr {$oldmode_in | 0x208}] - - twapi::SetConsoleMode $h_in $newmode_in - - return [list stdout [list from $oldmode_out to $newmode_out] stdin [list from $oldmode_in to $newmode_in]] - } - proc [namespace parent]::disableAnsi {} { - set h_out [twapi::get_console_handle stdout] - set oldmode_out [twapi::GetConsoleMode $h_out] - set newmode_out [expr {$oldmode_out & ~4}] - twapi::SetConsoleMode $h_out $newmode_out - #??? review - set h_in [twapi::get_console_handle stdin] - set oldmode_in [twapi::GetConsoleMode $h_in] - set newmode_in [expr {$oldmode_in & ~8}] - twapi::SetConsoleMode $h_in $newmode_in - - - return [list stdout [list from $oldmode_out to $newmode_out] stdin [list from $oldmode_in to $newmode_in]] - } - - # - proc [namespace parent]::enableVirtualTerminal {{channels {input output}}} { - set ins [list in input stdin] - set outs [list out output stdout stderr] - set known [concat $ins $outs both] - set directions [list] - foreach v $channels { - if {$v in $ins} { - lappend directions input - } elseif {$v in $outs} { - lappend directions output - } elseif {$v eq "both"} { - lappend directions input output - } - if {$v ni $known} { - error "enableVirtualTerminal expected channel values to be one of '$known'. (all values mapped to input and/or output)" - } - } - set channels $directions ;#don't worry about dups. - if {"both" in $channels} { - lappend channels input output - } - set result [dict create] - if {"output" in $channels} { - #note setting stdout makes stderr have the same settings - ie there is really only one output to configure - set h_out [twapi::get_console_handle stdout] - set oldmode [twapi::GetConsoleMode $h_out] - set newmode [expr {$oldmode | 4}] - twapi::SetConsoleMode $h_out $newmode - dict set result output [list from $oldmode to $newmode] - } - - if {"input" in $channels} { - set h_in [twapi::get_console_handle stdin] - set oldmode_in [twapi::GetConsoleMode $h_in] - set newmode_in [expr {$oldmode_in | 0x200}] - twapi::SetConsoleMode $h_in $newmode_in - dict set result input [list from $oldmode_in to $newmode_in] - } - - return $result - } - proc [namespace parent]::disableVirtualTerminal {{channels {input output}}} { - set ins [list in input stdin] - set outs [list out output stdout stderr] - set known [concat $ins $outs both] - set directions [list] - foreach v $channels { - if {$v in $ins} { - lappend directions input - } elseif {$v in $outs} { - lappend directions output - } elseif {$v eq "both"} { - lappend directions input output - } - if {$v ni $known} { - error "disableVirtualTerminal expected channel values to be one of '$known'. (all values mapped to input and/or output)" - } - } - set channels $directions ;#don't worry about dups. - if {"both" in $channels} { - lappend channels input output - } - set result [dict create] - if {"output" in $channels} { - #as above - configuring stdout does stderr too - set h_out [twapi::get_console_handle stdout] - set oldmode [twapi::GetConsoleMode $h_out] - set newmode [expr {$oldmode & ~4}] - twapi::SetConsoleMode $h_out $newmode - dict set result output [list from $oldmode to $newmode] - } - if {"input" in $channels} { - set h_in [twapi::get_console_handle stdin] - set oldmode_in [twapi::GetConsoleMode $h_in] - set newmode_in [expr {$oldmode_in & ~0x200}] - twapi::SetConsoleMode $h_in $newmode_in - dict set result input [list from $oldmode_in to $newmode_in] - } - - #return [list stdout [list from $oldmode_out to $newmode_out] stdin [list from $oldmode_in to $newmode_in]] - return $result - } - - proc [namespace parent]::enableProcessedInput {} { - set h_in [twapi::get_console_handle stdin] - set oldmode_in [twapi::GetConsoleMode $h_in] - set newmode_in [expr {$oldmode_in | 1}] - twapi::SetConsoleMode $h_in $newmode_in - return [list stdin [list from $oldmode_in to $newmode_in]] - } - proc [namespace parent]::disableProcessedInput {} { - set h_in [twapi::get_console_handle stdin] - set oldmode_in [twapi::GetConsoleMode $h_in] - set newmode_in [expr {$oldmode_in & ~1}] - twapi::SetConsoleMode $h_in $newmode_in - return [list stdin [list from $oldmode_in to $newmode_in]] - } - } else { - - puts stderr "punk::console falling back to stty because twapi load failed" - proc [namespace parent]::enableAnsi {} { - puts stderr "punk::console::enableAnsi todo" - } - proc [namespace parent]::disableAnsi {} { - } - #? - proc [namespace parent]::enableVirtualTerminal {{channels {input output}}} { - } - proc [namespace parent]::disableVirtualTerminal {{channels {input output}}} { - } - proc [namespace parent]::enableProcessedInput {args} { - - } - proc [namespace parent]::disableProcessedInput {args} { - - } - - } - - proc [namespace parent]::enableRaw {{channel stdin}} { - #variable is_raw - variable previous_stty_state_$channel - - if {[package provide twapi] ne ""} { - set console_handle [twapi::get_console_handle stdin] - #returns dictionary - #e.g -processedinput 1 -lineinput 1 -echoinput 1 -windowinput 0 -mouseinput 0 -insertmode 1 -quickeditmode 1 -extendedmode 1 -autoposition 0 - set oldmode [twapi::get_console_input_mode] - twapi::modify_console_input_mode $console_handle -lineinput 0 -echoinput 0 - # Turn off the echo and line-editing bits - #set newmode [dict merge $oldmode [dict create -lineinput 0 -echoinput 0]] - set newmode [twapi::get_console_input_mode] - - tsv::set console is_raw 1 - #don't disable handler - it will detect is_raw - ### twapi::set_console_control_handler {} - return [list stdin [list from $oldmode to $newmode]] - } elseif {[set sttycmd [auto_execok stty]] ne ""} { - if {[set previous_stty_state_$channel] eq ""} { - set previous_stty_state_$channel [exec {*}$sttycmd -g <@$channel] - } - - exec {*}$sttycmd raw -echo <@$channel - tsv::set console is_raw 1 - #review - inconsistent return dict - return [dict create stdin [list from [set previous_stty_state_$channel] to "" note "fixme - to state not shown"]] - } else { - error "punk::console::enableRaw Unable to use twapi or stty to set raw mode - aborting" - } - } - - #note: twapi GetStdHandle & GetConsoleMode & SetConsoleCombo unreliable - fails with invalid handle (somewhat intermittent.. after stdin reopened?) - #could be we were missing a step in reopening stdin and console configuration? - - proc [namespace parent]::disableRaw {{channel stdin}} { - #variable is_raw - variable previous_stty_state_$channel - - if {[package provide twapi] ne ""} { - set console_handle [twapi::get_console_handle stdin] - set oldmode [twapi::get_console_input_mode] - # Turn on the echo and line-editing bits - twapi::modify_console_input_mode $console_handle -lineinput 1 -echoinput 1 - set newmode [twapi::get_console_input_mode] - tsv::set console is_raw 0 - return [list stdin [list from $oldmode to $newmode]] - } elseif {[set sttycmd [auto_execok stty]] ne ""} { - #stty can return info on windows - but doesn't seem to be able to set anything. - #review - is returned info even valid? - - set sttycmd [auto_execok stty] - if {[set previous_stty_state_$channel] ne ""} { - exec {*}$sttycmd [set previous_stty_state_$channel] - set previous_stty_state_$channel "" - return restored - } - exec {*}$sttycmd -raw echo <@$channel - tsv::set console is_raw 0 - #do we really want to exec stty yet again to show final 'to' state? - #probably not. We should work out how to read the stty result flags and set a result.. or just limit from,to to showing echo and lineedit states. - return [list stdin [list from "[set previous_stty_state_$channel]" to "" note "fixme - to state not shown"]] - } else { - error "punk::console::disableRaw Unable to use twapi or stty to unset raw mode - aborting" - } - } - - } lappend PUNKARGS [list { @@ -1803,7 +1852,10 @@ namespace eval punk::console { #don't set ansi_avaliable here - we want to be able to change things, retest etc. if {"windows" eq "$::tcl_platform(platform)"} { if {[package provide twapi] ne ""} { - set h_out [twapi::get_console_handle stdout] + if {[catch {twapi::get_console_handle stdout} h_out]} { + puts stderr "test_can_ansi: twapi cannot get console handle for stdout" + return 0 + } set existing_mode [twapi::GetConsoleMode $h_out] if {[expr {$existing_mode & 4}]} { #virtual terminal processing happens to be enabled - so it's supported diff --git a/src/vfs/_vfscommon.vfs/modules/punk/libunknown-0.1.tm b/src/vfs/_vfscommon.vfs/modules/punk/libunknown-0.1.tm index 3b5d35b0..f9dfaf56 100644 --- a/src/vfs/_vfscommon.vfs/modules/punk/libunknown-0.1.tm +++ b/src/vfs/_vfscommon.vfs/modules/punk/libunknown-0.1.tm @@ -80,16 +80,7 @@ tcl::namespace::eval punk::libunknown { "Experimental set of replacements for default 'package unknown' entries." }] - variable epoch - #if {![info exists epoch]} { - # set tmstate [dict create 0 {}] - # set pkgstate [dict create 0 {}] - # set tminfo [dict create current 0 epochs $tmstate] - # set pkginfo [dict create current 0 epochs $pkgstate] - - # set epoch [dict create tm $tminfo pkg $pkginfo] - #} - + variable epoch ;#don't set - can be pre-set cooperatively variable has_package_files if {[catch {package files foobaz}]} { @@ -111,6 +102,33 @@ tcl::namespace::eval punk::libunknown { #will use standard mechanism for non zipfs paths in the tm list. proc zipfs_tm_UnknownHandler {original name args} { + #------------------------------ + #shortcircuit for builtin static libraries which have no 'package provide' info - review + #This occurs for example when running 'bin\runtime.cmd run src\make.tcl shell' with punk902z.exe + # + #------------------------------ + set loaded [lsearch -inline -index 1 -nocase [info loaded] $name] + if {[llength $loaded] == 2 && [lindex $loaded 0] eq ""} { + lassign $loaded _ cased_name + interp create ptest + ptest eval [list load {} $cased_name] + set static_version [ptest eval [list package provide [string tolower $cased_name]]] + set pname [string tolower $cased_name] + if {$static_version eq ""} { + set static_version [ptest eval [list package provide $cased_name]] + set pname $cased_name + } + if {$static_version ne ""} { + if {[package vsatisfies $static_version {*}$args]} { + package ifneeded $pname $static_version [list load {} $cased_name] + interp delete ptest + return + } + } + interp delete ptest + } + #------------------------------ + # Import the list of paths to search for packages in module form. # Import the pattern used to check package names in detail. variable epoch @@ -1161,7 +1179,12 @@ tcl::namespace::eval punk::libunknown { set callerposn [lsearch $args -caller] if {$callerposn > -1} { set caller [lindex $args $callerposn+1] - #puts stderr "\x1b\[1\;33m punk::libunknown::init - caller:$caller\x1b\[m" + if {[package provide thread] ne ""} { + set tid [thread::id] + } else { + set tid "-" + } + #puts stderr "\x1b\[1\;33m punk::libunknown::init - caller:$caller tid:$tid\x1b\[m" #puts stderr "punk::libunknown::init auto_path : $::auto_path" #puts stderr "punk::libunknown::init tcl::tm::list: [tcl::tm::list]" } @@ -1184,17 +1207,17 @@ tcl::namespace::eval punk::libunknown { puts stderr "punk::libunknown::init - init while empty/unreadable tcl::tm::list and empty/unreadable ::auto_path" } - if {[namespace origin ::package] eq "::punk::libunknown::package"} { - #This is far from conclusive - there may be other renamers (e.g commandstack) + if {[info commands ::punk::libunknown::package] ne ""} { + puts stderr "punk::libunknown::init already done - unnecessary call? info frame -1: [info frame -1]" return } + #if {[namespace origin ::package] eq "::punk::libunknown::package"} { + # #This is far from conclusive - there may be other renamers (e.g commandstack) + # return + #} - if {[info commands ::punk::libunknown::package] ne ""} { - puts stderr "punk::libunknown::init already done - unnecessary call? info frame -1: [info frame -1]" - return - } variable epoch if {![info exists epoch]} { set tmstate [dict create 0 {added {}}] @@ -1222,6 +1245,7 @@ tcl::namespace::eval punk::libunknown { # or suffer additional scans.. or document ?? #ideally init should be called in each interp before any scans for packages so that the list of untracked is minimized. set pkgnames [package names] + #puts stderr "####### punk::libunknown init called with [llength $pkgnames] package names known" foreach p $pkgnames { if {[string tolower $p] in {punk::libunknown tcl::zlib tcloo tcl::oo tcl}} { continue diff --git a/src/vfs/_vfscommon.vfs/modules/punk/mix/templates/utility/scriptappwrappers/multishell.cmd b/src/vfs/_vfscommon.vfs/modules/punk/mix/templates/utility/scriptappwrappers/multishell.cmd index fa5f30e4..3bf8e0b1 100644 --- a/src/vfs/_vfscommon.vfs/modules/punk/mix/templates/utility/scriptappwrappers/multishell.cmd +++ b/src/vfs/_vfscommon.vfs/modules/punk/mix/templates/utility/scriptappwrappers/multishell.cmd @@ -940,6 +940,7 @@ if {$nextshelltype ne "tcl" && $nextshelltype ne "none"} { #maint: keep this munging in sync with zsh/bash and perl blocks which must also do msys mangling if {[regexp {^cmd$|^cmd[.]exe$} $cmdword]} { #need to deal with msys argument munging + puts stderr "cmd call via msys detected. performing translation of /c to //C" #for now we only deal with /C or /c - todo - other cmd.exe flags? #In this context we would usually only be using cmd.exe /c to launch older 'desktop' powershell to avoid spaced-argument problems - so we aren't expecting other flags set new_nextshellpath [list $cmdword] @@ -1228,13 +1229,14 @@ if [[ "$nextshelltype" != "bash" && "$nextshelltype" != "none" ]]; then #do not double quote cmdpattern - or it will be treated as literal string if [[ "$nextshellpath" =~ $cmdpattern ]]; then #for now - tell the user what's going on - echo "cmd call via msys detected. performing translation of /c to //c and escaping backslashes in script path" + echo "cmd call via msys detected. performing translation of /c to //c and escaping backslashes in script path" >&2 #flags to cmd.exe such as /c are interpreted by msys as looking like a unix path #review - for nextshellpath targets specified in the block for win32 - we don't expect unix paths (?) #what about other flags? - can we just double up all forward slashes? #maint: keep this munging in sync with the tcl block and perl block which must also do msys munging nextshellpath="${nextshellpath// \/[cC] / \/\/c }" # echo "new nextshellpath: ${nextshellpath}" + #review - #don't double quote this script=${script//\\/\\\\} fi @@ -1343,8 +1345,33 @@ if 0 { # -- unbalanced braces { } here *even in comments* will cause problems if there was no Tcl exit or return above # -- custom script should generally go below the begin_powershell_payload line # ## ### ### ### ### ### ### ### ### ### ### ### ### ### -function GetScriptName { $myInvocation.ScriptName } -$scriptname = GetScriptName +#$MyInvocation.ScriptName should probably be considered deprecated +# https://stackoverflow.com/questions/78511229/how-can-i-choose-between-myinvocation-scriptname-and-myinvocation-pscommandpat +$runningscriptname = $PSCommandPath +if (-not $MyInvocation.PSCommandPath) { + $callingscriptname = '' +} else { + $callingscriptname = $MyInvocation.PSCommandPath +} +#The problem with psmodulepath +#https://github.com/PowerShell/PowerShell/issues/18108 +# psmodulepath is shared by powershell and pwsh despite not all ps modules being compatible. +# It is futzed with by powershell/pwsh based on detecting the child process type. +# a psmodulepath that has been futzed with by pwsh will not work for a child powershell 5 process that isn't launched directly +#This is inherently unfriendly to situations where an intervening process may be something else such as cmd.exe,tcl,perl etc +# nevertheless, powershell/pwsh maintainers seem to have taken the MS-centric view of the world that such situations don't exist :/ +# +#symptoms of these shenannigans not working include things like Get-FileHash failing in powershell desktop +# +#We don't know if the original console was pwsh/powershell or cmd.exe, and we need to potentially divert to powershell 5 (desktop) +#via tcl or perl etc - or cmd.exe +if ($PSVersionTable.PSVersion.Major -le 5) { + # For Windows PowerShell, we want to remove any PowerShell 7 paths from PSModulePath + #snipped from https://github.com/PowerShell/DSC/pull/777/commits/af9b99a4d38e0cf1e54c4bbd89cbb6a8a8598c4e + #Presumably users are supposed to know not to have custom paths for powershell desktop containing a 'powershell' subfolder?? + $env:PSModulePath = ($env:PSModulePath -split ';' | Where-Object { $_ -notlike '*\powershell\*' }) -join ';' +} + function GetDynamicParamDictionary { [CmdletBinding()] param( @@ -1419,11 +1446,11 @@ function GetDynamicParamDictionary { #} #psmain @args #"Timestamp : {0,10:yyyy-MM-dd HH:mm:ss}" -f $(Get-Date) | write-host -"Script Name : {0}" -f $scriptname | write-host +#"Running Script Name : {0}" -f $runningscriptname | write-host "Powershell Version: {0}" -f $PSVersionTable.PSVersion.Major | write-host -"powershell args : {0}" -f ($args -join ", ") | write-host +#"powershell args : {0}" -f ($args -join ", ") | write-host # -- --- --- --- -$thisfileContent = Get-Content $scriptname -Raw +$thisfileContent = Get-Content $runningscriptname -Raw $startTag = ": <>" $endTag = ": <>" $pattern = "(?s)`n$startTag[^`n]*`n(.*?)`n$endTag" @@ -1522,7 +1549,7 @@ if ($match.Success) { } if (-not (("pwsh", "powershell", "") -contains $nextshell_type)) { #nextshell diversion exists for this platform - write-host "os: $os pwsh/powershell launching subshell of type: $nextshell_type shellpath: $nextshell_path on script $scriptname" + write-host "os: $os pwsh/powershell launching subshell of type: $nextshell_type shellpath: $nextshell_path on script $runningscriptname" # $arguments = @($($MyInvocation.MyCommand.Path)) # $arguments += $args @@ -1530,7 +1557,7 @@ if ($match.Success) { # $process = (Start-Process -FilePath $nextshell_path -ArgumentList $arguments -NoNewWindow -Wait) # Exit $process.ExitCode - & $nextshell_path $scriptname $args + & $nextshell_path $runningscriptname $args exit $LASTEXITCODE } } diff --git a/src/vfs/_vfscommon.vfs/modules/punk/repl-0.1.2.tm b/src/vfs/_vfscommon.vfs/modules/punk/repl-0.1.2.tm index 9d199997..11cd9706 100644 --- a/src/vfs/_vfscommon.vfs/modules/punk/repl-0.1.2.tm +++ b/src/vfs/_vfscommon.vfs/modules/punk/repl-0.1.2.tm @@ -20,18 +20,6 @@ if {[dict exists $stdin_info -mode]} { #give up for now set tcl_interactive 1 -#if {[info commands ::tcl::zipfs::root] ne ""} { -# set zr [::tcl::zipfs::root] -# if {[file join $zr app modules] in [tcl::tm::list]} { -# #todo - better way to find latest version - without package require -# set lib [file join $zr app modules punk libunknown.tm] -# if {[file exists $lib]} { -# source $lib -# punk::libunknown::init -# #package unknown {punk::libunknown::zipfs_tm_UnknownHandler punk::libunknown::zipfs_tclPkgUnknown} -# } -# } -#} #------------------------------------------------------------------------------------- if {[package provide punk::libunknown] eq ""} { #maintenance - also in src/vfs/_config/punk_main.tcl @@ -59,7 +47,7 @@ if {[package provide punk::libunknown] eq ""} { } if {$libunknown ne ""} { source $libunknown - if {[catch {punk::libunknown::init -caller repl} errM]} { + if {[catch {punk::libunknown::init -caller triggered_by_repl_package_require} errM]} { puts "error initialising punk::libunknown\n$errM" } } @@ -525,11 +513,11 @@ proc repl::start {inchan args} { set donevalue [set [namespace current]::done] if {[lindex $donevalue 0] eq "quit"} { puts "-->repl::start end $inchan $args result:'$donevalue'" - puts stderr "--> returning [lindex $donevalue 1]" + #puts stderr "repl quit --> returning [lindex $donevalue 1]" return [lindex $donevalue 1] } puts "-->repl::start end $inchan $args result:'$donevalue'" - puts stderr "__> returning 0" + #puts stderr "__> returning 0" return 0 } proc repl::post_operations {} { @@ -1408,7 +1396,6 @@ proc repl::repl_handler {inputchan prompt_config} { if {[dict get $original_input_conf -inputmode] eq "raw"} { #user or script has apparently put stdin into raw mode - update punk::console::is_raw to match set rawmode 1 - #set ::punk::console::is_raw 1 tsv::set console is_raw 1 } else { #set ::punk::console::is_raw 0 @@ -1420,9 +1407,6 @@ proc repl::repl_handler {inputchan prompt_config} { #if it's been set to raw - assume it is deliberately done this way as the user could have alternatively called punk::mode raw or punk::console::enableVirtualTerminal #by not doing this automatically - we assume the caller has a reason. } else { - #JMN FIX! - #this returns 0 in rawmode on 8.6 after repl thread changes - #set rawmode [set ::punk::console::is_raw] set rawmode [tsv::get console is_raw] } @@ -1811,8 +1795,6 @@ proc repl::repl_process_data {inputchan chunktype chunk stdinlines prompt_config set infoprompt [dict get $prompt_config infoprompt] set debugprompt [dict get $prompt_config debugprompt] - - #set rawmode [set ::punk::console::is_raw] set rawmode [tsv::get console is_raw] if {!$rawmode} { #puts stderr "-->got [ansistring VIEW -lf 1 $stdinlines]<--" @@ -2615,6 +2597,34 @@ proc repl::repl_process_data {inputchan chunktype chunk stdinlines prompt_config } #editbuf + + #after any external command - raw mode as the console sees it can be disabled + #set it to match current state of the tsv + if {[tsv::get console is_raw]} { + if {$::tcl_platform(platform) eq "windows"} { + #review + #we are in parent process - twapi might not be loaded here - even if it is in the code interp + catch {package require twapi} + } + set sinfo [chan configure stdin] + if {[dict exists $sinfo -inputmode]} { + if {[dict get $sinfo -inputmode] ne "raw"} { + set re_enable_required 1 + } else { + set re_enable_required 0 + } + } else { + # -inputmode unavailable + #tcl 8.6 doesn't have -inputmode - meaning it has to call punk:console::enableRaw each time + #enableRaw on windows without twapi involves launching a pwsh process - which gives a noticeable lag in keyboard input. + #enableRaw on Unix involves a call to stty - which is generally fast - but still to be avoided if not required. + set re_enable_required 1 + } + #puts stderr "-here- re-enabling raw" + if {$re_enable_required} { + punk::console::enableRaw + } + } } else { #append commandstr \n if {$::punk::repl::signal_control_c} { @@ -2828,7 +2838,7 @@ namespace eval repl { } if {$libunknown ne ""} { source $libunknown - if {[catch {punk::libunknown::init -caller "repl init_script"} errM]} { + if {[catch {punk::libunknown::init -caller "repl::init init_script parent interp"} errM]} { puts "repl::init problem - error initialising punk::libunknown\n$errM" } #package require punk::lib @@ -2858,10 +2868,10 @@ namespace eval repl { #thread::send to caller defined interp targets (reference?) #snit required for icomm if {[catch {package require snit} errM]} { - puts stdout "punk::repl::initscript lib load fail ---snit $errM" + #puts stdout "punk::repl::initscript: lib load fail ---snit $errM" } if {[catch {package require punk::icomm} errM]} { - puts stdout "punk::repl::initscript lib load fail ---icomm $errM" + #puts stdout "punk::repl::initscript: lib load fail ---icomm $errM" } #----- @@ -2872,7 +2882,7 @@ namespace eval repl { #first use can raise error being a version number e.g 0.1.0 - why? lassign [tcl::chan::fifo2] ::punk::repl::codethread::repltalk replside } errMsg]} { - puts stdout "punk::repl::initscript tcl::chan::fifo2 error: $errM" + puts stdout "punk::repl::initscript tcl::chan::fifo2 error: $errMsg" } else { #experimental? #puts stdout "transferring chan $replside to thread %replthread%" @@ -3519,6 +3529,8 @@ namespace eval repl { #----------------------------------------------------------------------------- if {[package provide punk::libunknown] eq ""} { + namespace eval ::punk::libunknown {} + set ::punk::libunknown::epoch %lib_epoch% set libunks [list] foreach tm_path [tcl::tm::list] { set punkdir [file join $tm_path punk] @@ -3543,7 +3555,7 @@ namespace eval repl { } if {$libunknown ne ""} { source $libunknown - if {[catch {punk::libunknown::init -caller "repl init_script punk"} errM]} { + if {[catch {punk::libunknown::init -caller "repl::init init_script code interp for punk"} errM]} { puts "error initialising punk::libunknown\n$errM" } } diff --git a/src/vfs/_vfscommon.vfs/modules/test/punk/args-0.1.5.tm b/src/vfs/_vfscommon.vfs/modules/test/punk/args-0.1.5.tm index 3671acbed2043618badf069cdd2d7c5030e3c9f2..b8140b8f8485c9617ddae31cb793337466a845c2 100644 GIT binary patch delta 29 gcmdnn%DA_cal>^r^4ESo;KK0JR+pDF6Tf delta 29 gcmdnn%DA_cal>^<7TLysQJZf|)~P~RvGxhf0KUTv7XSbN diff --git a/src/vfs/punk8_statictwapi.vfs/lib_tcl8/thread2.8.12/pkgIndex.tcl b/src/vfs/punk8_statictwapi.vfs/lib_tcl8/thread2.8.12/pkgIndex.tcl new file mode 100644 index 00000000..a9945f59 --- /dev/null +++ b/src/vfs/punk8_statictwapi.vfs/lib_tcl8/thread2.8.12/pkgIndex.tcl @@ -0,0 +1,68 @@ +# -*- tcl -*- +# Tcl package index file, version 1.1 +# + +if {![package vsatisfies [package provide Tcl] 8.4]} { + # Pre-8.4 Tcl interps we dont support at all. Bye! + # 9.0+ Tcl interps are only supported on 32-bit platforms. + if {![package vsatisfies [package provide Tcl] 9.0] + || ($::tcl_platform(pointerSize) != 4)} { + return + } +} + +# All Tcl 8.4+ interps can [load] Thread 2.8.12 +# +# For interps that are not thread-enabled, we still call [package ifneeded]. +# This is contrary to the usual convention, but is a good idea because we +# cannot imagine any other version of Thread that might succeed in a +# thread-disabled interp. There's nothing to gain by yielding to other +# competing callers of [package ifneeded Thread]. On the other hand, +# deferring the error has the advantage that a script calling +# [package require Thread] in a thread-disabled interp gets an error message +# about a thread-disabled interp, instead of the message +# "can't find package Thread". + +package ifneeded Thread 2.8.12 [list load [file join $dir thread2812.dll] [string totitle thread]] + +# package Ttrace uses some support machinery. + +# In Tcl 8.4 interps we use some older interfaces +if {![package vsatisfies [package provide Tcl] 8.5]} { + package ifneeded Ttrace 2.8.12 " + [list proc thread_source {dir} { + if {[info exists ::env(TCL_THREAD_LIBRARY)] && + [file readable $::env(TCL_THREAD_LIBRARY)/ttrace.tcl]} { + source -encoding utf-8 $::env(TCL_THREAD_LIBRARY)/ttrace.tcl + } elseif {[file readable [file join $dir .. lib ttrace.tcl]]} { + source -encoding utf-8 [file join $dir .. lib ttrace.tcl] + } elseif {[file readable [file join $dir ttrace.tcl]]} { + source -encoding utf-8 [file join $dir ttrace.tcl] + } + if {[namespace which ::ttrace::update] ne ""} { + ::ttrace::update + } + }] + [list thread_source $dir] + [list rename thread_source {}]" + return +} + +# In Tcl 8.5+ interps; use [::apply] + +package ifneeded Ttrace 2.8.12 [list ::apply {{dir} { + if {[info exists ::env(TCL_THREAD_LIBRARY)] && + [file readable $::env(TCL_THREAD_LIBRARY)/ttrace.tcl]} { + source -encoding utf-8 $::env(TCL_THREAD_LIBRARY)/ttrace.tcl + } elseif {[file readable [file join $dir .. lib ttrace.tcl]]} { + source -encoding utf-8 [file join $dir .. lib ttrace.tcl] + } elseif {[file readable [file join $dir ttrace.tcl]]} { + source -encoding utf-8 [file join $dir ttrace.tcl] + } + if {[namespace which ::ttrace::update] ne ""} { + ::ttrace::update + } +}} $dir] + + + diff --git a/src/vfs/punk8_statictwapi.vfs/lib_tcl8/thread2.8.12/thread2812.dll b/src/vfs/punk8_statictwapi.vfs/lib_tcl8/thread2.8.12/thread2812.dll new file mode 100644 index 0000000000000000000000000000000000000000..4f6a38f44d05c41d0a41f955c6ef84b022036f0d GIT binary patch literal 482199 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%0Af2wg6$xVC`ZxLz`21zDW?}mHwnr)56G7Q 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