You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
3.5 KiB

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"