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

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"