if {[lsearch $::argv -k] >= 0} { set forcekill 1 } else { set forcekill 0 } puts stdout "::argv $::argv" set dirname [file normalize [file dirname [info script]]] # ---------------------------------------- set src_module_dir $dirname/modules set src_modules [glob -nocomplain -dir $src_module_dir -type f -tail *.tm] set target_module_dir [file dirname $dirname]/modules file mkdir $target_module_dir foreach m $src_modules { puts stdout "copying module $src_module_dir/$m to $target_module_dir" file copy -force $src_module_dir/$m $target_module_dir } # ---------------------------------------- # if {![file exists $dirname/punk86.vfs]} { puts stderr "missing $dirname/punk86.vfs" exit 1 } if {[file exists $dirname/punk86]} { puts stderr "deleting existing $dirname/punk86" file delete $dirname/punk86 } puts stdout "building with sdx.." if {[catch { exec sdx wrap punk86 -runtime tclkit86bi.exe -verbose } result]} { puts stderr "sdx wrap punk86 -runtime tclkit86bi.exe -verbose failed with msg: $result" } else { puts stdout "ok - finished sdx" set separator [string repeat = 40] puts stdout $separator puts stdout $result puts stdout $separator } if {![file exists $dirname/punk86]} { puts stderr "|err> build didn't seem to produce output at $dirname/punk86" exit 2 } if {![catch { exec tasklist | grep punk86 } still_running]} { puts stdout "found punk86 instances still running\n" set count_killed 0 foreach ln [split $still_running \n] { puts stdout " $ln" set pid [lindex $ln 1] if {$forcekill} { set killcmd [list taskkill /F /PID $pid] } else { set killcmd [list taskkill /PID $pid] } puts stdout " pid: $pid (attempting to kill now using '$killcmd')" if {[catch { exec {*}$killcmd } errMsg]} { puts stderr "taskkill /PID $pid returned an error:" puts stderr $errMsg puts stderr "(try '[info script] -k' option to force kill)" exit 4 } else { puts stderr "taskkill /PID $pid ran without error" incr count_killed } } if {$count_killed > 0} { puts stderr "\nKilled $count_killed processes. Waiting a short time before attempting to delete executable" after 1000 } } else { puts stderr "Ok.. no running punk processes found" } if {[file exists $dirname/punk86.exe]} { puts stderr "deleting existing $dirname/punk86.exe" if {[catch { file delete $dirname/punk86.exe } msg]} { puts stderr "Failed to delete $dirname/punk86.exe" exit 3 } } #is this test necessary? if {[file exists $dirname/punk86.exe]} { puts stderr "deletion of $dirname/punk86.exe failed - locked?" exit 3 } file rename $dirname/punk86 $dirname/punk86.exe after 200 set deployment_folder [file dirname $dirname] if {[file exists $deployment_folder/punk86.exe]} { puts stderr "deleting existing deployed at $deployment_folder/punk86.exe" if {[catch { file delete $deployment_folder/punk86.exe } errMsg]} { puts stderr "deletion of deployed version at $deployment_folder/punk86.exe failed: $errMsg" exit 4 } } puts stdout "copying.." puts stdout "$dirname/punk86.exe" puts stdout "to:" puts stdout "$deployment_folder/punk86.exe" after 500 file copy $dirname/punk86.exe $deployment_folder/punk86.exe puts stdout "done"