diff --git a/config/unix.exp b/config/unix.exp index 5320ab7..4be5849 100644 --- a/config/unix.exp +++ b/config/unix.exp @@ -114,7 +114,12 @@ proc unix_load { dest prog args } { set output [lindex $status 1] set status [lindex $status 0] } else { - set remotefile "/tmp/[file tail $prog].[pid]" + # Target board remote_dir is handled by remote.exp routines. + if {[board_info $dest exists remote_dir]} { + set remotefile [file tail $prog] + } else { + set remotefile "/tmp/[file tail $prog].[pid]" + } set remotefile [remote_download $dest $prog $remotefile] if { $remotefile == "" } { verbose -log "Download of $prog to [board_info $dest name] failed." 3 diff --git a/lib/remote.exp b/lib/remote.exp index c334416..677cb9e 100644 --- a/lib/remote.exp +++ b/lib/remote.exp @@ -283,6 +283,8 @@ proc local_exec { commandline inp outp timeout } { # redirected). # proc remote_exec { hostname program args } { + global remotedir + if { [llength $args] > 0 } { set pargs [lindex $args 0] } else { @@ -314,6 +316,10 @@ proc remote_exec { hostname program args } { if { ![is_remote $hostname] } { return [local_exec "$program $pargs" $inp $outp $timeout] } else { + if { [info exists remotedir] } { + set program "cd $remotedir ; $program" + } + return [call_remote "" exec $hostname $program $pargs $inp $outp] } } @@ -420,6 +426,8 @@ proc standard_reboot { host } { # proc remote_download { dest file args } { + global remotedir + if { [llength $args] > 0 } { set destfile [lindex $args 0] } else { @@ -447,6 +455,18 @@ proc remote_download { dest file args } { } } } + if { [board_info $dest exists remote_dir] } { + if { ![info exists remotedir] } { + set rtmp [board_info $dest remote_dir] + set status [remote_exec $dest mkdir "-p $rtmp"] + if { [lindex $status 0] != 0 } { + verbose -log "Couldn't create remote directory $rtmp on $dest" 3 + return [list "unresolved" ""] + } + set remotedir $rtmp + } + set destfile "$remotedir/$destfile" + } return [call_remote "" download $dest $file $destfile] }