mirror of
https://github.com/genodelabs/genode.git
synced 2025-06-21 16:39:39 +00:00
run: support RUN_OPT for all platforms
Use RUN_OPT="--target ..." to select the backend test method. Supported values so far: qemu - qemu + grub bootloader (default) qemu+pxe - qemu + pulsar bootloader (PXE) amt - Intel AMT (reset+serial output) + pulsar bootloader Related to issue #598
This commit is contained in:
committed by
Norman Feske
parent
5c6f13b0d3
commit
df985bda84
@ -18,12 +18,6 @@ proc clean_boot_modules { } {
|
|||||||
exec rm -rf boot_modules.s var/libcache/boot_modules/boot_modules.o }
|
exec rm -rf boot_modules.s var/libcache/boot_modules/boot_modules.o }
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Get target argument
|
|
||||||
#
|
|
||||||
proc target { } { return [get_cmd_arg --target "qemu"] }
|
|
||||||
|
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
## 'tool/run' interface ##
|
## 'tool/run' interface ##
|
||||||
##########################
|
##########################
|
||||||
@ -59,6 +53,7 @@ proc create_boot_directory { } {
|
|||||||
|
|
||||||
|
|
||||||
proc build_boot_image {binaries} {
|
proc build_boot_image {binaries} {
|
||||||
|
global run_target
|
||||||
|
|
||||||
# strip binaries
|
# strip binaries
|
||||||
copy_and_strip_genode_binaries_to_run_dir $binaries
|
copy_and_strip_genode_binaries_to_run_dir $binaries
|
||||||
@ -178,7 +173,7 @@ proc build_boot_image {binaries} {
|
|||||||
exec [cross_dev_prefix]strip $elf_img
|
exec [cross_dev_prefix]strip $elf_img
|
||||||
|
|
||||||
# target specific ops
|
# target specific ops
|
||||||
if {[target] == "uboot"} {
|
if {[regexp "uboot" $run_target]} {
|
||||||
|
|
||||||
# parse ELF entrypoint and load address
|
# parse ELF entrypoint and load address
|
||||||
set entrypoint [exec [cross_dev_prefix]readelf -h $elf_img | \
|
set entrypoint [exec [cross_dev_prefix]readelf -h $elf_img | \
|
||||||
@ -205,6 +200,8 @@ proc build_boot_image {binaries} {
|
|||||||
|
|
||||||
|
|
||||||
proc run_genode_until {{wait_for_re forever} {timeout_value 0} {running_spawn_id -1}} {
|
proc run_genode_until {{wait_for_re forever} {timeout_value 0} {running_spawn_id -1}} {
|
||||||
|
global run_target
|
||||||
|
|
||||||
#
|
#
|
||||||
# If a running_spawn_id is specified, wait for the expected output
|
# If a running_spawn_id is specified, wait for the expected output
|
||||||
#
|
#
|
||||||
@ -216,20 +213,12 @@ proc run_genode_until {{wait_for_re forever} {timeout_value 0} {running_spawn_id
|
|||||||
#
|
#
|
||||||
# Try to use one of the supported backends for running the scripts
|
# Try to use one of the supported backends for running the scripts
|
||||||
#
|
#
|
||||||
# if {[is_amt_available]} {
|
if {[is_qemu_available]} {
|
||||||
# spawn_amt $wait_for_re $timeout_value
|
spawn_qemu $wait_for_re $timeout_value
|
||||||
# return
|
return
|
||||||
# }
|
|
||||||
# if {[is_qemu_available]} {
|
|
||||||
# spawn_qemu $wait_for_re $timeout_value
|
|
||||||
# return
|
|
||||||
# }
|
|
||||||
|
|
||||||
if {[target] == "qemu"} { spawn_qemu $wait_for_re $timeout_value
|
|
||||||
} else {
|
|
||||||
puts stderr "Error: Can't execute automatically on target '[target]'"
|
|
||||||
puts stderr " Target might be: 'qemu'"
|
|
||||||
exit -1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
puts stderr "Error: Can't execute automatically on target '$run_target'"
|
||||||
|
exit -1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
14
tool/run
14
tool/run
@ -265,6 +265,9 @@ set cross_dev_prefix [get_cmd_arg --cross-dev-prefix ""]
|
|||||||
set specs [get_cmd_arg --specs ""]
|
set specs [get_cmd_arg --specs ""]
|
||||||
set repositories [get_cmd_arg --repositories ""]
|
set repositories [get_cmd_arg --repositories ""]
|
||||||
set qemu_args [get_cmd_arg --qemu-args ""]
|
set qemu_args [get_cmd_arg --qemu-args ""]
|
||||||
|
set run_target [get_cmd_arg --target "qemu"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Enable run scripts to extend 'qemu_arg' via 'append' without bothering
|
# Enable run scripts to extend 'qemu_arg' via 'append' without bothering
|
||||||
@ -434,6 +437,7 @@ proc spawn_qemu { wait_for_re timeout_value } {
|
|||||||
global qemu_args
|
global qemu_args
|
||||||
global qemu
|
global qemu
|
||||||
global spawn_id
|
global spawn_id
|
||||||
|
global run_target
|
||||||
|
|
||||||
#
|
#
|
||||||
# Back out on platforms w/o Qemu support
|
# Back out on platforms w/o Qemu support
|
||||||
@ -467,7 +471,7 @@ proc spawn_qemu { wait_for_re timeout_value } {
|
|||||||
|
|
||||||
# on x86, we support booting via pxe or iso image [default]
|
# on x86, we support booting via pxe or iso image [default]
|
||||||
if {[have_spec x86]} {
|
if {[have_spec x86]} {
|
||||||
if {[have_spec boot_pxe]} {
|
if {[regexp "qemu" $run_target] && [regexp "pxe" $run_target]} {
|
||||||
append qemu_args " -boot n -tftp [run_dir] -bootp boot/pulsar -no-reboot -no-shutdown "
|
append qemu_args " -boot n -tftp [run_dir] -bootp boot/pulsar -no-reboot -no-shutdown "
|
||||||
} else {
|
} else {
|
||||||
append qemu_args " -cdrom [run_dir].iso "
|
append qemu_args " -cdrom [run_dir].iso "
|
||||||
@ -486,6 +490,10 @@ proc spawn_qemu { wait_for_re timeout_value } {
|
|||||||
# Check whether Qemu support is available
|
# Check whether Qemu support is available
|
||||||
#
|
#
|
||||||
proc is_qemu_available { } {
|
proc is_qemu_available { } {
|
||||||
|
global run_target
|
||||||
|
|
||||||
|
if {![regexp "qemu" $run_target]} { return false }
|
||||||
|
|
||||||
if {[have_spec platform_panda] || [have_spec platform_arndale]} {
|
if {[have_spec platform_panda] || [have_spec platform_arndale]} {
|
||||||
puts stderr "skipping execution because platform is not supported by qemu"
|
puts stderr "skipping execution because platform is not supported by qemu"
|
||||||
return false
|
return false
|
||||||
@ -497,7 +505,9 @@ proc is_qemu_available { } {
|
|||||||
# Check whether AMT support is available
|
# Check whether AMT support is available
|
||||||
#
|
#
|
||||||
proc is_amt_available { } {
|
proc is_amt_available { } {
|
||||||
if {![have_spec x86]} { return false }
|
global run_target
|
||||||
|
|
||||||
|
if {![have_spec x86] || ![regexp "amt" $run_target]} { return false }
|
||||||
|
|
||||||
if {[info exists ::env(AMT_TEST_MACHINE_IP)] &&
|
if {[info exists ::env(AMT_TEST_MACHINE_IP)] &&
|
||||||
[info exists ::env(AMT_TEST_MACHINE_PWD)] &&
|
[info exists ::env(AMT_TEST_MACHINE_PWD)] &&
|
||||||
|
Reference in New Issue
Block a user