From 21a345debf2bfc3f212f2b9a27d5f02f45d97690 Mon Sep 17 00:00:00 2001 From: Bob Long Date: Thu, 19 Dec 2024 22:10:50 +1100 Subject: [PATCH 1/7] waf: move cx sitl params to build root directory This makes them immune to `waf clean`, which is important for autotest.py when it isn't run with --no-clean. --- wscript | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/wscript b/wscript index 50b4dd2c02..f052f2783b 100644 --- a/wscript +++ b/wscript @@ -472,14 +472,12 @@ def configure(cfg): if not file.endswith('.parm'): continue - # make build/sitl directory if it doesn't exist + # make build directory if it doesn't exist if not os.path.exists('build'): os.makedirs('build') - if not os.path.exists('build/sitl'): - os.makedirs('build/sitl') in_file = os.path.join(param_folder, file) - out_file = os.path.join('build/sitl', file) + out_file = os.path.join('build', file) # Call Tools/Carbonix_scripts/process_sitl_defaults.py $in_file $out_file cfg.msg('Processing default parameters', file) From 2184b96c80640d9ea6f0358852826f9725737d1b Mon Sep 17 00:00:00 2001 From: Bob Long Date: Sat, 21 Dec 2024 16:05:52 +1100 Subject: [PATCH 2/7] autotest: fix frames that override "model" --- Tools/autotest/vehicle_test_suite.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Tools/autotest/vehicle_test_suite.py b/Tools/autotest/vehicle_test_suite.py index 8ecd6c4478..e9ccf55d98 100644 --- a/Tools/autotest/vehicle_test_suite.py +++ b/Tools/autotest/vehicle_test_suite.py @@ -8502,7 +8502,7 @@ def start_SITL(self, binary=None, sitl_home=None, **sitl_args): start_sitl_args["defaults_filepath"] = self.defaults_filepath() if "model" not in start_sitl_args or start_sitl_args["model"] is None: - start_sitl_args["model"] = self.frame + start_sitl_args["model"] = self.get_model(self.frame) self.progress("Starting SITL", send_statustext=False) if binary is None: binary = self.binary @@ -14046,6 +14046,15 @@ def model_defaults_filepath(self, model): defaults_list.append(util.reltopdir(os.path.join(testdir, d))) return defaults_list + def get_model(self, frame): + vehicle = self.vehicleinfo_key() + vinfo = vehicleinfo.VehicleInfo() + try: + model = vinfo.options[vehicle]["frames"][frame]["model"] + return model if model is not None else frame + except KeyError: + return frame + def load_default_params_file(self, filename): '''load a file from Tools/autotest/default_params''' filepath = util.reltopdir(os.path.join("Tools", "autotest", "default_params", filename)) From 8be728dc0d7e552ff06d40d3158f622ee6d3caec Mon Sep 17 00:00:00 2001 From: Bob Long Date: Thu, 19 Dec 2024 16:35:04 +1100 Subject: [PATCH 3/7] autotest: add Carbonix frames --- Tools/autotest/pysim/vehicleinfo.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Tools/autotest/pysim/vehicleinfo.py b/Tools/autotest/pysim/vehicleinfo.py index 0bba801933..b3a710ab98 100644 --- a/Tools/autotest/pysim/vehicleinfo.py +++ b/Tools/autotest/pysim/vehicleinfo.py @@ -433,6 +433,30 @@ def __init__(self): }, } }, + "Carbonix": { + "default_frame": "ottano-headless", + "frames": { + "ottano-headless": { + "waf_target": "bin/arduplane", + "model": "quadplane:@ROMFS/models/Ottano.json", + "default_params_filename": "../../build/ottano-headless.parm", + "scripts": ["../../libraries/AP_HAL_ChibiOS/hwdef/CarbonixCommon/scripts/*.lua"], + }, + "volanti-headless": { + "waf_target": "bin/arduplane", + "model": "quadplane:@ROMFS/models/Volanti.json", + "default_params_filename": "../../build/volanti-headless.parm", + "scripts": ["../../libraries/AP_HAL_ChibiOS/hwdef/CarbonixCommon/scripts/*.lua"], + }, + "volanti-realflight": { + "waf_target": "bin/arduplane", + "model": "flightaxis", + "default_params_filename": "../../build/volanti-realflight.parm", + "scripts": ["../../libraries/AP_HAL_ChibiOS/hwdef/CarbonixCommon/scripts/*.lua"], + "external": True, + } + }, + } } From a3fb04399cb1a7fd84efa4311fed8de7e6017a6b Mon Sep 17 00:00:00 2001 From: Bob Long Date: Tue, 24 Dec 2024 10:02:09 +1100 Subject: [PATCH 4/7] Tools: use vehicleinfo to generate cygwin SITLs Previously, we used all the param files in CarbonixCommon/sitl_params, with some strong naming assumptions, to generate vehicle folders, and we copied all scripts in CarbonixCommon/scripts. This new approach is more flexible. --- Tools/autotest/cx_vehicle_bundle.py | 101 ++++++++++++++++++++++++++++ Tools/scripts/cygwin_build.sh | 36 ++-------- 2 files changed, 105 insertions(+), 32 deletions(-) create mode 100644 Tools/autotest/cx_vehicle_bundle.py diff --git a/Tools/autotest/cx_vehicle_bundle.py b/Tools/autotest/cx_vehicle_bundle.py new file mode 100644 index 0000000000..64d64f92af --- /dev/null +++ b/Tools/autotest/cx_vehicle_bundle.py @@ -0,0 +1,101 @@ +''' +Script to generate folder structure for Cygwin SITL bundles + +This can also be imported as a module to use the copy_frame_scripts function, +which copies frame scripts defined in vehicleinfo.py to the appropriate +destination folder. +''' +import os +import glob +import shutil +import argparse +from pysim import vehicleinfo + + +def copy_frame_scripts(frame, scripts_root, script_patterns): + ''' + Copy scripts for a frame to the appropriate destination folder + + frame: str + The name of the frame + scripts_root: str + The root folder to copy the scripts to + script_patterns: list + A list of glob patterns to match the scripts to copy. Each pattern + can be a string or a tuple of two strings. If a tuple, the first + string is the pattern to match, and the second string is the + destination folder or destination file (to rename the script). Renaming + is only allowed for a single file (no wildcards in the pattern). If + a single string, the script will be copied to the root of the + destination folder. + ''' + for script_pattern in script_patterns: + # Determine the destination path + if isinstance(script_pattern, tuple) and len(script_pattern) == 2: + script_pattern, script_dest = script_pattern + script_dest = os.path.join(scripts_root, script_dest) + elif isinstance(script_pattern, str): + script_dest = scripts_root + else: + raise ValueError(f'Script entry in {frame} is invalid. Must be a string or a tuple of two strings') + + # If script_dest ends in .lua, then we are renaming a single file + if script_dest.endswith('.lua'): + file = os.path.join(os.path.dirname(__file__), script_pattern) + if not os.path.exists(file): + raise FileNotFoundError(f'File not found: {script_pattern} in {frame}') + script_list = [file] + else: + # Expand the pattern + script_list = glob.glob( + os.path.join(os.path.dirname(__file__), script_pattern) + ) + if not script_list: + raise FileNotFoundError(f'No scripts found for pattern {script_pattern} in {frame}') + + # Install each script + for script in script_list: + if script_dest.endswith('.lua'): + os.makedirs(os.path.dirname(script_dest), exist_ok=True) + else: + os.makedirs(script_dest, exist_ok=True) + shutil.copy(script, script_dest) + + +def main(): + parser = argparse.ArgumentParser(description='Generate a bundle of scripts for a vehicle') + parser.add_argument('firmware_id', help='The firmware id of the vehicle') + args = parser.parse_args() + + artifacts_root = 'artifacts' + + frames = vehicleinfo.VehicleInfo().options['Carbonix']['frames'] + for frame in frames: + frame_root = os.path.join(artifacts_root, frame + '-' + args.firmware_id) + if os.path.exists(frame_root): + shutil.rmtree(frame_root) + os.makedirs(frame_root) + # copy the default parameter file + defaults = frames[frame].get('default_params_filename', '') + if defaults: + defaults = os.path.join(os.path.dirname(__file__), defaults) + defaults = os.path.abspath(defaults) + shutil.copy(defaults, frame_root) + # copy the scripts + script_patterns = frames[frame].get('scripts', []) + scripts_root = os.path.join(frame_root, 'scripts') + copy_frame_scripts(frame, scripts_root, script_patterns) + # create the batch file launcher + with open(os.path.join(frame_root, 'launch.bat'), 'w') as f: + f.write('rem Launch at Eli Field\r\n') + f.write('cd %~dp0\r\n') + launch_line = f'..\\{args.firmware_id}.exe' + launch_line += ' -O 40.0594626,-88.5513292,206.0,0' + launch_line += ' --serial0 tcp:0' + launch_line += f' -M {frames[frame].get("model", frame)}' + launch_line += '\r\n' + f.write(launch_line) + + +if __name__ == "__main__": + main() diff --git a/Tools/scripts/cygwin_build.sh b/Tools/scripts/cygwin_build.sh index bc1d22a11d..af1ef8fbb5 100755 --- a/Tools/scripts/cygwin_build.sh +++ b/Tools/scripts/cygwin_build.sh @@ -33,10 +33,12 @@ mkdir artifacts # python ./waf rover 2>&1 # python ./waf sub 2>&1 -# copy both with exe and without to cope with differences -# between windows versions in CI +# Carbonix: copy executable and vehicle bundles to the artifacts directory cp -v build/sitl/bin/arduplane artifacts/${FIRMWARE_VERSION}-${COMMIT_ID}.exe +python Tools/autotest/cx_vehicle_bundle.py ${FIRMWARE_VERSION}-${COMMIT_ID} +# copy both with exe and without to cope with differences +# between windows versions in CI # cp -v build/sitl/bin/arduplane artifacts/ArduPlane.elf.exe # cp -v build/sitl/bin/arducopter artifacts/ArduCopter.elf.exe # cp -v build/sitl/bin/arducopter-heli artifacts/ArduHeli.elf.exe @@ -58,35 +60,5 @@ for exe in artifacts/*.exe; do done done -# Process Carbonix SITL parameters and scripts -for file in libraries/AP_HAL_ChibiOS/hwdef/CarbonixCommon/sitl_params/*.parm -do - destfolder=artifacts/$(basename $file .parm)-${FIRMWARE_VERSION}-${COMMIT_ID} - mkdir -p $destfolder - outfile=$destfolder/defaults.parm - echo "Processing $(basename $file)" - - # Run parse_sitl_params.py script passing full path to .parm file and output folder - python Tools/Carbonix_scripts/process_sitl_defaults.py $file $outfile - - # Create batch script to launch SITL with the correct parameters - if [[ $file == *"realflight"* ]]; then - model="flightaxis" - else - if [[ $file == *"ottano"* ]]; then - model="quadplane:@ROMFS/models/Ottano.json" - elif [[ $file == *"volanti"* ]]; then - model="quadplane:@ROMFS/models/Volanti.json" - else - echo "Unknown model in $file" - exit 1 - fi - fi - printf "rem Launch at Eli Field\r\n..\\${FIRMWARE_VERSION}-${COMMIT_ID}.exe -O 40.0594626,-88.5513292,206.0,0 --serial0 tcp:0 -M ${model} --defaults defaults.parm\r\n" > $destfolder/launch.bat - - # Copy lua scripts - cp -vR libraries/AP_HAL_ChibiOS/hwdef/CarbonixCommon/scripts $destfolder -done - git log -1 > artifacts/git.txt ls -l artifacts/ From cca21593c2bb2746085b0e1da97bc7fe954707ee Mon Sep 17 00:00:00 2001 From: Bob Long Date: Sat, 21 Dec 2024 16:06:24 +1100 Subject: [PATCH 5/7] autotest: add Carbonix --- Tools/autotest/autotest.py | 6 +- Tools/autotest/carbonix.py | 185 +++++++++++++++++++++++++++++++++++++ 2 files changed, 190 insertions(+), 1 deletion(-) create mode 100644 Tools/autotest/carbonix.py diff --git a/Tools/autotest/autotest.py b/Tools/autotest/autotest.py index 970dc3bde0..ea7c16328f 100755 --- a/Tools/autotest/autotest.py +++ b/Tools/autotest/autotest.py @@ -28,6 +28,7 @@ import ardusub import antennatracker import quadplane +import carbonix import balancebot import sailboat import helicopter @@ -282,6 +283,7 @@ def should_run_step(step): "Tracker": "antennatracker", "Helicopter": "arducopter-heli", "QuadPlane": "arduplane", + "Carbonix": "arduplane", "Sub": "ardusub", "Blimp": "blimp", "BalanceBot": "ardurover", @@ -352,6 +354,7 @@ def find_specific_test_to_run(step): "test.CopterTests2b": arducopter.AutoTestCopterTests2b, # 8m18s "test.Plane": arduplane.AutoTestPlane, "test.QuadPlane": quadplane.AutoTestQuadPlane, + "test.Carbonix": carbonix.AutoTestCarbonix, "test.Rover": rover.AutoTestRover, "test.BalanceBot": balancebot.AutoTestBalanceBot, "test.Sailboat": sailboat.AutoTestSailboat, @@ -772,7 +775,7 @@ def run_tests(steps): return passed -vehicle_list = ['Sub', 'Copter', 'Plane', 'Tracker', 'Rover', 'QuadPlane', 'BalanceBot', 'Helicopter', 'Sailboat', 'Blimp'] +vehicle_list = ['Sub', 'Copter', 'Plane', 'Tracker', 'Rover', 'QuadPlane', 'Carbonix', 'BalanceBot', 'Helicopter', 'Sailboat', 'Blimp'] # noqa: E501 def list_subtests(): @@ -1064,6 +1067,7 @@ def format_epilog(self, formatter): 'build.Plane', 'test.Plane', 'test.QuadPlane', + 'test.Carbonix', 'build.Rover', 'test.Rover', diff --git a/Tools/autotest/carbonix.py b/Tools/autotest/carbonix.py new file mode 100644 index 0000000000..017e7754ce --- /dev/null +++ b/Tools/autotest/carbonix.py @@ -0,0 +1,185 @@ +''' +Fly Carbonix aircraft in SITL + +AP_FLAKE8_CLEAN + +''' + +from quadplane import AutoTestQuadPlane +from pysim import vehicleinfo +from vehicle_test_suite import AutoTestTimeoutException, NotAchievedException +from cx_vehicle_bundle import copy_frame_scripts + + +class AutoTestCarbonix(AutoTestQuadPlane): + def init(self): + super().init() + self.install_frame_scripts() + self.reboot_sitl() + + def default_parameter_list(self): + return super().default_parameter_list() | { + "ARMING_MIS_ITEMS": 0, # disable mission check + "BRD_SAFETY_DEFLT": 0, # disable safety switch + "FENCE_AUTOENABLE": 0, # disable fences + "FENCE_ENABLE": 0, + "FS_GCS_ENABL": 0, # disable GCS failsafe + "TERRAIN_FOLLOW": 0, # disable terrain follow (causes prearm fail; terrain requests require extra steps) + } + + def default_frame(self): + return 'ottano-headless' + + def log_name(self): + return 'Carbonix' + + def vehicleinfo_key(self): + return 'Carbonix' + + def install_frame_scripts(self): + '''installs all scripts specified for the frame in vehicleinfo''' + options = vehicleinfo.VehicleInfo().options[self.vehicleinfo_key()] + frame_bits = options['frames'][self.frame] + script_patterns = frame_bits.get('scripts', []) + scripts_root = self.installed_script_path('') + copy_frame_scripts(self.frame, scripts_root, script_patterns) + + def assert_no_text(self, *args, **kwargs): + '''Assert that a text message does not come in within a timeout''' + try: + text = self.wait_text(*args, **kwargs) + except AutoTestTimeoutException: + return + raise AssertionError(f"Text '{text}' appeared") + + def CX_BIT(self): + '''Test Carbonix's Built-in-Test (BIT) script''' + + def TestESCTelemetry(index): + '''Test a single ESC''' + index = int(index) + self.context_push() + self.context_collect('STATUSTEXT') + self.wait_ready_to_arm() + + # Confirm no error messages are present, with one exception: + # "Servo Out nil" is not uncommon when running with simulation + # speedups. There is a race condition that can occur because + # SRV_Channels::function_mask gets periodically cleared and + # re-calculated. + # TODO: CX_BIT needs to switch to checking channel number instead + # of checking by function assignment, but that will take some work + # and will require a new binding. + self.assert_no_text('^CX_BIT:.*(?!Servo Out nil).*', regex=True, check_context=True) + + # Fail the ESC telemetry for the specified index + self.progress(f'Failing ESC telemetry for ESC {index}') + self.set_parameter('SIM_ESC_TLM_FAIL', 1 << index) + + # Wait for the prearm failure and the error message + self.wait_not_ready_to_arm() + lost_text = f'CX_BIT: ESC {index + 1} Telemetry Lost' + self.wait_text(lost_text, check_context=True) + self.progress("'" + lost_text + "':" + ' Success!') + + # Clear the failure + self.progress(f'Clearing ESC telemetry failure for ESC {index}') + self.context_clear_collection('STATUSTEXT') + self.set_parameter('SIM_ESC_TLM_FAIL', 0) + recovered_text = f'CX_BIT: ESC {index + 1} Telemetry Recovered' + self.wait_text(recovered_text, check_context=True) + # Confirm we didn't get lost/recovered/lost/recovered during that time + self.assert_no_text(lost_text, timeout=1, regex=True, check_context=True) + + # And one more time, confirm no error messages are present + self.context_clear_collection('STATUSTEXT') + # TODO: clean this line up too when Servo Out nil is fixed + self.assert_no_text('^CX_BIT:.*(?!Servo Out nil).*', regex=True, check_context=True) + self.context_pop() + + def TestMotorFail(esc_index, servo_index, is_pusher=False): + '''Test a single VTOL motor failure''' + esc_index = int(esc_index) + servo_index = int(servo_index) + self.context_push() + self.context_collect('STATUSTEXT') + self.wait_ready_to_arm() + + self.arm_vehicle() + if is_pusher: + self.change_mode('MANUAL') + self.set_rc(3, 1500) + else: + self.change_mode('QSTABILIZE') + + # Confirm no error messages are present + self.assert_no_text('CX_BIT.*', regex=True, check_context=True) + + # Fail the ESC telemetry for the specified index + self.progress(f'Failing Motor {esc_index}') + self.set_parameter('SIM_ENGINE_FAIL', 1 << servo_index) + + # Wait for the error message + lost_text = f'CX_BIT: ESC {esc_index + 1} RPM Drop' + self.wait_text(lost_text, check_context=True) + self.progress("'" + lost_text + "':" + ' Success!') + + # Clear the failure + self.progress(f'Fixing Motor {esc_index}') + self.context_clear_collection('STATUSTEXT') + self.set_parameter('SIM_ENGINE_FAIL', 0) + recovered_text = f'CX_BIT: ESC {esc_index + 1} RPM Recovered' + self.wait_text(recovered_text, check_context=True) + # Confirm we didn't get lost/recovered/lost/recovered during that time + self.assert_no_text(lost_text, timeout=1, regex=True, check_context=True) + + # And one more time, confirm no error messages are present + self.context_clear_collection('STATUSTEXT') + self.assert_no_text('CX_BIT.*', regex=True, check_context=True) + self.disarm_vehicle() + self.context_pop() + + # Count the number of ESCs + frame_class = self.get_parameter('Q_FRAME_CLASS') + if frame_class == 1: # Quad + num_vtols = 4 + elif frame_class == 4: # OctaQuad + num_vtols = 8 + else: + raise ValueError(f'Unsupported frame class {frame_class}') + has_engine = self.get_parameter('ICE_ENABLE') + + # Find the servo assignments for the ESCs + vtol_servos = {} + pusher_servo = None + for i in range(1, 32): + try: + assignment = self.get_parameter(f'SERVO{i}_FUNCTION') + if 33 <= assignment <= 40: + vtol_servos[assignment - 33] = i - 1 + elif assignment == 70: + pusher_servo = i - 1 + except NotAchievedException: + break + assert len(vtol_servos) == num_vtols + assert pusher_servo is not None + + self.start_subtest('Test ESC telemetry warnings') + for i in range(num_vtols): + TestESCTelemetry(i) + if not has_engine: + TestESCTelemetry(num_vtols) # Test the pusher + + self.start_subtest('Test VTOL motor failures') + for i in range(num_vtols): + TestMotorFail(i, vtol_servos[i]) + if not has_engine: + TestMotorFail(num_vtols, pusher_servo, is_pusher=True) + + def disabled_tests(self): + return dict() + + def tests(self): + return [ + self.CX_BIT, + ] From 0bda00f44ed10b706795d25a7d4ce75d922a016d Mon Sep 17 00:00:00 2001 From: Bob Long Date: Mon, 23 Dec 2024 12:45:15 +1100 Subject: [PATCH 6/7] CI: add Carbonix --- .github/workflows/test_sitl_plane.yml | 2 ++ Tools/scripts/build_ci.sh | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test_sitl_plane.yml b/.github/workflows/test_sitl_plane.yml index ad6f8aaca3..c010d2403c 100644 --- a/.github/workflows/test_sitl_plane.yml +++ b/.github/workflows/test_sitl_plane.yml @@ -220,6 +220,8 @@ jobs: config: [ sitltest-plane, sitltest-quadplane, + sitltest-carbonix-ottano, + sitltest-carbonix-volanti, ] steps: diff --git a/Tools/scripts/build_ci.sh b/Tools/scripts/build_ci.sh index 7e63f599ae..6b66a6d30e 100755 --- a/Tools/scripts/build_ci.sh +++ b/Tools/scripts/build_ci.sh @@ -64,6 +64,7 @@ function run_autotest() { NAME="$1" BVEHICLE="$2" RVEHICLE="$3" + FRAME="$4" # report on what cpu's we have for later log review if needed cat /proc/cpuinfo @@ -89,7 +90,11 @@ function run_autotest() { if [ "$NAME" == "Examples" ]; then w="$w --speedup=5 --timeout=14400 --debug --no-clean" fi - Tools/autotest/autotest.py --show-test-timings --junit --waf-configure-args="$w" "$BVEHICLE" "$RVEHICLE" + extra="" + if [ "$FRAME" != "" ]; then + extra="--frame $FRAME" + fi + Tools/autotest/autotest.py --show-test-timings --junit --waf-configure-args="$w" "$BVEHICLE" "$RVEHICLE" $extra ccache -s && ccache -z } @@ -143,6 +148,14 @@ for t in $CI_BUILD_TARGET; do run_autotest "QuadPlane" "build.Plane" "test.QuadPlane" continue fi + if [ "$t" == "sitltest-carbonix-ottano" ]; then + run_autotest "Carbonix" "build.Plane" "test.Carbonix" "ottano-headless" + continue + fi + if [ "$t" == "sitltest-carbonix-volanti" ]; then + run_autotest "Carbonix" "build.Plane" "test.Carbonix" "volanti-headless" + continue + fi if [ "$t" == "sitltest-rover" ]; then sudo apt-get update || /bin/true sudo apt-get install -y ppp || /bin/true From 410e92d2bab6a1c8a890b36a29262435bcebddb1 Mon Sep 17 00:00:00 2001 From: Pierre Kancir Date: Thu, 8 Feb 2024 10:32:06 +0100 Subject: [PATCH 7/7] .github: Autotest build need debug flag, rover also need enable-math-check-indexes. Fix caching --- .github/workflows/test_sitl_blimp.yml | 2 +- .github/workflows/test_sitl_copter.yml | 2 +- .github/workflows/test_sitl_periph.yml | 2 +- .github/workflows/test_sitl_plane.yml | 2 +- .github/workflows/test_sitl_rover.yml | 2 +- .github/workflows/test_sitl_sub.yml | 2 +- .github/workflows/test_sitl_tracker.yml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test_sitl_blimp.yml b/.github/workflows/test_sitl_blimp.yml index 9ffac8b482..dd5c1f69b6 100644 --- a/.github/workflows/test_sitl_blimp.yml +++ b/.github/workflows/test_sitl_blimp.yml @@ -127,7 +127,7 @@ jobs: export CXX=clang++ fi PATH="/github/home/.local/bin:$PATH" - ./waf configure --board sitl + ./waf configure --board sitl --debug ./waf build --target bin/blimp ccache -s ccache -z diff --git a/.github/workflows/test_sitl_copter.yml b/.github/workflows/test_sitl_copter.yml index 9955d74257..0fa551f959 100644 --- a/.github/workflows/test_sitl_copter.yml +++ b/.github/workflows/test_sitl_copter.yml @@ -126,7 +126,7 @@ jobs: export CXX=clang++ fi PATH="/github/home/.local/bin:$PATH" - ./waf configure --board sitl + ./waf configure --board sitl --debug ./waf build --target bin/arducopter ccache -s ccache -z diff --git a/.github/workflows/test_sitl_periph.yml b/.github/workflows/test_sitl_periph.yml index 8bb9d55b9b..1c14c743e1 100644 --- a/.github/workflows/test_sitl_periph.yml +++ b/.github/workflows/test_sitl_periph.yml @@ -196,7 +196,7 @@ jobs: run: | git config --global --add safe.directory ${GITHUB_WORKSPACE} PATH="/github/home/.local/bin:$PATH" - ./waf configure --board sitl_periph_universal + ./waf configure --board sitl_periph_universal --debug ./waf build --target bin/AP_Periph ccache -s ccache -z diff --git a/.github/workflows/test_sitl_plane.yml b/.github/workflows/test_sitl_plane.yml index c010d2403c..05b3057e22 100644 --- a/.github/workflows/test_sitl_plane.yml +++ b/.github/workflows/test_sitl_plane.yml @@ -203,7 +203,7 @@ jobs: export CXX=clang++ fi PATH="/github/home/.local/bin:$PATH" - ./waf configure --board sitl + ./waf configure --board sitl --debug ./waf build --target bin/arduplane ccache -s ccache -z diff --git a/.github/workflows/test_sitl_rover.yml b/.github/workflows/test_sitl_rover.yml index f5c9227c6e..858620d4e7 100644 --- a/.github/workflows/test_sitl_rover.yml +++ b/.github/workflows/test_sitl_rover.yml @@ -128,7 +128,7 @@ jobs: export CXX=clang++ fi PATH="/github/home/.local/bin:$PATH" - ./waf configure --board sitl + ./waf configure --board sitl --debug --enable-math-check-indexes ./waf build --target bin/ardurover ccache -s ccache -z diff --git a/.github/workflows/test_sitl_sub.yml b/.github/workflows/test_sitl_sub.yml index d1f0efc3e0..e18019a17e 100644 --- a/.github/workflows/test_sitl_sub.yml +++ b/.github/workflows/test_sitl_sub.yml @@ -128,7 +128,7 @@ jobs: export CXX=clang++ fi PATH="/github/home/.local/bin:$PATH" - ./waf configure --board sitl + ./waf configure --board sitl --debug ./waf build --target bin/ardusub ccache -s ccache -z diff --git a/.github/workflows/test_sitl_tracker.yml b/.github/workflows/test_sitl_tracker.yml index 477bbc5236..2318f5a508 100644 --- a/.github/workflows/test_sitl_tracker.yml +++ b/.github/workflows/test_sitl_tracker.yml @@ -128,7 +128,7 @@ jobs: export CXX=clang++ fi PATH="/github/home/.local/bin:$PATH" - ./waf configure --board sitl + ./waf configure --board sitl --debug ./waf build --target bin/antennatracker ccache -s ccache -z