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.
119 lines
3.2 KiB
119 lines
3.2 KiB
1 year ago
|
|
||
|
|
||
|
if {[lsearch $::argv -k] >= 0} {
|
||
|
set forcekill 1
|
||
|
} else {
|
||
|
set forcekill 0
|
||
|
}
|
||
|
puts stdout "::argv $::argv"
|
||
|
|
||
|
set dirname [file normalize [file dirname [info script]]]
|
||
|
|
||
|
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 2000
|
||
|
}
|
||
|
} 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 500
|
||
|
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"
|
||
|
|
||
|
|