Browse Source

Improve ADB support for Android

dejagnu-1.5.2
Alexander Ivchenko 13 years ago
committed by Rob Savoye
parent
commit
bcc1f7e6ef
  1. 8
      ChangeLog
  2. 27
      baseboards/androideabi.exp
  3. 6
      config/adb.exp

8
ChangeLog

@ -11,6 +11,14 @@
* doc/ref.xml (remote_reboot, standard_reboot): Document procedures.
* doc/dejagnu.texi: Regenerate.
2013-10-15 Alexander Ivchenko <alexander.ivchenko@intel.com>
* baseboards/androideabi.exp (process_multilib_options): Add option.
* config/adb.exp: Remove hardcoded -static option.
(adb_load): Add the possibility to change the temp directory. Also
handle permission potential problems.
(adb_exec): Do cd to android_tmp_dir first.
2013-10-05 Jose E. Marchesi <jose.marchesi@oracle.com>
* baseboards/unix.exp: Add gdb settings to not use hardware

27
baseboards/androideabi.exp

@ -16,6 +16,8 @@
# along with DejaGnu; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
process_multilib_options ""
load_generic_config "adb"
# We need this for find_gcc and *_include_flags/*_link_flags.
@ -25,18 +27,21 @@ set_board_info compiler "[find_gcc]"
# We may need -mandroid.
set_board_info cflags "-mandroid"
# Currently the dynamic linker does not support weak-references in
# shared libraries. So we need to workaround using -static
set_board_info ldflags "-mandroid -static"
set_board_info ldflags "-mandroid"
#
# load PROG to DEST and run it with ARGS using adb
#
proc adb_load { dest prog args } {
# This directory uses tmpfs, so it is the best place to run
# Default directory uses tmpfs, so it is the best place to run
# tests to avoid excessive wear of flash.
global android_tmp_dir
if { $android_tmp_dir != "" } {
verbose -log "android temporary directory is set to $android_tmp_dir" 3
} else {
set android_tmp_dir "/mnt/sdcard/.android_secure"
verbose -log "android temporary directory will be used by default $android_tmp_dir" 3
}
if { [llength $args] > 0 } {
set pargs [lindex $args 0]
@ -58,12 +63,22 @@ proc adb_load { dest prog args } {
}
if [is_remote $dest] {
set localfile "./[file tail $prog].[pid]"
set remotefile "$android_tmp_dir/[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
return "unresolved"
}
set retval [remote_exec $dest "test -x $remotefile"]
if { $retval != "0 {}" } {
# Android doesn't support symbolic input for chmod, therefore set executable permission by number
set retval [remote_exec $dest "chmod 755 $remotefile"]
if { $retval != "0 {}" } {
verbose -log "Setting executable permissions of $prog on [board_info $dest name] failed." 3
return "unresolved"
}
}
if [board_info $dest exists remote_link] {
if [[board_info $dest remote_link] $remotefile] {
verbose -log "Couldn't do remote link"
@ -73,7 +88,7 @@ proc adb_load { dest prog args } {
return "unresolved"
}
}
set status [remote_exec $dest $remotefile $pargs $inp]
set status [remote_exec $dest $localfile $pargs $inp]
remote_exec $dest rm $remotefile
} else {
set status [remote_exec $dest $prog $pargs $inp]

6
config/adb.exp

@ -128,7 +128,7 @@ proc adb_file {dest op args} {
}
proc adb_upload {desthost srcfile destfile} {
set status [catch "exec adb [adb_serial] pull $srcfile $destfile" output]
set status [catch "exec adb [adb_serial] pull $srcfile $destfile |& cat" output]
if { $status == 0 } {
verbose "Copied $srcfile to $destfile" 2
return $destfile
@ -165,7 +165,9 @@ proc adb_exec { boardname cmd args } {
verbose "Executing $boardname:$cmd $pargs < $inp "
set status [catch "exec cat $inp | adb [adb_serial] shell \( $cmd $pargs \) \\; echo XYZ\\\$\\\{\?\\\}ZYX |& cat" output]
# Execute commands only from temporary folder, therefore do "cd" first
global android_tmp_dir
set status [catch "exec cat $inp | adb [adb_serial] shell cd $android_tmp_dir \&\& \( $cmd $pargs \) \\; echo XYZ\\\$\\\{\?\\\}ZYX |& cat" output]
# `status' doesn't mean much here other than adb worked ok.
# What we want is whether $cmd ran ok.

Loading…
Cancel
Save