Tools: Only calculate root_dir and autotest_dir once in sim_vehicle.py

This commit is contained in:
Arash Negahdar 2020-01-29 10:31:09 -05:00 committed by Peter Barker
parent 1a0079878a
commit 9fb2914209

View File

@ -28,6 +28,8 @@ from pysim import vehicleinfo
# List of open terminal windows for macosx # List of open terminal windows for macosx
windowID = [] windowID = []
autotest_dir = os.path.dirname(os.path.realpath(__file__))
root_dir = os.path.realpath(os.path.join(autotest_dir, '../..'))
class CompatError(Exception): class CompatError(Exception):
"""A custom exception class to hold state if we encounter the parse """A custom exception class to hold state if we encounter the parse
@ -260,16 +262,6 @@ def progress(text):
print("SIM_VEHICLE: " + text) print("SIM_VEHICLE: " + text)
def find_autotest_dir():
"""Return path to autotest directory"""
return os.path.dirname(os.path.realpath(__file__))
def find_root_dir():
"""Return path to root directory"""
return os.path.realpath(os.path.join(find_autotest_dir(), '../..'))
def wait_unlimited(): def wait_unlimited():
"""Wait until signal received""" """Wait until signal received"""
while True: while True:
@ -284,7 +276,6 @@ def do_build_waf(opts, frame_options):
progress("WAF build") progress("WAF build")
old_dir = os.getcwd() old_dir = os.getcwd()
root_dir = find_root_dir()
os.chdir(root_dir) os.chdir(root_dir)
waf_light = os.path.join(root_dir, "modules/waf/waf-light") waf_light = os.path.join(root_dir, "modules/waf/waf-light")
@ -306,7 +297,7 @@ def do_build_waf(opts, frame_options):
if opts.flash_storage: if opts.flash_storage:
cmd_configure.append("--sitl-flash-storage") cmd_configure.append("--sitl-flash-storage")
pieces = [shlex.split(x) for x in opts.waf_configure_args] pieces = [shlex.split(x) for x in opts.waf_configure_args]
for piece in pieces: for piece in pieces:
cmd_configure.extend(piece) cmd_configure.extend(piece)
@ -346,7 +337,7 @@ def do_build_parameters(vehicle):
# now build parameters # now build parameters
progress("Building fresh parameter descriptions") progress("Building fresh parameter descriptions")
param_parse_path = os.path.join( param_parse_path = os.path.join(
find_root_dir(), "Tools/autotest/param_metadata/param_parse.py") autotest_dir, "param_metadata/param_parse.py")
cmd_param_build = ["python", param_parse_path, '--vehicle', vehicle] cmd_param_build = ["python", param_parse_path, '--vehicle', vehicle]
_, sts = run_cmd_blocking("Building fresh params", cmd_param_build) _, sts = run_cmd_blocking("Building fresh params", cmd_param_build)
@ -406,7 +397,7 @@ def get_user_locations_path():
def find_new_spawn(loc, file_path): def find_new_spawn(loc, file_path):
(lat, lon, alt, heading) = loc.split(",") (lat, lon, alt, heading) = loc.split(",")
swarminit_filepath = os.path.join(find_autotest_dir(), "swarminit.txt") swarminit_filepath = os.path.join(autotest_dir, "swarminit.txt")
for path2 in [file_path, swarminit_filepath]: for path2 in [file_path, swarminit_filepath]:
if os.path.isfile(path2): if os.path.isfile(path2):
with open(path2, 'r') as swd: with open(path2, 'r') as swd:
@ -425,11 +416,11 @@ def find_new_spawn(loc, file_path):
return loc return loc
def find_location_by_name(autotest, locname): def find_location_by_name(locname):
"""Search locations.txt for locname, return GPS coords""" """Search locations.txt for locname, return GPS coords"""
locations_userpath = os.environ.get('ARDUPILOT_LOCATIONS', locations_userpath = os.environ.get('ARDUPILOT_LOCATIONS',
get_user_locations_path()) get_user_locations_path())
locations_filepath = os.path.join(autotest, "locations.txt") locations_filepath = os.path.join(autotest_dir, "locations.txt")
comment_regex = re.compile("\s*#.*") comment_regex = re.compile("\s*#.*")
for path in [locations_userpath, locations_filepath]: for path in [locations_userpath, locations_filepath]:
if not os.path.isfile(path): if not os.path.isfile(path):
@ -476,11 +467,11 @@ def run_cmd_blocking(what, cmd, quiet=False, check=False, **kw):
return ret return ret
def run_in_terminal_window(autotest, name, cmd): def run_in_terminal_window(name, cmd):
"""Execute the run_in_terminal_window.sh command for cmd""" """Execute the run_in_terminal_window.sh command for cmd"""
global windowID global windowID
runme = [os.path.join(autotest, "run_in_terminal_window.sh"), name] runme = [os.path.join(autotest_dir, "run_in_terminal_window.sh"), name]
runme.extend(cmd) runme.extend(cmd)
progress_cmd("Run " + name, runme) progress_cmd("Run " + name, runme)
@ -511,14 +502,13 @@ def run_in_terminal_window(autotest, name, cmd):
tracker_uarta = None # blemish tracker_uarta = None # blemish
def start_antenna_tracker(autotest, opts): def start_antenna_tracker(opts):
"""Compile and run the AntennaTracker, add tracker to mavproxy""" """Compile and run the AntennaTracker, add tracker to mavproxy"""
global tracker_uarta global tracker_uarta
progress("Preparing antenna tracker") progress("Preparing antenna tracker")
tracker_home = find_location_by_name(find_autotest_dir(), tracker_home = find_location_by_name(opts.tracker_location)
opts.tracker_location) vehicledir = os.path.join(autotest_dir, "../../" + "AntennaTracker")
vehicledir = os.path.join(autotest, "../../" + "AntennaTracker")
options = vinfo.options["AntennaTracker"] options = vinfo.options["AntennaTracker"]
tracker_default_frame = options["default_frame"] tracker_default_frame = options["default_frame"]
tracker_frame_options = options["frames"][tracker_default_frame] tracker_frame_options = options["frames"][tracker_default_frame]
@ -528,8 +518,7 @@ def start_antenna_tracker(autotest, opts):
os.chdir(vehicledir) os.chdir(vehicledir)
tracker_uarta = "tcp:127.0.0.1:" + str(5760 + 10 * tracker_instance) tracker_uarta = "tcp:127.0.0.1:" + str(5760 + 10 * tracker_instance)
exe = os.path.join(vehicledir, "AntennaTracker.elf") exe = os.path.join(vehicledir, "AntennaTracker.elf")
run_in_terminal_window(autotest, run_in_terminal_window("AntennaTracker",
"AntennaTracker",
["nice", ["nice",
exe, exe,
"-I" + str(tracker_instance), "-I" + str(tracker_instance),
@ -538,7 +527,7 @@ def start_antenna_tracker(autotest, opts):
os.chdir(oldpwd) os.chdir(oldpwd)
def start_vehicle(binary, autotest, opts, stuff, loc=None): def start_vehicle(binary, opts, stuff, loc=None):
"""Run the ArduPilot binary""" """Run the ArduPilot binary"""
cmd_name = opts.vehicle cmd_name = opts.vehicle
@ -605,7 +594,7 @@ def start_vehicle(binary, autotest, opts, stuff, loc=None):
paths = stuff["default_params_filename"] paths = stuff["default_params_filename"]
if not isinstance(paths, list): if not isinstance(paths, list):
paths = [paths] paths = [paths]
paths = [os.path.join(autotest, x) for x in paths] paths = [os.path.join(autotest_dir, x) for x in paths]
for x in paths: for x in paths:
if not os.path.isfile(x): if not os.path.isfile(x):
print("The parameter file (%s) does not exist" % (x,)) print("The parameter file (%s) does not exist" % (x,))
@ -624,7 +613,7 @@ def start_vehicle(binary, autotest, opts, stuff, loc=None):
if opts.mcast: if opts.mcast:
cmd.extend(["--uartA mcast:"]) cmd.extend(["--uartA mcast:"])
run_in_terminal_window(autotest, cmd_name, cmd) run_in_terminal_window(cmd_name, cmd)
def start_mavproxy(opts, stuff): def start_mavproxy(opts, stuff):
@ -1075,7 +1064,7 @@ frame_infos = vinfo.options_for_frame(cmd_opts.frame,
cmd_opts.vehicle, cmd_opts.vehicle,
cmd_opts) cmd_opts)
vehicle_dir = os.path.realpath(os.path.join(find_root_dir(), cmd_opts.vehicle)) vehicle_dir = os.path.realpath(os.path.join(root_dir, cmd_opts.vehicle))
if not os.path.exists(vehicle_dir): if not os.path.exists(vehicle_dir):
print("vehicle directory (%s) does not exist" % (vehicle_dir,)) print("vehicle directory (%s) does not exist" % (vehicle_dir,))
sys.exit(1) sys.exit(1)
@ -1085,13 +1074,13 @@ if not cmd_opts.hil:
kill_tasks() kill_tasks()
if cmd_opts.tracker: if cmd_opts.tracker:
start_antenna_tracker(find_autotest_dir(), cmd_opts) start_antenna_tracker(cmd_opts)
if cmd_opts.custom_location: if cmd_opts.custom_location:
location = cmd_opts.custom_location location = cmd_opts.custom_location
progress("Starting up at %s" % (location,)) progress("Starting up at %s" % (location,))
elif cmd_opts.location is not None: elif cmd_opts.location is not None:
location = find_location_by_name(find_autotest_dir(), cmd_opts.location) location = find_location_by_name(cmd_opts.location)
progress("Starting up at %s (%s)" % (location, cmd_opts.location)) progress("Starting up at %s (%s)" % (location, cmd_opts.location))
else: else:
progress("Starting up at SITL location") progress("Starting up at SITL location")
@ -1109,14 +1098,14 @@ if cmd_opts.use_dir is not None:
if cmd_opts.hil: if cmd_opts.hil:
# (unlikely) # (unlikely)
jsbsim_opts = [ jsbsim_opts = [
os.path.join(find_autotest_dir(), os.path.join(autotest_dir,
"jsb_sim/runsim.py"), "jsb_sim/runsim.py"),
"--speedup=" + str(cmd_opts.speedup) "--speedup=" + str(cmd_opts.speedup)
] ]
if location is not None: if location is not None:
jsbsim_opts.extend(["--home", location]) jsbsim_opts.extend(["--home", location])
run_in_terminal_window(find_autotest_dir(), "JSBSim", jsbsim_opts) run_in_terminal_window("JSBSim", jsbsim_opts)
else: else:
if not cmd_opts.no_rebuild: # i.e. we should rebuild if not cmd_opts.no_rebuild: # i.e. we should rebuild
do_build(vehicle_dir, cmd_opts, frame_infos) do_build(vehicle_dir, cmd_opts, frame_infos)
@ -1126,7 +1115,7 @@ else:
if cmd_opts.build_system == "waf": if cmd_opts.build_system == "waf":
binary_basedir = "build/sitl" binary_basedir = "build/sitl"
vehicle_binary = os.path.join(find_root_dir(), vehicle_binary = os.path.join(root_dir,
binary_basedir, binary_basedir,
frame_infos["waf_target"]) frame_infos["waf_target"])
else: else:
@ -1137,7 +1126,6 @@ else:
sys.exit(1) sys.exit(1)
start_vehicle(vehicle_binary, start_vehicle(vehicle_binary,
find_autotest_dir(),
cmd_opts, cmd_opts,
frame_infos, frame_infos,
loc=location) loc=location)